Skip to content

Commit abb45a6

Browse files
authored
Merge pull request #202 from chescales/fix/project-id-option
Fixed project id override for remote commands
2 parents f65383c + 21c3721 commit abb45a6

File tree

4 files changed

+126
-103
lines changed

4 files changed

+126
-103
lines changed

divio_cli/cli.py

Lines changed: 58 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,13 @@
1919
from . import crypto
2020
except ImportError:
2121
crypto = None
22-
from .localdev.utils import get_aldryn_project_settings
22+
from .localdev.utils import allow_remote_id_override
2323
from .cloud import CloudClient, get_endpoint
2424
from .check_system import check_requirements, check_requirements_human
2525
from .utils import (
2626
hr, table, open_project_cloud_site,
2727
get_cp_url, get_git_checked_branch,
28-
print_package_renamed_warning,
29-
Map, check_project_context,
28+
print_package_renamed_warning, Map,
3029
)
3130
from .validators.addon import validate_addon
3231
from .validators.boilerplate import validate_boilerplate
@@ -107,25 +106,9 @@ def login(ctx, token, check):
107106

108107

109108
@cli.group()
110-
@click.option(
111-
'--id', 'identifier',
112-
default=None, type=int,
113-
help='Project.id to use for project commands. '
114-
'Defaults to the project in the current directory using the .aldryn '
115-
'file.'
116-
)
117-
@click.pass_obj
118-
def project(obj, identifier):
109+
def project():
119110
"""Manage your projects"""
120-
if identifier:
121-
obj.project = {
122-
'id': identifier,
123-
}
124-
else:
125-
try:
126-
obj.project = get_aldryn_project_settings(silent=True)
127-
except Exception as exc:
128-
obj.project = {}
111+
pass
129112

130113

131114
@project.command(name='list')
@@ -211,49 +194,44 @@ def sort_projects(items):
211194
help='Take a backup on deployment.',
212195
)
213196
@click.argument('stage', default='test')
197+
@allow_remote_id_override
214198
@click.pass_obj
215-
def project_deploy(obj, stage, backup):
199+
def project_deploy(obj, remote_id, stage, backup):
216200
"""Deploy project"""
217-
check_project_context(obj.project)
218-
website_id = obj.project['id']
219-
obj.client.deploy_project_or_get_progress(website_id, stage, backup)
201+
obj.client.deploy_project_or_get_progress(remote_id, stage, backup)
220202

221203

222204
@project.command(name='deploy-log')
223205
@click.argument('stage', default='test')
206+
@allow_remote_id_override
224207
@click.pass_obj
225-
def project_deploy_log(obj, stage):
208+
def project_deploy_log(obj, remote_id, stage):
226209
"""View last deployment log"""
227-
check_project_context(obj.project)
228-
website_id = obj.project['id']
229-
obj.client.show_deploy_log(website_id, stage)
210+
obj.client.show_deploy_log(remote_id, stage)
230211

231212

232213
@project.command(name='dashboard')
214+
@allow_remote_id_override
233215
@click.pass_obj
234-
def project_dashboard(obj):
216+
def project_dashboard(obj, remote_id):
235217
"""Open project dashboard"""
236-
check_project_context(obj.project)
237-
click.launch(get_cp_url(obj.client, obj.project))
218+
click.launch(get_cp_url(obj.client, remote_id))
238219

239220

240221
@project.command(name='up')
241-
@click.pass_obj
242-
def project_up(obj):
222+
def project_up():
243223
"""Start local project"""
244224
localdev.start_project()
245225

246226

247227
@project.command(name='open')
248-
@click.pass_obj
249-
def project_open(obj):
228+
def project_open():
250229
"""Open local project in browser"""
251230
localdev.open_project()
252231

253232

254233
@project.command(name='update')
255-
@click.pass_obj
256-
def project_update(obj):
234+
def project_update():
257235
"""Update project with latest changes from the Cloud"""
258236
localdev.update_local_project(get_git_checked_branch())
259237

