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:
|
||||
mix format
|
||||
|
||||
|
||||
regen-migrations migration_name:
|
||||
#!/bin/bash
|
||||
# Usage:
|
||||
# just regen-migrations migration_name [commit_hash]
|
||||
# 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
|
||||
# Get count of untracked migrations
|
||||
N_MIGRATIONS=$(git ls-files --others priv/repo/migrations | wc -l)
|
||||
# Rollback untracked migrations
|
||||
mix ash_postgres.rollback -n $N_MIGRATIONS
|
||||
# Delete untracked migrations and snapshots
|
||||
git ls-files --others priv/repo/migrations | xargs rm
|
||||
git ls-files --others priv/resource_snapshots | xargs rm
|
||||
# Regenerate migrations
|
||||
mix ash.codegen --name {{migration_name}}
|
||||
# Run migrations if flag
|
||||
if echo $* | grep -e "-m" -q; then
|
||||
mix ash.migrate
|
||||
# Pick migrations either from the given commit or untracked files
|
||||
if [ -n "{{commit_hash}}" ]; then
|
||||
echo "→ Rolling back migrations from commit {{commit_hash}}"
|
||||
MIG_FILES=$(git show --name-only --pretty=format: "{{commit_hash}}" \
|
||||
| grep -E "^priv/repo/migrations/|^priv/resource_snapshots")
|
||||
else
|
||||
echo "→ Rolling back all untracked migrations"
|
||||
MIG_FILES=$(git ls-files --others priv/repo/migrations)
|
||||
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