diff --git a/bench/app.py b/bench/app.py index 90c096ed..8b528ae6 100644 --- a/bench/app.py +++ b/bench/app.py @@ -2,6 +2,8 @@ import os from .utils import exec_cmd, get_frappe, check_git_for_shallow_clone, get_config import logging +import requests +import json logger = logging.getLogger(__name__) @@ -43,3 +45,16 @@ def pull_all_apps(bench='.'): if os.path.exists(os.path.join(app_dir, '.git')): logger.info('pulling {}'.format(app)) exec_cmd("git pull --rebase upstream HEAD", cwd=app_dir) + +def install_apps_from_path(path, bench='.'): + apps = get_apps_dict(path) + for app, url in apps.items(): + get_app(app, url, bench=bench) + +def get_apps_dict(path): + if path.startswith('http'): + r = requests.get(path) + return r.json() + else: + with open(path) as f: + return json.load(f) diff --git a/bench/cli.py b/bench/cli.py index 75bd1912..d59e084c 100644 --- a/bench/cli.py +++ b/bench/cli.py @@ -38,9 +38,10 @@ def bench(bench='.'): @click.command() @click.argument('path') -def init(path): +@click.option('--apps_path', default=None, help="path to json files with apps to install after init") +def init(path, apps_path): "Create a new bench" - _init(path) + _init(path, apps_path=apps_path) click.echo('Bench {} initialized'.format(path)) @click.command('get-app') diff --git a/bench/utils.py b/bench/utils.py index 61b15406..db8db125 100644 --- a/bench/utils.py +++ b/bench/utils.py @@ -22,8 +22,8 @@ def get_frappe(bench='.'): print 'bench get-app frappe https://github.com/frappe/frappe.git' return frappe -def init(path): - from .app import get_app +def init(path, apps_path=None): + from .app import get_app, install_apps_from_path if os.path.exists(path): print 'Directory {} already exists!'.format(path) sys.exit(1) @@ -41,6 +41,8 @@ def init(path): setup_backups(bench=path) setup_auto_update(bench=path) exec_cmd("{frappe} --build".format(frappe=get_frappe(bench=path)), cwd=os.path.join(path, 'sites')) + if apps_path: + install_apps_from_path(apps_path, bench=path) def exec_cmd(cmd, cwd='.'): try: