github.com/remind101/go-getter@v0.0.0-20180809191950-4bda8fa99001/cmd/go-getter/main.go (about) 1 package main 2 3 import ( 4 "flag" 5 "log" 6 "os" 7 8 "github.com/hashicorp/go-getter" 9 ) 10 11 func main() { 12 modeRaw := flag.String("mode", "any", "get mode (any, file, dir)") 13 flag.Parse() 14 args := flag.Args() 15 if len(args) < 2 { 16 log.Fatalf("Expected two args: URL and dst") 17 os.Exit(1) 18 } 19 20 // Get the mode 21 var mode getter.ClientMode 22 switch *modeRaw { 23 case "any": 24 mode = getter.ClientModeAny 25 case "file": 26 mode = getter.ClientModeFile 27 case "dir": 28 mode = getter.ClientModeDir 29 default: 30 log.Fatalf("Invalid client mode, must be 'any', 'file', or 'dir': %s", *modeRaw) 31 os.Exit(1) 32 } 33 34 // Get the pwd 35 pwd, err := os.Getwd() 36 if err != nil { 37 log.Fatalf("Error getting wd: %s", err) 38 os.Exit(1) 39 } 40 41 // Build the client 42 client := &getter.Client{ 43 Src: args[0], 44 Dst: args[1], 45 Pwd: pwd, 46 Mode: mode, 47 } 48 49 if err := client.Get(); err != nil { 50 log.Fatalf("Error downloading: %s", err) 51 os.Exit(1) 52 } 53 54 log.Println("Success!") 55 }