@@ -47,6 +47,7 @@ func addBuildFlags(fs *pflag.FlagSet, flags *BuildFlags) {
4747 fs .StringVar (& flags .BuildDate , "build-date" , "" , "date used for the timestamps of the files inside the image" )
4848 fs .StringVar (& flags .WorkspaceDir , "workspace-dir" , "" , "directory used for the workspace at /home/build" )
4949 fs .StringVar (& flags .PipelineDir , "pipeline-dir" , "" , "directory used to extend defined built-in pipelines" )
50+ fs .StringSliceVar (& flags .PipelineDirs , "pipeline-dirs" , []string {}, "directories used to extend defined built-in pipelines" )
5051 fs .StringVar (& flags .SourceDir , "source-dir" , "" , "directory used for included sources" )
5152 fs .StringVar (& flags .CacheDir , "cache-dir" , "./melange-cache/" , "directory used for cached inputs" )
5253 fs .StringVar (& flags .CacheSource , "cache-source" , "" , "directory or bucket used for preloading the cache" )
@@ -97,6 +98,7 @@ type BuildFlags struct {
9798 BuildDate string
9899 WorkspaceDir string
99100 PipelineDir string
101+ PipelineDirs []string
100102 SourceDir string
101103 CacheDir string
102104 CacheSource string
@@ -191,9 +193,9 @@ func (flags *BuildFlags) BuildOptions(ctx context.Context, args ...string) ([]bu
191193 build .WithBuildDate (flags .BuildDate ),
192194 build .WithWorkspaceDir (flags .WorkspaceDir ),
193195 // Order matters, so add any specified pipelineDir before
194- // builtin pipelines.
196+ // builtin pipelines. Support both --pipeline-dir (singular, deprecated)
197+ // and --pipeline-dirs (plural, new). --pipeline-dir is processed first.
195198 build .WithPipelineDir (flags .PipelineDir ),
196- build .WithPipelineDir (BuiltinPipelineDir ),
197199 build .WithCacheDir (flags .CacheDir ),
198200 build .WithCacheSource (flags .CacheSource ),
199201 build .WithPackageCacheDir (flags .ApkCacheDir ),
@@ -244,6 +246,13 @@ func (flags *BuildFlags) BuildOptions(ctx context.Context, args ...string) ([]bu
244246 opts = append (opts , build .WithSourceDir (flags .SourceDir ))
245247 }
246248
249+ // Add multiple pipeline directories from --pipeline-dirs
250+ for i := range flags .PipelineDirs {
251+ opts = append (opts , build .WithPipelineDir (flags .PipelineDirs [i ]))
252+ }
253+ // Always append built-in pipeline directory as fallback
254+ opts = append (opts , build .WithPipelineDir (BuiltinPipelineDir ))
255+
247256 if auth , ok := os .LookupEnv ("HTTP_AUTH" ); ! ok {
248257 // Fine, no auth.
249258 } else if parts := strings .SplitN (auth , ":" , 4 ); len (parts ) != 4 {
0 commit comments