// A curl-like HTTP command-line client. package main import ( "errors" "fmt" "io" "net/http" "os" "strings" "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/alecthomas/kingpin" ) var ( timeout = kingpin.Flag("timeout", "Set connection timeout.").Short('t').Default("5s").Duration() headers = HTTPHeader(kingpin.Flag("headers", "Add HTTP headers to the request.").Short('H').PlaceHolder("HEADER=VALUE")) get = kingpin.Command("get", "GET a resource.").Default() getFlag = get.Flag("test", "Test flag").Bool() getURL = get.Command("url", "Retrieve a URL.").Default() getURLURL = getURL.Arg("url", "URL to GET.").Required().URL() getFile = get.Command("file", "Retrieve a file.") getFileFile = getFile.Arg("file", "File to retrieve.").Required().ExistingFile() post = kingpin.Command("post", "POST a resource.") postData = post.Flag("data", "Key-value data to POST").Short('d').PlaceHolder("KEY:VALUE").StringMap() postBinaryFile = post.Flag("data-binary", "File with binary data to POST.").File() postURL = post.Arg("url", "URL to POST to.").Required().URL() )
package main import ( "fmt" "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/alecthomas/kingpin" ) var ( debug = kingpin.Flag("debug", "Enable debug mode.").Bool() timeout = kingpin.Flag("timeout", "Timeout waiting for ping.").Default("5s").OverrideDefaultFromEnvar("PING_TIMEOUT").Short('t').Duration() ip = kingpin.Arg("ip", "IP address to ping.").Required().IP() count = kingpin.Arg("count", "Number of packets to send").Int() ) func main() { kingpin.Version("0.0.1") kingpin.Parse() fmt.Printf("Would ping: %s with timeout %s and count %d", *ip, *timeout, *count) }
func main() { cfg := new(initCfg) kingpin.Flag("n", "number of ipfs nodes to initialize").Short('n').IntVar(&cfg.Count) kingpin.Flag("port", "port to start allocations from").Default("4002").Short('p').IntVar(&cfg.PortStart) kingpin.Flag("force", "force initialization (overwrite existing configs)").Short('f').BoolVar(&cfg.Force) kingpin.Flag("mdns", "turn on mdns for nodes").BoolVar(&cfg.Mdns) kingpin.Flag("bootstrap", "select bootstrapping style for cluster").Default("star").StringVar(&cfg.Bootstrap) kingpin.Flag("utp", "use utp for addresses").BoolVar(&cfg.Utp) wait := kingpin.Flag("wait", "wait for nodes to come fully online before exiting").Bool() var args []string kingpin.Arg("args", "arguments").StringsVar(&args) kingpin.Parse() if len(args) == 0 { kingpin.Usage() return } switch args[0] { case "init": if cfg.Count == 0 { fmt.Printf("please specify number of nodes: '%s init -n 10'\n", os.Args[0]) os.Exit(1) } err := IpfsInit(cfg) handleErr("ipfs init err: ", err) case "start": err := IpfsStart(*wait) handleErr("ipfs start err: ", err) case "stop", "kill": if len(args) > 1 { i, err := strconv.Atoi(args[1]) if err != nil { fmt.Println("failed to parse node number: ", err) os.Exit(1) } err = KillNode(i) if err != nil { fmt.Println("failed to kill node: ", err) } return } err := IpfsKillAll() handleErr("ipfs kill err: ", err) case "restart": err := IpfsKillAll() handleErr("ipfs kill err: ", err) err = IpfsStart(*wait) handleErr("ipfs start err: ", err) case "shell": if len(args) < 2 { fmt.Println("please specify which node you want a shell for") os.Exit(1) } n, err := strconv.Atoi(args[1]) handleErr("parse err: ", err) err = IpfsShell(n) handleErr("ipfs shell err: ", err) case "connect": if len(args) < 3 { fmt.Println("iptb connect [node] [node]") os.Exit(1) } from, err := parseRange(args[1]) if err != nil { fmt.Printf("failed to parse: %s\n", err) return } to, err := parseRange(args[2]) if err != nil { fmt.Printf("failed to parse: %s\n", err) return } for _, f := range from { for _, t := range to { err = ConnectNodes(f, t) if err != nil { fmt.Printf("failed to connect: %s\n", err) return } } } case "get": if len(args) < 3 { fmt.Println("iptb get [attr] [node]") os.Exit(1) } attr := args[1] num, err := strconv.Atoi(args[2]) handleErr("error parsing node number: ", err) val, err := GetAttr(attr, num) handleErr("error getting attribute: ", err) fmt.Println(val) default: kingpin.Usage() fmt.Println(helptext) os.Exit(1) } }