|
@@ -18,11 +18,11 @@ procedure FindInstalledPackages(ACompilerOptions:TCompilerOptions;showdups:boole
|
|
function PackageIsBroken(APackage:TFPPackage):boolean;
|
|
function PackageIsBroken(APackage:TFPPackage):boolean;
|
|
function FindBrokenPackages(SL:TStrings):Boolean;
|
|
function FindBrokenPackages(SL:TStrings):Boolean;
|
|
procedure CheckFPMakeDependencies;
|
|
procedure CheckFPMakeDependencies;
|
|
-function PackageInstalledVersionStr(const AName:String):string;
|
|
|
|
|
|
+function PackageInstalledVersionStr(const AName:String;const ShowUsed: boolean = false;const Local: boolean = false):string;
|
|
function PackageInstalledStateStr(const AName:String):string;
|
|
function PackageInstalledStateStr(const AName:String):string;
|
|
function PackageAvailableVersionStr(const AName:String):string;
|
|
function PackageAvailableVersionStr(const AName:String):string;
|
|
procedure ListAvailablePackages;
|
|
procedure ListAvailablePackages;
|
|
-procedure ListPackages;
|
|
|
|
|
|
+procedure ListPackages(const ShowGlobalAndLocal: boolean);
|
|
|
|
|
|
procedure ListRemoteRepository;
|
|
procedure ListRemoteRepository;
|
|
procedure RebuildRemoteRepository;
|
|
procedure RebuildRemoteRepository;
|
|
@@ -256,17 +256,19 @@ end;
|
|
|
|
|
|
procedure FindInstalledPackages(ACompilerOptions:TCompilerOptions;showdups:boolean=true);
|
|
procedure FindInstalledPackages(ACompilerOptions:TCompilerOptions;showdups:boolean=true);
|
|
|
|
|
|
- function AddInstalledPackage(const AName,AFileName: String):TFPPackage;
|
|
|
|
|
|
+ function AddInstalledPackage(const AName,AFileName: String; const Local: boolean):TFPPackage;
|
|
begin
|
|
begin
|
|
result:=InstalledRepository.FindPackage(AName);
|
|
result:=InstalledRepository.FindPackage(AName);
|
|
if not assigned(result) then
|
|
if not assigned(result) then
|
|
result:=InstalledRepository.AddPackage(AName)
|
|
result:=InstalledRepository.AddPackage(AName)
|
|
else
|
|
else
|
|
begin
|
|
begin
|
|
|
|
+ result.UnusedVersion:=result.Version;
|
|
// Log packages found in multiple locations (local and global) ?
|
|
// Log packages found in multiple locations (local and global) ?
|
|
if showdups then
|
|
if showdups then
|
|
Log(vlDebug,SDbgPackageMultipleLocations,[result.Name,ExtractFilePath(AFileName)]);
|
|
Log(vlDebug,SDbgPackageMultipleLocations,[result.Name,ExtractFilePath(AFileName)]);
|
|
end;
|
|
end;
|
|
|
|
+ result.InstalledLocally:=Local;
|
|
end;
|
|
end;
|
|
|
|
|
|
procedure LoadPackagefpcFromFile(APackage:TFPPackage;const AFileName: String);
|
|
procedure LoadPackagefpcFromFile(APackage:TFPPackage;const AFileName: String);
|
|
@@ -284,7 +286,7 @@ procedure FindInstalledPackages(ACompilerOptions:TCompilerOptions;showdups:boole
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
- function CheckUnitDir(const AUnitDir:string):boolean;
|
|
|
|
|
|
+ function CheckUnitDir(const AUnitDir:string; const Local: boolean):boolean;
|
|
var
|
|
var
|
|
SR : TSearchRec;
|
|
SR : TSearchRec;
|
|
P : TFPPackage;
|
|
P : TFPPackage;
|
|
@@ -302,7 +304,7 @@ procedure FindInstalledPackages(ACompilerOptions:TCompilerOptions;showdups:boole
|
|
UF:=UD+UnitConfigFileName;
|
|
UF:=UD+UnitConfigFileName;
|
|
if FileExistsLog(UF) then
|
|
if FileExistsLog(UF) then
|
|
begin
|
|
begin
|
|
- P:=AddInstalledPackage(SR.Name,UF);
|
|
|
|
|
|
+ P:=AddInstalledPackage(SR.Name,UF,Local);
|
|
LoadUnitConfigFromFile(P,UF)
|
|
LoadUnitConfigFromFile(P,UF)
|
|
end
|
|
end
|
|
else
|
|
else
|
|
@@ -311,7 +313,7 @@ procedure FindInstalledPackages(ACompilerOptions:TCompilerOptions;showdups:boole
|
|
UF:=UD+'Package.fpc';
|
|
UF:=UD+'Package.fpc';
|
|
if FileExistsLog(UF) then
|
|
if FileExistsLog(UF) then
|
|
begin
|
|
begin
|
|
- P:=AddInstalledPackage(SR.Name,UF);
|
|
|
|
|
|
+ P:=AddInstalledPackage(SR.Name,UF,Local);
|
|
LoadPackagefpcFromFile(P,UF);
|
|
LoadPackagefpcFromFile(P,UF);
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
@@ -327,9 +329,9 @@ begin
|
|
// First scan the global directory
|
|
// First scan the global directory
|
|
// The local directory will overwrite the versions
|
|
// The local directory will overwrite the versions
|
|
if ACompilerOptions.GlobalUnitDir<>'' then
|
|
if ACompilerOptions.GlobalUnitDir<>'' then
|
|
- CheckUnitDir(ACompilerOptions.GlobalUnitDir);
|
|
|
|
|
|
+ CheckUnitDir(ACompilerOptions.GlobalUnitDir, False);
|
|
if ACompilerOptions.LocalUnitDir<>'' then
|
|
if ACompilerOptions.LocalUnitDir<>'' then
|
|
- CheckUnitDir(ACompilerOptions.LocalUnitDir);
|
|
|
|
|
|
+ CheckUnitDir(ACompilerOptions.LocalUnitDir, True);
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
@@ -466,13 +468,22 @@ begin
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
-function PackageInstalledVersionStr(const AName:String):string;
|
|
|
|
|
|
+function PackageInstalledVersionStr(const AName:String;const ShowUsed: boolean = false;const Local: boolean = false):string;
|
|
var
|
|
var
|
|
P : TFPPackage;
|
|
P : TFPPackage;
|
|
begin
|
|
begin
|
|
P:=InstalledRepository.FindPackage(AName);
|
|
P:=InstalledRepository.FindPackage(AName);
|
|
if P<>nil then
|
|
if P<>nil then
|
|
- result:=P.Version.AsString
|
|
|
|
|
|
+ begin
|
|
|
|
+ if not ShowUsed then
|
|
|
|
+ result:=P.Version.AsString
|
|
|
|
+ else if Local=p.InstalledLocally then
|
|
|
|
+ result:=P.Version.AsString
|
|
|
|
+ else if not P.UnusedVersion.Empty then
|
|
|
|
+ result:=P.UnusedVersion.AsString
|
|
|
|
+ else
|
|
|
|
+ result:='-';
|
|
|
|
+ end
|
|
else
|
|
else
|
|
result:='-';
|
|
result:='-';
|
|
end;
|
|
end;
|
|
@@ -513,7 +524,7 @@ begin
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
-procedure ListPackages;
|
|
|
|
|
|
+procedure ListPackages(const ShowGlobalAndLocal: boolean);
|
|
var
|
|
var
|
|
i : integer;
|
|
i : integer;
|
|
SL : TStringList;
|
|
SL : TStringList;
|
|
@@ -526,12 +537,20 @@ begin
|
|
SL.Add(AvailableRepository.Packages[i].Name);
|
|
SL.Add(AvailableRepository.Packages[i].Name);
|
|
for i:=0 to InstalledRepository.PackageCount-1 do
|
|
for i:=0 to InstalledRepository.PackageCount-1 do
|
|
SL.Add(InstalledRepository.Packages[i].Name);
|
|
SL.Add(InstalledRepository.Packages[i].Name);
|
|
- Writeln(Format('%-20s %-12s %-3s %-12s',['Name','Installed','','Available']));
|
|
|
|
|
|
+ if ShowGlobalAndLocal then
|
|
|
|
+ Writeln(Format('%-20s %-14s %-14s %-3s %-12s',['Name','Installed (G)','Installed (L)','','Available']))
|
|
|
|
+ else
|
|
|
|
+ Writeln(Format('%-20s %-12s %-3s %-12s',['Name','Installed','','Available']));
|
|
for i:=0 to SL.Count-1 do
|
|
for i:=0 to SL.Count-1 do
|
|
begin
|
|
begin
|
|
PackageName:=SL[i];
|
|
PackageName:=SL[i];
|
|
if (PackageName<>CmdLinePackageName) and (PackageName<>CurrentDirPackageName) then
|
|
if (PackageName<>CmdLinePackageName) and (PackageName<>CurrentDirPackageName) then
|
|
- Writeln(Format('%-20s %-12s %-3s %-12s',[PackageName,PackageInstalledVersionStr(PackageName),PackageInstalledStateStr(PackageName),PackageAvailableVersionStr(PackageName)]));
|
|
|
|
|
|
+ begin
|
|
|
|
+ if ShowGlobalAndLocal then
|
|
|
|
+ Writeln(Format('%-20s %-14s %-14s %-3s %-12s',[PackageName,PackageInstalledVersionStr(PackageName,True,False),PackageInstalledVersionStr(PackageName,True,True),PackageInstalledStateStr(PackageName),PackageAvailableVersionStr(PackageName)]))
|
|
|
|
+ else
|
|
|
|
+ Writeln(Format('%-20s %-12s %-3s %-12s',[PackageName,PackageInstalledVersionStr(PackageName),PackageInstalledStateStr(PackageName),PackageAvailableVersionStr(PackageName)]));
|
|
|
|
+ end;
|
|
end;
|
|
end;
|
|
FreeAndNil(SL);
|
|
FreeAndNil(SL);
|
|
end;
|
|
end;
|