From 12d24f715dcfb93ce390e28753885cd2e3a22e1b Mon Sep 17 00:00:00 2001 From: Makis Maropoulos Date: Thu, 30 Jun 2016 06:43:29 +0300 Subject: [PATCH] Fix iris create, package's dependencies are downloaded automatically when a package is installed --- iris/create.go | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/iris/create.go b/iris/create.go index 95b932c0..ab5ac1e0 100644 --- a/iris/create.go +++ b/iris/create.go @@ -20,6 +20,8 @@ const ( var ( packagesInstallDir = utils.AssetsDirectory + utils.PathSeparator + "iris-command-assets" + utils.PathSeparator + // packages should install with go get before create the package + packagesDependencies = []string{"github.com/iris-contrib/middleware/logger"} ) func isValidInstallDir(targetDir string) bool { @@ -54,9 +56,27 @@ func create(flags cli.Flags) (err error) { } if !utils.DirectoryExists(packagesInstallDir) || !flags.Bool("offline") { - downloadPackages() - } + // install/update go dependencies at the same time downloading the zip from the github iris-contrib assets + finish := make(chan bool) + go func() { + go func() { + for _, source := range packagesDependencies { + gogetCmd := utils.CommandBuilder("go", "get", source) + if msg, err := gogetCmd.CombinedOutput(); err != nil { + panic("Unable to go get " + source + " please make sure you're connected to the internet.\nSolution: Remove your $GOPATH/src/github.com/iris-contrib/middleware folder and re-run the iris create\nReason:\n" + string(msg)) + } + } + finish <- true + }() + + downloadPackages() + <-finish + }() + + <-finish + close(finish) + } createPackage(flags.String("type"), targetDir) return }