浏览代码

* replace showall with list command
* support new homepageurl and downloadurl
* update fpmkunit requirement to 2.2.2-1

git-svn-id: trunk@12171 -

peter 16 年之前
父节点
当前提交
e8e9da4047

文件差异内容过多而无法显示
+ 290 - 285
utils/fppkg/fpmkunitsrc.inc


+ 11 - 2
utils/fppkg/fppkg.pp

@@ -162,8 +162,7 @@ begin
   Writeln('  -r --recovery      Recovery mode, use always internal fpmkunit');
   Writeln('Actions:');
   Writeln('  update             Update packages list');
-  Writeln('  showavail          List available packages');
-  Writeln('  showall            Show all (including local) packages');
+  Writeln('  list               List available and installed packages');
   Writeln('  build              Build package');
   Writeln('  compile            Compile package');
   Writeln('  install            Install package');
@@ -285,6 +284,16 @@ begin
   Try
     LoadGlobalDefaults;
     ProcessCommandLine;
+
+    // Scan is special, it doesn't need a valid local setup
+    if (ParaAction='scan') then
+      begin
+        RebuildRemoteRepository;
+        ListRemoteRepository;
+        SaveRemoteRepository;
+        halt(0);
+      end;
+
     MaybeCreateLocalDirs;
     LoadCompilerDefaults;
 

+ 11 - 6
utils/fppkg/fprepos.pp

@@ -115,7 +115,8 @@ type
     FEmail: String;
     FLicense: String;
     FName: String;
-    FExternalURL: String;
+    FHomepageURL: String;
+    FDownloadURL: String;
     FFileName: String;
     FVersion: TFPVersion;
     FDependencies : TFPDependencies;
@@ -141,7 +142,8 @@ type
     Property Version : TFPVersion Read FVersion Write SetVersion;
     Property License : String Read FLicense Write FLicense;
     Property Description : String Read FDescription Write FDescription;
-    Property ExternalURL : String Read FExternalURL Write FExternalURL;
+    Property HomepageURL : String Read FHomepageURL Write FHomepageURL;
+    Property DownloadURL : String Read FDownloadURL Write FDownloadURL;
     Property FileName : String Read GetFileName Write FFileName;
     Property Email : String Read FEmail Write FEmail;
     Property OSes : TOSes Read FOSes Write FOses;
@@ -507,7 +509,7 @@ var
 begin
   if FFileName='' then
     begin
-      URI:=ParseURI(ExternalURL);
+      URI:=ParseURI(DownloadURL);
       Result:=URI.Document;
     end
   else
@@ -527,7 +529,8 @@ begin
   Author:=ReadString(Stream);
   License:=ReadString(Stream);
   Description:=ReadString(Stream);
-  ExternalURL:=ReadString(Stream);
+  HomepageURL:=ReadString(Stream);
+  DownloadURL:=ReadString(Stream);
   FileName:=ReadString(Stream);
   Email:=ReadString(Stream);
   Count:=ReadInteger(Stream);
@@ -566,7 +569,8 @@ begin
   WriteString(Stream,Author);
   WriteString(Stream,License);
   WriteString(Stream,Description);
-  WriteString(Stream,ExternalURL);
+  WriteString(Stream,HomepageURL);
+  WriteString(Stream,DownloadURL);
   WriteString(Stream,FileName);
   WriteString(Stream,Email);
   { Write it like this, makes error checking easier when reading. }
@@ -607,7 +611,8 @@ begin
       Author:=P.Author;
       Version:=P.Version;
       Description:=P.Description;
-      ExternalURL:=P.ExternalURL;
+      HomepageURL:=P.HomepageURL;
+      DownloadURL:=P.DownloadURL;
       FileName:=P.FileName;
       Checksum:=P.Checksum;
       Dependencies.Clear;

+ 8 - 4
utils/fppkg/fpxmlrep.pp

@@ -114,7 +114,8 @@ Const
   SNodePackage      = 'package';
   SNodeAuthor       = 'author';
   SNodeLicense      = 'license';
-  SNodeExternalURL  = 'externalurl';
+  SNodeHomepageURL  = 'homepageurl';
+  SNodeDownloadURL  = 'downloadurl';
   SNodeFileName     = 'filename';
   SNodeEmail        = 'email';
   SNodeVersion      = 'version';
@@ -318,7 +319,8 @@ begin
     // Version
     VersionToXML(P.Version,XML,Result);
     AddTextNode(SNodeAuthor,P.Author,XML,Result);
-    AddTextNode(SNodeExternalURL,P.ExternalURL,XML,Result);
+    AddTextNode(SNodeHomepageURL,P.HomepageURL,XML,Result);
+    AddTextNode(SNodeDownloadURL,P.DownloadURL,XML,Result);
     AddTextNode(SNodeFileName,P.FileName,XML,Result);
     AddTextNode(SNodeEmail,P.Email,XML,Result);
     AddTextNode(SNodeDescription,P.Description,XML,Result);
@@ -645,8 +647,10 @@ begin
     begin
       if (N.NodeName=sNodeAuthor) then
         P.Author:=NodeText(N)
-      else if (N.NodeName=sNodeExternalURL) then
-        P.ExternalURL:=NodeText(N)
+      else if (N.NodeName=sNodeHomepageURL) then
+        P.HomepageURL:=NodeText(N)
+      else if (N.NodeName=sNodeDownloadURL) then
+        P.DownloadURL:=NodeText(N)
       else if (N.NodeName=sNodeFileName) then
         P.FileName:=NodeText(N)
       else if (N.NodeName=sNodeEmail) then

+ 7 - 22
utils/fppkg/pkgcommands.pp

