From cbba9016cde3aaf14860c0841d343389bf3cad52 Mon Sep 17 00:00:00 2001 From: yukkop Date: Fri, 7 Mar 2025 00:40:00 +0000 Subject: [PATCH] refactor: stir some shit around again --- package/postgres/pg-neo-migration/hectic-chan | Bin 50592 -> 37312 bytes package/postgres/pg-neo-migration/pup | 1 - .../postgres/pg-neo-migration/src/logger.c | 1 + package/postgres/pg-neo-migration/src/main.c | 42 +++++++++++++++--- 4 files changed, 38 insertions(+), 6 deletions(-) delete mode 100644 package/postgres/pg-neo-migration/pup diff --git a/package/postgres/pg-neo-migration/hectic-chan b/package/postgres/pg-neo-migration/hectic-chan index bfa0aafb33e3815e2ed81b58805799a9f2d838ce..5a1a25ffe46e13d0de147d0ee98cde070226b432 100755 GIT binary patch literal 37312 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 U1PxF#Ffb&690(GCVl*xT0O0^qL;wH) literal 50592 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 #include #include +#include #include "macros.h" typedef enum { diff --git a/package/postgres/pg-neo-migration/src/main.c b/package/postgres/pg-neo-migration/src/main.c index ebc96ce..723dcc6 100644 --- a/package/postgres/pg-neo-migration/src/main.c +++ b/package/postgres/pg-neo-migration/src/main.c @@ -1,10 +1,11 @@ #include #include +#include #include "logger.c" #include "macros.h" #include #include -#include +#include // TODO: check on the specific psql version int check_psql_installed(void) { @@ -56,7 +57,7 @@ void create_migration_inner(const char* migration_path, const char* type) { exit(1); } - char filename[1024]; + char filename[1024 + 19]; snprintf(filename, sizeof(filename), "%s/00-entry-point.sql", path); FILE *fp = fopen(filename, "w"); @@ -64,7 +65,7 @@ void create_migration_inner(const char* migration_path, const char* type) { eprintf("Error creating %s", filename); exit(1); } - fprintf(fp, "-- Write your migration SQL here\n"); + fprintf(fp, "-- Write your %s migration SQL here\n", type); fclose(fp); printf("Created migration: %s\n", filename); @@ -114,6 +115,7 @@ int main(int argc, char *argv[]) { char *migration_dir; char *db_url; char *migration_name; + char force = 0; /* Process global options until a known subcommand is encountered */ int i = 1; @@ -156,6 +158,38 @@ int main(int argc, char *argv[]) { } create_migration(migration_dir, migration_name); return 0; + } else if (strcmp(subcommand, "migrate") == 0) { + for (i = subcommand_index+1; i < argc; i++) { + if (strcmp(argv[i], "-u") == 0 || strcmp(argv[i], "--gb-url") == 0) { + if (i + 1 < argc) { + db_url = argv[i+1]; + i++; + } else { + eprintf("%s requires an argument", argv[i]); + } + } else if (strcmp(argv[i], "-f") == 0 || strcmp(argv[i], "--force")) { + force = 1; + } else if (strcmp(argv[i], "-v") == 0 || strcmp(argv[i], "--set")) { + if (i+1 < argc) { + set_vars = relloc(set_vars); + } else { + eprintf("%s requires an argument", argv[i]); + } + + } + } + } else if (strcmp(subcommand, "fetch") == 0) { + for (i = subcommand_index+1; i < argc; i++) { + if (strcmp(argv[i], "-u") == 0 || strcmp(argv[i], "--gb-url") == 0) { + if (i + 1 < argc) { + db_url = argv[i+1]; + i++; + } else { + eprintf("%s requires an argument", argv[i]); + } + + } + } } if (!db_url) { @@ -163,6 +197,4 @@ int main(int argc, char *argv[]) { help_message(argv[0]); exit(1); } - - }