Added get-packages method for urpmi backend

This commit is contained in:
Aurelien Lefebvre 2008-05-29 15:32:39 +02:00
parent db032465e8
commit 97bc7dfe83
3 changed files with 67 additions and 1 deletions

View File

@ -15,6 +15,7 @@ dist_helper_DATA = \
install-packages.pl \
remove-packages.pl \
search-group.pl \
get-packages.pl \
$(NULL)
install-data-hook:

View File

@ -0,0 +1,53 @@
#!/usr/bin/perl
use strict;
use lib;
use File::Basename;
BEGIN {
push @INC, dirname($0);
}
use urpm;
use urpm::media;
use urpm::args;
use urpmi_backend::open_db;
use urpmi_backend::tools;
use urpmi_backend::filters;
use perl_packagekit::enums;
use perl_packagekit::prints;
# One argument (the filter)
exit if ($#ARGV != 0);
my @filters = split(/;/, $ARGV[0]);
my $urpm = urpm->new_parse_cmdline;
urpm::media::configure($urpm);
my $db = open_rpm_db();
$urpm->compute_installed_flags($db);
# Here we display installed packages
if(not grep(/^${\FILTER_NOT_INSTALLED}$/, @filters)) {
$db->traverse(sub {
my ($pkg) = @_;
if(filter($pkg, \@filters, {FILTER_DEVELOPMENT => 1, FILTER_GUI => 1})) {
pk_print_package(INFO_INSTALLED, get_package_id($pkg), ensure_utf8($pkg->summary));
}
});
}
# Here are package which can be installed
if(not grep(/^${\FILTER_INSTALLED}$/, @filters)) {
foreach my $pkg(@{$urpm->{depslist}}) {
if($pkg->flag_upgrade) {
if(filter($pkg, \@filters, {FILTER_DEVELOPMENT => 1, FILTER_GUI => 1})) {
pk_print_package(INFO_AVAILABLE, get_package_id($pkg), ensure_utf8($pkg->summary));
}
}
}
}

View File

@ -235,6 +235,18 @@ backend_search_group (PkBackend *backend, PkFilterEnum filters, const gchar *sea
g_free (filters_text);
}
/**
* backend_get_packages:
*/
static void
backend_get_packages (PkBackend *backend, PkFilterEnum filters)
{
gchar *filters_text;
filters_text = pk_filter_enums_to_text (filters);
pk_backend_spawn_helper (spawn, "get-packages.pl", filters_text, NULL);
g_free (filters_text);
}
PK_BACKEND_OPTIONS (
"URPMI", /* description */
@ -247,7 +259,7 @@ PK_BACKEND_OPTIONS (
backend_get_depends, /* get_depends */
backend_get_details, /* get_details */
backend_get_files, /* get_files */
NULL, /* get_packages */
backend_get_packages, /* get_packages */
NULL, /* get_repo_list */
NULL, /* get_requires */
backend_get_update_detail, /* get_update_detail */