From 96ea6b000100198980cbd4a2020202e445e4aa8e Mon Sep 17 00:00:00 2001 From: joost Date: Sun, 11 Jan 2015 18:22:01 +0000 Subject: [PATCH] * Added uninstall command to fppkg git-svn-id: trunk@29439 - --- packages/fppkg/src/pkgcommands.pp | 45 +++++++++++++++++++++++++++++++ packages/fppkg/src/pkgfpmake.pp | 13 +++++++++ utils/fppkg/fppkg.pp | 1 + 3 files changed, 59 insertions(+) diff --git a/packages/fppkg/src/pkgcommands.pp b/packages/fppkg/src/pkgcommands.pp index b294cec988..3af49eaa5e 100644 --- a/packages/fppkg/src/pkgcommands.pp +++ b/packages/fppkg/src/pkgcommands.pp @@ -83,6 +83,13 @@ type Procedure Execute;override; end; + { TCommandUnInstall } + + TCommandUnInstall = Class(TPackagehandler) + Public + Procedure Execute;override; + end; + { TCommandClean } TCommandClean = Class(TPackagehandler) @@ -121,6 +128,43 @@ type var 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 } procedure TCommandListSettings.Execute; @@ -535,6 +579,7 @@ initialization RegisterPkgHandler('compile',TCommandCompile); RegisterPkgHandler('build',TCommandBuild); RegisterPkgHandler('install',TCommandInstall); + RegisterPkgHandler('uninstall',TCommandUnInstall); RegisterPkgHandler('clean',TCommandClean); RegisterPkgHandler('archive',TCommandArchive); RegisterPkgHandler('installdependencies',TCommandInstallDependencies); diff --git a/packages/fppkg/src/pkgfpmake.pp b/packages/fppkg/src/pkgfpmake.pp index 9da23e1d25..3bde08344d 100644 --- a/packages/fppkg/src/pkgfpmake.pp +++ b/packages/fppkg/src/pkgfpmake.pp @@ -58,6 +58,12 @@ type Procedure Execute;override; end; + { TFPMakeRunnerUnInstall } + + TFPMakeRunnerUnInstall = Class(TFPMakeRunner) + Public + Procedure Execute;override; + end; { TFPMakeRunnerClean } @@ -381,6 +387,12 @@ begin end; +procedure TFPMakeRunnerUnInstall.Execute; +begin + RunFPMake('uninstall'); +end; + + procedure TFPMakeRunnerClean.Execute; begin RunFPMake('clean'); @@ -404,6 +416,7 @@ initialization RegisterPkgHandler('fpmakecompile',TFPMakeRunnerCompile); RegisterPkgHandler('fpmakebuild',TFPMakeRunnerBuild); RegisterPkgHandler('fpmakeinstall',TFPMakeRunnerInstall); + RegisterPkgHandler('fpmakeuninstall',TFPMakeRunnerUnInstall); RegisterPkgHandler('fpmakeclean',TFPMakeRunnerClean); RegisterPkgHandler('fpmakemanifest',TFPMakeRunnerManifest); RegisterPkgHandler('fpmakearchive',TFPMakeRunnerArchive); diff --git a/utils/fppkg/fppkg.pp b/utils/fppkg/fppkg.pp index 7c9b0ea236..34c77d4d59 100644 --- a/utils/fppkg/fppkg.pp +++ b/utils/fppkg/fppkg.pp @@ -104,6 +104,7 @@ begin Writeln(' build Build package'); Writeln(' compile Compile package'); Writeln(' install Install package'); + Writeln(' uninstall Uninstall package'); Writeln(' clean Clean package'); Writeln(' archive Create archive of package'); Writeln(' download Download package');