Ich trage mich mit dem Gedanken eine Versionsverwaltungssystem (für AutoIt-Skripte) zu schreiben. Dazu habe ich eine grundsätzliche Frage: Ist es möglich mit Hilfe eines LUA-Skriptes beim Schliessen eines Skriptfiles in Scite ein Event abzufeuern, welches dann mein Programm veranlasst das Skript wieder in die DB zurück zu speichern?
Der umgedrehte Weg funktioniert ja mit ShellExecute problemlos => Scite öffnet automatisch das Skript.
![](https://autoit.de/wcf/images/avatars/c9/575-c953f4a84f90f4a2f7fece34d6a24af5de74610c.jpeg)
Versionsverwaltung von Skripten, @BugFix: Frage machbar?
-
-
- Offizieller Beitrag
Auch wenn du die Frage an BugFix gestellt hast, es sollte möglich sein.
Dein Luascript muss nur beim auftreten des entsprechenden Events z.b. OnClose eine Nachricht an dein AutoItscript senden.
Bin mir aber im Augenblick nicht sicher, ob LUA z.B. WM_COPY_DATA Messages senden kann, worauf deine Versionsverwaltung reagieren kann.
Eventuell ist es sogar einfacher, das LUA die DB schreibt, als wenn dein Script darauf regiert.Mal sehen was der LUA-Meister dazu zu sagen hat.
-
- Offizieller Beitrag
Ist es möglich mit Hilfe eines LUA-Skriptes beim Schliessen eines Skriptfiles in Scite ein Event abzufeuern, welches dann mein Programm veranlasst das Skript wieder in die DB zurück zu speichern?
Ja, das ist möglich.
SciTE feuert folgende Events:CodeCurrently, OnOpen, OnClose, OnSwitchFile, OnSave, OnBeforeSave, OnChar, OnKey, OnSavePointReached, OnSavePointLeft, OnDwellStart, OnDoubleClick, OnMarginClick, OnUpdateUI, and OnUserListSelection are supported.
SciTE beinhaltet das "SciTE Director Interface" (s. <Hilfe zu SciTE> <SciTE4AutoIt3> <SciTE Documentation> <letzte-Zeile-Link: SciTE Director Interface>).
Ich hatte bereits das SciTE Interface als AutoIt-UDF verfügbar gemacht. Wenn du mehr auf der Lua-Ebene machen möchtest ist das ganz nützlich.Um auf das Event zu reagieren brauchst du nur ein Miniskript:
BashCallRewriteDataBase = EventClass:new(Common) function CallRewriteDataBase:OnClose(_filename) -- print('CLOSED',_filename) -- debug os.execute('"Lw:\\DER\\PFAD\\zur-Datei.exe" '.._filename) end
Speichere das als eine Lua-Datei und lade diese Datei im SciTEStartup.lua an letzter Position. Wichtig bei den Pfaden: Immer doppelten Backslash.
Wie du siehst, ruft das Luaskript nach dem Schließen einer Datei eine von dir hinterlegte exe auf und übergibt als Parameter den Dateinamen. Das kannst du dann entsprechend weiter verarbeiten.(Eine kleine Versionsverwaltung hatte ich ja bereits mal mit Lua erstellt.)
Wenn noch Fragen sind - melde dich.
EDIT: Da die geschlossene Datei im Pfad ja auch Leerzeichen enthalten kann ist es besser, den Pfad auch nochmal einzufassen:
os.execute('"Lw:\\DER\\PFAD\\zur-Datei.exe" "'.._filename..'"') -
Das liest sich gut, jetzt habe ich wohl keine Ausrede mehr das Projekt aufzuschieben. Hätte nicht gedacht, daß dies so einfach wird.
mfg autoBert
-
- Offizieller Beitrag
jetzt habe ich wohl keine Ausrede mehr das Projekt aufzuschieben.
Ich denke es ist sinnvoll, dass du deine Versionsverwaltung auf bestimmte Dateitypen begrenzt. Die Abfrage kannst du natürlich in deinem Skript machen, aber einfacher geht das direkt im Lua-Skript und über Properties regelst du, welche Typen berücksichtigt werden.
Würde dann so aussehen (den Namen der Property kannst du natürlich frei wählen):CodeCallRewriteDataBase = EventClass:new(Common) function CallRewriteDataBase:OnClose(_filename) local sFiletypes = (props['version.management.filetypes']):lower() -- Eintrag in "SciTEUser.properties": version.management.filetypes=au3|lua|cpp local sExt = (props['FileExt']):lower() -- Erweiterung der aktuellen Datei local iMatch = sFiletypes:find(sExt) if not iMatch then return end os.execute('"Lw:\\DER\\PFAD\\zur-Datei.exe" '.._filename) end
-
- Offizieller Beitrag
BugFix, wie sieht es eigentlich bei LUA mit Messages senden aus?
Man kann ja problemlos aus einem Autoitscript heraus mit SciTE per WM_COPY_DATA kommunizieren, geht das auch andersrum?
Hab bis jetzt nichts brauchbares dazu gefunden. Geht das überhaupt?Sorry, autoBert das ich deine Thread ein wenig kapere.
-
- Offizieller Beitrag
Ja das geht in beide Richtungen. Habe es zwar noch nie so genutzt, aber zumindest sagt das die Beschreibung des SciTE Director Interface.
-
- Offizieller Beitrag
Cool, hab ich bis jetzt noch nicht gesehen. Eigentlich sollte man mich jetzt mit dem RTFM Smiley verbrügeln
-
Ne andere Frage was genau meinst du unter Versionierung?
-
Versionierung ist vielleicht der falsche Ausdruck obwohl die Versions-Nr. sollen auch automatisch vergeben werden. Alle für einen Programmstand nötigen Dateien außer Standard-Includes sollen in einer DB gespeichert werden. Dazu noch die AutoItversion, bekannte Bugs (und alles was mir noch so einfällt) um beim Bearbeiten älterer Versionen zur richtigen AutoIt-Version switchen zu können. Das ganze mit SQLite also Einzelplatz.
-
Hört sich interessant an!
Veröffentlichst du es später? Hätte schon lange Bedarf für so etwas.Grüsse!
-
Wenn ich es soweit hin bekomme, daß es meinen Bedürnissen genügt laß ich es auch auf die Menschheit los. Irgendjemand muß ja die Bug's finden und melden. Das Skript zum Switchen hatte Raupi mal erwähnt das er es im Einsatz hat, da sehe ich als keine Probleme, mit SQLite kenn ich mich leidlich aus also auch keine größeren Probleme. Hört sich also nach Fleißarbeit an, und da könnte der Hund begraben liegen.
-
Die Idee ist gut aber nicht neu. Ich persönlich nutze git mit Sourcetree...
Bin sehr auf dein Projekt gespannt.