29 lines
911 B
Python
Executable File
29 lines
911 B
Python
Executable File
import sys
|
|
import os
|
|
import subprocess
|
|
|
|
database_url = sys.argv[1]
|
|
|
|
print(f"database_url: {database_url}")
|
|
|
|
if database_url is None:
|
|
print("Please provide a database url")
|
|
sys.exit(1)
|
|
|
|
for f in os.listdir("migrations"):
|
|
if f.endswith(".up.sql"):
|
|
version = f.split("_")[0]
|
|
cmd = f"cat migrations/{f} | openssl dgst -sha384 | cut -d ' ' -f 2"
|
|
ps = subprocess.Popen(
|
|
cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT
|
|
)
|
|
digest = ps.communicate()[0].decode("utf-8").strip()
|
|
|
|
cmd = f"psql '{database_url}' -c \"UPDATE _sqlx_migrations SET checksum = '\\x{digest}' WHERE version = {version};\""
|
|
ps = subprocess.Popen(
|
|
cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT
|
|
)
|
|
out = ps.communicate()[0].decode("utf-8").strip()
|
|
print(f, cmd)
|
|
print(version, digest, out)
|