Kommandolinjegrensesnitt (CLI) er fortsatt populære selv i møte med grafiske brukergrensesnitt (GUI) og deres interaktive visuelle komponenter. CLI-er er fortsatt i bruk på grunn av deres enkelhet, lette, hastighet og færre ressurser som kreves for å sette opp en CLI-applikasjon.

De fleste CLI-apper kjører på operativsystemets terminal eller kommandolinje, noe som øker fleksibiliteten uten å kreve så mange ressurser som GUI-er.

Du kan bygge CLI-er med populære språk fra Python til C++, Rust og Go. De fleste språk tilbyr pakker for å bygge CLI-apper uten eksterne avhengigheter.

Gå og kommandolinjeapplikasjoner

En av de tiltenkte brukstilfellene for Go-programmeringsspråket er å bygge interaktive CLI-er. Gjennom årene har Go fått gjennomslag i feltet.

Go driver populære CLI-applikasjoner som Docker CLI, Hugo, GitHub CLI og mer. Go er et av de foretrukne språkene for å bygge CLI-apper, gitt dens førsteklasses støtte for dem sammen med ytelsen.

Det er en flagg pakke for kommandolinjeparsing, men den mangler mye funksjonalitet du trenger for å bygge moderne kommandolinjeapper. Også utvikling av CLI-apper med

instagram viewer
flagg pakken kan være komplisert ettersom størrelsen på appen din øker og du inkorporerer flere funksjoner.

Go-økosystemet har mange anerkjente pakker for å bygge CLI-er, med funksjoner for å redusere utviklingstiden.

Cobra-pakken

Cobra er en av de mest populære pakkene for å bygge CLI-er i Go-økosystemet og utover. Cobra er en pakke for å lage interaktive, moderne CLI-apper i alle miljøer.

Cobra gir et enkelt grensesnitt for å bygge CLI-er av industristandard som ligner på Go-verktøy og Git. Cobra driver mange CLI-applikasjoner du har samhandlet med, inkludert Docker, Kubernetes, Twitch, Hugo og en rekke andre.

Cobra er et brukervennlig, underkommandobasert verktøy. Den støtter POSIX-kompatible flagg, nestede underkommandoer og globale, lokale og gjennomgripende flagg.

Cobra støtter også intelligente forslag, automatisk hjelpegenerering, flagggjenkjenning og kommandoaliaser. Det gir mulighet for autofullføring av skall på Bash, Powershell, Fish og Zsh, og integrasjon med hoggorm pakke for 12-faktor apper.

Kjør denne kommandoen i terminalen i arbeidskatalogen din for å installere den nyeste versjonen av Cobra-pakken og dens avhengigheter.

 få -u github.com/spf13/cobra@latest

Cobra tilbyr en CLI-app for raskere og enklere utvikling. Cobra—cli-pakken genererer standardkode som du kan konfigurere for å legge til nye kommandoer i appen din uten problemer.

Kjør denne kommandoen i terminalen i arbeidskatalogen din for å installere den nyeste versjonen av Cobra-cli-pakken.

 installer github.com/spf13/cobra-cli@latest

Du må sette GOPATH-variabelen til arbeidskatalogen din for å bruke Cobra-generatoren (Cobra-cli) og andre Go-kommandolinjeverktøy.

Etter en vellykket installasjon kan du initialisere en Cobra-app i prosjektet ditt med i det kommando.

cobra-cli init

Etter å ha initialisert en Cobra-app, kan du bruke Legg til underkommando med cobra-cli kommando for å opprette og legge til en ny kommando i Cobra-appen.

cobra-cli legg til ny kommando

Kommandoen oppretter en ny fil med koden du trenger for kommandoen. Du kan redigere filen basert på operasjonen din.

Her er en enkel kommandohåndteringsfunksjon for en kommando generert med Cobra-cli-kommandoen.

import (
"fmt"
"github.com/spf13/cobra"
"Logg"
"strconv"
)

// en kobra-generert kommando

// newCmd representerer den nye kommandoen
var newCmd = &cobra. Kommando {
Bruk: "newCmd",
Kort: "Den nye Cmd-beskrivelsen du spesifiserer",
Lang: `En lengre beskrivelse som spenner over flere linjer og sannsynligvis inneholder eksempler
og bruk av kommandoen din. For eksempel:
Cobra er et CLI-bibliotek til Go som styrker applikasjoner.
Denne applikasjonen er et verktøy for å generere de nødvendige filene
for raskt å lage en Cobra-applikasjon.`,

Løpe: func(cmd *kobra. Kommando, args []streng) {
hvislen(args) < 1 {
Logg. Fatal ("Ingen ekstra argumenter")
}
argumenter := args[0]
fmt. Println (argumenter)
}
}

