// implemented as : // dev deploy instance package // TODO: Add flags for max time, etc func deployRun(args []string) (err error) { if len(args) < 1 { err = lib.Error("Not enough arguments for deploy!") return } instanceName := args[0] packageName := "" if len(args) == 1 { packageName = "default" } else if len(args) == 2 { packageName = args[1] } instance, err := lib.GetInstanceByName(instanceName) if err != nil { return } pkg, err := lib.ImportPackage(packageName) if err != nil { return } contents, err := pkg.ZipPackageIntoBytes() if err != nil { return } err = lib.TryLogIn(&instance) if err != nil { return } id, err := lib.TryDeploy(contents, instance) if err != nil { return } finished := false maxTime := int(time.Minute * 5) currentTime := 0 for !finished { sleepTime := int(3 * time.Second) currentTime += sleepTime if currentTime <= maxTime { time.Sleep(time.Duration(sleepTime)) finished = lib.CheckAsyncDeploy(id, instance) } else { return lib.Error("Job exceeded maximum time!") } } return }
// pull <pkg> <instance> // puull <instance> func pullRun(args []string) (err error) { if len(args) < 1 { return lib.Error("Not enough arguments for pull!") } instance, err := lib.GetInstanceByName(args[0]) if err != nil { return } var packageName string if len(args) == 1 { packageName = "default" } else { packageName = args[1] } pkg, err := lib.ImportPackage(packageName) if err != nil { return } err = lib.TryLogIn(&instance) if err != nil { return } id, err := lib.TryRetrieve(pkg, instance) if err != nil { return } finished := false contents := []byte("") maxTime := int(time.Minute * 5) currentTime := 0 for !finished { sleepTime := int(3 * time.Second) currentTime += sleepTime if currentTime <= maxTime { time.Sleep(time.Duration(sleepTime)) finished, contents = lib.CheckAsyncRetrieve(id, instance) } else { return lib.Error("Job exceeded maximum time!") } } err = writePulledFiles(contents) if err != nil { return } return }