¿Cuáles son las ventajas y desventajas de llamar a los Manejadores desde un Script de la Biblioteca con el comando "usar Declaraciones" frente al comando "Cargar Script"?

3

En el primer escenario, tengo un script que contiene todos mis manejadores y fragmentos de código. El nombre de archivo de este script es "Jimz_Handlerz.scpt" y se encuentra aquí ... / Users / Smokestack / Library / Script Libraries

Para llamar al controlador desde un nuevo archivo AppleScript, debo declarar mi biblioteca de secuencias de comandos (línea 1) y luego puedo llamar al controlador en cualquier momento que quiera con la segunda línea. Así:

use myHandlerz : script "Jimz_Handlerz.scpt"

myHandlerz's get_fileExtensions()

En este siguiente escenario, estoy usando el comando "cargar script" para cargar exactamente el mismo archivo que el primer ejemplo, pero este archivo se encuentra en el escritorio

property jimzHandlerz : load script ¬
    (alias "Macintosh HD:Users:Smokestack:Desktop:Jimz_Handlerz.scpt")

jimzHandlerz's get_fileExtensions()

Este es el controlador real que contiene el comando que estoy llamando desde dos escenarios diferentes ...

on get_fileExtensions()
    tell application "Finder"
        set theDownloadsfolder to (path to downloads folder)
        set theFiles to the name extension of every file of theDownloadsfolder
    end tell
    AST copy list theFiles without keeping duplicates -- Needs AppleScript Toolbox 2_0_8.osax Scripting Addition in /Users/"Name"/Library/ScriptingAdditions
end get_fileExtensions

Entonces, supongo que mi pregunta es, ¿hay situaciones en las que prefiero usar el escenario uno y otras situaciones en las que el escenario dos sería mejor?

Actualizar:

Aquí hay un poco de información interesante: usando el escenario de los manejadores de llamadas desde una biblioteca de secuencias de comandos o un archivo de paquete de secuencias de comandos como en el primer ejemplo de mi pregunta original ... Si la secuencia de comandos actual, que estamos llamando a un externo El script de una biblioteca es un paquete de scripts e incluimos una carpeta dentro de la carpeta "Recursos" llamada "Bibliotecas de scripts" que contiene el script o el paquete de scripts desde el que llamamos a nuestros controladores externos, si el archivo en la carpeta "Bibliotecas de scripts" del sistema no se puede encontrar, entonces esta secuencia de comandos no generará un error porque busca en la carpeta de recursos también las bibliotecas de secuencias de comandos.

    
pregunta wch1zpink 05.08.2017 - 01:20

1 respuesta

1

He agregado un "registrador de secuencias de comandos" al principio de cada una de mis secuencias de comandos, que básicamente escribe en el archivo ... El nombre del script y la fecha y hora en que se ejecutó por última vez.

Todos los comandos para el registro, residen en un objeto de script ubicado en un archivo separado "Jimz_Handlerz.scptd" utilizado como una biblioteca de scripts que se encuentra en la carpeta de bibliotecas de mis scripts.

Este código siguiente, que se encuentra en el archivo "Jimz_Handlerz.scptd", es el objeto de script que maneja el registro

script scriptRunLog2
    try
        writeToFile()
    end try

    on writeToFile()
        set currentDate to (current date) as string
        -- The "." At The Beginning Of The Filename In The Next Line
        -- Makes That File A "Hidden" File
        set theFile to (path to desktop as text) & ".script_run_log.txt" 
        set theFile to POSIX path of theFile
        set myName to name of (info for (path to me))
        set theText to myName & " was last run on " & currentDate
        try
            set writeToFile to open for access theFile with write permission
            write theText & linefeed to writeToFile as text starting at eof
            close access theFile
        on error errMsg number errNum
            close access theFile
            set writeToFile to open for access theFile with write permission
            write theText & linefeed to writeToFile starting at eof
            close access theFile
        end try
    end writeToFile
end script

Hay dos formas de ejecutar los comandos dentro de ese objeto de script, desde cualquier otro archivo de script.

OPCIÓN 1 utilizando la opción "cargar script" insertada en la parte superior de cualquier otro archivo de script

property theLibrary : (path to home folder as text) & "Library:Script Libraries:Jimz_Handlerz.scptd"
property jimzHandlerz : load script alias theLibrary
run jimzHandlerz's scriptRunLog2

OPCIÓN 2 usando la opción "usar" insertada en la parte superior de cualquier otro archivo de script. Debido a que "Jimz_Handlerz.scptd" se encuentra en la carpeta de mis bibliotecas de scripts, no necesito definir su ubicación

use jimzHandlerz : script "Jimz_Handlerz.scptd"
run jimzHandlerz's scriptRunLog2

En lo que respecta a la pregunta en mi publicación original ...

si uso la opción 1, el registrador de secuencias de comandos registrará qué secuencia de comandos ejecuté junto con la hora y la fecha.

Sin embargo, si uso la opción 2, el script logger registrará "Jimz_Handlerz.scptd" como la secuencia de comandos que ejecuta el código.

En resumen, en este escenario, sería mejor utilizar la opción 1

    
respondido por el wch1zpink 05.08.2018 - 21:54

Lea otras preguntas en las etiquetas