funci det() {
rootCmd. AddCommand (newCmd)

// Her vil du definere flagg og konfigurasjonsinnstillinger.

// Cobra støtter Persistent Flags som vil fungere for denne kommandoen
// og alle underkommandoer, f.eks.:
// newCmd. PersistentFlags().String("foo", "", "A help for foo")

// Cobra støtter lokale flagg som bare vil kjøre når denne kommandoen
// kalles direkte, f.eks.:
// newCmd. Flags().BoolP("toggle", "t", false, "Hjelpemelding for veksle")
}

Du kan få tilgang til flere argumenter med args argumentet til funksjonen. Funksjonen ovenfor bruker hvis setning for å sjekke om det er et ekstra argument fra terminalen og skriver ut argumentet.

CLI-pakken

Cli-pakken er en minimalistisk pakke med ekspressivitetstema for å bygge raske, distribuerbare CLI-apper i Go.

Cli-pakken støtter kommandolinjeargumenter, flagg og underkommandoer med kategorier. Den har funksjonalitet for å imøtekomme korte alternativer, Bash-fullføringer, generert hjelp og versjonskontroll.

Cli-pakken er interoperabel med Gos innebygde flagg og kontekst pakker, og du kan bruke de fleste funksjonene i flagg pakke med Cli.

Kjør disse kommandoene i terminalen til arbeidskatalogen din for å legge til Graphql-go-pakken og dens avhengigheter til prosjektet ditt.

 skaff deg github.com/urfave/cli

Slik kan du legge til en kommando til CLI-appen din med Cli-pakken.

pakke hoved-

import (
"fmt"
"Logg"
"os"

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

funchoved-() {
app := &cli. App {
Navn: "ny",
Bruk: "gjøre en ny kommandoen med Cli pakke",
Handling: func(*cli. Kontekst)feil {
fmt. Println("Her er en ny kommando")
komme tilbakenull
},
}

hvis feil := app. Kjør (os. Args); feil!= null {
Logg. Fatal (feil)
}
}

I hoved- funksjon, den app variabel er en forekomst av en Cli-app og applikasjonens Handling feltet er appens behandlerfunksjon. Her, den ny kommandoen vil skrive ut teksten fra funksjonen eller returnere en feil hvis det er noen feil fra appen.

Cli-pakken er nyttig for mindre prosjekter uten mye kompleksitet eller funksjoner.

Go-Arg-pakken

Go-arg-pakken er en strukturbasert pakke for å analysere CLI-argumenter i Go. Med Go-arg-pakken kan du deklarere strukturer for CLI-argumenter og operere på argumentene som vanlige Go-datastrukturer. Go-arg-pakken inneholder nødvendige argumenter, posisjonsargumenter, miljøvariabler, bruksstrenger, standardverdier og mange andre funksjoner.

Pakken støtter grunnleggende typer som heltall, flytende komma, streng og boolsk. Den støtter også mer komplekse typer som URL-er, tidsvarigheter, e-postadresser, MAC-adresser, pekere, skiver, kart og noen type.

Du kan bruke kommandoen for å legge til Go-arg-pakken til pakkens avhengigheter.

 skaff deg github.com/alexflint/-arg

Go-arg-pakken er enkel og intuitiv å bruke. Slik kan du godta argumenter fra kommandolinjen og skrive dem ut til kommandolinjekonsollen.

funchoved-() {
var args struktur {
Foo streng
Bar bool
}
arg. MustParse(&args)
fmt. Println (args. Foo, argumenter. Bar)
}

De args struct er struct-forekomsten for CLI-applikasjonen. De MustParse metoden analyserer argumentene fra kommandolinjen til struct-forekomsten.

Du kan enkelt kjøre programmet med løpe kommandoen og spesifiser argumentene etter filnavnet.

 kjøre hoved. --foo=hei --bar

Du kan også bruke bygge kommando for å bygge appen din til en kjørbar før du kjører den kjørbare og spesifiserer argumentene.


bygge hoved.
./main --foo=hei --bar

Det er betydelige forskjeller mellom GUIer og CLIer du må vurdere

Under utviklingen, hvis du må velge mellom å bygge en CLI eller GUI for brukerne dine, må du vurdere mange faktorer for å ta et valg.

Bruk av CLI-er over GUI-er resulterer i raskere programmer, enkel automatisering og lavere ressursutnyttelse. Hvis noen av disse fordelene ikke er avgjørende for applikasjonen din, kan du ha det bedre med en GUI siden de er mer populære blant vanlige brukere.