• R/O
  • SSH
  • HTTPS

akdf: Commit


Commit MetaInfo

Revision493 (tree)
Time2020-02-10 03:21:30
Authorderekwildstar

Log Message

Incluída a opção de direcionamento da saída da listagem do Package Manager para um arquivo qualquer
Ajustes para adequação ao novo Krakatoa

Change Summary

Incremental Difference

--- trunk/utl/Package Manager/prj/PackageManager.dpr (revision 492)
+++ trunk/utl/Package Manager/prj/PackageManager.dpr (revision 493)
@@ -12,15 +12,6 @@
1212 KRK.RegExp.Utils,
1313 UFunctions in '..\src\UFunctions.pas';
1414
15-var
16- Error: String;
17- Directory: String = ''; // Diretório informado juntamente com -l ou -i
18- FileName: String = ''; // Arquivo informado juntamente com -l ou -i
19- DelphiVersion: Byte = 0; // Versão informada juntamente com -l ou -i
20- List: Boolean = False; // -l26 ou -lDiretorio ou -lArquivo
21- Install: Boolean = False; // -i26 ou -iDiretorio ou -iArquivo
22- Help: Boolean = False; // -?
23-
2415 begin
2516 TextColor(Yellow);
2617 WriteLn('Package Manager v1.0');
@@ -65,6 +56,18 @@
6556 Directory := Aux
6657 end;
6758 end
59+ else if RegExMatch(CurrentParam,'^-o(.*)',1,1,True,[preCaseLess],Aux) then
60+ begin
61+ // 1. Se algo foi digitado na opção -o E...
62+ // 2. Se esse algo possui um nome de arquivo E...
63+ // 3. Se esse algo não contiver um caminho OU...
64+ // 4. Se esse algo contiver um caminho existente...
65+ if (Aux <> '') and (ExtractFileName(Aux) <> '') and ((ExtractFilePath(Aux) = '') or DirectoryExists(ExtractFilePath(Aux))) then
66+ begin
67+ List := True;
68+ OutputFileName := ExpandFileName(Aux);
69+ end;
70+ end
6871 else if CurrentParam = '-?' then
6972 Help := True;
7073 end;
@@ -84,9 +87,7 @@
8487 // Directory <> '', portanto as duas situações são tratadas do mesmo modo.
8588 // Na situação (1), entretanto, List = True e DelphiVersion > 0, portanto,
8689 // duas situações estão sendo verificadas, sendo a principal aquela que
87- // leva em conta a existência de um diretório, ou seja, caso seja
88- // informado incorretamente -l26 c:\caminho\de\bpls, valerá o caminho e
89- // não o caminho a partir do Delphi 26
90+ // leva em conta o caminho obtido a partir do Delphi
9091 if List then
9192 begin
9293 if DelphiVersion > 0 then
@@ -116,7 +117,7 @@
116117 end;
117118 end
118119 else if FileName <> '' then
119- GetPackageInformation(FileName)
120+ GetPackageInformation(FileName);
120121 end
121122 else if Install then
122123 begin
@@ -153,7 +154,17 @@
153154 WriteLn(' sintaxe, mas informando um nome de arquivo .bpl, para');
154155 WriteLn(' obter informaçõs sobre este arquivo específico');
155156 WriteLn;
156-
157+ TextColor(LightCyan); Write(' -oPA'); TextColor(White); WriteLn(' Direciona as informações listadas pela opção -l para o');
158+ WriteLn(' arquivo informado. Um caminho pode ser informado, mas');
159+ WriteLn(' neste caso ele precisa existir, pois não será criado ');
160+ WriteLn(' automaticamente. Informar um caminho inexistente faz');
161+ WriteLn(' com que a opção -o seja ignorada, o que fará a');
162+ WriteLn(' listagem simplesmente aparecer na tela de forma');
163+ WriteLn(' normal. Informe o nome do arquivo sempre entre aspas');
164+ WriteLn(' duplas, mesmo que ele não tenha espaços em seu nome e');
165+ WriteLn(' mesmo que não seja usado um caminho');
166+// gabarito: ------------------------------------------------------
167+ WriteLn;
157168 TextColor(LightCyan); Write(' -iDV'); TextColor(White); WriteLn(' Instala todos os pacotes que possuem o flag Designtime');
158169 WriteLn(' existentes no Package Output Directory do Delphi cuja');
159170 WriteLn(' versão numérica é identificada por DV');
--- trunk/utl/Package Manager/prj/PackageManager.dproj (revision 492)
+++ trunk/utl/Package Manager/prj/PackageManager.dproj (revision 493)
@@ -3,7 +3,7 @@
33 <ProjectGuid>{98F07EEC-F408-4E18-862A-1B89C5B92EFA}</ProjectGuid>
44 <MainSource>PackageManager.dpr</MainSource>
55 <Base>True</Base>
6- <Config Condition="'$(Config)'==''">Release</Config>
6+ <Config Condition="'$(Config)'==''">Debug</Config>
77 <TargetedPlatforms>1</TargetedPlatforms>
88 <AppType>Console</AppType>
99 <FrameworkType>None</FrameworkType>
@@ -85,8 +85,8 @@
8585 <PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
8686 <VerInfo_Locale>1033</VerInfo_Locale>
8787 <VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName)</VerInfo_Keys>
88- <Manifest_File>(None)</Manifest_File>
89- <Debugger_RunParams>-i26</Debugger_RunParams>
88+ <Debugger_RunParams>-l26 -oteste.txt</Debugger_RunParams>
89+ <Icon_MainIcon>..\res\PackageManager.ico</Icon_MainIcon>
9090 </PropertyGroup>
9191 <ItemGroup>
9292 <DelphiCompile Include="$(MainSource)">
@@ -782,6 +782,7 @@
782782 <ProjectRoot Platform="OSX64" Name="$(PROJECTNAME)"/>
783783 <ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/>
784784 </Deployment>
785+ <ModelSupport>False</ModelSupport>
785786 </BorlandProject>
786787 <ProjectFileVersion>12</ProjectFileVersion>
787788 </ProjectExtensions>
--- trunk/utl/Package Manager/src/UFunctions.pas (revision 492)
+++ trunk/utl/Package Manager/src/UFunctions.pas (revision 493)
@@ -7,13 +7,25 @@
77 function InstallPackage(ADelphiVersion: Byte; AFileName: String): Boolean;
88 procedure GetPackageInformation(AFileName: String);
99 function GetDelphiParameters(ADelphiVersion: Byte; out APackageOutputDirectory: String; out AError: String): Boolean;
10+procedure WriteLnToDevice(AString: String = '');
11+procedure WriteToDevice(AString: String);
1012
13+var
14+ Error: String;
15+ Directory: String = ''; // Diretório informado juntamente com -l ou -i
16+ FileName: String = ''; // Arquivo informado juntamente com -l ou -i
17+ DelphiVersion: Byte = 0; // Versão informada juntamente com -l ou -i
18+ List: Boolean = False; // -l26 ou -lDiretorio ou -lArquivo
19+ Install: Boolean = False; // -i26 ou -iDiretorio ou -iArquivo
20+ OutputFileName: String = ''; // -oArquivo
21+ Help: Boolean = False; // -?
22+
1123 implementation
1224
1325 uses
14- System.SysUtils, Winapi.Windows, Registry, KRK.Lib.Rtl.Sys.Console,
15- KRK.Lib.Rtl.Sys.System.SysUtils, KRK.Lib.Rtl.Common.RegistryUtils,
16- System.RegularExpressionsCore, KRK.Lib.RegExp.Utils, System.Classes, ShlObj,
26+ System.SysUtils, Winapi.Windows, Registry, KRK.Rtl.Sys.Console,
27+ KRK.Rtl.Sys.System.SysUtils, KRK.Rtl.Common.RegistryUtils,
28+ System.RegularExpressionsCore, KRK.RegExp.Utils, System.Classes, ShlObj,
1729 Winapi.KnownFolders;
1830
1931 const
@@ -29,6 +41,9 @@
2941 DELPHI26IDEKEY = 'Software\Embarcadero\BDS\20.0';
3042 DELPHI26LIBRARYKEY = 'Library\Win32';
3143
44+var
45+ OutputFile: TextFile;
46+
3247 function GetDelphiParameters(ADelphiVersion: Byte; out APackageOutputDirectory: String; out AError: String): Boolean;
3348 var
3449 LibraryKey: String;
@@ -236,113 +251,113 @@
236251 else
237252 TextColor(LightMagenta);
238253
239- Write(ExtractFileName(AFileName));
254+ WriteToDevice(ExtractFileName(AFileName));
240255 NormVideo;
241256
242- WriteLn(' (',DMI.Description,')');
257+ WriteLnToDevice(' (' + DMI.Description + ')');
243258
244- WriteLn('├ ','Opções');
259+ WriteLnToDevice('├ Opções');
245260
246- Write('│ ├ Controle de construção: ');
261+ WriteToDevice('│ ├ Controle de construção: ');
247262 TextColor(White);
248263 if DMI.Options.ModuleBuildControl = mbcAlwaysBuild then
249- WriteLn('Construir automaticamente')
264+ WriteLnToDevice('Construir automaticamente')
250265 else
251- WriteLn('Construir manualmente');
266+ WriteLnToDevice('Construir manualmente');
252267 NormVideo;
253268
254- Write('│ ├ Tipo de uso: ');
269+ WriteToDevice('│ ├ Tipo de uso: ');
255270 if DMI.Options.ModuleUsage = muRunTime then
256271 begin
257272 TextColor(Yellow);
258- WriteLn('Tempo de execução');
273+ WriteLnToDevice('Tempo de execução');
259274 end
260275 else if DMI.Options.ModuleUsage = muDesignTime then
261276 begin
262277 TextColor(LightGreen);
263- WriteLn('Tempo de projeto')
278+ WriteLnToDevice('Tempo de projeto')
264279 end
265280 else
266281 begin
267282 TextColor(LightMagenta);
268- WriteLn('Em tempo execução ou de projeto');
283+ WriteLnToDevice('Em tempo execução ou de projeto');
269284 end;
270285 NormVideo;
271286
272- Write('│ ├ Checagem de units duplicadas: ');
287+ WriteToDevice('│ ├ Checagem de units duplicadas: ');
273288 TextColor(White);
274289 if DMI.Options.DoNotCheckForDuplicateUnits then
275- WriteLn('Não')
290+ WriteLnToDevice('Não')
276291 else
277- WriteLn('Sim');
292+ WriteLnToDevice('Sim');
278293 NormVideo;
279294
280- Write('│ ├ Produzido por: ');
295+ WriteToDevice('│ ├ Produzido por: ');
281296 TextColor(White);
282297 if DMI.Options.ModuleProducer = mpPreV4 then
283- WriteLn('Pré-V4')
298+ WriteLnToDevice('Pré-V4')
284299 else if DMI.Options.ModuleProducer = mpUndefined then
285- WriteLn('Indefinido')
300+ WriteLnToDevice('Indefinido')
286301 else if DMI.Options.ModuleProducer = mpCPP then
287- WriteLn('C++ Builder')
302+ WriteLnToDevice('C++ Builder')
288303 else if DMI.Options.ModuleProducer = mpPascal then
289- WriteLn('Delphi');
304+ WriteLnToDevice('Delphi');
290305 NormVideo;
291306
292- Write('│ └ Tipo: ');
307+ WriteToDevice('│ └ Tipo: ');
293308 TextColor(White);
294309 if DMI.Options.ModuleType = mtExecutable then
295- WriteLn('Arquivo executável (.exe)')
310+ WriteLnToDevice('Arquivo executável (.exe)')
296311 else if DMI.Options.ModuleType = mtPackageDLL then
297- WriteLn('Pacote (.bpl)')
312+ WriteLnToDevice('Pacote (.bpl)')
298313 else if DMI.Options.ModuleType = mtLibraryDLL then
299- WriteLn('Biblioteca (.dll)')
314+ WriteLnToDevice('Biblioteca (.dll)')
300315 else if DMI.Options.ModuleType = mtUndefined then
301- WriteLn('Indefinido');
316+ WriteLnToDevice('Indefinido');
302317 NormVideo;
303318
304- WriteLn('├ ','Pacotes requeridos');
319+ WriteLnToDevice('├ Pacotes requeridos');
305320
306321 for var i: Word := 0 to Pred(Length(DMI.RequiredPackages)) do
307322 begin
308323 if i < High(DMI.RequiredPackages) then
309- Write('│ ├ ',DMI.RequiredPackages[i].ItemName)
324+ WriteToDevice('│ ├ ' + DMI.RequiredPackages[i].ItemName)
310325 else
311- Write('│ └ ',DMI.RequiredPackages[i].ItemName);
326+ WriteToDevice('│ └ ' + DMI.RequiredPackages[i].ItemName);
312327
313328 NormVideo;
314- WriteLn;
329+ WriteLnToDevice;
315330 end;
316331
317- WriteLn('├ ','Units inclusas');
332+ WriteLnToDevice('├ Units inclusas');
318333
319334 for var i: Word := 0 to Pred(Length(DMI.ContainedUnits)) do
320335 begin
321336 if i < High(DMI.ContainedUnits) then
322- Write('│ ├ ',DMI.ContainedUnits[i].ItemName, '.dcu ')
337+ WriteToDevice('│ ├ ' + DMI.ContainedUnits[i].ItemName + '.dcu ')
323338 else
324- Write('│ └ ',DMI.ContainedUnits[i].ItemName, '.dcu ');
339+ WriteToDevice('│ └ ' + DMI.ContainedUnits[i].ItemName + '.dcu ');
325340
326341 TextColor(Red);
327342 if idMainUnit in DMI.ContainedUnits[i].ItemDetails then
328- Write('<Main Unit>');
343+ WriteToDevice('<Main Unit>');
329344
330345 if idPackageUnit in DMI.ContainedUnits[i].ItemDetails then
331- Write('<Package Unit>');
346+ WriteToDevice('<Package Unit>');
332347
333348 if idOriginalWeakPackageUnit in DMI.ContainedUnits[i].ItemDetails then
334- Write('<Weak Package Unit>')
349+ WriteToDevice('<Weak Package Unit>')
335350 else if idWeakPackageUnit in DMI.ContainedUnits[i].ItemDetails then
336- Write('<Imported Weak Package Unit>');
351+ WriteToDevice('<Imported Weak Package Unit>');
337352
338353 if idImplicitlyImported in DMI.ContainedUnits[i].ItemDetails then
339- Write('<ImplicitlyImported>');
354+ WriteToDevice('<ImplicitlyImported>');
340355 NormVideo;
341- WriteLn;
356+ WriteLnToDevice;
342357 end;
343358
344- WriteLn('└ ','Módulo do pacote');
345- WriteLn(' └ ',DMI.PackageModule.ItemName,'.dcp');
359+ WriteLnToDevice('└ Módulo do pacote');
360+ WriteLnToDevice(' └ ' + DMI.PackageModule.ItemName + '.dcp');
346361 end;
347362
348363 function ListPackagesInformations(ADirectory: String): Boolean;
@@ -350,11 +365,21 @@
350365 SR: TSearchRec;
351366 begin
352367 Result := False;
368+
353369 if FindFirst(ADirectory + '\*.bpl',faNormal,SR) = 0 then
354370 begin
371+ if OutputFileName <> '' then
372+ begin
373+ NormVideo;
374+ WriteLn('Saída redirecionada para o seguinte arquivo:');
375+ TextColor(LightCyan);
376+ WriteLn(OutputFileName);
377+ WriteLn;
378+ end;
379+
355380 repeat
356381 GetPackageInformation(ExpandFileName(ADirectory + '\' + SR.Name));
357- WriteLn;
382+ WriteLnToDevice;
358383 until FindNext(SR) <> 0;
359384
360385 // O loop anterior coloca sempre uma linha após a listagem do poacote, ao
@@ -366,4 +391,40 @@
366391 end;
367392 end;
368393
394+procedure WriteLnToDevice(AString: String = '');
395+begin
396+ if (TTextRec(OutputFile).Mode = 0) and (OutputFileName <> '') then
397+ begin
398+ AssignFile(OutputFile,OutputFileName);
399+ FileMode := fmOpenWrite;
400+ Rewrite(OutputFile);
401+ end;
402+
403+ if OutputFileName <> '' then
404+ WriteLn(OutputFile,AString)
405+ else
406+ WriteLn(AString);
407+end;
408+
409+procedure WriteToDevice(AString: String);
410+begin
411+ if (TTextRec(OutputFile).Mode = 0) and (OutputFileName <> '') then
412+ begin
413+ AssignFile(OutputFile,OutputFileName,CP_UTF8);
414+ FileMode := fmOpenWrite;
415+ Rewrite(OutputFile);
416+ end;
417+
418+ if OutputFileName <> '' then
419+ Write(OutputFile,AString)
420+ else
421+ Write(AString);
422+end;
423+
424+initialization
425+
426+finalization
427+ if TTextRec(OutputFile).Mode <> 0 then
428+ CloseFile(OutputFile);
429+
369430 end.
Show on old repository browser