@@ -33,16 +33,9 @@ type
     Procedure Execute;override;
   end;
 
-  { TCommandShowAll }
+  { TCommandListPackages }
 
-  TCommandShowAll = Class(TPackagehandler)
-  Public
-    Procedure Execute;override;
-  end;
-
-  { TCommandShowAvail }
-
-  TCommandShowAvail = Class(TPackagehandler)
+  TCommandListPackages = Class(TPackagehandler)
   Public
     Procedure Execute;override;
   end;
@@ -152,23 +145,16 @@ begin
 end;
 
 
-procedure TCommandShowAll.Execute;
-begin
-  ListInstalledPackages;
-end;
-
-
-procedure TCommandShowAvail.Execute;
+procedure TCommandListPackages.Execute;
 begin
-  ListAvailablePackages;
+  ListPackages;
 end;
 
 
 procedure TCommandScanPackages.Execute;
 begin
-  RebuildRemoteRepository;
-  ListRemoteRepository;
-  SaveRemoteRepository;
+  { nothing, already handled in fppkg.pp as special case
+    before the local fppkg directory is processed }
 end;
 
 
@@ -415,8 +401,7 @@ end;
 
 initialization
   RegisterPkgHandler('update',TCommandUpdate);
-  RegisterPkgHandler('showall',TCommandShowAll);
-  RegisterPkgHandler('showavail',TCommandShowAvail);
+  RegisterPkgHandler('list',TCommandListPackages);
   RegisterPkgHandler('scan',TCommandScanPackages);
   RegisterPkgHandler('download',TCommandDownload);
   RegisterPkgHandler('unzip',TCommandUnzip);

+ 7 - 4
utils/fppkg/pkgglobals.pp

@@ -28,20 +28,23 @@ Type
   end;
 
 Const
+  CmdLinePackageName='<cmdline>';
+  CurrentDirPackageName='<currentdir>';
+
   // Dependencies for compiling the fpmkunit unit
   FPMKUnitDepCount=4;
   FPMKUnitDeps : array[1..4] of TFPMKUnitDep = (
     (package: 'hash';
-     reqver : '2.2.1';
+     reqver : '2.2.2';
      undef  : 'NO_UNIT_ZIPPER'),
     (package: 'paszlib';
-     reqver : '2.2.1';
+     reqver : '2.2.2';
      undef  : 'NO_UNIT_ZIPPER'),
     (package: 'fcl-process';
-     reqver : '2.2.1';
+     reqver : '2.2.2';
      undef  : 'NO_UNIT_PROCESS'),
     (package: 'fpmkunit';
-     reqver : '2.2.1';
+     reqver : '2.2.2-1';
      undef  : '')
   );
 

+ 2 - 6
utils/fppkg/pkghandler.pp

@@ -10,10 +10,6 @@ uses
   pkgoptions,
   fprepos;
 
-const
-  CmdLinePackageName='<cmdline>';
-  CurrentDirPackageName='<currentdir>';
-
 type
   { TPackageHandler }
 
@@ -124,8 +120,8 @@ begin
     Error(SErrNoPackageSpecified)
   else if APackage.Name=CmdLinePackageName then
     Error(SErrPackageIsLocal);
-  if APackage.ExternalURL<>'' then
-    Result:=APackage.ExternalURL
+  if APackage.DownloadURL<>'' then
+    Result:=APackage.DownloadURL
   else
     Result:=GetRemoteRepositoryURL(APackage.FileName);
 end;

+ 13 - 9
utils/fppkg/pkgrepos.pp

@@ -21,7 +21,7 @@ procedure CheckFPMakeDependencies;
 function  PackageInstalledVersionStr(const AName:String):string;
 function  PackageAvailableVersionStr(const AName:String):string;
 procedure ListAvailablePackages;
-procedure ListInstalledPackages;
+procedure ListPackages;
 
 procedure ListRemoteRepository;
 procedure RebuildRemoteRepository;
@@ -400,7 +400,7 @@ begin
       if P<>nil then
         begin
           AvailP:=AvailableRepository.FindPackage(FPMKUnitDeps[i].package);
-          if P<>nil then
+          if AvailP<>nil then
             AvailVerStr:=AvailP.Version.AsString
           else
             AvailVerStr:='<not available>';
@@ -502,22 +502,26 @@ begin
 end;
 
 
-procedure ListInstalledPackages;
+procedure ListPackages;
 var
-  P : TFPPackage;
   i : integer;
   SL : TStringList;
+  PackageName : String;
 begin
   SL:=TStringList.Create;
   SL.Sorted:=true;
+  SL.Duplicates:=dupIgnore;
+  for i:=0 to AvailableRepository.PackageCount-1 do
+    SL.Add(AvailableRepository.Packages[i].Name);
   for i:=0 to InstalledRepository.PackageCount-1 do
-    begin
-      P:=InstalledRepository.Packages[i];
-      SL.Add(Format('%-20s %-12s %-12s',[P.Name,P.Version.AsString,PackageAvailableVersionStr(P.Name)]));
-    end;
+    SL.Add(InstalledRepository.Packages[i].Name);
   Writeln(Format('%-20s %-12s %-12s',['Name','Installed','Available']));
   for i:=0 to SL.Count-1 do
-    Writeln(SL[i]);
+    begin
+      PackageName:=SL[i];
+      if (PackageName<>CmdLinePackageName) and (PackageName<>CurrentDirPackageName) then
+        Writeln(Format('%-20s %-12s %-12s',[PackageName,PackageInstalledVersionStr(PackageName),PackageAvailableVersionStr(PackageName)]));
+    end;
   FreeAndNil(SL);
 end;
 

部分文件因为文件数量过多而无法显示