diff --git a/bundle/config/artifact.go b/bundle/config/artifact.go index 1ac371e9..60331eb1 100644 --- a/bundle/config/artifact.go +++ b/bundle/config/artifact.go @@ -1,6 +1,7 @@ package config import ( + "bytes" "context" "fmt" "os/exec" @@ -40,10 +41,19 @@ func (a *Artifact) Build(ctx context.Context) ([]byte, error) { return nil, fmt.Errorf("no build property defined") } - buildParts := strings.Split(a.BuildCommand, " ") - cmd := exec.CommandContext(ctx, buildParts[0], buildParts[1:]...) - cmd.Dir = a.Path - return cmd.CombinedOutput() + out := make([][]byte, 0) + commands := strings.Split(a.BuildCommand, " && ") + for _, command := range commands { + buildParts := strings.Split(command, " ") + cmd := exec.CommandContext(ctx, buildParts[0], buildParts[1:]...) + cmd.Dir = a.Path + res, err := cmd.CombinedOutput() + if err != nil { + return res, err + } + out = append(out, res) + } + return bytes.Join(out, []byte{}), nil } func (a *Artifact) NormalisePaths() { diff --git a/bundle/libraries/libraries.go b/bundle/libraries/libraries.go index ff86a34b..f7a2574a 100644 --- a/bundle/libraries/libraries.go +++ b/bundle/libraries/libraries.go @@ -68,6 +68,10 @@ func findArtifactsAndMarkForUpload(ctx context.Context, lib *compute.Library, b return err } + if len(matches) == 0 && isLocalLibrary(lib) { + return fmt.Errorf("no library found for %s", libPath(lib)) + } + for _, match := range matches { af, err := findArtifactFileByLocalPath(match, b) if err != nil { @@ -105,3 +109,7 @@ func libPath(library *compute.Library) string { return "" } + +func isLocalLibrary(library *compute.Library) bool { + return libPath(library) != "" +}