pgmini-migrate 0.1.2__py3-none-any.whl → 0.1.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pgmini_migrate/cli.py +23 -14
- {pgmini_migrate-0.1.2.dist-info → pgmini_migrate-0.1.3.dist-info}/METADATA +1 -1
- pgmini_migrate-0.1.3.dist-info/RECORD +10 -0
- pgmini_migrate-0.1.2.dist-info/RECORD +0 -10
- {pgmini_migrate-0.1.2.dist-info → pgmini_migrate-0.1.3.dist-info}/WHEEL +0 -0
- {pgmini_migrate-0.1.2.dist-info → pgmini_migrate-0.1.3.dist-info}/entry_points.txt +0 -0
- {pgmini_migrate-0.1.2.dist-info → pgmini_migrate-0.1.3.dist-info}/licenses/LICENSE +0 -0
- {pgmini_migrate-0.1.2.dist-info → pgmini_migrate-0.1.3.dist-info}/top_level.txt +0 -0
pgmini_migrate/cli.py
CHANGED
@@ -29,6 +29,7 @@ def load_env_file(env_path=".env"):
|
|
29
29
|
# do not overwrite existing env set by host
|
30
30
|
if k not in os.environ:
|
31
31
|
os.environ[k] = v
|
32
|
+
print(f"Loaded env {k} from {env_path}: {v}")
|
32
33
|
|
33
34
|
|
34
35
|
def build_conninfo_from_args(args):
|
@@ -154,9 +155,7 @@ def get_next_version_str(migrations_root):
|
|
154
155
|
def create_migration(migrations_root, description):
|
155
156
|
desc = description.strip()
|
156
157
|
# sanitize description
|
157
|
-
desc_clean
|
158
|
-
c for c in desc.lower().replace(" ", "_") if (c.isalnum() or c == "_")
|
159
|
-
)
|
158
|
+
desc_clean=desc.lower().replace(" ", "_").replace("-", "_")
|
160
159
|
version = get_next_version_str(migrations_root)
|
161
160
|
upgrade_name = f"{version}.{desc_clean}.upgrade.sql"
|
162
161
|
downgrade_name = f"{version}.{desc_clean}.downgrade.sql"
|
@@ -269,11 +268,15 @@ def cmd_downgrade(args):
|
|
269
268
|
|
270
269
|
def build_arg_parser():
|
271
270
|
p = argparse.ArgumentParser(prog="pgmigrate", description="Simple PostgreSQL migration tool")
|
271
|
+
|
272
|
+
# NOTE: lấy default từ os.getenv() *tại thời điểm gọi*, không từ hằng module-level
|
273
|
+
migrations_default = os.getenv("MIGRATIONS_DIR", "migrations")
|
274
|
+
|
272
275
|
p.add_argument("--env-file", default=".env", help="Path to .env file (default: .env)")
|
273
276
|
p.add_argument(
|
274
277
|
"--migrations",
|
275
|
-
default=
|
276
|
-
help=f"Root migrations dir (default: {
|
278
|
+
default=migrations_default,
|
279
|
+
help=f"Root migrations dir (default: {migrations_default})",
|
277
280
|
)
|
278
281
|
|
279
282
|
# DB connection options (mutually override database_url)
|
@@ -303,16 +306,24 @@ def build_arg_parser():
|
|
303
306
|
|
304
307
|
def main(argv=None):
|
305
308
|
argv = argv if argv is not None else sys.argv[1:]
|
309
|
+
|
310
|
+
# -------------------------
|
311
|
+
# 1) pre-parse only --env-file
|
312
|
+
# -------------------------
|
313
|
+
pre_parser = argparse.ArgumentParser(add_help=False)
|
314
|
+
pre_parser.add_argument("--env-file", default=".env")
|
315
|
+
pre_args, _unknown = pre_parser.parse_known_args(argv)
|
316
|
+
|
317
|
+
# 2) load env file BEFORE building main parser so os.getenv picks values
|
318
|
+
if pre_args.env_file:
|
319
|
+
load_env_file(pre_args.env_file)
|
320
|
+
|
321
|
+
# 3) build the full parser (now os.getenv reflects .env content)
|
306
322
|
parser = build_arg_parser()
|
307
|
-
args = parser.parse_args(argv)
|
308
323
|
|
309
|
-
#
|
310
|
-
|
311
|
-
load_env_file(args.env_file)
|
324
|
+
# 4) parse full args (using original argv)
|
325
|
+
args = parser.parse_args(argv)
|
312
326
|
|
313
|
-
# prefer CLI args, else env
|
314
|
-
# Re-populate db fields from env if not provided explicitly
|
315
|
-
# (build_conninfo handles database_url precedence)
|
316
327
|
# Dispatch commands:
|
317
328
|
if args.cmd == "create":
|
318
329
|
desc = " ".join(args.description)
|
@@ -320,8 +331,6 @@ def main(argv=None):
|
|
320
331
|
return
|
321
332
|
|
322
333
|
# For commands that touch DB, ensure connection info exists
|
323
|
-
# Build conninfo now (will use args or environment)
|
324
|
-
# If neither database_url nor db_name provided, abort
|
325
334
|
conninfo = build_conninfo_from_args(args)
|
326
335
|
if not conninfo:
|
327
336
|
print("No database connection info provided. Provide --database-url or host/name/user/password or set env vars.")
|
@@ -0,0 +1,10 @@
|
|
1
|
+
pgmini_migrate/__init__.py,sha256=Pru0BlFBASFCFo7McHdohtKkUtgMPDwbGfyUZlE2_Vw,21
|
2
|
+
pgmini_migrate/__main__.py,sha256=0g3iknXOS9gZUcpL_trgAcuCJnZZKjdsT_xt61WOVb4,60
|
3
|
+
pgmini_migrate/cli.py,sha256=7i-kwA5rlG6rpQw4NyMzaxs_OEZXvuA2ZGK2bfYyKBg,12179
|
4
|
+
pgmini_migrate/utils.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
5
|
+
pgmini_migrate-0.1.3.dist-info/licenses/LICENSE,sha256=n8ph1nmbOC4LqVLKRE-5SrUxzlv71A4saf-2_iNWR2Y,37
|
6
|
+
pgmini_migrate-0.1.3.dist-info/METADATA,sha256=JEI-i9nzM3D_E1UR8JxsHAFGVHJOQsy8-IH6RMXXRKw,1197
|
7
|
+
pgmini_migrate-0.1.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
8
|
+
pgmini_migrate-0.1.3.dist-info/entry_points.txt,sha256=Zy6EN7sJuzTPbMhyoFjri1OdQ2iX1HuPw4UcSi4G6OY,54
|
9
|
+
pgmini_migrate-0.1.3.dist-info/top_level.txt,sha256=ok556JVjy6jjrWTHi9d_lE4TteBXjQIoLOoJFD7_yhg,15
|
10
|
+
pgmini_migrate-0.1.3.dist-info/RECORD,,
|
@@ -1,10 +0,0 @@
|
|
1
|
-
pgmini_migrate/__init__.py,sha256=Pru0BlFBASFCFo7McHdohtKkUtgMPDwbGfyUZlE2_Vw,21
|
2
|
-
pgmini_migrate/__main__.py,sha256=0g3iknXOS9gZUcpL_trgAcuCJnZZKjdsT_xt61WOVb4,60
|
3
|
-
pgmini_migrate/cli.py,sha256=tnvAMvHf1l8hYTIjlWGB9MKfvopjk9Aksy4EMtMY-sg,11850
|
4
|
-
pgmini_migrate/utils.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
5
|
-
pgmini_migrate-0.1.2.dist-info/licenses/LICENSE,sha256=n8ph1nmbOC4LqVLKRE-5SrUxzlv71A4saf-2_iNWR2Y,37
|
6
|
-
pgmini_migrate-0.1.2.dist-info/METADATA,sha256=yBYekKAZI7qj2rq1M1PAJ0hithyoOhqEu-Ae63uAu9k,1197
|
7
|
-
pgmini_migrate-0.1.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
8
|
-
pgmini_migrate-0.1.2.dist-info/entry_points.txt,sha256=Zy6EN7sJuzTPbMhyoFjri1OdQ2iX1HuPw4UcSi4G6OY,54
|
9
|
-
pgmini_migrate-0.1.2.dist-info/top_level.txt,sha256=ok556JVjy6jjrWTHi9d_lE4TteBXjQIoLOoJFD7_yhg,15
|
10
|
-
pgmini_migrate-0.1.2.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|