Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   ActionChain (https://www.delphipraxis.net/175514-actionchain.html)

CCRDude 27. Jun 2013 14:56

ActionChain
 
Liste der Anhänge anzeigen (Anzahl: 3)
ActionChain entstand ursprünglich aus der Not, vor und nach jedem Delphi-Build noch diverse zusätzliche Aktionen ausführen zu müssen (sei es Anpassung an Release-Optionen oder nachträgliches Patchen des PE-Headers). Zeitweise habe ich dafür ein fertiges Produkt benutzt, in dem mir aber für mich wichtige Elemente fehlten.

ActionChain erlaubt es, wie der Name hoffentlich auch andeutet, Ketten von Aktionen zu definieren. Fast wie Batch-Dateien, nur grafisch zu bearbeiten. Übrigens sind diese Ketten auch wieder exportierbar als Kommandozeilenanwendung, so dass fertige Dateien nicht auf eine grafische Oberfläche angewiesen sind (das Modul fehlt hier wegen der Größenbeschränkung bei Uploads gerade).

Unterstützt sind inzwischen 264 Aktionen; mal als groben Überblick:
  • Process creation/termination
  • cwRsync synchronization
  • MySQL actions
  • Bazaar VCS actions
  • MSBuild
  • Delphi
  • FreePascal
  • Doxygen
  • Visual Studio Linker
  • WSDK Message Compiler
  • WSDK Resource Compiler
  • WSDK SignTool
  • PE patches (e.g. to fix Delphi bugs)
  • File system actions
  • File hash calculation
  • Text hash calculation
  • InCtrl5 monitoring
  • Ini files
  • InnoSetup installer
  • NSIS installer
  • FTP
  • ntrights
  • XCACLS
  • Network actions (get username, host name, ip address, mac address)
  • Network drive mappings
  • 7Zip archives
  • Arj archives
  • Cab archives
  • Chm archives
  • NSIS "archives"
  • UPX packer
  • PSTools
  • Registry actions
  • Screenshot action
  • DACL/SID actions
  • System service actions
  • GNU gettext actions
  • VMWare Remote Control
Über ein Plugin-System lassen sich andere Kommandozeilentools hinzufügen. Bestehende Aktionen lassen sich per PascalScript ergänzen.

Ich hab noch einige Tickets, was ich ergänzen möchte, würde mich aber über externes Feedback freuen, weil ich es, wenn machbar, gerne auch allgemeintauglich weiterentwickeln möchte.

sahimba 27. Jun 2013 15:18

AW: ActionChain
 
Hallo,

ich habe jetzt nur ganz kurz Zeit gehabt, reinzuschauen. Mein erster Eindruck: :thumb:

Könnte für mich tatsächlich Ersatz für Finalbuilder werden da ich von diesem ohnehin nur einen Bruchteil der Möglichkeiten verwende. SVN Unterstützung scheint ja gegeben zu sein. Was mir auf den ersten Blick fehlt (vielleicht zeigt mir der zweite Blick, dass es geht) ist, ein Projekt mit verschiedenen Delphi-Versionen bauen zu können. Ggf. findest Du hier (http://ddobjects.de/free-software "Delphi Component Installer") ein wenig Code, welcher Dir beim Ausbau der Action helfen könnte.

Nach meinem Urlaub werde ich mich etwas ausführlicher mit Deinem Tool befassen.

Danke und Grüße
-s-

CCRDude 27. Jun 2013 15:53

AW: ActionChain
 
Danke für's Reinschauen :)

Unterstützt ist im Prinzip natürlich jedes Kommandozeilentool. Subversion ist aktuell eine Extra-Action. Bazaar ist als einziges vollständiges VCS soweit, dass einzelne Bazaar-Befehle (commit, push, ...) eigenständige Actions sind. Aber: es ist auf meiner Roadmap, SVN auch komfortabel direkt in die passenden Actions aufzusplitten. Die Rümpfe dafür habe ich schon, muss nur noch aus der SVN-Doku die Parameter der einzelnen Befehle extrahieren, dann ist kein Ausschreiben der Parameter mehr nötig, sondern sie werden aus den Einstellungen zusammengesetzt.

Eine Delphi-Versions-Erkennung habe ich sogar irgendwo rumfliegen... aktuell kann man nur manuell umschalten, indem den 3rd party path zu dcc32.exe einstellt. Müsste mal überlegen, wie ein Umschalter für die Executable da schon ins Konzept einpflegbar wäre :) (ansonsten wären wenigstens verschiedene Einträge für verschiedene Versionen natürlich sofort machbar!)

Back2Code 27. Jun 2013 16:04

AW: ActionChain
 
Wie siehts aus mit Git Unterstützung? Geplant ?:shock:

Der Exit Button im Ribbon geht übrigens nicht.

WladiD 27. Jun 2013 16:19

AW: ActionChain
 
Welche Script-Engine steckt hinter PascalScript genau?

CCRDude 27. Jun 2013 16:58

AW: ActionChain
 
@Wladi: RemObjects.

Oh ja. Ribbons... ActionChain war/ist nebenbei mein Ribbons-Ausprobier-Projekt :) Habe ich behoben.

