#!/usr/bin/php
<?php
/*
 * FedoraClient is a PHP classe to interact with web services
 * 
 * fedcli.php is a command line tools to test FedoraClient clmsses
 * 
 * Copyright (C) 2010  Remi Collet
 * http://github.com/remicollet/rpmphp.
 * 
 * Inspired from python-fedora
 * 
 * FedoraClient is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 * 
 * python-fedora is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 * 
 * See <http://www.gnu.org/licenses/>
 */
 
require 'Console/Getargs.php';
require 'FedoraClient.php';

function Help() {
   echo "\nFedora Client Command Line usage\n\n";
   
   echo "fdcli   command   options\n";
   echo "\tbranch:   branch info\n";
   echo "\tbranches: list branches\n";
   echo "\tcritpath: list critical path\n";
   echo "\tpackage:  package info\n";
   echo "\tversion:  class version\n";
   echo "Also try fdcli command --help\n";
}

function Branches() {
   $config = array(
     "debug"  => array('short' => 'd', 'max' =>  1, 'min' => 1, 'desc' => "debug level", 'default' => "0")
   );
   $args =& Console_Getargs::factory($config);
   
   if (PEAR::isError($args)) {
      die (Console_Getargs::getHelp($config));
   }
   
   $client = new FedoraPkgdb(array('debug' => intval($args->getValue('debug'))));
   $branches = $client->getBranches();
   foreach ($branches as $name => $branch) {
      echo $name." ";
   }
   echo "\n";
}

function Branch() {
   $config = array(
     "branch" => array('short' => 'b', 'max' =>  1, 'min' => 1, 'desc' => "branch name", 'default' => "devel"),
     "debug"  => array('short' => 'd', 'max' =>  1, 'min' => 1, 'desc' => "debug level", 'default' => "0")
   );
   $args =& Console_Getargs::factory($config);
   
   if (PEAR::isError($args)) {
      die (Console_Getargs::getHelp($config));
   }
   
   $client = new FedoraPkgdb(array('debug' => intval($args->getValue('debug'))));
   $branch = $client->getBranch($args->getValue('branch'));
   print_r($branch);
}

function CritPath() {
   $config = array(
     //"branch" => array('short' => 'b', 'max' =>  1, 'min' => 1, 'desc' => "branch name", 'default' => "devel"),
     "debug"  => array('short' => 'd', 'max' =>  1, 'min' => 1, 'desc' => "debug level", 'default' => "0")
   );
   $args =& Console_Getargs::factory($config);
   
   if (PEAR::isError($args)) {
      die (Console_Getargs::getHelp($config));
   }
   
   $client = new FedoraPkgdb(array('debug' => intval($args->getValue('debug'))));
   $branch = $client->getCritPath();
   print_r($branch);
}

function Package() {
   $config = array(
     "package" => array('short' => 'p', 'max' =>  1, 'min' => 1, 'desc' => "package name"),
     "debug"   => array('short' => 'd', 'max' =>  1, 'min' => 1, 'desc' => "debug level", 'default' => "0")
   );
   $args =& Console_Getargs::factory($config);
   
   if (PEAR::isError($args)) {
      die (Console_Getargs::getHelp($config));
   }
   $client = new FedoraPkgdb(array('debug' => intval($args->getValue('debug'))));
   $rep = $client->getPackageInfo($args->getValue('package'));

   if (!$rep) {
      die("Package not found\n");
   }
   
   $first = true;
   foreach ($rep as $branch => $pack) {
      if ($first) {
         $first = false;
         echo 'Name:       '.$pack['package']['name']."\n";
         echo 'Summary:    '.$pack['package']['summary']."\n";
         echo "Description:\n".$pack['package']['description']."\n";
      }
      echo $branch.":\t".$pack['owner'];
      
      $i=0;
      foreach ($pack['people'] as $user) {
         if (isset($user['aclOrder']['commit']['statuscode']) && $user['aclOrder']['commit']['statuscode']==3) {
            echo ($i++ ? ", " : " (").$user['username'];
         }
      }
      echo ($i ? ")\n" : "\n");
   }
}

function Version() {
   $config = array(
     "debug"  => array('short' => 'd', 'max' =>  1, 'min' => 1, 'desc' => "debug level", 'default' => "0")
   );
   $args =& Console_Getargs::factory($config);
   
   if (PEAR::isError($args)) {
      die (Console_Getargs::getHelp($config)."\n");
   }
   
   echo "PHP Fedora Client class version ".FEDORACLIENT_VERSION."\n";
}

$cmd = array_shift($_SERVER['argv']);
$cmd = array_shift($_SERVER['argv']);

switch ($cmd) {
   case 'branches':  Branches();    break;
   case 'branch':    Branch();      break;
   case 'critpath':  CritPath();    break;
   case 'package':   Package();     break;
   case 'version':   Version();     break;
   default:          Help();      
}
?>