Eine CLI (Command Line Interface) ermöglicht die Interaktion mit einem Programm über Textbefehle. CLI-Anwendungen sind in vielen Bereichen nützlich, darunter Automatisierung, DevOps und Systemadministration.
CLI-Anwendungen bieten: - Automatisierung: Erleichtern das Automatisieren wiederholbarer Aufgaben. - Skriptbarkeit: Können leicht in Skripte integriert werden. - Ressourceneffizienz: Haben geringeren Ressourcenbedarf im Vergleich zu grafischen Benutzeroberflächen.
Erstellen einer Verzeichnisstruktur:
mkdir mycli
cd mycli
go mod init example.com/mycliflag Paket nutzenDas flag Paket in Go erleichtert die Definition und das
Parsen von Befehlszeilenargumenten.
Beispiel:
// main.go
package main
import (
"flag"
"fmt"
)
func main() {
// Flags definieren
name := flag.String("name", "World", "a name to say hello to")
age := flag.Int("age", 0, "your age")
// Flags parsen
flag.Parse()
// Logik basierend auf den Flags
fmt.Printf("Hello, %s!\n", *name)
if *age > 0 {
fmt.Printf("You are %d years old.\n", *age)
}
}Ausführen der Anwendung:
go run main.go -name Alice -age 30Mit fmt kann Eingabe von der Kommandozeile gelesen
werden.
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
reader := bufio.NewReader(os.Stdin)
fmt.Print("Enter your name: ")
name, _ := reader.ReadString('\n')
fmt.Printf("Hello, %s\n", name)
}cobra PaketsDas cobra Paket bietet umfangreiche Funktionen zur
Erstellung komplexer CLI-Anwendungen.
Installation:
go get -u github.com/spf13/cobra/cobraBeispiel:
cobra init --pkg-name example.com/mycli
cd mycli
cobra add greetBearbeiten der cmd/greet.go Datei:
package cmd
import (
"fmt"
"github.com/spf13/cobra"
)
var name string
// greetCmd represents the greet command
var greetCmd = &cobra.Command{
Use: "greet",
Short: "Greet the user",
Run: func(cmd *cobra.Command, args []string) {
fmt.Printf("Hello, %s!\n", name)
},
}
func init() {
rootCmd.AddCommand(greetCmd)
greetCmd.Flags().StringVarP(&name, "name", "n", "World", "Name to greet")
}Anwendung ausführen:
go run main.go greet --name Alicepflag PaketsDas pflag Paket ist ein Drop-in-Ersatz für das
flag Paket und bietet erweiterte Funktionen.
Installation:
go get github.com/spf13/pflagBeispiel:
package main
import (
"fmt"
"github.com/spf13/pflag"
)
func main() {
name := pflag.String("name", "World", "Name to greet")
pflag.Parse()
fmt.Printf("Hello, %s!\n", *name)
}Erstellung einer ausführbaren Datei:
go build -o mycliBeispiel Dockerfile:
FROM golang:1.18-alpine
WORKDIR /app
COPY . .
RUN go build -o mycli
ENTRYPOINT ["./mycli"]