2017-01-09 5 views
1

Meine allgemeine Frage ist, dass ich, zumindest zum Debuggen einer Build-Datei, eine genaue Version des Befehls sehen möchte, der ausgeführt wird. Ich werde unten ein Beispiel geben. Ich möchte auch sehen, dass die Ausgabe dieser Ausführung an STDOUT gesendet wird, da ST nur die Ausgabe an STDERR erfasst.Wie kann ich STDOU von einem ST3-Build erfassen?

Hier ist ein Beispiel, warum ich das möchte.

Ich habe die Build-Datei sql slime_build erstellt und im Verzeichnis der Sublimate Packages gespeichert.

{ "cmd": [ "psql", "-U", "TEVs", "-d", "TEVs", "-o", "psql_out.txt", "-f" "$ file"] }

ich habe eine Scheibe in ST3 offen psql_out.txt so, dass ich es wieder geladen werden sehen, ob Build ausgeführt sein Inhalt ändert.

Ich habe eine Datei testbuild.sql, die funktioniert, wenn ich psql von der Kommandozeile aus mit der Eingabe von es ausführen.

Wenn ich die ST3 Tab geöffnet für testbuild.sql und drücken Sie Befehl-B haben, sehe ich die ST3 Fußzeile Wechsel zu „Gebäude“ für ein paar Sekunden, aber es gibt keine Änderung in der Ausgabedatei und nichts erscheint in das untere Fenster des ST3-Fensters, das geöffnet wird, wenn man Befehl-B eingibt.

Es wäre sehr hilfreich, nur genau zu sehen, wie ST3 den Befehl aufruft.

Ich würde eine Lösung bevorzugen, die nicht die Änderung von Sublime Text selbst beinhaltet.

PS Ich habe auch versucht, die längere Form

{ "cmd": [ "psql", "-U", "TEVs", "-d", "TEVs", „-o "," /Users/Wes/Dropbox/Programming/ElectionTransparency/psql_out.txt "," -f "," $ datei "], " working_dir ":"/Benutzer/Wes/Dropbox/Programmierung/WahlTransparenz " ?}

+0

Es wäre auch hilfreich, beim Erstellen eines Builds andere Diagnoseinformationen von ST3 zu erhalten. Zum Beispiel habe ich in einer Iteration eine .sublime_build-Datei mit fehlerhafter JSON-Syntax. Es wäre toll gewesen zu sagen, dass der JSON nicht analysiert hat. – WesR

Antwort

2

Handhabung der Teile Ihrer Frage um:

Ich möchte eine genaue Version des Befehls sehen, der ausgeführt wird.

Solange Ihr Build-System die Option nicht gesetzt quiet zu true, Sublime Ausgänge, was es läuft auf seine Konsole, wenn Sie ein Build-System auszuführen. quiet ist standardmäßig auf false eingestellt. Solange Sie es nicht einstellen, werden Sie sehen, wo es läuft. Zum Beispiel:

Simple build

Sie die Konsole über View > Show Console aus dem Menü oder durch Drücken Strg + `

öffnen können, würde ich auch die Ausgabe dieser Ausführung gerne sehen, die an STDOUT gesendet werden , da ST nur die Ausgabe an STDERR erfasst.

Sublime erfasst und zeigt sowohl stdout und stderr und zeigt sie in der Build-Ergebnisse Panel. Der häufigste Grund dafür, dass Sie nicht das tun, was Sie erwarten, hängt normalerweise damit zusammen, dass ein Programm seine Ausgabe puffert, sodass es erst in den Build-Ergebnissen erscheint, nachdem das Programm beendet oder eine ganze Reihe von Ausgaben generiert wurde.

Sublime showing build output

Angenommen, Sie tatsächlich Ausgabe in eine Datei noch erzeugen wollte und es auch in der Build-Ergebnisfenster sehen, so etwas wie die folgenden funktionieren sollte (Einschränkung: Ich benutze keine noch bin vertraut mit psql):

{ 
    "shell_cmd": "psql -U tevs -d tevs -f $file | tee psql_out.txt", 
    "selector": "source.sql" 
} 

Diese verwendet shell_cmd anstelle von cmd, die für den Einsatz von Shell Umleitung ermöglicht. Wenn Sie -o nicht angeben, sendet psql seine Ausgabe stattdessen an stdout (wenn dies nicht der Fall ist, müssen Sie das entsprechende Argument setzen, um es zu tun). Das tee Programm pipes stdin zu stdout und speichert es auch in der Liste der Dateien, die Sie es geben, so dass Sie die Ausgabe im Terminal anzeigen und gleichzeitig in der Datei speichern können.

Es wäre auch hilfreich, bei der Erstellung eines Builds andere Diagnoseinformationen von ST3 zu erhalten. Zum Beispiel habe ich in einer Iteration eine .sublime_build-Datei mit fehlerhafter JSON-Syntax. Es wäre toll gewesen zu sagen, dass der JSON nicht analysiert hat.

Es gibt keine direkte Möglichkeit, dies für ein Build-System zu tun; Wenn es nicht analysiert wird, wird es nicht im Menü des Build-Systems angezeigt, und im Gegensatz zu anderen solchen Dateien gibt Sublime keinen Fehler aus. Allerdings wird die Syntax-Hervorhebung geben Hinweise, wenn sie denkt, dass die Syntax ungültig ist, so helfen, dass kann (hier die shell_cmd Leitung ein abschließendes fehlendes Komma, so dass die Syntax ist sauer auf den folgenden Doppelpunkt):

Build syntax error Wenn Sie sehen diese Art von Fehlerhinweisen möglicherweise nicht, weil das von Ihnen verwendete Farbschema nicht mit ihnen umgehen kann.

+0

Sehr gründliche Antworten. Vielen Dank! – WesR

+0

Für andere Neulinge (und vielleicht ST3-Dokumentationsautoren) die wichtigen Lektionen hier, die in der ST3-Dokumentation nicht offensichtlich waren: (1) Blick auf die Konsole für Informationen, die nicht im Ergebnisfenster erscheinen; (2) "cmd" aktiviert keine Funktionalität, die von der Shell bereitgestellt wird, aber "shell_cmd" tut das! Nochmals vielen Dank OdatNurd! – WesR

+1

@WesR zum spezifischen Hervorheben von '.sublime-build' Dateien (und anderen Sublime Formaten, wie' .sublime-preferences'), installiere das ['PackageDev'] (https://packagecontrol.io/packages/PackageDev) Paket und die verschiedenen Syntaxoptionen stehen im Syntaxmenü unter PackageDev zur Verfügung. Als Plug-in für eines meiner eigenen Projekte unterstützt mein [Neon Neon Color Scheme] (https://packagecontrol.io/packages/Neon%20Color%20Scheme) spezifische Unterstützung für die verschiedenen PackageDev-Formate, so dass Sie [spot Fehler] (https://i.stack.imgur.com/u6laU.png). – MattDMo

Verwandte Themen