PHPBuilder - List RPMs



RSS Twitter
Snippets Other

List RPMs

by: Grant Walters
|
March 20, 2002

Version: 1.0

Type: Full Script

Category: Other

License: GNU General Public License

Description: Display RPM's in database with relevant parts selected by option, ie... Name-Version ... (requires Support Functions snippet)



#!/cmi/bin/php -q
<?
/*
 $Id$
 $Name:  $

 Script to list the rpm database with whichever bits are wanted
		-a = archive
		-r = release
		-v = version
		-s = add .rpm to end of each file
		-t = titles/ headings;

 Package will always be produced in the correct display order
    NAME-VERSION-RELEASE.ARCH.rpm

*/

$site = "";

@include("./phpcode/functions.php3"); // Standard includes
if ($php_errmsg) { die ($php_errmsg."\n"); }

$command    = "/bin/rpm -qa ";
$rpm_package = array();
$rpm_package_count = 0;
$titles=0;

function usage() {
  echo "usage: list_rpms [ [-h] | [-a] [-r] [-v] [-s] [-v] ]\n\n";
  echo "   Where:\n";
  echo "      -a = archive\n";
  echo "      -r = release\n";
  echo "      -v = version\n";
  echo "      -s = add .rpm to end of each file\n";
  echo "      -t = titles/headings\n";
  exit;
}

$options = WCDS_getopts();

if ($options) {
  $command = $command."--qf \"%{NAME}";
  $extras=array();
	while (list($parameter,$value)=each($options)) {
	  switch ($value) {
	    case "-h":
	      usage();
	      break;;
	    case "-v":
	      $extras[0] = "-%{VERSION}";
	      break;
	    case "-r":
	      $extras[1] .= "-%{RELEASE}";
	      break;
	    case "-a":
	      $extras[2] .= "-%{ARCH}";
	      break;
	    case "-s":
	      $extras[3] .= ".rpm";
	      break;
	    case "-t":
	      $titles = 1;
	      break;
	  }
	}
  $command = $command.$extras[0].$extras[1].$extras[2].$extras[3]."\n\"";
}

if ($titles) { WCDS_scr("Listing Current RPM's"); }
if ($titles) { WCDS_scr(str_repeat("=",80)); }
if ($titles) { WCDS_scr("RPM: Obtaining List ... ",1); }
$rpm = popen($command,"r");
if ($rpm) {
  if ($titles) { WCDS_scr("Got It"); }
  $rpm_package_count=0;
  while (!feof($rpm)) {
    $item = chop(fgets($rpm,512));
    if ("$item" <> "" ) {
      $rpm_package[] = $item;
      $rpm_package_count++;
    }
  }
  asort($rpm_package);
  pclose($rpm);
	while ( list ($key,$file) = each ($rpm_package)) {
    if ($titles) { WCDS_scr("  => $file",0); } else { WCDS_scr($file); }
	}
  if ($titles) { WCDS_scr(str_repeat("=",80)); }
  if ($titles) { WCDS_scr("Count = $rpm_package_count"); }
} else {
  WCDS_err("Can't Obtain List from pipe");
}

/*
 $Log$
*/
?>

Comment and Contribute

Your comment has been submitted and is pending approval.

Author:
Grant Walters

Comment:



Comment:

(Maximum characters: 1200). You have characters left.