No estoy realmente familiarizado con el lenguaje Scala en absoluto, pero parece que la secuencia de comandos solo está diseñada para que el usuario ingrese la contraseña, no los argumentos o stdin
, que es lo que necesita Automator para pasar los datos. .
El shell en el que Automator ejecuta los scripts no es interactivo, por lo que su script no puede solicitar directamente al usuario una contraseña. Si puede volver a trabajar su secuencia de comandos para tomar una contraseña a través de stdin
, podría usar un contenedor de AppleScript para obtener un diálogo de contraseña, si eso es lo que está esperando.
Si reescribe su secuencia de comandos pgpsign
para tomar una contraseña de stdin
, puede usar una acción Applescript (con algunos scripts de shell incrustados) para mostrar un diálogo de contraseña y obtener los resultados que desea.
Reemplace su acción Ejecutar shell script en su flujo de trabajo actual con una acción Ejecutar AppleScript , con el siguiente código:
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
No es lo más sencillo, así que analizaré línea por línea lo que está haciendo.
on run {input, parameters}
set thePath to quoted form of POSIX path of first item of input as string
Esto obtiene la entrada del servicio (la carpeta que seleccionó) y la convierte en una cadena que el script de shell puede usar.
tell application "System Events"
display dialog "Password:" default answer "" with hidden answer
end tell
set pass to text returned of result
Esto abre un diálogo de contraseña y almacena el resultado en la variable pass
. Por lo general, en AppleScript no necesita la porción System Events
tell, pero debido a algunas peculiaridades con Automator, se requiere aquí.
do shell script "cd " & thePath & "; echo " & quoted form of pass & " | perl -ne 'chomp and print' | ~/scripts/pgpsign"
Esto lo une todo y envía los parámetros requeridos a su script. Primero, cambiamos al directorio seleccionado (para responder a su pregunta en los comentarios, una vez que se haya escrito su script, es necesario que primero escriba cd
en el directorio que desee). Luego, echo
se usa para enviar la contraseña a stdin
, y se canaliza a través de la parte de perl para eliminar la nueva línea final (que es una característica molesta de AppleScript y de lo contrario causaría que una contraseña válida falle), luego se envía a su script.
Lamento haberle dado mucho que digerir, pero si quiere usar Automator para esto, probablemente sea la forma más fácil, a menos que quiera codificar su contraseña (que obviamente no es aconsejable por razones de seguridad).