Le interfacce della riga di comando (CLI) sono ancora popolari anche di fronte alle interfacce utente grafiche (GUI) e ai loro componenti visivi interattivi. Le CLI sono ancora in uso grazie alla loro semplicità, facilità, velocità e alle minori risorse necessarie per configurare un'applicazione CLI.

La maggior parte delle app CLI viene eseguita sul terminale o sulla riga di comando del sistema operativo, aumentando la flessibilità senza richiedere tante risorse quante le GUI.

Puoi creare CLI con i linguaggi più diffusi, da Python a C++, Rust e Go. La maggior parte delle lingue fornisce pacchetti per la creazione di app CLI senza dipendenze esterne.

Vai e applicazioni a riga di comando

Uno dei casi d'uso previsti per il linguaggio di programmazione Go è la creazione di CLI interattive performanti. Nel corso degli anni, Go ha guadagnato terreno nel settore.

Go supporta applicazioni CLI popolari come Docker CLI, Hugo, GitHub CLI e altro ancora. Go è uno dei linguaggi preferiti per la creazione di app CLI, dato il suo supporto di prima classe per loro insieme alle sue prestazioni.

instagram viewer

C'è un bandiera pacchetto per l'analisi della riga di comando, ma manca di molte funzionalità necessarie per creare moderne app da riga di comando. Inoltre, lo sviluppo di app CLI con il bandiera pacchetto può essere complesso man mano che le dimensioni della tua app aumentano e incorpori più funzionalità.

L'ecosistema Go ha molti pacchetti affidabili per la creazione di CLI, con funzionalità che aiutano a ridurre i tempi di sviluppo.

Il pacchetto Cobra

Cobra è uno dei pacchetti più popolari per la creazione di CLI nell'ecosistema Go e oltre. Cobra è un pacchetto per la creazione di app CLI moderne e interattive in qualsiasi ambiente.

Cobra fornisce un'interfaccia semplice per la creazione di CLI di standard di settore simili agli strumenti Go e Git. Cobra alimenta molte applicazioni CLI con cui hai interagito, tra cui Docker, Kubernetes, Twitch, Hugo e molti altri.

Cobra è uno strumento basato su sottocomandi facile da usare. Supporta flag conformi a POSIX, sottocomandi nidificati e flag globali, locali e a cascata.

Cobra supporta anche suggerimenti intelligenti, generazione automatica della guida, riconoscimento dei flag e alias di comando. Consente il completamento automatico della shell su Bash, Powershell, Fish e Zsh e l'integrazione con vipera pacchetto per app a 12 fattori.

Esegui questo comando nel terminale della tua directory di lavoro per installare l'ultima versione del pacchetto Cobra e le sue dipendenze.

andare get -u github.com/spf13/cobra@latest

Cobra fornisce un'app CLI per uno sviluppo più rapido e semplice. Il pacchetto Cobra—cli genera codice boilerplate che puoi configurare per aggiungere nuovi comandi alla tua app senza problemi.

Esegui questo comando nel terminale della tua directory di lavoro per installare l'ultima versione del pacchetto Cobra-cli.

andare installa github.com/spf13/cobra-cli@latest

Dovrai impostare la tua variabile GOPATH nella tua directory di lavoro per utilizzare il generatore Cobra (Cobra-cli) e altri strumenti da riga di comando Go.

Dopo un'installazione riuscita, puoi inizializzare un'app Cobra nel tuo progetto con il file dentro comando.

inizializzazione cobra-cli

Dopo aver inizializzato un'app Cobra, puoi utilizzare il file aggiungere sottocomando con il cobra-cli comando per creare e aggiungere un nuovo comando alla tua app Cobra.

cobra-cli aggiunge nuovo comando

Il comando crea un nuovo file con il codice necessario per il comando. Puoi modificare il file in base alla tua operazione.

Ecco una semplice funzione del gestore di comandi per un comando generato con il comando Cobra-cli.

importare (
"fmt"
"github.com/spf13/cobra"
"tronco d'albero"
"strconv"
)

// un comando generato da cobra

// newCmd rappresenta il nuovo comando
var newCmd = &cobra. Comando {
Usa: "nuovoCmd",
Breve: "La descrizione newCmd specificata",
Lungo: `Una descrizione più lunga che si estende su più righe e probabilmente contiene esempi
e l'uso di usare il tuo comando. Per esempio:
Cobra è una libreria CLI per Vai che potenzia le applicazioni.
Questa applicazione è uno strumento per generare i file necessari
per creare rapidamente un'applicazione Cobra.`,

Correre: funz(cmd *cobra. Comando, argomenti []corda) {
Selen(argomenti) < 1 {
tronco d'albero. Fatal("Nessun argomento aggiuntivo")
}
argomenti := argomenti[0]
fmt. Println (argomenti)
}
}

