chore(Justfile): allow regenerating migrations by commit hash
This commit is contained in:
parent
83d6b1173d
commit
8b0a7c76ff
1 changed files with 28 additions and 15 deletions
43
Justfile
43
Justfile
|
|
@ -34,20 +34,33 @@ test:
|
||||||
format:
|
format:
|
||||||
mix format
|
mix format
|
||||||
|
|
||||||
|
# Usage:
|
||||||
regen-migrations migration_name:
|
# just regen-migrations migration_name [commit_hash]
|
||||||
#!/bin/bash
|
# If commit_hash is given, rollback & delete the migrations from that commit.
|
||||||
|
# Otherwise, rollback & delete all untracked migrations.
|
||||||
|
regen-migrations migration_name commit_hash='':
|
||||||
|
#!/usr/bin/env bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
# Get count of untracked migrations
|
# Pick migrations either from the given commit or untracked files
|
||||||
N_MIGRATIONS=$(git ls-files --others priv/repo/migrations | wc -l)
|
if [ -n "{{commit_hash}}" ]; then
|
||||||
# Rollback untracked migrations
|
echo "→ Rolling back migrations from commit {{commit_hash}}"
|
||||||
mix ash_postgres.rollback -n $N_MIGRATIONS
|
MIG_FILES=$(git show --name-only --pretty=format: "{{commit_hash}}" \
|
||||||
# Delete untracked migrations and snapshots
|
| grep -E "^priv/repo/migrations/|^priv/resource_snapshots")
|
||||||
git ls-files --others priv/repo/migrations | xargs rm
|
else
|
||||||
git ls-files --others priv/resource_snapshots | xargs rm
|
echo "→ Rolling back all untracked migrations"
|
||||||
# Regenerate migrations
|
MIG_FILES=$(git ls-files --others priv/repo/migrations)
|
||||||
mix ash.codegen --name {{migration_name}}
|
|
||||||
# Run migrations if flag
|
|
||||||
if echo $* | grep -e "-m" -q; then
|
|
||||||
mix ash.migrate
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Roll back in Ash
|
||||||
|
COUNT=$(echo "$MIG_FILES" | wc -l)
|
||||||
|
mix ash_postgres.rollback -n "$COUNT"
|
||||||
|
|
||||||
|
# Remove the migration files
|
||||||
|
echo removing $MIG_FILES
|
||||||
|
echo "$MIG_FILES" | xargs rm -f
|
||||||
|
|
||||||
|
# Also clean up any untracked resource snapshots
|
||||||
|
git ls-files --others priv/resource_snapshots | xargs rm -f
|
||||||
|
|
||||||
|
# Generate a fresh migration
|
||||||
|
mix ash.codegen --name "{{migration_name}}"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue