summaryrefslogtreecommitdiff
path: root/cmd/ponzu/add.go
diff options
context:
space:
mode:
authorOllie Phillips <oliver@eantics.co.uk>2017-02-24 17:05:28 +0000
committerOllie Phillips <oliver@eantics.co.uk>2017-02-24 17:05:28 +0000
commit586e877ff564484fdeac636baf5c49d6bc97c037 (patch)
treec04bf5bd42ac4873eb4b7169539d0962b6ddd04b /cmd/ponzu/add.go
parent7fbc2ae2e3cb76d34ffd2f3cde9837c37510664b (diff)
getAddon(), comprising go get and copy routines
Diffstat (limited to 'cmd/ponzu/add.go')
-rw-r--r--cmd/ponzu/add.go52
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
}