Non ho alcuna familiarità con il linguaggio di Scala, ma sembra che lo script sia costruito per prendere input dell'utente per la password, non per gli argomenti o stdin
, che è ciò che è necessario affinché Automator passi i dati .
La shell su cui Automator esegue gli script non è interattiva, quindi lo script non può richiedere direttamente all'utente una password. Se riesci a rielaborare lo script per acquisire una password tramite stdin
, puoi utilizzare un wrapper AppleScript per ottenere una finestra di dialogo con password, se è quello che ti aspetti.
Se rielabori lo script pgpsign
per prendere una password da stdin
, puoi utilizzare un'azione di Applescript (con alcuni script di shell incorporati) per visualizzare una finestra di dialogo della password e ottenere i risultati che desideri.
Sostituisci l'azione Esegui script shell nel tuo flusso di lavoro corrente con un'azione Esegui AppleScript , con il seguente codice:
on run {input, parameters}
set thePath to quoted form of POSIX path of first item of input as string
tell application "System Events"
display dialog "Password:" default answer "" with hidden answer
end tell
set pass to text returned of result
do shell script "cd " & thePath & "; echo " & quoted form of pass & " | perl -ne 'chomp and print' | ~/scripts/pgpsign"
end run
Non è il più semplice, quindi eseguirò linea per linea ciò che sta facendo.
on run {input, parameters}
set thePath to quoted form of POSIX path of first item of input as string
Questo ottiene l'input dal servizio (la cartella selezionata) e lo trasforma in una stringa che lo script della shell può utilizzare.
tell application "System Events"
display dialog "Password:" default answer "" with hidden answer
end tell
set pass to text returned of result
Questo fa apparire una finestra di dialogo della password e memorizza il risultato nella variabile pass
. Normalmente in AppleScript non hai bisogno della porzione di System Events
tell, ma a causa di alcune stranezze con Automator, è necessario qui.
do shell script "cd " & thePath & "; echo " & quoted form of pass & " | perl -ne 'chomp and print' | ~/scripts/pgpsign"
Ciò lega tutto insieme e invia i parametri richiesti al tuo script. Per prima cosa passiamo alla directory selezionata (per rispondere alla tua domanda nei commenti, poiché il tuo script è scritto, è necessario prima cd
alla directory che vuoi). Quindi echo
viene usato per inviare la password a stdin
, e viene convogliata attraverso la parte perl per rimuovere la riga finale finale (che è una caratteristica fastidiosa di AppleScript e altrimenti causerebbe il fallimento di una password valida), quindi inviata al tuo script.
Ci scusiamo per darti un sacco di cose da digerire, ma se vuoi usare Automator per questo, è probabilmente il modo più semplice, a meno che tu non voglia hardcare la tua password (che ovviamente è sconsigliabile per ragioni di sicurezza).