|
76 | 76 | } |
77 | 77 |
|
78 | 78 | schemaSourceFlags struct { |
79 | | - schemaDir string |
| 79 | + schemaDirs []string |
80 | 80 | targetDatabaseDSN string |
81 | 81 | } |
82 | 82 |
|
@@ -145,7 +145,7 @@ func createPlanFlags(cmd *cobra.Command) *planFlags { |
145 | 145 | } |
146 | 146 |
|
147 | 147 | func schemaSourceFlagsVar(cmd *cobra.Command, p *schemaSourceFlags) { |
148 | | - cmd.Flags().StringVar(&p.schemaDir, "schema-dir", "", "Directory of .SQL files to use as the schema source. Use to generate a diff between the target database and the schema in this directory.") |
| 148 | + cmd.Flags().StringArrayVar(&p.schemaDirs, "schema-dir", nil, "Directory of .SQL files to use as the schema source (can be multiple). Use to generate a diff between the target database and the schema in this directory.") |
149 | 149 | if err := cmd.MarkFlagDirname("schema-dir"); err != nil { |
150 | 150 | panic(err) |
151 | 151 | } |
@@ -222,10 +222,14 @@ func parsePlanConfig(p planFlags) (planConfig, error) { |
222 | 222 | } |
223 | 223 |
|
224 | 224 | func parseSchemaSource(p schemaSourceFlags) (schemaSourceFactory, error) { |
225 | | - if p.schemaDir != "" { |
226 | | - ddl, err := getDDLFromPath(p.schemaDir) |
227 | | - if err != nil { |
228 | | - return nil, err |
| 225 | + if len(p.schemaDirs) > 0 { |
| 226 | + var ddl []string |
| 227 | + for _, schemaDir := range p.schemaDirs { |
| 228 | + stmts, err := getDDLFromPath(schemaDir) |
| 229 | + if err != nil { |
| 230 | + return nil, fmt.Errorf("getting DDL from path %q: %w", schemaDir, err) |
| 231 | + } |
| 232 | + ddl = append(ddl, stmts...) |
229 | 233 | } |
230 | 234 | return func() (diff.SchemaSource, io.Closer, error) { |
231 | 235 | return diff.DDLSchemaSource(ddl), nil, nil |
|
0 commit comments