|
3 | 3 | package cmd
|
4 | 4 |
|
5 | 5 | import (
|
| 6 | + "context" |
6 | 7 | "fmt"
|
7 | 8 | "os"
|
8 | 9 | "path/filepath"
|
@@ -32,48 +33,53 @@ func startCmd() *cobra.Command {
|
32 | 33 | }
|
33 | 34 | defer m.Close()
|
34 | 35 |
|
35 |
| - file, err := os.Open(fileName) |
36 |
| - if err != nil { |
37 |
| - return fmt.Errorf("opening migration file: %w", err) |
38 |
| - } |
39 |
| - defer file.Close() |
| 36 | + return runMigrationFromFile(cmd.Context(), m, fileName, complete) |
| 37 | + }, |
| 38 | + } |
40 | 39 |
|
41 |
| - migration, err := migrations.ReadMigration(file) |
42 |
| - if err != nil { |
43 |
| - return fmt.Errorf("reading migration file: %w", err) |
44 |
| - } |
| 40 | + startCmd.Flags().BoolVarP(&complete, "complete", "c", false, "Mark the migration as complete") |
45 | 41 |
|
46 |
| - sp, _ := pterm.DefaultSpinner.WithText("Starting migration...").Start() |
47 |
| - cb := func(n int64) { |
48 |
| - sp.UpdateText(fmt.Sprintf("%d records complete...", n)) |
49 |
| - } |
| 42 | + return startCmd |
| 43 | +} |
50 | 44 |
|
51 |
| - err = m.Start(cmd.Context(), migration, cb) |
52 |
| - if err != nil { |
53 |
| - sp.Fail(fmt.Sprintf("Failed to start migration: %s", err)) |
54 |
| - return err |
55 |
| - } |
| 45 | +func runMigrationFromFile(ctx context.Context, m *roll.Roll, fileName string, complete bool) error { |
| 46 | + file, err := os.Open(fileName) |
| 47 | + if err != nil { |
| 48 | + return fmt.Errorf("opening migration file: %w", err) |
| 49 | + } |
56 | 50 |
|
57 |
| - if complete { |
58 |
| - if err = m.Complete(cmd.Context()); err != nil { |
59 |
| - sp.Fail(fmt.Sprintf("Failed to complete migration: %s", err)) |
60 |
| - return err |
61 |
| - } |
62 |
| - } |
| 51 | + migration, err := migrations.ReadMigration(file) |
| 52 | + if err != nil { |
| 53 | + file.Close() |
| 54 | + return fmt.Errorf("reading migration file: %w", err) |
| 55 | + } |
| 56 | + file.Close() |
63 | 57 |
|
64 |
| - version := migration.Name |
65 |
| - if version == "" { |
66 |
| - version = strings.TrimSuffix(filepath.Base(fileName), filepath.Ext(fileName)) |
67 |
| - } |
68 |
| - viewName := roll.VersionedSchemaName(flags.Schema(), version) |
69 |
| - msg := fmt.Sprintf("New version of the schema available under the postgres %q schema", viewName) |
70 |
| - sp.Success(msg) |
| 58 | + sp, _ := pterm.DefaultSpinner.WithText("Starting migration...").Start() |
| 59 | + cb := func(n int64) { |
| 60 | + sp.UpdateText(fmt.Sprintf("%d records complete...", n)) |
| 61 | + } |
71 | 62 |
|
72 |
| - return nil |
73 |
| - }, |
| 63 | + err = m.Start(ctx, migration, cb) |
| 64 | + if err != nil { |
| 65 | + sp.Fail(fmt.Sprintf("Failed to start migration: %s", err)) |
| 66 | + return err |
74 | 67 | }
|
75 | 68 |
|
76 |
| - startCmd.Flags().BoolVarP(&complete, "complete", "c", false, "Mark the migration as complete") |
| 69 | + if complete { |
| 70 | + if err = m.Complete(ctx); err != nil { |
| 71 | + sp.Fail(fmt.Sprintf("Failed to complete migration: %s", err)) |
| 72 | + return err |
| 73 | + } |
| 74 | + } |
77 | 75 |
|
78 |
| - return startCmd |
| 76 | + version := migration.Name |
| 77 | + if version == "" { |
| 78 | + version = strings.TrimSuffix(filepath.Base(fileName), filepath.Ext(fileName)) |
| 79 | + } |
| 80 | + viewName := roll.VersionedSchemaName(flags.Schema(), version) |
| 81 | + msg := fmt.Sprintf("New version of the schema available under the postgres %q schema", viewName) |
| 82 | + sp.Success(msg) |
| 83 | + |
| 84 | + return nil |
79 | 85 | }
|
0 commit comments