feat: explicit list of source files
This commit is contained in:
		| @@ -132,11 +132,15 @@ type Patch struct { | ||||
|  | ||||
| // Artifact is for .out-of-tree.toml | ||||
| type Artifact struct { | ||||
| 	Name       string | ||||
| 	Type       ArtifactType | ||||
| 	TestFiles  []FileTransfer | ||||
| 	SourcePath string | ||||
| 	Targets    []Target | ||||
| 	Name string | ||||
| 	Type ArtifactType | ||||
|  | ||||
| 	SourcePath  string | ||||
| 	SourceFiles []string | ||||
|  | ||||
| 	TestFiles []FileTransfer | ||||
|  | ||||
| 	Targets []Target | ||||
|  | ||||
| 	Script string | ||||
|  | ||||
|   | ||||
| @@ -9,6 +9,7 @@ import ( | ||||
| 	"math/rand" | ||||
| 	"os" | ||||
| 	"os/exec" | ||||
| 	"path/filepath" | ||||
| 	"strings" | ||||
| 	"time" | ||||
|  | ||||
| @@ -112,7 +113,11 @@ func Build(flog zerolog.Logger, tmp string, ka Artifact, | ||||
|  | ||||
| 	outdir = tmp + "/source" | ||||
|  | ||||
| 	err = copy.Copy(ka.SourcePath, outdir) | ||||
| 	if len(ka.SourceFiles) == 0 { | ||||
| 		err = copy.Copy(ka.SourcePath, outdir) | ||||
| 	} else { | ||||
| 		err = CopyFiles(ka.SourcePath, ka.SourceFiles, outdir) | ||||
| 	} | ||||
| 	if err != nil { | ||||
| 		return | ||||
| 	} | ||||
| @@ -226,6 +231,35 @@ type Result struct { | ||||
| 	InternalErrorString string | ||||
| } | ||||
|  | ||||
| func CopyFiles(path string, files []string, dest string) (err error) { | ||||
| 	err = os.MkdirAll(dest, os.ModePerm) | ||||
| 	if err != nil { | ||||
| 		return | ||||
| 	} | ||||
|  | ||||
| 	for _, sf := range files { | ||||
| 		if sf[0] == '/' { | ||||
| 			err = CopyFile(sf, filepath.Join(dest, filepath.Base(sf))) | ||||
| 			if err != nil { | ||||
| 				return | ||||
| 			} | ||||
| 			continue | ||||
| 		} | ||||
|  | ||||
| 		err = os.MkdirAll(filepath.Join(dest, filepath.Dir(sf)), os.ModePerm) | ||||
| 		if err != nil { | ||||
| 			return | ||||
| 		} | ||||
|  | ||||
| 		err = CopyFile(filepath.Join(path, sf), filepath.Join(dest, sf)) | ||||
| 		if err != nil { | ||||
| 			return | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func CopyFile(sourcePath, destinationPath string) (err error) { | ||||
| 	sourceFile, err := os.Open(sourcePath) | ||||
| 	if err != nil { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user