func CloneNodeCode(e *parsecli.Env, isNew, onlyConfig bool, appConfig parsecli.AppConfig) (bool, error) { cloneTemplate := false if !isNew && !onlyConfig { authToken, err := appConfig.GetApplicationAuth(e) if err != nil { return false, err } herokuAppConfig, ok := appConfig.(*parsecli.HerokuAppConfig) if !ok { return false, stackerr.New("invalid heroku app config") } var gitURL string g := &gitInfo{} herokuAppName, err := parsecli.FetchHerokuAppName(herokuAppConfig.HerokuAppID, e) if err != nil { return false, err } gitURL = fmt.Sprintf("https://:%[email protected]/%s.git", authToken, herokuAppName) err = g.clone(gitURL, e.Root) if err != nil { fmt.Fprintf(e.Err, `Failed to fetch the latest deployed code from Heroku. Please try "git clone %s %s". Currently cloning the template project. `, gitURL, e.Root, ) cloneTemplate = true } else { isEmpty, err := g.isEmptyRepository(e.Root) if err != nil { return false, err } if isEmpty { if err := os.RemoveAll(e.Root); err != nil { return false, stackerr.Wrap(err) } cloneTemplate = true } } } cloneTemplate = (isNew || cloneTemplate) && !onlyConfig return cloneTemplate, setupNodeSample(e, cloneTemplate) }