Utilizando el automatizador ¿es posible ejecutar un shell script que requiera la entrada del usuario (una contraseña)? El shell script debe ser ejecutado en la carpeta actualmente seleccionada. Escribí una acción "Ejecutar Shell script" como en la siguiente figura:
Sobre las acciones de la cáscara:
cd $1
~/scripts/pgpsign
Primero cambio a la carpeta actual seleccionada y luego ejecuto mi script, que por lo que entiendo está fallando ya que requiere procesar una entrada antes de proceder.
A continuación el código completo del script (en Scala)
#!/bin/sh
exec scala "$0" "$@"
!#
import sys.process._
object PGPSign {
def main(args: Array[String]) {
print("Please type passphrase : ")
val passPhrase = readLine()
signFilesInDirectory(new java.io.File("."), passPhrase.toString)
}
def signFilesInDirectory(dir: java.io.File, passPhrase: String) {
if(!dir.exists())
throw new java.io.FileNotFoundException
if(!dir.isDirectory())
throw new RuntimeException("Expecting directory")
println("Signing files in directory: " + dir.getAbsolutePath())
for{file <- dir.listFiles
if !file.isDirectory //ignoring directories
val fileName = file.getName()
if !fileName.startsWith(".") //ignoring hidden files
if !fileName.endsWith(".asc") //ignoring signature files
} {
println("- Signing file " + file)
("gpg -ab --yes --batch --passphrase " + passPhrase + " " + fileName).!!
}
}
}