Terminal von einem Automator-Workflow aus starten?

6

Ich verwende ziemlich oft den Befehl python -m SimpleHTTPServer im Terminal, um einen Webserver zum Testen von Apps zu starten . Nachdem ich gerade die Grundlagen des Automators kennengelernt hatte, dachte ich, dass dies eine großartige Verwendung für ihn sein würde. Nachdem ich Folgendes als Dienst hinzugefügt habe, kann ich jetzt mit der rechten Maustaste auf einen Ordner klicken und einen Webserver starten, der auf diesen Ordner zeigt.

cd $1
python -m SimpleHTTPServer 8000

Das einzige Problem, das ich habe, ist das Fehlen der Ausgabe aus dem Workflow. Wenn ich es manuell mache, wird in einem Terminalfenster angezeigt, welche Anforderungen eingehen, und ich kann Strg + C drücken, um den Webserver zu beenden.

Der Automator-Workflow ist still und ich muss Activity Monitor öffnen und Python beenden, um ihn zu schließen. Gibt es eine Möglichkeit, das Skript in einem Terminalfenster ausführen zu lassen?

Littlecharva
quelle

Antworten:

6

Ich habe anhand des folgenden Artikels herausgefunden, wie ich es selbst mache.

http://hints.macworld.com/article.php?story=20050827164648766

Es wurde eine Zeile hinzugefügt, um den Python-Befehl auszuführen:

on run {input, parameters}
  tell application "Terminal"
    activate
    if (the (count of the window) = 0) or ¬
     (the busy of window 1  = true) then
      tell application "System Events"
        keystroke "n" using command down
      end tell
    end if
    do script "cd \"" & (POSIX path of ¬
     (input as string)) & "\"" in window 1
    do script "python -m SimpleHTTPServer 8000" in window 1
  end tell
  return input
end run
Littlecharva
quelle
Ersetzen Sie den Block "tell application" System Events "durch" do script ". Ein Befehl "Skript ausführen" ohne Parameter öffnet ein neues Terminalfenster. Das Simulieren von Tastenanschlägen ist ein unzuverlässiges Mittel, um eine Anwendung zu skripten. Tun Sie es nur als letzten Ausweg, wenn es keine Möglichkeit gibt, es direkt anzuweisen, das zu tun, was Sie wollen.
Chris Seite
Dieser "do script" -Befehl funktioniert nicht bei allen gültigen Pfadnamen. Entfernen Sie die Anführungszeichen aus der Shell-Befehlszeichenfolge (\ ") und verwenden Sie quoted form of (POSIX path of (input as string))stattdessen. Es ist bekannt quoted form of, wie alle Zeichen, die für Shell-Befehle in Anführungszeichen gesetzt werden müssen, korrekt in Anführungszeichen gesetzt werden.
Chris Page
4

Wenn Sie Automator verwenden möchten, versuchen Sie es mit dem Growl Notifier in Automator (unten ist ein Beispiel). Growl ist unter OS X für fast alle Anwendungen, Skripte und Dienste erweiterbar. Es eignet sich hervorragend für die Anzeige von Ausgaben für nahezu alles, was man sich vorstellen kann.

Auto Knurren

l'l'l
quelle
Scheint nicht mit Python zu funktionieren , trotzdem keine Ausgabe.
Littlecharva