Scrivi un'estensione Alfred per creare file al volo

Di recente, abbiamo esaminato come utilizzare Terminal per creare rapidamente file. Oggi esamineremo e applicheremo questa conoscenza per creare la nostra estensione Alfred che crea una nuova directory di file in un istante. Inizieremo anche con alcuni AppleScript lungo il percorso, così potrai davvero ottenere la tua dose di geniale bontà.


Cosa stiamo costruendo

Come sviluppatore, ogni volta che inizio un nuovo progetto, di solito eseguo lo stesso processo. Per prima cosa, devo creare una cartella e poi nominarla. Quindi devo aprire un editor di testo e creare individualmente ogni file che voglio includere (index.html, style.css, ecc.).

Ovviamente, questo è un dolore, quindi ho provato un sacco di cose per aggirarlo. Ho provato a tenere un progetto vuoto a portata di mano che posso semplicemente trascinare e copiare, usando Terminal per creare i file manualmente, i lavori.

Il mio attuale metodo preferito è chiamare Alfred, digitare il nome della cartella che voglio creare e premere Ritorno. Questo è tutto! Tutti gli altri passaggi sono completamente automatizzati, risparmiando un sacco di tempo in una determinata settimana.

Ovviamente, questa funzionalità non viene fornita con Alfred out of the box, quindi dovremo costruirla. Fortunatamente, farlo è piuttosto semplice!

Mancia: Questo tutorial non è solo per gli sviluppatori. Seguire e modificare per creare file di qualsiasi tipo!


Compito Terminale

Come ho accennato nell'introduzione, ho trattato le basi della creazione di file Terminal in un precedente articolo, ma vale la pena menzionarlo di nuovo qui, quindi siamo tutti sulla stessa pagina.

Ci sono tre comandi di script di shell di base che useremo oggi: cd, mkdir e touch. Vediamo come ciascuno funziona.

Modifica della directory

Per impostazione predefinita, quando apri Terminal, dovresti iniziare nella cartella principale del tuo Mac. Questo servirà da punto di partenza per tutti i comandi che richiedono una posizione. Se vuoi cambiare quella posizione, usi il CD comando.

cd Desktop /

Questo dice al Terminale che vuoi cambiare la directory corrente in "Desktop". Più tardi, quando lo faremo da Alfred, avremo bisogno di essere un po 'più specifici:

/ Users / MacBookPrime / Desktop

Qui ho incluso il percorso completo alla mia cartella Desktop. È estremamente importante personalizzare questo particolare snippet per la propria macchina. Per fare ciò, sostituisci il mio nome utente con il tuo. Inserisci il tuo nome utente tra "Utenti /" e "Desktop /" nello snippet di seguito:

/ Users / YourUserNameGoesHere / Desktop

Creare una nuova directory

Una volta che avremo cambiato directory, avremo bisogno di creare una nuova directory (cartella). Per fare questo, usiamo il mkdir comando.

mkdir mySite

Questo creerà una nuova cartella denominata "mySite" nella directory corrente. Nel nostro caso, questo sarà il desktop.

Creare un nuovo file

Ora arriva la parte migliore: come creare un nuovo file. Per qualche ragione, mi sembra sciocco dover aprire un'app per creare un file. Dovrei solo essere in grado di scartare i file vuoti, con qualsiasi estensione che voglio, puramente a volontà. Con il toccare comando, possiamo fare esattamente questo:

tocca textFile.txt

Questo creerà un nuovo file di testo normale nella directory corrente con il nome "textFile.txt". Facile?

Metterli tutti insieme

