Quali sono i vantaggi e / o gli svantaggi di chiamare i gestori da uno script di libreria con "usa istruzioni" rispetto al comando "Carica script"?

3

Nel primo scenario, ho uno script che contiene tutti i miei gestori e snippet. Il nome file per questo script è "Jimz_Handlerz.scpt" e si trova qui ... / Users / Smokestack / Libreria / Librerie di script

Chiamare il gestore da un nuovo file AppleScript richiede che dichiari la mia libreria di script (riga 1) e quindi posso chiamare il gestore in qualsiasi momento che desidero con la seconda riga. In questo modo:

use myHandlerz : script "Jimz_Handlerz.scpt"

myHandlerz's get_fileExtensions()

In questo prossimo scenario, sto utilizzando il comando "script di caricamento" per caricare lo stesso file esatto del primo esempio, ma questo file si trova sul desktop

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

jimzHandlerz's get_fileExtensions()

Questo è il gestore reale che contiene il comando che sto chiamando da entrambi i diversi scenari ..

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

Quindi immagino che la mia domanda sia, ci sono situazioni in cui preferirei usare lo scenario uno e altre situazioni in cui lo scenario due sarebbe meglio?

Aggiornamento:

Ecco una piccola informazione interessante: Utilizzare lo scenario dei gestori di chiamata da uno script di libreria di script o da un pacchetto di script come nel primo esempio della mia domanda originale. Se lo script corrente, che stiamo chiamando su un esterno script da una libreria, è un pacchetto di script e includiamo una cartella all'interno della cartella "Risorse" chiamata "Librerie di script" contenente lo script o il pacchetto di script che chiamiamo i nostri gestori esterni, se il file è nella cartella "Script Libraries" del sistema non può essere trovato, quindi questo script non genera un errore perché cerca la cartella delle risorse anche per le librerie di script.

    
posta wch1zpink 05.08.2017 - 01:20
fonte

1 risposta

1

Ho aggiunto un "logger di script" all'inizio di ognuno dei miei script, che in pratica scrive nel file .... Il nome dello script e l'ora e la data dell'ultima esecuzione.

Tutti i comandi per la registrazione, risiedono in un oggetto script situato in un file separato "Jimz_Handlerz.scptd" usato come libreria di script che si trova nella mia cartella librerie di script.

Questo codice seguente, che si trova nel file "Jimz_Handlerz.scptd", è l'oggetto script che gestisce la registrazione

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

Ci sono due modi in cui posso eseguire i comandi all'interno di tale oggetto script, da qualsiasi altro file di script.

OPZIONE 1 Utilizzo dell'opzione "script di caricamento" inserita nella parte superiore di qualsiasi altro file di 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

OPZIONE 2 Utilizzo dell'opzione "usa" inserita nella parte superiore di qualsiasi altro file di script. Poiché "Jimz_Handlerz.scptd" si trova nella mia cartella librerie di script, non è necessario definirne la posizione

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

Riguardo alla domanda nel mio post originale ...

se utilizzo l'opzione 1, il registratore di script registrerà lo script su cui ho eseguito l'ora e la data.

Tuttavia, se utilizzo l'opzione 2, lo script logger registrerà "Jimz_Handlerz.scptd" come script che esegue il codice.

In breve, in questo scenario, sarebbe meglio usare l'opzione 1

    
risposta data 05.08.2018 - 21:54
fonte

Leggi altre domande sui tag