summaryrefslogtreecommitdiff
path: root/bin/apt-perl
diff options
context:
space:
mode:
authorDaniel Friesel <derf@derf.homelinux.org>2008-07-11 20:37:00 +0200
committerDaniel Friesel <derf@derf.homelinux.org>2008-07-11 20:37:00 +0200
commit92f68b4144c8bb044f6e70a350a69bfa17180cc7 (patch)
tree3c242af695c0cf59b6b97c79d6474525759ea666 /bin/apt-perl
parent7808688de0508ddb53c2736bf2fb44eafdca9ef9 (diff)
Renamed apt-perl to apt-why
Diffstat (limited to 'bin/apt-perl')
-rwxr-xr-xbin/apt-perl149
1 files changed, 0 insertions, 149 deletions
diff --git a/bin/apt-perl b/bin/apt-perl
deleted file mode 100755
index 60ca0f7..0000000
--- a/bin/apt-perl
+++ /dev/null
@@ -1,149 +0,0 @@
-#!/usr/bin/env perl
-use strict;
-use warnings;
-use AptPkg::Cache;
-use Switch;
-
-my $cache = AptPkg::Cache->new;
-my $query = shift or die("No action given");
-my $packagename = shift or die("No packagename given");
-my $package = $cache->{$packagename};
-
-unless($package) {
- print STDERR "E: Package not found: $packagename\n";
- exit(100);
-}
-
-sub revdeps {
- my $rdepsref = shift;
- my $depsref;
- my $parent;
-
- foreach(@$rdepsref) {
- undef($parent);
- $parent->{name} = $_->{ParentPkg}{Name};
- $parent->{ver} = $_->{ParentVer}{VerStr};
- $parent->{current_state} = $cache->{$_->{ParentPkg}{Name}}->{CurrentState};
- $parent->{selected_state} = $cache->{$_->{ParentPkg}{Name}}->{SelectedState};
- $parent->{deptype} = $_->{DepType};
- $parent->{targetname} = $_->{TargetPkg}{Name};
- if ($_->{TargetVer}) {
- $parent->{depsign} = $_;
- $parent->{depver} = $_;
- }
- $depsref->{$parent->{name}} = $parent;
- }
- return($depsref);
-}
-
-sub why {
- my $revdeps = revdeps(shift);
- my $why;
- foreach(keys(%$revdeps)) {
- if ($revdeps->{$_}->{current_state} eq 'Installed' and $revdeps->{$_}->{deptype} !~ /^(Conflicts|Replaces|Obsoletes)$/) {
- $why->{$_} = $revdeps->{$_};
- }
- }
- return($why);
-}
-
-sub why_not {
- my $revdeps = revdeps(shift);
- my $why_not;
- foreach(keys(%$revdeps)) {
- if ($revdeps->{$_}->{current_state} eq 'Installed' and $revdeps->{$_}->{deptype} =~ /^(Conflicts|Replaces|Obsoletes)$/) {
- $why_not->{$_} = $revdeps->{$_};
- }
- }
- return($why_not);
-}
-
-sub short_states {
- my $pkg = shift;
- my $state = '';
- switch($pkg->{selected_state}) {
- case('Unkwnon') {
- $state .= ' ';
- } case('Install') {
- $state .= 'i';
- } case('Hold') {
- $state .= 'h';
- } case('DeInstall') {
- $state .= 'r';
- } case('Purge') {
- $state .= 'p';
- }
- }
- switch($pkg->{current_state}) {
- case('Installed') {
- $state .= 'i';
- } case('UnPacked') {
- $state .= 'u';
- } case('HalfConfigured') {
- $state .= 'f';
- } case('HalfInstalled') {
- $state .= 'h';
- } case('ConfigFiles') {
- $state .= 'c';
- } case('NotInstalled') {
- $state .= ' ';
- }
- }
- return($state);
-}
-
-
-sub print_deps {
- my $deps = shift;
- foreach(keys(%$deps)) {
- printf "%-2s %-30s %-15s %s\n", short_states($deps->{$_}), $deps->{$_}->{name}, $deps->{$_}->{deptype}, $deps->{$_}->{targetname};
- }
-}
-
-if ($query eq 'why') {
- print_deps(why($package->{RevDependsList}));
-} elsif ($query eq 'why-not') {
- print_deps(why_not($package->{RevDependsList}));
-} elsif ($query eq 'rdeps') {
- print_deps(revdeps($package->{RevDependsList}));
-}
-
-__END__
-
-=head1 NAME
-
-apt-perl - reverse dependency displayer using AptPkg::Cache
-
-=head1 SYNOPSIS
-
-B<apt-perl> I<command> I<package>
-
-=head1 DESCRIPTION
-
-B<apt-perl> displays various informations based on a I<package>s reverse
-dependencies
-
-The output is prefixed by two charactes, the former representing the desired
-package state, the latter the current state.
-
-The states are I<i>nstall, I<h>old, I<r>emove (deinstall), I<p>urge,
-I<u>npacked, halI<f> configured, I<h>alf installed, I<c>onfigfiles installed.
-An empty field means not installed.
-
-I<command> may be one of:
-
-=over
-
-=item why
-
-Show dependencies that justify the installation of a package
-
-=item why-not
-
-Show dependencies that prohibit the installation of a package
-
-=item rdeps
-
-Show all reverse dependencies of a package
-
-=back