switched out make for just

This commit is contained in:
2026-02-13 13:27:14 +11:00
parent c92c722ad5
commit 01c6b5250f
10 changed files with 594 additions and 477 deletions

View File

@@ -2,6 +2,7 @@ package config
import (
"flag"
"strconv"
"github.com/pkg/errors"
)
@@ -18,8 +19,8 @@ type Flags struct {
ResetDB bool
// Migration commands
MigrateUp bool
MigrateRollback bool
MigrateUp string
MigrateRollback string
MigrateStatus bool
MigrateCreate string
MigrateDryRun bool
@@ -40,8 +41,8 @@ func SetupFlags() (*Flags, error) {
resetDB := flag.Bool("reset-db", false, "⚠️ DESTRUCTIVE: Drop and recreate all tables (dev only)")
// Migration commands
migrateUp := flag.Bool("migrate-up", false, "Run pending database migrations (with automatic backup)")
migrateRollback := flag.Bool("migrate-rollback", false, "Rollback the last migration group (with automatic backup)")
migrateUp := flag.String("migrate-up", "", "Run pending database migrations (usage: --migrate-up [count|all], default: 1)")
migrateRollback := flag.String("migrate-rollback", "", "Rollback migrations (usage: --migrate-rollback [count|all], default: 1)")
migrateStatus := flag.Bool("migrate-status", false, "Show database migration status")
migrateCreate := flag.String("migrate-create", "", "Create a new migration file with the given name")
migrateDryRun := flag.Bool("migrate-dry-run", false, "Preview pending migrations without applying them")
@@ -53,10 +54,10 @@ func SetupFlags() (*Flags, error) {
// Validate: can't use multiple migration commands at once
commands := 0
if *migrateUp {
if *migrateUp != "" {
commands++
}
if *migrateRollback {
if *migrateRollback != "" {
commands++
}
if *migrateStatus {
@@ -73,6 +74,18 @@ func SetupFlags() (*Flags, error) {
return nil, errors.New("cannot use multiple migration commands simultaneously")
}
// Validate migration count values
if *migrateUp != "" {
if err := validateMigrationCount(*migrateUp); err != nil {
return nil, errors.Wrap(err, "invalid --migrate-up value")
}
}
if *migrateRollback != "" {
if err := validateMigrationCount(*migrateRollback); err != nil {
return nil, errors.Wrap(err, "invalid --migrate-rollback value")
}
}
flags := &Flags{
EnvDoc: *envDoc,
ShowEnv: *showEnv,
@@ -89,3 +102,25 @@ func SetupFlags() (*Flags, error) {
}
return flags, nil
}
// validateMigrationCount validates a migration count value
// Valid values: "all" or a positive integer (1, 2, 3, ...)
func validateMigrationCount(value string) error {
if value == "" {
return nil
}
if value == "all" {
return nil
}
// Try parsing as integer
count, err := strconv.Atoi(value)
if err != nil {
return errors.New("must be a positive integer or 'all'")
}
if count < 1 {
return errors.New("must be a positive integer (1 or greater)")
}
return nil
}