2
0
mirror of https://github.com/frappe/bench.git synced 2025-01-10 00:37:51 +00:00

async option in exec_cmd and cousin

This commit is contained in:
Rushabh Mehta 2015-07-28 14:39:02 +05:30
parent e15ea385d8
commit 0ff2561881
2 changed files with 34 additions and 10 deletions

View File

@ -63,9 +63,9 @@ def new_app(app, bench='.'):
apps = os.path.abspath(os.path.join(bench, 'apps'))
if FRAPPE_VERSION == 4:
exec_cmd("{frappe} --make_app {apps} {app}".format(frappe=get_frappe(bench=bench),
apps=apps, app=app))
apps=apps, app=app), async=False)
else:
run_frappe_cmd('make-app', apps, app, bench=bench)
run_frappe_cmd('make-app', apps, app, bench=bench, async=False)
install_app(app, bench=bench)
def install_app(app, bench='.'):

View File

@ -47,7 +47,8 @@ def init(path, apps_path=None, no_procfile=False, no_backups=False,
no_auto_update=False, frappe_path=None, frappe_branch=None, wheel_cache_dir=None):
from .app import get_app, install_apps_from_path
from .config import generate_redis_cache_config, generate_redis_async_broker_config
global FRAPPE_VERSION
global FRAPPE_VERSION
if os.path.exists(path):
print 'Directory {} already exists!'.format(path)
sys.exit(1)
@ -81,9 +82,19 @@ def init(path, apps_path=None, no_procfile=False, no_backups=False,
generate_redis_cache_config(bench=path)
generate_redis_async_broker_config(bench=path)
def exec_cmd(cmd, cwd='.'):
p = subprocess.Popen(cmd, cwd=cwd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
return_code = print_output(p)
def exec_cmd(cmd, cwd='.', async=True):
if async:
stderr = stdout = subprocess.PIPE
else:
stderr = stdout = None
p = subprocess.Popen(cmd, cwd=cwd, shell=True, stdout=stdout, stderr=stderr)
if async:
return_code = print_output(p)
else:
return_code = p.wait()
if return_code > 0:
raise CommandFailedError(cmd)
@ -107,6 +118,7 @@ def setup_procfile(with_celery_broker=False, with_watch=False, bench='.'):
procfile_contents['redis_cache'] = "redis-server config/redis_cache.conf"
procfile_contents['redis_async_broker'] = "redis-server config/redis_async_broker.conf"
procfile_contents['web'] = "bench serve"
procfile_contents['socketio'] = "node apps/frappe/socketio.js"
procfile_contents['socketio'] = "./node_modules/.bin/nodemon apps/frappe/socketio.js"
if with_celery_broker:
procfile_contents['redis_celery'] = "redis-server"
@ -448,8 +460,20 @@ def run_frappe_cmd(*args, **kwargs):
bench = kwargs.get('bench', '.')
f = get_env_cmd('python', bench=bench)
sites_dir = os.path.join(bench, 'sites')
p = subprocess.Popen((f, '-m', 'frappe.utils.bench_helper', 'frappe') + args, cwd=sites_dir, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
return_code = print_output(p)
if kwargs.get('async'):
stderr = stdout = subprocess.PIPE
else:
stderr = stdout = None
p = subprocess.Popen((f, '-m', 'frappe.utils.bench_helper', 'frappe') + args,
cwd=sites_dir, stdout=stdout, stderr=stderr)
if kwargs.get('async'):
return_code = print_output(p)
else:
return_code = p.wait()
if return_code > 0:
raise CommandFailedError(args)
@ -466,7 +490,7 @@ def pre_upgrade(from_ver, to_ver, bench='.'):
if from_ver == 4 and to_ver == 5:
apps = ('frappe', 'erpnext')
remove_shopping_cart(bench=bench)
for app in apps:
cwd = os.path.abspath(os.path.join(bench, 'apps', app))
if os.path.exists(cwd):
@ -488,7 +512,7 @@ def post_upgrade(from_ver, to_ver, bench='.'):
setup_backups(bench=bench)
print "As you have setup your bench for production, you will have to reload configuration for nginx and supervisor"
print "To complete the migration, please run the following commands"
print
print
print "sudo service nginx restart"
print "sudo supervisorctl reload"
if from_ver == 5 and to_ver == 6: