コード例 #1
0
ファイル: new.go プロジェクト: swhitley/parse-cli
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)
}