2 votos

Automator para ejecutar el shell script con un archivo de texto de entrada, copiarlo en un directorio específico

Estoy simplificando el hacer un archivo .deb con Automator. Actualmente tengo un shell script que hace algunas acciones simples

  1. Pedir al usuario que introduzca un texto
  2. Hacer un poco de parsing de directorios
  3. Ejecutar un comando con la entrada de texto como variable
  4. ejecutar el programa dpkg-deb y la salida al escritorio

Eso está muy bien, pero los archivos .deb deben tener un archivo de texto de "control" con algunos campos rellenados, y el archivo tiene que estar en una ruta específica, con el control que reside en un archivo DEBIAN subdirectorio así

AppName/DEBIAN/control

Lo que me gustaría hacer, es crear el archivo de control, y soltarlo en el flujo de trabajo de Automator y hacer que ejecute el script con el archivo de control como parámetro de entrada. Necesitaría que el script "copie este archivo a AppName/DEBIAN/ y crear el DEBIAN si no existe.

Where AppName == A specific line from the control file

¿Alguien puede ayudar?

2voto

Arc676 Puntos 548

EDIT: El flujo de trabajo ahora funciona con un error: al ejecutar el flujo de trabajo dos veces se copian dos copias del archivo de control

Haga un nuevo SERVICIO de Automator. Al principio, para "recibe seleccionado como entrada" elija "documentos". Añade el proceso "establecer el valor de la variable" y crea una nueva variable "ruta de destino" (el nombre de la variable por defecto es "ruta de destino"). Añade el proceso "abrir elementos del buscador" al principio para abrir el archivo de control. Añade el proceso "ejecutar applescript" al flujo de trabajo el código es el siguiente:

on run {input, parameters}

set LineNumber to (the line in which the path is specified in the control file)
tell application "TextEdit"
    set theVariable to paragraph LineNumber of document 1
    set thePath to POSIX path of theVariable
    set thePath to text 1 thru -2 of thePath
end tell

return thePath
end run

No sé por qué esto no podría estar en el mismo bloque, pero tienes que añadir un proceso AppleScript separado. El código es el siguiente:

on run {input, parameters}

tell application "Finder"
    set theFolder to POSIX path of input & "/DEBIAN"
    try
        make new folder in folder input with properties {name:"DEBIAN"}
    end try
end tell

return theFolder
end run

Añade el proceso "establecer el valor de la variable" y crea una nueva variable de ruta de destino (el nombre por defecto es "ruta de destino 1").
Añade el proceso "obtener valor de la variable" y obtén el valor de la variable con la ruta del fichero de entrada ("ruta de destino"). Haga clic en "opciones" en este proceso y marque "ignorar la entrada de esta acción".
Después de esto, Automator tiene un proceso llamado "copiar elementos del buscador" y esto se puede utilizar para copiar la entrada (la salida de "obtener el valor de la variable", que es el archivo de entrada). Esto me ha funcionado, espero que a ti también te funcione. Buena suerte :)

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X