summaryrefslogtreecommitdiffstats
path: root/client/go/cmd/clone.go
diff options
context:
space:
mode:
Diffstat (limited to 'client/go/cmd/clone.go')
-rw-r--r--client/go/cmd/clone.go47
1 files changed, 25 insertions, 22 deletions
diff --git a/client/go/cmd/clone.go b/client/go/cmd/clone.go
index cdfbcb24dad..bfc25655e68 100644
--- a/client/go/cmd/clone.go
+++ b/client/go/cmd/clone.go
@@ -54,17 +54,10 @@ func cloneApplication(source string, name string) {
defer os.Remove(zipFile.Name())
}
- createErr := os.Mkdir(name, 0755)
- if createErr != nil {
- log.Print("Could not create directory '", color.Cyan(name), "'")
- log.Print(createErr)
- return
- }
-
zipReader, zipOpenError := zip.OpenReader(zipFile.Name())
if zipOpenError != nil {
- log.Print("Could not open sample apps zip '", color.Cyan(zipFile.Name()), "'")
- log.Print(zipOpenError)
+ log.Print(color.Red("Error: "), "Could not open sample apps zip '", color.Cyan(zipFile.Name()), "'")
+ log.Print(color.Brown(zipOpenError))
}
defer zipReader.Close()
@@ -72,19 +65,28 @@ func cloneApplication(source string, name string) {
for _, f := range zipReader.File {
zipEntryPrefix := "sample-apps-master/" + source + "/"
if strings.HasPrefix(f.Name, zipEntryPrefix) {
+ if !found { // Create destination directory lazily when source is found
+ createErr := os.Mkdir(name, 0755)
+ if createErr != nil {
+ log.Print(color.Red("Error: "), "Could not create directory '", color.Cyan(name), "'")
+ log.Print(color.Brown(createErr))
+ return
+ }
+ }
found = true
+
copyError := copy(f, name, zipEntryPrefix)
if copyError != nil {
- log.Print("Could not copy zip entry '", color.Cyan(f.Name), "' to ", color.Cyan(name))
- log.Print(copyError)
+ log.Print(color.Red("Error: "), "Could not copy zip entry '", color.Cyan(f.Name), "' to ", color.Cyan(name))
+ log.Print(color.Brown(copyError))
return
}
}
}
if !found {
- log.Print("Could not find source application '", color.Cyan(source), "'")
+ log.Print(color.Red("Error: "), "Could not find source application '", color.Cyan(source), "'")
} else {
- log.Print("Created ", color.Green(name))
+ log.Print("Created ", color.Cyan(name))
}
}
@@ -92,14 +94,14 @@ func getSampleAppsZip() *os.File {
if existingSampleAppsZip != "" {
existing, openExistingError := os.Open(existingSampleAppsZip)
if openExistingError != nil {
- log.Print("Could not open existing sample apps zip file '", color.Cyan(existingSampleAppsZip), "'")
- log.Print(openExistingError)
+ log.Print(color.Red("Error: "), "Could not open existing sample apps zip file '", color.Cyan(existingSampleAppsZip), "'")
+ log.Print(color.Brown(openExistingError))
}
return existing
}
// TODO: Cache it?
- log.Print("Downloading sample apps ...") // TODO: Spawn thread to indicate progress
+ log.Print(color.Brown("Downloading sample apps ...")) // TODO: Spawn thread to indicate progress
zipUrl, _ := url.Parse("https://github.com/vespa-engine/sample-apps/archive/refs/heads/master.zip")
request := &http.Request{
URL: zipUrl,
@@ -107,26 +109,27 @@ func getSampleAppsZip() *os.File {
}
response, reqErr := util.HttpDo(request, time.Minute*60, "GitHub")
if reqErr != nil {
- log.Print("Request failed: ", color.Red(reqErr))
+ log.Print(color.Red("Error: "), "Could not download sample apps from github")
+ log.Print(color.Brown(reqErr))
return nil
}
defer response.Body.Close()
if response.StatusCode != 200 {
- log.Printf("Could not download sample apps from github (%s)", color.Red(response.StatusCode))
+ log.Print(color.Red("Error: "), "Could not download sample apps from github:", response.StatusCode)
return nil
}
destination, tempFileError := ioutil.TempFile("", "prefix")
if tempFileError != nil {
- log.Print("Could not create a temp file to hold sample apps")
- log.Print(tempFileError)
+ log.Print(color.Red("Error: "), "Could not create a temp file to hold sample apps")
+ log.Print(color.Brown(tempFileError))
}
// destination, _ := os.Create("./" + name + "/sample-apps.zip")
// defer destination.Close()
_, err := io.Copy(destination, response.Body)
if err != nil {
- log.Print("Could not download sample apps from GitHub")
- log.Print(err)
+ log.Print(color.Red("Error: "), "Could not download sample apps from GitHub")
+ log.Print(color.Brown(err))
return nil
}
return destination