diff --git a/go/src/bashbrew/cmd-put-shared.go b/go/src/bashbrew/cmd-put-shared.go index b407350..93bf6a2 100644 --- a/go/src/bashbrew/cmd-put-shared.go +++ b/go/src/bashbrew/cmd-put-shared.go @@ -4,6 +4,7 @@ import ( "fmt" "os" "path" + "strings" "time" "github.com/codegangsta/cli" @@ -114,6 +115,7 @@ func cmdPutShared(c *cli.Context) error { continue } + failed := []string{} for _, group := range sharedTagGroups { yaml, mostRecentPush, err := entriesToManifestToolYaml(singleArch, *r, group.Entries...) if err != nil { @@ -143,10 +145,15 @@ func cmdPutShared(c *cli.Context) error { if !dryRun { tagYaml := tagsToManifestToolYaml(targetRepo, tagsToPush...) + yaml if err := manifestToolPushFromSpec(tagYaml); err != nil { - return fmt.Errorf("failed pushing %s", groupIdentifier) + fmt.Fprintf(os.Stderr, "warning: failed putting %s, skipping (collecting errors)", groupIdentifier) + failed = append(failed, fmt.Sprintf("- %s: %v", groupIdentifier, err)) + continue } } } + if len(failed) > 0 { + return fmt.Errorf("failed putting groups:\n%s", strings.Join(failed, "\n")) + } } return nil