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  }