Ora abbiamo tutte le conoscenze di cui abbiamo bisogno per tirare fuori il nostro script di shell. Ecco come appare quando combiniamo questi comandi (scorri verso destra per vedere l'intero snippet).

cd / Users / MacBookPrime / Desktop; mkdir mySite; cd mySite; tocca index.html style.css script.js

Si noti che diversi comandi sono separati da un punto e virgola e anche i comandi touch possono essere concatenati usando solo uno spazio tra i vari nomi di file.

Creazione di un'estensione Alfred

Ora che abbiamo il nostro script di shell di base capito, è tempo di creare effettivamente l'estensione Alfred. Fortunatamente, non abbiamo bisogno di strumenti di sviluppo speciali per questo, solo Alfred! Avrai comunque bisogno del Powerpack, che è la versione premium di Alfred.

Passo 1. Crea una nuova estensione

Per iniziare, accendi Alfred e fai clic sul piccolo ingranaggio in alto a destra per visualizzare le Preferenze. Da qui, fai clic sulla scheda "Estensioni". Potresti avere o non avere alcune estensioni di terze parti già qui.


Fai clic sulla scheda Estensioni

Dalla scheda Estensioni, fai clic sul piccolo pulsante più in basso a sinistra della finestra. Dovrebbe apparire un menu dei vari tipi di estensioni che puoi creare:


Scegli "Shell Script"

Da qui, scegli "Shell Script". Non preoccuparti se non hai idea di come scrivere uno script di shell, ne abbiamo già scritto uno sopra!

Passo 2. Nome e altri dettagli

Quando crei una nuova estensione, puoi dargli un nome e inserire le tue informazioni nel caso in cui la distribuirai. In questo modo le persone possono vedere da chi proviene.


Inserisci le informazioni sul credito e premi Salva

Inoltre, è possibile personalizzare l'icona. Penso che l'icona del terminale sia perfetta per i nostri scopi, ma sentiti libero di trascinare la tua immagine.

Passaggio 3. Inserisci dettagli Alfred

Successivamente, dovrai inserire il titolo, la descrizione e la parola chiave dell'estensione.


Inserisci qui i dettagli di Alfred

Questo può sembrare un po 'ridondante con la finestra precedente, ma non lo è. La schermata precedente era solo a scopo di lucro, questo determina quali informazioni visualizza effettivamente Alfred quando si accede all'estensione.


Alfred mostra i dettagli che hai inserito quando chiami l'estensione

Nota che ho impostato "nw" come scorciatoia, quindi quando scrivo questo in Alfred, la prima opzione che appare mostra il titolo e la descrizione che ho inserito.

Passaggio 4. Inserisci lo script

Ora è il momento di inserire i comandi della shell che abbiamo scritto in precedenza, con un po 'di personalizzazione. Ecco lo snippet di prima:

cd / Users / MacBookPrime / Desktop; mkdir mySite; cd mySite; tocca index.html style.css script.js

Ora, invece di creare una cartella chiamata "mySite" ogni volta, utilizziamo il testo che l'utente inserisce in Alfred. Lo facciamo sostituendo il mio sito con Interrogazione.

 cd / Users / MacBookPrime / Desktop; mkdir query; cd query; tocca index.html style.css script.js

Questa configurazione richiede l'immissione da parte dell'utente, quindi assicurati di impostare "Parameter" su "Required Parameter". Inoltre, non dimenticare di personalizzare il percorso sul desktop.


Inserisci lo script nel campo Comando

Una volta che hai finito con quel passo, premi il pulsante Salva. Questo è tutto! Hai finito tutto.

Prova l'estensione

Per assicurarsi che tutto funzioni correttamente, uscire dalla finestra delle preferenze e avviare nuovamente Alfred. Digitare "nw" per il collegamento, seguito dal nome della cartella che si desidera creare.


Provando la nuova estensione

Il risultato dell'estensione dovrebbe essere una cartella con il nome che hai scelto pieno dei file che hai creato con toccare comando.


Il risultato dell'estensione

Se funziona, allora hai finito. I prossimi passi sono completamente opzionali. Se sei pronto per una sfida, procedi!

Avanzato: farlo funzionare in qualsiasi cartella

Il metodo sopra crea sempre una nuova cartella sul desktop. In realtà, questo è il modo in cui molte persone lavorano, ma non consiglio mai pratiche così disordinate. Sono un grande sostenitore di mantenere pulito il tuo desktop, quindi ho deciso di migliorare lo script.

Quello che vogliamo fare è interrogare il Finder e afferrare il percorso della finestra in primo piano. Se non esiste alcuna finestra, dovremmo impostare di default il desktop. Successivamente, quando creeremo i file, utilizzeremo il percorso dal primo passaggio. In pratica, sarai in grado di navigare verso una cartella sul tuo disco, quindi eseguire l'estensione Alfred e creare rapidamente una nuova directory piena di file.

Passo 1. AppleScript to the Rescue

Ovviamente, la parte difficile qui è ottenere uno script di shell per capire automaticamente la finestra del Finder in primo piano in qualsiasi momento. A quanto pare, il modo più semplice che conosco per ispezionare una finestra del Finder è AppleScript. Per i punti doppio nerd, puoi effettivamente racchiudere un AppleScript in uno script di shell e viceversa.

Lo script di cui abbiamo bisogno avrà alcuni passaggi di base:

  1. Cerca di ottenere il percorso della finestra del Finder in primo piano
  2. Se la prova ha esito positivo, restituire il percorso di quella finestra
  3. Se la prova fallisce (non esiste una finestra del Finder), restituisce il percorso di Desktop

Un rallentamento su cui ci imbattiamo in questo viaggio è che, per impostazione predefinita, AppleScript utilizza un formato diverso per i percorsi dei file rispetto agli script di shell. Invece della barra diretta che probabilmente sei abituato (Utenti / Nome utente / Desktop), AppleScript usa i due punti per separare le directory (Utenti: Nome utente: Desktop).

Questo è abbastanza facile da gestire però. Dobbiamo solo essere sicuri di fare riferimento al percorso POSIX nel nostro script. Ecco come si presenta il prodotto finito.

[AppleScript]
provare
dì all'applicazione "Finder"
imposta this_folder a (la destinazione della finestra frontale) come alias
imposta this_folder al percorso POSIX di this_folder
ritorna this_folder
fine raccontare
fine prova

imposta this_folder al percorso POSIX di (percorso sul desktop)
ritorna this_folder
[/ AppleScript]

Come puoi vedere, abbiamo semplicemente camminato attraverso ciascuna delle fasi che abbiamo delineato sopra. Il risultato di questo script sarà sempre un percorso di file. Nei prossimi passi vedremo come usare quel percorso nel nostro script di shell.

Passo 2. Riformattazione dello script

Il nostro prossimo compito è incorporare l'AppleScript che abbiamo appena scritto nel nostro script di shell. Per fare ciò, usiamo la seguente sintassi:

 osScript -e 'AppleScript va qui'

Come puoi vedere, usiamo "osascript" per iniziare l'incorporamento di AppleScript. Il prossimo pezzo, "-e" è usato per separare diverse linee, che sono racchiuse tra virgolette singole. Quindi, se volessimo incorporare più righe di AppleScript, sarebbe simile a questo:

 osascript -e 'tell application "Finder"' -e 'activate' -e 'end tell'

Questo è uno script di base a tre righe diviso per -e switch. Con questa conoscenza in mente, abbiamo bisogno di riformattare il nostro script sopra. Fare questo può diventare un po 'confuso, quindi mi piace seguire uno schema molto specifico. Per prima cosa, elimina la rientranza e gli spazi bianchi extra.

 prova tell all'applicazione "Finder" imposta this_folder a (la destinazione della finestra frontale) come alias imposta this_folder al percorso POSIX di this_folder ritorna this_folder end tell end prova set this_folder al percorso POSIX di (percorso al desktop) return this_folder

Quindi, avvolgi ogni linea in una singola virgola e precedere la frase con -e in modo che lo script della shell possa analizzare le diverse linee.

 -e 'provare' -e 'dire all'applicazione "Finder"' -e 'impostare this_folder a (la destinazione della finestra frontale) come alias' -e 'impostare this_folder sul percorso POSIX di this_folder' -e 'return this_folder' -e ' end tell '-e' end try '-e' imposta this_folder al percorso POSIX di (percorso al desktop) '-e' ritorna this_folder '

Infine, elimina tutte le interruzioni di riga e posiziona il osascript comando all'inizio.

 osascript -e 'prova' -e 'indica all'applicazione "Finder"' -e 'imposta this_folder a (la destinazione della finestra frontale) come alias' -e 'imposta this_folder al percorso POSIX di this_folder' -e 'ritorna this_folder' - e 'end tell' -e 'end try' -e 'imposta this_folder al percorso POSIX di (percorso al desktop)' -e 'ritorna this_folder'

Passaggio 3. Lancia tutto insieme

Per il nostro trucco finale, utilizzeremo il percorso restituito da AppleScript come punto di partenza per il nostro script di shell che crea i file. Per fare questo, abbiamo bisogno di gettare il risultato dello script in una variabile, quindi chiamare quella variabile quando abbiamo bisogno di un percorso di partenza.

Prima di esaminare lo script di shell completato, diamo un'occhiata alla sintassi per l'assegnazione della variabile:

 myPath = $ (osScript -e 'AppleScript va qui')

Qui abbiamo creato una variabile chiamata "myPath" e quindi impostarla su un AppleScript. Poiché ciò restituirà un percorso, possiamo quindi utilizzare questa variabile al posto di un percorso.

 cd $ myPath;

Questo è tutto ciò che c'è da fare. Ora gettiamo tutta questa roba insieme in un unico comando gigante.

 myPath = $ (osascript -e 'prova' -e 'indica all'applicazione "Finder"' -e 'imposta this_folder a (la destinazione della finestra frontale) come alias' -e 'imposta this_folder al percorso POSIX di this_folder' -e ' return this_folder '-e' end tell '-e' end try '-e' imposta this_folder al percorso POSIX di (percorso al desktop) '-e' ritorna this_folder '); cd $ myPath; mkdir query; cd query; tocca index.html style.css script.js

Successo!

Il comando dovrebbe ora essere completamente funzionante. Incollalo in Alfred e dagli un test drive usando lo stesso prefisso "nw" di prima. Il risultato dovrebbe essere una nuova cartella nella finestra del Finder corrente con il nome passato come parametro.


Incolla lo script finito nel campo Comando

Crea il tuo

Se hai fatto tutto questo tutorial, congratulazioni, è stata proprio la sfida! Ora hai codificato a mano la tua prima estensione Alfred. Con la tua nuova conoscenza sulla combinazione di script di shell e AppleScript, dovresti essere in grado di creare estensioni davvero fantastiche tutte da solo.

Se hai qualche idea per nuove estensioni o ne hai create alcune da solo, lascia un commento qui sotto e faccelo sapere.