diff --git a/pkg/cmd/download.go b/pkg/cmd/download.go index 220d7f13dd1d1bc082ba243fcdb1bae2f639540d..5650aebc9b44cb66cadd0c5ce96f471ba39840d4 100644 --- a/pkg/cmd/download.go +++ b/pkg/cmd/download.go @@ -16,6 +16,7 @@ import ( "github.com/tmrts/boilr/pkg/cmd/util" "github.com/tmrts/boilr/pkg/host" "github.com/tmrts/boilr/pkg/util/exit" + "github.com/tmrts/boilr/pkg/util/git" "github.com/tmrts/boilr/pkg/util/osutil" "github.com/tmrts/boilr/pkg/util/tlog" "github.com/tmrts/boilr/pkg/util/validate" @@ -122,21 +123,21 @@ var Download = &cli.Command{ if shouldOverwrite := GetBoolFlag(c, "force"); !shouldOverwrite { exit.OK("Template %v already exists use -f to overwrite the template", templateName) } - case !exists: - if err := os.MkdirAll(targetDir, 0755); err != nil { + + // TODO(tmrts): extract `template delete` helper and use that one + if err := os.RemoveAll(targetDir); err != nil { exit.Error(fmt.Errorf("download: %s", err)) } } - zipURL := host.ZipURL(templateURL) - - if err := downloadZip(zipURL, targetDir); err != nil { - // Delete if download transaction fails - defer os.RemoveAll(targetDir) - + // TODO(tmrts): allow fetching other branches than 'master' + if err := git.Clone(targetDir, git.CloneOptions{ + URL: host.URL(templateURL), + }); err != nil { exit.Error(fmt.Errorf("download: %s", err)) } + // TODO(tmrts): use git-notes as metadata storage or boltdb if err := serializeMetadata(templateName, templateURL, targetDir); err != nil { exit.Error(fmt.Errorf("download: %s", err)) }