]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blob - src/pakfire/pakfire
Am Pakfire weitergearbeitet.
[people/pmueller/ipfire-2.x.git] / src / pakfire / pakfire
1 #!/usr/bin/perl
2
3 require "/opt/pakfire/lib/functions.pl";
4
5 my $interactive = 1;
6
7 &Pakfire::logger("### IPFire Pakfire $Conf::version started!");
8
9 ### Check if we are running as root
10 #
11 my $user = qx(whoami);
12 chomp($user);
13 unless ( "$user" eq "root" ) {
14 &Pakfire::message("You must run pakfire as user root!");
15 exit 1;
16 }
17
18 unless (@ARGV) {
19 &Pakfire::usage;
20 }
21
22 if ("$ARGV[0]" eq "install") {
23 &Pakfire::lock("on");
24 shift;
25 my @deps;
26 my @paks;
27 my @temp;
28 foreach (@ARGV) {
29 if ("$_" =~ "^--") {
30 $interactive = 0 if ("$_" eq "--non-interactive");
31 } else {
32 push(@paks,$_);
33 }
34 }
35 foreach (@paks) {
36 @temp = &Pakfire::resolvedeps("$_");
37 foreach (@temp) { push(@deps,$_) if $_; }
38 }
39
40 my @all;
41 foreach (@paks) {
42 push(@all,$_);
43 }
44 foreach (@deps) {
45 push(@all,$_);
46 }
47
48 &Pakfire::message("\n\n### Packages to install:");
49 foreach (sort @paks) {
50 my $size = &Pakfire::getsize("$_");
51 $size = &Pakfire::beautifysize($size);
52 &Pakfire::message("# $_ \t\t - $size");
53 }
54
55 &Pakfire::message("\n### Packages to install for dependencies:");
56 foreach (sort @deps) {
57 my $size = &Pakfire::getsize("$_");
58 $size = &Pakfire::beautifysize($size);
59 &Pakfire::message("# $_ \t\t - $size");
60 }
61
62 my $totalsize = &Pakfire::addsizes("@all");
63 $totalsize = &Pakfire::beautifysize($totalsize);
64 &Pakfire::message("\n### Download size: \t ~ $totalsize");
65
66 if ($interactive) {
67 &Pakfire::message("Is this okay? [y/N]");
68 my $ret = <STDIN>;
69 chomp($ret);
70 &Pakfire::logger("Answer: $ret");
71 if ( $ret ne "y" ) {
72 &Pakfire::message("Installation aborted.");
73 exit 1;
74 }
75 }
76
77 ### Download first
78 foreach (sort @all) {
79 &Pakfire::message("# --> Downloading: $_");
80 &Pakfire::getpak("$_", "");
81 }
82
83 foreach (sort @all) {
84 &Pakfire::setuppak("$_");
85 }
86 &Pakfire::lock("off");
87
88 } elsif ("$ARGV[0]" eq "remove") {
89
90
91 } elsif ("$ARGV[0]" eq "update") {
92 my $force = "noforce";
93 &Pakfire::makeuuid();
94 &Pakfire::senduuid();
95 &Pakfire::getmirrors();
96 $force = "force" if ("$ARGV[1]" eq "--force");
97 &Pakfire::dbgetlist("$force");
98
99 } elsif ("$ARGV[0]" eq "list") {
100 &Pakfire::dblist("all", "noweb");
101
102 } elsif ("$ARGV[0]" eq "resolvedeps") {
103 foreach (@ARGV) {
104 next if ("$_" eq "resolvedeps");
105 &Pakfire::resolvedeps("$_");
106 }
107
108 } else {
109 &Pakfire::usage;
110 }