1
1
import datetime
2
2
import os
3
- import subprocess
4
3
from shlex import quote
4
+ import subprocess
5
5
6
6
from invoke import run as local
7
7
from invoke .tasks import task
8
8
9
+
9
10
# Process .env file
10
11
if os .path .exists (".env" ):
11
12
with open (".env" ) as f :
@@ -59,15 +60,11 @@ def psql(c, command=None):
59
60
@task
60
61
def delete_docker_database (c , local_database_name = LOCAL_DATABASE_NAME ):
61
62
dexec (
62
- "dropdb --if-exists --host db --username={project_name} {database_name}" .format (
63
- project_name = PROJECT_NAME , database_name = LOCAL_DATABASE_NAME
64
- ),
63
+ f"dropdb --if-exists --host db --username={ PROJECT_NAME } { LOCAL_DATABASE_NAME } " ,
65
64
"db" ,
66
65
)
67
66
dexec (
68
- "createdb --host db --username={project_name} {database_name}" .format (
69
- project_name = PROJECT_NAME , database_name = LOCAL_DATABASE_NAME
70
- ),
67
+ f"createdb --host db --username={ PROJECT_NAME } { LOCAL_DATABASE_NAME } " ,
71
68
"db" ,
72
69
)
73
70
# Create extension schema, for error-free restores from Heroku backups
@@ -91,12 +88,8 @@ def import_data(
91
88
delete_docker_database (c )
92
89
# Import the database file to the db container
93
90
dexec (
94
- "pg_restore --clean --no-acl --if-exists --no-owner --host db \
95
- --username={project_name} -d {database_name} {database_filename}" .format (
96
- project_name = PROJECT_NAME ,
97
- database_name = LOCAL_DATABASE_NAME ,
98
- database_filename = database_filename ,
99
- ),
91
+ f"pg_restore --clean --no-acl --if-exists --no-owner --host db \
92
+ --username={ PROJECT_NAME } -d { LOCAL_DATABASE_NAME } { database_filename } " ,
100
93
service = "db" ,
101
94
)
102
95
@@ -198,9 +191,7 @@ def delete_local_database(c, local_database_name=LOCAL_DATABASE_NAME):
198
191
199
192
def aws (c , command , aws_access_key_id , aws_secret_access_key ):
200
193
return local (
201
- "aws {command}" .format (
202
- command = command ,
203
- ),
194
+ f"aws { command } " ,
204
195
env = {
205
196
"AWS_ACCESS_KEY_ID" : aws_access_key_id ,
206
197
"AWS_SECRET_ACCESS_KEY" : aws_secret_access_key ,
@@ -215,10 +206,7 @@ def pull_media_from_s3(
215
206
aws_storage_bucket_name ,
216
207
local_media_dir = LOCAL_MEDIA_DIR ,
217
208
):
218
- aws_cmd = "s3 sync --delete s3://{bucket_name} {local_media}" .format (
219
- bucket_name = aws_storage_bucket_name ,
220
- local_media = local_media_dir ,
221
- )
209
+ aws_cmd = f"s3 sync --delete s3://{ aws_storage_bucket_name } { local_media_dir } "
222
210
aws (c , aws_cmd , aws_access_key_id , aws_secret_access_key )
223
211
224
212
@@ -242,11 +230,7 @@ def pull_images_from_s3(
242
230
aws_storage_bucket_name ,
243
231
local_images_dir = LOCAL_IMAGES_DIR ,
244
232
):
245
- aws_cmd = (
246
- "s3 sync --delete s3://{bucket_name}/original_images {local_media}" .format (
247
- bucket_name = aws_storage_bucket_name , local_media = local_images_dir
248
- )
249
- )
233
+ aws_cmd = f"s3 sync --delete s3://{ aws_storage_bucket_name } /original_images { local_images_dir } "
250
234
aws (c , aws_cmd , aws_access_key_id , aws_secret_access_key )
251
235
# The above command just syncs the original images, so we need to drop the wagtailimages_renditions
252
236
# table so that the renditions will be re-created when requested on the local build.
@@ -275,18 +259,13 @@ def pull_database_from_heroku(c, app_instance):
275
259
datestamp = datetime .datetime .now ().strftime ("%Y%m%d-%H%M%S" )
276
260
277
261
local (
278
- "heroku pg:backups:download --output={dump_folder}/{datestamp}.dump --app {app}" .format (
279
- app = app_instance , dump_folder = LOCAL_DUMP_DIR , datestamp = datestamp
280
- ),
262
+ f"heroku pg:backups:download --output={ LOCAL_DUMP_DIR } /{ datestamp } .dump --app { app_instance } " ,
281
263
)
282
264
283
265
import_data (c , f"/app/{ LOCAL_DUMP_DIR } /{ datestamp } .dump" )
284
266
285
267
local (
286
- "rm {dump_folder}/{datestamp}.dump" .format (
287
- dump_folder = LOCAL_DUMP_DIR ,
288
- datestamp = datestamp ,
289
- ),
268
+ f"rm { LOCAL_DUMP_DIR } /{ datestamp } .dump" ,
290
269
)
291
270
292
271
0 commit comments