switched out make for just
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -1404,16 +1404,6 @@
|
||||
height: calc(var(--spacing) * 10);
|
||||
}
|
||||
}
|
||||
.sm\:w-1\/3 {
|
||||
@media (width >= 40rem) {
|
||||
width: calc(1/3 * 100%);
|
||||
}
|
||||
}
|
||||
.sm\:w-2\/3 {
|
||||
@media (width >= 40rem) {
|
||||
width: calc(2/3 * 100%);
|
||||
}
|
||||
}
|
||||
.sm\:w-10 {
|
||||
@media (width >= 40rem) {
|
||||
width: calc(var(--spacing) * 10);
|
||||
@@ -1456,11 +1446,6 @@
|
||||
scale: var(--tw-scale-x) var(--tw-scale-y);
|
||||
}
|
||||
}
|
||||
.sm\:grid-cols-2 {
|
||||
@media (width >= 40rem) {
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
}
|
||||
}
|
||||
.sm\:flex-row {
|
||||
@media (width >= 40rem) {
|
||||
flex-direction: row;
|
||||
@@ -1552,11 +1537,6 @@
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
}
|
||||
}
|
||||
.md\:grid-cols-3 {
|
||||
@media (width >= 48rem) {
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
}
|
||||
}
|
||||
.md\:flex-row {
|
||||
@media (width >= 48rem) {
|
||||
flex-direction: row;
|
||||
@@ -1607,11 +1587,6 @@
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
}
|
||||
}
|
||||
.lg\:grid-cols-4 {
|
||||
@media (width >= 64rem) {
|
||||
grid-template-columns: repeat(4, minmax(0, 1fr));
|
||||
}
|
||||
}
|
||||
.lg\:items-end {
|
||||
@media (width >= 64rem) {
|
||||
align-items: flex-end;
|
||||
|
||||
Reference in New Issue
Block a user