2017-11-05 1 views
3

Ich schreibe ein CLI-Tool in go und habe github.com/jessevdk/go-flags für das CLI-Arg-Parsing ausgewählt. Ich versuche herauszufinden, wie man einen Positionsarg am besten macht. Derzeit habe ich die folgenden:Anforderung eines Positionsarguments mit go-flags

func main() { 
    args, err := flags.Parse(&opts) 
    if err != nil { 
     panic(err) 
    } 

    if len(args) < 1 { 
     panic("An s3 bucket is required") 
    } 
} 

Dies funktioniert, aber es führt nicht zu Hilfeausgabe angezeigt wird, wie dies der Fall wäre mit einer Flagge "required:true" markiert werden. Gibt es eine Möglichkeit, dieses Verhalten zu replizieren, indem Sie manuell eine "print help" -Funktion aufrufen oder eine erforderliche Anzahl von Positionsargumenten festlegen?

Antwort

1

Würde die Verwendung von os.Args helfen? Beispiel:

package main 

import (
    "fmt" 
    "os" 
) 

const Usage = `Usage: 
%s one two 
` 

func main() { 

    if len(os.Args) != 3 { 
     fmt.Printf(Usage, os.Args[0]) 
     os.Exit(-1) 
    } 

    //run program 
} 

os.Args enthält die Befehlszeilenargumente, beginnend mit dem Programmnamen.

https://play.golang.org/p/Le9EMxmw9k

Verwandte Themen