Skip to content

Commit 3c5acc2

Browse files
rick-gnousd0p1s4m4
authored andcommitted
feat: add update and use sub for do_install/remove
1 parent deaa444 commit 3c5acc2

File tree

1 file changed

+61
-33
lines changed

1 file changed

+61
-33
lines changed

barista

Lines changed: 61 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -81,15 +81,44 @@ sub get_compression_algorithm {
8181
return undef;
8282
}
8383

84-
sub do_install {
85-
for (@ARGV) {
84+
sub remove_pkg {
85+
my @tmp = @_;
86+
for (@tmp) {
8687
my $pkgname = $_;
8788
my $installed_version = is_package_installed($pkgname);
88-
if ($installed_version) {
89-
print "$pkgname (v$installed_version) is already installed\n";
89+
if (!$installed_version) {
90+
print "$pkgname isn't installed on your system\n";
9091
next;
9192
}
9293

94+
open(my $fd, "<", "$ADM_DIR/packages/$pkgname.list");
95+
while (<$fd>) {
96+
chomp($_);
97+
my $path = "$SYSROOT/$_";
98+
if (-d $path) {
99+
rmdir($path);
100+
} else {
101+
unlink($path);
102+
}
103+
}
104+
close($fd);
105+
unlink("$ADM_DIR/packages/$pkgname.list");
106+
107+
open($fd, "<", "$ADM_DIR/installed");
108+
my @installed_packages = <$fd>;
109+
close($fd);
110+
open($fd, ">", "$ADM_DIR/installed");
111+
foreach my $installed ( @installed_packages ) {
112+
print $fd $installed unless ( $installed =~ /^$pkgname:/);
113+
}
114+
close($fd);
115+
}
116+
}
117+
118+
sub install_pkg {
119+
my @tmp = @_;
120+
for (@tmp) {
121+
my $pkgname = $_;
93122
my ($pkgversion, $pkgurl) = search_package($pkgname);
94123
if (!$pkgversion) {
95124
print "$pkgname not found in repositories\n";
@@ -125,43 +154,42 @@ sub do_install {
125154
}
126155
}
127156

157+
sub do_install {
158+
install_pkg(@ARGV);
159+
}
160+
128161
sub do_remove {
129-
for (@ARGV) {
130-
my $pkgname = $_;
131-
my $installed_version = is_package_installed($pkgname);
132-
if (!$installed_version) {
133-
print "$pkgname isn't installed on your system\n";
134-
next;
135-
}
162+
remove_pkg(@ARGV);
163+
}
136164

137-
open(my $fd, "<", "$ADM_DIR/packages/$pkgname.list");
138-
while (<$fd>) {
139-
chomp($_);
140-
my $path = "$SYSROOT/$_";
141-
if (-d $path) {
142-
rmdir($path);
143-
} else {
144-
unlink($path);
145-
}
165+
sub do_update {
166+
print Dumper(@ARGV);
167+
my @pkginstalled;
168+
my @updatepkg;
169+
open (my $fd, "<", "$ADM_DIR/installed");
170+
while (<$fd>) {
171+
chomp($_);
172+
my ($pkgname, $pkgversion) = split(/:/, $_);
173+
my ($newversion, undef) = search_package($pkgname);
174+
chomp($pkgversion);
175+
chomp($newversion);
176+
if ($pkgversion && $newversion > $pkgversion) {
177+
push(@updatepkg, $pkgname);
146178
}
147-
close($fd);
148-
unlink("$ADM_DIR/packages/$pkgname.list");
179+
}
180+
close($fd);
149181

150-
open($fd, "<", "$ADM_DIR/installed");
151-
my @installed_packages = <$fd>;
152-
close($fd);
153-
open($fd, ">", "$ADM_DIR/installed");
154-
foreach my $installed ( @installed_packages ) {
155-
print $fd $installed unless ( $installed =~ /^$pkgname:/);
182+
if (@updatepkg) {
183+
print "update ? [o/N]";
184+
my $userchoice = <STDIN>;
185+
chomp($userchoice);
186+
if (lc $userchoice =~ "o") {
187+
remove_pkg(@updatepkg);
188+
install_pkg(@updatepkg);
156189
}
157-
close($fd);
158190
}
159191
}
160192

161-
sub do_update {
162-
print Dumper(@ARGV);
163-
}
164-
165193
sub do_list_installed {
166194
my ($pkgname) = @_;
167195
if (-f "$ADM_DIR/installed") {

0 commit comments

Comments
 (0)