@@ -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+
128161sub 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-
165193sub do_list_installed {
166194 my ($pkgname ) = @_ ;
167195 if (-f " $ADM_DIR /installed" ) {
0 commit comments