funzdentro() {
rootCmd. AggiungiComando (nuovoCmd)

// Qui definirai i tuoi flag e le impostazioni di configurazione.

// Cobra supporta i flag persistenti che funzioneranno per questo comando
// e tutti i sottocomandi, ad esempio:
// nuovoCmd. PersistentFlags().String("foo", "", "Un aiuto per foo")

// Cobra supporta i flag locali che verranno eseguiti solo quando questo comando
// viene chiamato direttamente, ad esempio:
// nuovoCmd. Flags().BoolP("toggle", "t", false, "Messaggio di aiuto per toggle")
}

È possibile accedere ad argomenti aggiuntivi con il arg argomento della funzione. La funzione sopra utilizza il Se istruzione per verificare se c'è un argomento aggiuntivo dal terminale e stampa l'argomento.

Il pacchetto CLI

Il pacchetto CLI è un pacchetto minimalista a tema espressività per la creazione di app CLI veloci e distribuibili in Go.

Il pacchetto Cli supporta argomenti della riga di comando, flag e sottocomandi con categorie. Ha funzionalità per soddisfare opzioni brevi, Completamenti Bash, guida generata e controllo delle versioni.

Il pacchetto Cli è interoperabile con l'integrato di Go bandiera E contesto pacchetti, ed è possibile utilizzare la maggior parte delle funzionalità in bandiera pacchetto con il Cli.

Esegui questi comandi nel terminale della tua directory di lavoro per aggiungere il pacchetto Graphql-go e le sue dipendenze al tuo progetto.

andare scarica github.com/urfave/cli

Ecco come puoi aggiungere un comando alla tua app CLI con il pacchetto Cli.

pacchetto principale

importare (
"fmt"
"tronco d'albero"
"os"

"github.com/urfave/cli/v2"
)

funzprincipale() {
app := &cli. Applicazione {
Nome: "nuovo",
Utilizzo: "Fare UN nuovo comando con il Cli pacchetto",
Azione: funz(*cli. Contesto)errore {
fmt. Println("Ecco un nuovo comando")
ritornozero
},
}

Se err := app. Correre (os. Argo); errare!= zero {
tronco d'albero. Fatale (err)
}
}

Nel principale funzione, il app variabile è un'istanza di un'app Cli e dell'applicazione Azione field è la funzione del gestore dell'app. Ecco, il nuovo comando stamperebbe il testo dalla funzione o restituirebbe un errore se ci sono errori dall'app.

Il pacchetto Cli è utile per progetti più piccoli senza molta complessità o funzionalità.

Il pacchetto Go-Arg

Il pacchetto Go-arg è un pacchetto basato su struct per l'analisi degli argomenti della CLI in Go. Con il pacchetto Go-arg, puoi dichiarare strutture per argomenti CLI e operare sugli argomenti come normali strutture dati Go. Il pacchetto Go-arg fornisce argomenti obbligatori, argomenti posizionali, variabili di ambiente, stringhe di utilizzo, valori predefiniti e molte altre funzionalità.

Il pacchetto supporta tipi di base come intero, virgola mobile, stringa e booleano. Supporta anche tipi più complessi come URL, durate temporali, indirizzi e-mail, indirizzi MAC, puntatori, sezioni, mappe e il file Qualunque tipo.

Puoi usare il Ottenere comando per aggiungere il pacchetto Go-arg alle dipendenze del tuo pacchetto.

andare scarica github.com/alexflint/andare-arg

Il pacchetto Go-arg è semplice e intuitivo da usare. Ecco come puoi accettare argomenti dalla riga di comando e stamparli sulla console della riga di comando.

funzprincipale() {
var arg struct {
Pippo corda
Sbarra bool
}
arg. MustParse(&args)
fmt. Println (arg. Foo, argomenti. Sbarra)
}

IL arg struct è l'istanza struct per l'applicazione CLI. IL MustParse Il metodo analizza gli argomenti dalla riga di comando nell'istanza struct.

Puoi facilmente eseguire il programma con il file correre comando e specificare gli argomenti dopo il nome del file.

andare eseguire principale.andare --foo=ciao --bar

Puoi anche usare il costruire comando per creare l'app in un eseguibile prima di eseguire l'eseguibile e specificare gli argomenti.


andare costruire principale.andare
./main --foo=ciao --bar

Ci sono differenze significative tra GUI e CLI che dovrai considerare

Durante lo sviluppo, se devi scegliere tra la creazione di una CLI o di una GUI per i tuoi utenti, dovrai considerare molti fattori per fare una scelta.

L'utilizzo delle CLI rispetto alle GUI si traduce in programmi più veloci, facile automazione e minore utilizzo delle risorse. Se uno di questi vantaggi non è cruciale per la tua applicazione, potresti stare meglio con una GUI poiché sono più popolari tra gli utenti generici.