diff options
author | Ollie Phillips <oliver@eantics.co.uk> | 2017-02-24 17:05:28 +0000 |
---|---|---|
committer | Ollie Phillips <oliver@eantics.co.uk> | 2017-02-24 17:05:28 +0000 |
commit | 586e877ff564484fdeac636baf5c49d6bc97c037 (patch) | |
tree | c04bf5bd42ac4873eb4b7169539d0962b6ddd04b /cmd/ponzu/add.go | |
parent | 7fbc2ae2e3cb76d34ffd2f3cde9837c37510664b (diff) |
getAddon(), comprising go get and copy routines
Diffstat (limited to 'cmd/ponzu/add.go')
-rw-r--r-- | cmd/ponzu/add.go | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/cmd/ponzu/add.go b/cmd/ponzu/add.go index 871f674..2522a43 100644 --- a/cmd/ponzu/add.go +++ b/cmd/ponzu/add.go @@ -1,5 +1,57 @@ package main +import ( + "errors" + "os" + "os/exec" + "path/filepath" + "strings" +) + +// Use `go get` to download addon and add to $GOPATH/src, useful +// for IDE auto-import and code completion, then copy entire directory +// tree to project's ./addons folder func getAddon(args []string) error { + + // error return + errorFunc := func(err error) error { + return errors.New("Ponzu add failed. " + "\n" + err.Error()) + } + + var cmdOptions []string + var addonPath = args[1] + + // Go get + cmdOptions = append(cmdOptions, addonPath) + get := exec.Command(gocmd, cmdOptions...) + get.Stderr = os.Stderr + get.Stdout = os.Stdout + + err := get.Start() + if err != nil { + errorFunc(err) + } + err = get.Wait() + if err != nil { + errorFunc(err) + } + + // Copy to ./addons folder + + // GOPATH can be a list delimited by ":" on Linux or ";" on Windows + // go get uses the first, this should parse out the first whatever the OS + envGOPATH := os.Getenv("GOPATH") + gopaths := strings.Split(envGOPATH, ":") + gopath := gopaths[0] + gopaths = strings.Split(envGOPATH, ";") + gopath = gopaths[0] + + src := filepath.Join(gopath, addonPath) + dest := filepath.Join("./addons", addonPath) + + err = copyAll(src, dest) + if err != nil { + errorFunc(err) + } return nil } |