Browse Source

* Added uninstall command to fppkg

git-svn-id: trunk@29439 -
joost 10 years ago
parent
commit
96ea6b0001
3 changed files with 59 additions and 0 deletions
  1. 45 0
      packages/fppkg/src/pkgcommands.pp
  2. 13 0
      packages/fppkg/src/pkgfpmake.pp
  3. 1 0
      utils/fppkg/fppkg.pp

+ 45 - 0
packages/fppkg/src/pkgcommands.pp

@@ -83,6 +83,13 @@ type
     Procedure Execute;override;
     Procedure Execute;override;
   end;
   end;
 
 
+  { TCommandUnInstall }
+
+  TCommandUnInstall = Class(TPackagehandler)
+  Public
+    Procedure Execute;override;
+  end;
+
   { TCommandClean }
   { TCommandClean }
 
 
   TCommandClean = Class(TPackagehandler)
   TCommandClean = Class(TPackagehandler)
@@ -121,6 +128,43 @@ type
 var
 var
   DependenciesDepth: integer;
   DependenciesDepth: integer;
 
 
+{ TCommandUnInstall }
+
+procedure TCommandUnInstall.Execute;
+var
+  AvailP: TFPPackage;
+  APackage: TFPPackage;
+begin
+  if PackageName<>'' then
+    begin
+      if (PackageName=CmdLinePackageName) then
+        begin
+          ExecuteAction(PackageName,'unzip');
+        end
+      else if (PackageName<>CurrentDirPackageName) then
+        begin
+          AvailP:=AvailableRepository.FindPackage(PackageName);
+          if not assigned(AvailP) then
+            begin
+              APackage := InstalledRepository.FindPackage(PackageName);
+              if assigned(APackage) and (APackage.SourcePath<>'') then
+                begin
+                  AvailP := AvailableRepository.AddPackage(PackageName);
+                  AvailP.Assign(APackage);
+                  // The package won't be recompiled, but should be handled as such.
+                  AvailP.RecompileBroken:=true;
+                end
+              else
+                begin
+                  // The package is not available locally, download and unzip it.
+                  ExecuteAction(PackageName,'unzip');
+                end;
+            end;
+        end;
+    end;
+  ExecuteAction(PackageName,'fpmakeuninstall');
+end;
+
 { TCommandListSettings }
 { TCommandListSettings }
 
 
 procedure TCommandListSettings.Execute;
 procedure TCommandListSettings.Execute;
@@ -535,6 +579,7 @@ initialization
   RegisterPkgHandler('compile',TCommandCompile);
   RegisterPkgHandler('compile',TCommandCompile);
   RegisterPkgHandler('build',TCommandBuild);
   RegisterPkgHandler('build',TCommandBuild);
   RegisterPkgHandler('install',TCommandInstall);
   RegisterPkgHandler('install',TCommandInstall);
+  RegisterPkgHandler('uninstall',TCommandUnInstall);
   RegisterPkgHandler('clean',TCommandClean);
   RegisterPkgHandler('clean',TCommandClean);
   RegisterPkgHandler('archive',TCommandArchive);
   RegisterPkgHandler('archive',TCommandArchive);
   RegisterPkgHandler('installdependencies',TCommandInstallDependencies);
   RegisterPkgHandler('installdependencies',TCommandInstallDependencies);

+ 13 - 0
packages/fppkg/src/pkgfpmake.pp

@@ -58,6 +58,12 @@ type
     Procedure Execute;override;
     Procedure Execute;override;
   end;
   end;
 
 
+  { TFPMakeRunnerUnInstall }
+
+  TFPMakeRunnerUnInstall = Class(TFPMakeRunner)
+  Public
+    Procedure Execute;override;
+  end;
 
 
   { TFPMakeRunnerClean }
   { TFPMakeRunnerClean }
 
 
@@ -381,6 +387,12 @@ begin
 end;
 end;
 
 
 
 
+procedure TFPMakeRunnerUnInstall.Execute;
+begin
+  RunFPMake('uninstall');
+end;
+
+
 procedure TFPMakeRunnerClean.Execute;
 procedure TFPMakeRunnerClean.Execute;
 begin
 begin
   RunFPMake('clean');
   RunFPMake('clean');
@@ -404,6 +416,7 @@ initialization
   RegisterPkgHandler('fpmakecompile',TFPMakeRunnerCompile);
   RegisterPkgHandler('fpmakecompile',TFPMakeRunnerCompile);
   RegisterPkgHandler('fpmakebuild',TFPMakeRunnerBuild);
   RegisterPkgHandler('fpmakebuild',TFPMakeRunnerBuild);
   RegisterPkgHandler('fpmakeinstall',TFPMakeRunnerInstall);
   RegisterPkgHandler('fpmakeinstall',TFPMakeRunnerInstall);
+  RegisterPkgHandler('fpmakeuninstall',TFPMakeRunnerUnInstall);
   RegisterPkgHandler('fpmakeclean',TFPMakeRunnerClean);
   RegisterPkgHandler('fpmakeclean',TFPMakeRunnerClean);
   RegisterPkgHandler('fpmakemanifest',TFPMakeRunnerManifest);
   RegisterPkgHandler('fpmakemanifest',TFPMakeRunnerManifest);
   RegisterPkgHandler('fpmakearchive',TFPMakeRunnerArchive);
   RegisterPkgHandler('fpmakearchive',TFPMakeRunnerArchive);

+ 1 - 0
utils/fppkg/fppkg.pp

@@ -104,6 +104,7 @@ begin
   Writeln('  build             Build package');
   Writeln('  build             Build package');
   Writeln('  compile           Compile package');
   Writeln('  compile           Compile package');
   Writeln('  install           Install package');
   Writeln('  install           Install package');
+  Writeln('  uninstall         Uninstall package');
   Writeln('  clean             Clean package');
   Writeln('  clean             Clean package');
   Writeln('  archive           Create archive of package');
   Writeln('  archive           Create archive of package');
   Writeln('  download          Download package');
   Writeln('  download          Download package');