@Polymorphin: Git und Cvs stehen neben Svn auf der Liste, ja :)

Zur Veranschaulichung, so einen Block muss ich in etwa für jede Svn/Git/Cvs-Aktion schreiben:
Delphi-Quellcode:
{ TChainActionBazaarBranch }

function TChainActionBazaarBranch.CommandLineParameters: string;
begin
   Result := 'branch';
end;

class function TChainActionBazaarBranch.DisplayName: string;
begin
   Result := 'Branch Bazaar repository';
end;

class function TChainActionBazaarBranch.GetDescriptionCommandLineParameter: string;
begin
   Result := 'help branch';
end;

procedure TChainActionBazaarBranch.SpecifyParameters;
begin
   inherited;
   AddBooleanParameter('UseExistingDir', 'Use an existing directory', '--use-existing-dir');
   AddBooleanParameter('Stacked', 'Create a stacked branch', '--stack');
   AddBooleanParameter('StandAlone', 'Do not use a shared repository, even if available', '--standalone');
   AddStringParameter('FilesFrom', 'Get file contents from this tree', '--files-from=%s');
   AddBooleanParameter('Switch', 'Switch the checkout in the current directory to the new branch', '--switch');
   AddBooleanParameter('Hardlink', 'Hard-link working tree files where possible', '--hardlink');
   AddBooleanParameter('Bind', 'Bind new branch to from location', '--bind');
   AddBooleanParameter('NoTree', 'Create a branch without a working tree', '--no-tree');
   AddStringParameter('Revision', 'Revision', '--revision="%s"');
   with AddStringParameter('FromLocation', 'From location', '%s') do begin
      AddChooseDirectoryEditPopup;
   end;
   with AddStringParameter('ToLocation', 'To location', '%s') do begin
      AddChooseDirectoryEditPopup;
   end;
end;

WladiD 27. Jun 2013 17:03

AW: ActionChain
 
Danke für dei Antwort. Ist auf jeden Fall ein geiles Tool.

Ralf Kaiser 28. Jun 2013 22:18

AW: ActionChain
 
Wie greift man denn auf definierte Variablen zu?

Wenn z.B. eine Variable "TEST" mit dem Inhalt "123" existiert, kann man diesen Inhalt z.B. mit "ShowMessage (simple)" ausgeben (nur als Beispiel)?

Ich habe schon verschiedene Möglichkeiten, z.B "$(TEST)", ohne Erfolg ausprobiert.

Wie ist die Syntax mit der man auf Variablen zugreift?

Danke schon mal,
Ralf

CCRDude 4. Jul 2013 13:28

AW: ActionChain
 
So, Entschuldigung, hatte eine ungeplante Gartenwoche...

Das Dollarzeichen geht schon in die richtige Richtung: Mit spitzen Klammern und dem Dollar drin geht das: "Hallo <$TEST>".

Für die Skript-Funktion geht zudem:

Delphi-Quellcode:
function GetVar(AVarName: String): Variant;
function GetRawVar(AVarName: String): Variant;
procedure SetVar(AVarName: String; AData: Variant);
function GetParameter(AVarName: String): Variant;
function GetRawParameter(AVarName: String): Variant;
procedure SetParameter(AVarName: String; AData: Variant);
Also zum Beispiel eine Scripted action (CustomScript) mit folgendem OnExecute:
Delphi-Quellcode:
begin
   ShowMessage('Hallo ' + GetVar('Name'));
end.
Werde ein Demo in den Installer packen.

Subversion hab ich grob auch schon umgesetzt, fehlen noch ein paar Parameterfelder.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz