migrate-hack 0.2.2 → 0.2.3

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/bin/migrate-hack.sh +47 -31
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 50bfc9223af6bc43f357ee277b61338d616ccbd31d931a6f1086bb1b1fb5be94
4
- data.tar.gz: 6abf61ab8385976ee9258ad4b2997a1d51f81910d04be37149dca10bed156619
3
+ metadata.gz: f2936e13dcdd668f14d5cd94d5e9011d3a76c351a5246f3aa03eb961de70d5cf
4
+ data.tar.gz: 8d150ef42b295b0bca94d7560bb8350e3f7ea9b428795bb68410d150fb9bf03f
5
5
  SHA512:
6
- metadata.gz: a7d656af0955ecaf6a230da107b3032a96204447ddee635065e11730828007b2de56c20714df7e1c3a3a2220a2c974519e02451a1ae0bcc69cbdd7e6d362b336
7
- data.tar.gz: c96fb315967bf9b4757e66bd87325d57ba7873fba0e124a2f68ae7fb9b6dfd39334bb04d1b8bc8bed83508de2476974715b2bdd3bd4fb100449773784f8e308f
6
+ metadata.gz: 4d385f52a38e7e866ae557ab0b1115e9383229dc363d56acc7c69dcc5f037b32da3e603612df82699eb60009883c4099a094bdb579a6ef4c96ec0668013c7490
7
+ data.tar.gz: a3fe8bf68acc6ec1b8be14ae12cd342d85e9655c1a0a5862c452325d55f1a6b26b6c0479a1b6266b9fab81f35a718813fd7369027dd0b061c95d8f58a997f989
data/bin/migrate-hack.sh CHANGED
@@ -6,7 +6,7 @@
6
6
  # copying files from a specified directory to the current one.
7
7
  # Usage: ./migrate-hack.sh [--env=FILE] [--copy=DIR] [--help] [--version]
8
8
 
9
- VERSION="0.2.2"
9
+ VERSION="0.2.3"
10
10
  ENV_FILE=""
11
11
  COPY_DIR=""
12
12
  CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
@@ -119,42 +119,58 @@ copy_files
119
119
  echo "Detecting pending migrations..."
120
120
 
121
121
  # GET PENDING MIGRATIONS
122
- PENDING_MIGRATIONS=$(bundle exec rails db:migrate:status | grep down | awk '{ print $2 }')
123
- echo -e "\033[1;32mPending Migrations:\033[0m"
124
- echo $PENDING_MIGRATIONS
125
- MIGRATION_LIST=""
126
- TEMP_FILE=$(mktemp)
127
-
128
- # BUILD LIST OF MIGRATIONS AND COMMITS
129
- for MIGRATION in $PENDING_MIGRATIONS; do
130
- FILE=$(find db/migrate -name "${MIGRATION}_*.rb")
131
- COMMIT_HASH=$(git log -n 1 --pretty=format:%H -- "$FILE")
132
- COMMIT_DATE=$(git show -s --format=%ct "$COMMIT_HASH")
133
- # [commit_date] [migration_id] [commit_hash]
134
- echo "$COMMIT_DATE $MIGRATION $COMMIT_HASH" >> "$TEMP_FILE"
135
- done
122
+ MAX_ATTEMPTS=5
123
+ ATTEMPT=0
136
124
 
137
- # ORDER BY COMMIT DATE
138
- while read -r TIMESTAMP MIGRATION COMMIT; do
139
- echo -e "\033[1;32mRunning migration $MIGRATION on commit $COMMIT (timestamp $TIMESTAMP)...\033[0m"
140
- renew_git
141
- CHECKOUT=$(git -c advice.detachedHead=false checkout "$COMMIT")
125
+ while true; do
126
+ if [ "$ATTEMPT" -ge "$MAX_ATTEMPTS" ]; then
127
+ echo "⚠️ [WARNING] Please, if you have many newer migrations that fix older ones, run again."
128
+ break
129
+ fi
142
130
 
143
- copy_files
131
+ PENDING_MIGRATIONS=$(bundle exec rails db:migrate:status | grep down | awk '{ print $2 }')
144
132
 
145
- bundle install > /dev/null
146
- echo -e "\033[1;32m - migrate\033[0m"
147
- bundle exec rails db:migrate:up VERSION=$MIGRATION
133
+ if [ -z "$PENDING_MIGRATIONS" ]; then
134
+ echo " All migrations applied successfully."
135
+ break
136
+ fi
148
137
 
138
+ echo -e "\033[1;32mPending Migrations:\033[0m"
139
+ echo $PENDING_MIGRATIONS
140
+ MIGRATION_LIST=""
141
+ TEMP_FILE=$(mktemp)
142
+
143
+ # BUILD LIST OF MIGRATIONS AND COMMITS
144
+ for MIGRATION in $PENDING_MIGRATIONS; do
145
+ FILE=$(find db/migrate -name "${MIGRATION}_*.rb")
146
+ COMMIT_HASH=$(git log -n 1 --pretty=format:%H -- "$FILE")
147
+ COMMIT_DATE=$(git show -s --format=%ct "$COMMIT_HASH")
148
+ # [commit_date] [migration_id] [commit_hash]
149
+ echo "$COMMIT_DATE $MIGRATION $COMMIT_HASH" >> "$TEMP_FILE"
150
+ done
151
+
152
+ # ORDER BY COMMIT DATE
153
+ while read -r TIMESTAMP MIGRATION COMMIT; do
154
+ echo -e "\033[1;32mRunning migration $MIGRATION on commit $COMMIT (timestamp $TIMESTAMP)...\033[0m"
155
+ renew_git
156
+ CHECKOUT=$(git -c advice.detachedHead=false checkout "$COMMIT")
157
+
158
+ copy_files
159
+
160
+ bundle install > /dev/null
161
+ echo -e "\033[1;32m - migrate\033[0m"
162
+ bundle exec rails db:migrate:up VERSION=$MIGRATION
163
+
164
+ renew_git
165
+ git checkout $CURRENT_BRANCH > /dev/null
166
+ done < <(sort -n "$TEMP_FILE")
167
+
168
+ # RESTORING YOUR REPO
149
169
  renew_git
150
- git checkout $CURRENT_BRANCH > /dev/null
151
- done < <(sort -n "$TEMP_FILE")
152
-
153
- # RESTORING YOUR REPO
154
- renew_git
155
170
 
156
- # CHECKING STATUS
157
- bundle exec rails db:migrate:status | grep down
171
+ # INCREMENT ATTEMPT COUNTER
172
+ ATTEMPT=$((ATTEMPT + 1))
173
+ done
158
174
 
159
175
  # TRASH
160
176
  rm -f "$TEMP_FILE"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: migrate-hack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carlos Zillner