Commandoregelinterfaces (CLI's) zijn nog steeds populair, zelfs ondanks grafische gebruikersinterfaces (GUI's) en hun interactieve visuele componenten. CLI's worden nog steeds gebruikt vanwege hun eenvoud, gemak, snelheid en minder middelen die nodig zijn om een CLI-toepassing op te zetten.
De meeste CLI-apps worden uitgevoerd op de terminal of opdrachtregel van het besturingssysteem, waardoor de flexibiliteit toeneemt zonder dat er zoveel bronnen nodig zijn als GUI's.
U kunt CLI's bouwen met populaire talen, van Python tot C++, Rust en Go. De meeste talen bieden pakketten voor het bouwen van CLI-apps zonder externe afhankelijkheden.
Go en opdrachtregeltoepassingen
Een van de beoogde use-cases voor de Go-programmeertaal is het bouwen van performante interactieve CLI's. Door de jaren heen heeft Go grip gekregen in het veld.
Go ondersteunt populaire CLI-applicaties zoals Docker CLI, Hugo, GitHub CLI en meer. Go is een van de voorkeurstalen voor het bouwen van CLI-apps, gezien de eersteklas ondersteuning ervoor naast de prestaties.
Er is een vlag pakket voor parsing via de opdrachtregel, maar het mist veel functionaliteit die je nodig hebt om moderne opdrachtregel-apps te bouwen. Ook het ontwikkelen van CLI-apps met de vlag pakket kan complex zijn naarmate de grootte van uw app toeneemt en u meer functies opneemt.
Het Go-ecosysteem heeft veel gerenommeerde pakketten voor het bouwen van CLI's, met functies om uw ontwikkelingstijd te verkorten.
Het Cobra-pakket
Cobra is een van de meest populaire pakketten voor het bouwen van CLI's in het Go-ecosysteem en daarbuiten. Cobra is een pakket voor het maken van interactieve, moderne CLI-apps in elke omgeving.
Cobra biedt een eenvoudige interface voor het bouwen van CLI's van industriestandaard vergelijkbaar met Go-tools en Git. Cobra ondersteunt veel CLI-applicaties waarmee je hebt gewerkt, waaronder Docker, Kubernetes, Twitch, Hugo en tal van andere.
Cobra is een gebruiksvriendelijke, op subcommando's gebaseerde tool. Het ondersteunt POSIX-compatibele vlaggen, geneste subcommando's en globale, lokale en trapsgewijze vlaggen.
Cobra ondersteunt ook intelligente suggesties, automatische hulpgeneratie, vlagherkenning en opdrachtaliassen. Het maakt automatisch aanvullen van shells op Bash, Powershell, Fish en Zsh mogelijk, en integratie met de adder pakket voor 12-factor apps.
Voer deze opdracht uit in de terminal van uw werkdirectory om de nieuwste versie van het Cobra-pakket en zijn afhankelijkheden te installeren.
gaan get -u github.com/spf13/cobra@latest
Cobra biedt een CLI-app voor snellere en eenvoudigere ontwikkeling. Het Cobra-cli-pakket genereert standaardcode die u kunt configureren om zonder gedoe nieuwe opdrachten aan uw app toe te voegen.
Voer deze opdracht uit in de terminal van uw werkdirectory om de nieuwste versie van het Cobra-cli-pakket te installeren.
gaan installeer github.com/spf13/cobra-cli@latest
U moet uw GOPATH-variabele instellen op uw werkdirectory om de Cobra-generator (Cobra-cli) en andere Go-opdrachtregelhulpmiddelen te gebruiken.
Na een succesvolle installatie kunt u een Cobra-app in uw project initialiseren met de in het commando.
cobra-cli init
Na het initialiseren van een Cobra-app kunt u de toevoegen subcommando met de cobra-cli commando om een nieuw commando aan te maken en toe te voegen aan uw Cobra app.
cobra-cli voeg nieuw commando toe
De opdracht maakt een nieuw bestand aan met de code die u nodig hebt voor de opdracht. U kunt het bestand bewerken op basis van uw bewerking.
Hier is een eenvoudige opdrachthandlerfunctie voor een opdracht die is gegenereerd met de opdracht Cobra-cli.
importeren (
"fmt"
"github.com/spf13/cobra"
"logboek"
"strconv"
)// een door cobra gegenereerd commando
// newCmd vertegenwoordigt het nieuwe commando
var newCmd = &cobra. Commando {
Gebruik: "newCmd",
Kort: "De newCmd-beschrijving die u opgeeft",
Lang: `Een langere beschrijving die meerdere regels beslaat en waarschijnlijk voorbeelden bevat
en gebruik van het gebruik van uw opdracht. Bijvoorbeeld:
Cobra is een CLI-bibliotheek voor Go dat toepassingen mogelijk maakt.
Deze applicatie is een hulpmiddel om de benodigde bestanden te genereren
om snel een Cobra-applicatie te maken.`,Loop: func(cmd *cobra. Commando, argumenten []snaar) {
alslenen(argumenten) < 1 {
loggen. Fataal ("Geen aanvullende argumenten")
}
argumenten := argumenten[0]
fmt. Println (argumenten)
}
}funcin het() {
rootCmd. Opdracht toevoegen (newCmd)// Hier definieert u uw vlaggen en configuratie-instellingen.
// Cobra ondersteunt Persistent Flags die voor dit commando werken
// en alle subcommando's, bijvoorbeeld:
// nieuweCmd. PersistentFlags().String("foo", "", "Een hulp voor foo")
// Cobra ondersteunt lokale vlaggen die alleen worden uitgevoerd wanneer dit commando
// wordt direct aangeroepen, bijvoorbeeld:
// nieuweCmd. Flags().BoolP("toggle", "t", false, "Help-bericht voor toggle")
}
U kunt toegang krijgen tot aanvullende argumenten met de argumenten argument van de functie. De bovenstaande functie maakt gebruik van de als instructie om te controleren of er een extra argument van de terminal is en drukt het argument af.
Het CLI-pakket
Het Cli-pakket is een minimalistisch pakket met expressiviteitsthema voor het bouwen van snelle, distribueerbare CLI-apps in Go.
Het Cli-pakket ondersteunt opdrachtregelargumenten, vlaggen en subopdrachten met categorieën. Het heeft functionaliteit om te voorzien in korte opties, Bash-voltooiingen, gegenereerde hulp en versiebeheer.
Het Cli-pakket is interoperabel met Go's ingebouwde vlag En context pakketten, en u kunt de meeste functies in de vlag pakket met de Cli.
Voer deze opdrachten uit in de terminal van uw werkmap om het Graphql-go-pakket en zijn afhankelijkheden aan uw project toe te voegen.
gaan ga naar github.com/urfave/cli
Hier leest u hoe u een opdracht aan uw CLI-app kunt toevoegen met het Cli-pakket.
pakket voornaamst
importeren (
"fmt"
"logboek"
"os""github.com/urfave/cli/v2"
)funcvoornaamst() {
app := &cli. App {
Naam: "nieuw",
Gebruik: "maken A nieuw commando met de Cli pakket",
Actie: func(*kl. Context)fout {
fmt. Println("Hier is een nieuw commando")
opbrengstnihil
},
}
als fout := app. Rennen (o.a. argumenten); fout!= nihil {
loggen. dodelijk (err)
}
}
In de voornaamst functie, de app variabele is een instantie van een Cli-app en die van de applicatie Actie veld is de handlerfunctie van de app. Hier de nieuw opdracht zou de tekst van de functie afdrukken of een fout retourneren als er fouten van de app zijn.
Het Cli-pakket is handig voor kleinere projecten zonder veel complexiteit of functies.
Het Go-Arg-pakket
Het Go-arg-pakket is een op struct gebaseerd pakket voor het ontleden van CLI-argumenten in Go. Met het Go-arg-pakket kunt u structs voor CLI-argumenten declareren en op de argumenten werken als gewone Go-datastructuren. Het Go-arg-pakket biedt vereiste argumenten, positionele argumenten, omgevingsvariabelen, gebruiksreeksen, standaardwaarden en vele andere functies.
Het pakket ondersteunt basistypen zoals integer, floating point, string en boolean. Het ondersteunt ook complexere typen zoals URL's, tijdsduur, e-mailadressen, MAC-adressen, aanwijzers, segmenten, kaarten en de elk type.
U kunt de krijgen opdracht om het Go-arg-pakket toe te voegen aan de afhankelijkheden van uw pakket.
gaan ga naar github.com/alexflint/gaan-arg
Het Go-arg-pakket is eenvoudig en intuïtief in gebruik. Hier leest u hoe u argumenten van de opdrachtregel kunt accepteren en deze naar de opdrachtregelconsole kunt afdrukken.
funcvoornaamst() {
var argumenten structuur {
Foo snaar
Bar boel
}
arg. MustParse(&args)
fmt. Println (args. Foe, argumenten. Bar)
}
De argumenten struct is de struct-instantie voor de CLI-toepassing. De MustParse methode ontleedt de argumenten van de opdrachtregel naar de instantie struct.
U kunt het programma eenvoudig uitvoeren met de loop commando en specificeer de argumenten achter de bestandsnaam.
gaan hoofd uitvoeren.gaan --foo=hallo --bar
U kunt ook de bouwen opdracht om uw app in een uitvoerbaar bestand te bouwen voordat u het uitvoerbare bestand uitvoert en de argumenten opgeeft.
gaan bouwen hoofd.gaan
./main --foo=hallo --bar
Er zijn aanzienlijke verschillen tussen GUI's en CLI's die u moet overwegen
Als u tijdens de ontwikkeling moet kiezen tussen het bouwen van een CLI of GUI voor uw gebruikers, moet u met veel factoren rekening houden om een keuze te maken.
Het gebruik van CLI's via GUI's resulteert in snellere programma's, eenvoudige automatisering en een lager gebruik van bronnen. Als een van deze voordelen niet cruciaal is voor uw toepassing, bent u misschien beter af met een GUI, omdat deze populairder is bij algemene gebruikers.