@@ -288,32 +266,36 @@ def project_update(obj):
288266
multiple=True,
289267
help='unset an environment variable',
290268
)
269+
@allow_remote_id_override
291270
@click.pass_obj
292-
def environment_variables(
293-
obj, stage, show_all_vars, as_json, get_vars, set_vars, unset_vars
294-
):
271+
def environment_variables(obj, remote_id, stage, show_all_vars,
272+
as_json, get_vars, set_vars, unset_vars):
295273
"""
296274
Get and set environment vars.
297275
298276
WARNING: This command is experimental and may change in a future release.
299277
"""
300-
check_project_context(obj.project)
301278
if set_vars or unset_vars:
302279
set_vars = dict(set_vars)
303280
data = obj.client.set_custom_environment_variables(
304-
website_id=obj.project['id'],
281+
website_id=remote_id,
305282
stage=stage,
306283
set_vars=set_vars,
307284
unset_vars=unset_vars,
308285
)
309286
else:
310287
data = obj.client.get_environment_variables(
311-
website_id=obj.project['id'],
288+
website_id=remote_id,
312289
stage=stage,
313290
custom_only=not show_all_vars,
314291
)
315292
if get_vars:
316-
data = {key: value for key, value in data.items() if key in get_vars}
293+
data = {
294+
key: value
295+
for key, value
296+
in data.items()
297+
if key in get_vars
298+
}
317299
if as_json:
318300
click.echo(json.dumps(data, indent=2, sort_keys=True))
319301
else:
@@ -324,41 +306,39 @@ def environment_variables(
324306

325307

326308
@project.command(name='test')
309+
@allow_remote_id_override
327310
@click.pass_obj
328-
def project_open_test(obj):
311+
def project_open_test(obj, remote_id):
329312
"""Open project test site"""
330-
check_project_context(obj.project)
331-
open_project_cloud_site(obj.client, obj.project, 'test')
313+
open_project_cloud_site(obj.client, remote_id, 'test')
332314

333315

334316
@project.command(name='live')
317+
@allow_remote_id_override
335318
@click.pass_obj
336-
def project_open_live(obj):
319+
def project_open_live(obj, remote_id):
337320
"""Open project live site"""
338-
check_project_context(obj.project)
339-
open_project_cloud_site(obj.client, obj.project, 'live')
321+
open_project_cloud_site(obj.client, remote_id, 'live')
340322

341323

342324
@project.command(name='status')
343-
@click.pass_obj
344-
def project_status(obj):
325+
def project_status():
345326
"""Show local project status"""
346327
localdev.show_project_status()
347328

348329

349330
@project.command(name='stop')
350-
@click.pass_obj
351-
def project_stop(obj):
331+
def project_stop():
352332
"""Stop local project"""
353333
localdev.stop_project()
354334

355335

356336
@project.command(name='cheatsheet')
337+
@allow_remote_id_override
357338
@click.pass_obj
358-
def project_cheatsheet(obj):
339+
def project_cheatsheet(obj, remote_id):
359340
"""Show useful commands for your project"""
360-
check_project_context(obj.project)
361-
click.launch(get_cp_url(obj.client, obj.project, 'local-development/'))
341+
click.launch(get_cp_url(obj.client, remote_id, 'local-development/'))
362342

363343

364344
@project.command(name='setup')
@@ -402,24 +382,28 @@ def project_pull():
402382

403383
@project_pull.command(name='db')
404384
@click.argument('stage', default='test')
385+
@allow_remote_id_override
405386
@click.pass_obj
406-
def pull_db(obj, stage):
387+
def pull_db(obj, remote_id, stage):
407388
"""
408389
Pull database from your deployed website. Stage is either
409390
test (default) or live
410391
"""
411-
localdev.ImportRemoteDatabase(client=obj.client, stage=stage)()
392+
localdev.ImportRemoteDatabase(
393+
client=obj.client, stage=stage, remote_id=remote_id,
394+
)()
412395

413396

414397
@project_pull.command(name='media')
415398
@click.argument('stage', default='test')
399+
@allow_remote_id_override
416400
@click.pass_obj
417-
def pull_media(obj, stage):
401+
def pull_media(obj, remote_id, stage):
418402
"""
419403
Pull media files from your deployed website. Stage is either
420404
test (default) or live
421405
"""
422-
localdev.pull_media(obj.client, stage)
406+
localdev.pull_media(obj.client, stage, remote_id)
423407

424408

425409
@project.group(name='push')
@@ -436,8 +420,9 @@ def project_push():
436420
@click.option(
437421
'--noinput', is_flag=True, default=False,
438422
help="Don't ask for confirmation")
423+
@allow_remote_id_override
439424
@click.pass_obj
440-
def push_db(obj, stage, dumpfile, noinput):
425+
def push_db(obj, remote_id, stage, dumpfile, noinput):
441426
"""
442427
Push database to your deployed website. Stage is either
443428
test (default) or live
@@ -447,24 +432,21 @@ def push_db(obj, stage, dumpfile, noinput):
447432
click.secho(messages.PUSH_DB_WARNING.format(stage=stage), fg='red')
448433
if not click.confirm('\nAre you sure you want to continue?'):
449434
return
450-
localdev.push_db(obj.client, stage)
435+
localdev.push_db(obj.client, stage, remote_id)
451436
else:
452-
if not obj.project.has_key('id'):
453-
click.secho('\nThis only works with project_id, please enter project_id using --id', fg='red')
454-
else:
455-
website_id = obj.project['id']
456-
if not noinput:
457-
click.secho(messages.PUSH_DB_WARNING.format(stage=stage), fg='red')
458-
if not click.confirm('\nAre you sure you want to continue?'):
459-
return
460-
localdev.push_local_db(obj.client, stage, dumpfile, website_id)
437+
if not noinput:
438+
click.secho(messages.PUSH_DB_WARNING.format(stage=stage), fg='red')
439+
if not click.confirm('\nAre you sure you want to continue?'):
440+
return
441+
localdev.push_local_db(obj.client, stage, dumpfile, remote_id)
461442

462443

463444
@project_push.command(name='media')
464445
@click.argument('stage', default='test')
465446
@click.option('--noinput', is_flag=True, default=False, help="Don't ask for confirmation")
447+
@allow_remote_id_override
466448
@click.pass_obj
467-
def push_media(obj, stage, noinput):
449+
def push_media(obj, remote_id, stage, noinput):
468450
"""
469451
Push database to your deployed website. Stage is either
470452
test (default) or live
@@ -474,7 +456,7 @@ def push_media(obj, stage, noinput):
474456
click.secho(messages.PUSH_MEDIA_WARNING.format(stage=stage), fg='red')
475457
if not click.confirm('\nAre you sure you want to continue?'):
476458
return
477-
localdev.push_media(obj.client, stage)
459+
localdev.push_media(obj.client, stage, remote_id)
478460

479461

480462
@project.group(name='import')
@@ -513,8 +495,7 @@ def export_db():
513495
'--no-rebuild', is_flag=True, default=False,
514496
help='Do not rebuild docker container automatically'
515497
)
516-
@click.pass_obj
517-
def project_develop(obj, package, no_rebuild):
498+
def project_develop(package, no_rebuild):
518499
"""Add a package 'package' to your local project environment"""
519500
localdev.develop_package(package, no_rebuild)
520501

0 commit comments

Comments
 (0)