mirror of
https://github.com/frappe/bench.git
synced 2025-01-24 23:48:24 +00:00
Create Bench Virtual Environments
This commit is contained in:
parent
2cd29aca71
commit
53cee53844
@ -10,4 +10,4 @@ def set_frappe_version(bench_path='.'):
|
|||||||
from .app import get_current_frappe_version
|
from .app import get_current_frappe_version
|
||||||
global FRAPPE_VERSION
|
global FRAPPE_VERSION
|
||||||
if not FRAPPE_VERSION:
|
if not FRAPPE_VERSION:
|
||||||
FRAPPE_VERSION = get_current_frappe_version(bench_path=bench_path)
|
FRAPPE_VERSION = get_current_frappe_version(bench_path=bench_path)
|
@ -2,6 +2,8 @@ import click
|
|||||||
|
|
||||||
@click.command()
|
@click.command()
|
||||||
@click.argument('path')
|
@click.argument('path')
|
||||||
|
@click.option('--python', type = click.Choice(['python2', 'python3']), default = 'python2', help = 'Path to Python Executable.')
|
||||||
|
@click.option('--ignore-exist', is_flag = True, default = False, help = "Ignore if Bench instance exists.")
|
||||||
@click.option('--apps_path', default=None, help="path to json files with apps to install after init")
|
@click.option('--apps_path', default=None, help="path to json files with apps to install after init")
|
||||||
@click.option('--frappe-path', default=None, help="path to frappe repo")
|
@click.option('--frappe-path', default=None, help="path to frappe repo")
|
||||||
@click.option('--frappe-branch', default=None, help="path to frappe repo")
|
@click.option('--frappe-branch', default=None, help="path to frappe repo")
|
||||||
@ -9,19 +11,23 @@ import click
|
|||||||
@click.option('--no-procfile', is_flag=True, help="Pull changes in all the apps in bench")
|
@click.option('--no-procfile', is_flag=True, help="Pull changes in all the apps in bench")
|
||||||
@click.option('--no-backups',is_flag=True, help="Run migrations for all sites in the bench")
|
@click.option('--no-backups',is_flag=True, help="Run migrations for all sites in the bench")
|
||||||
@click.option('--no-auto-update',is_flag=True, help="Build JS and CSS artifacts for the bench")
|
@click.option('--no-auto-update',is_flag=True, help="Build JS and CSS artifacts for the bench")
|
||||||
@click.option('--verbose',is_flag=True, help="Verbose output during install")
|
|
||||||
@click.option('--skip-bench-mkdir', is_flag=True, help="Skip mkdir frappe-bench")
|
|
||||||
@click.option('--skip-redis-config-generation', is_flag=True, help="Skip redis config generation if already specifying the common-site-config file")
|
@click.option('--skip-redis-config-generation', is_flag=True, help="Skip redis config generation if already specifying the common-site-config file")
|
||||||
|
@click.option('--verbose',is_flag=True, help="Verbose output during install")
|
||||||
def init(path, apps_path, frappe_path, frappe_branch, no_procfile, no_backups,
|
def init(path, apps_path, frappe_path, frappe_branch, no_procfile, no_backups,
|
||||||
no_auto_update, clone_from, verbose, skip_bench_mkdir, skip_redis_config_generation):
|
no_auto_update, clone_from, verbose, skip_redis_config_generation,
|
||||||
"Create a new bench"
|
ignore_exist = False,
|
||||||
|
python = 'python2'): # Let's change we're ready. - <achilles@frappe.io>
|
||||||
|
'''
|
||||||
|
Create a New Bench Instance.
|
||||||
|
'''
|
||||||
from bench.utils import init
|
from bench.utils import init
|
||||||
init(path, apps_path=apps_path, no_procfile=no_procfile, no_backups=no_backups,
|
init(path, apps_path=apps_path, no_procfile=no_procfile, no_backups=no_backups,
|
||||||
no_auto_update=no_auto_update, frappe_path=frappe_path, frappe_branch=frappe_branch,
|
no_auto_update=no_auto_update, frappe_path=frappe_path, frappe_branch=frappe_branch,
|
||||||
verbose=verbose, clone_from=clone_from, skip_bench_mkdir=skip_bench_mkdir, skip_redis_config_generation=skip_redis_config_generation)
|
verbose=verbose, clone_from=clone_from, skip_redis_config_generation=skip_redis_config_generation,
|
||||||
|
ignore_exist = ignore_exist,
|
||||||
|
python = python)
|
||||||
click.echo('Bench {} initialized'.format(path))
|
click.echo('Bench {} initialized'.format(path))
|
||||||
|
|
||||||
|
|
||||||
@click.command('get-app')
|
@click.command('get-app')
|
||||||
@click.argument('name', nargs=-1) # Dummy argument for backward compatibility
|
@click.argument('name', nargs=-1) # Dummy argument for backward compatibility
|
||||||
@click.argument('git-url')
|
@click.argument('git-url')
|
||||||
|
@ -4,8 +4,7 @@ import click, sys, json
|
|||||||
def setup():
|
def setup():
|
||||||
"Setup bench"
|
"Setup bench"
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
@click.command('sudoers')
|
@click.command('sudoers')
|
||||||
@click.argument('user')
|
@click.argument('user')
|
||||||
def setup_sudoers(user):
|
def setup_sudoers(user):
|
||||||
@ -13,7 +12,6 @@ def setup_sudoers(user):
|
|||||||
from bench.utils import setup_sudoers
|
from bench.utils import setup_sudoers
|
||||||
setup_sudoers(user)
|
setup_sudoers(user)
|
||||||
|
|
||||||
|
|
||||||
@click.command('nginx')
|
@click.command('nginx')
|
||||||
@click.option('--yes', help='Yes to regeneration of nginx config file', default=False, is_flag=True)
|
@click.option('--yes', help='Yes to regeneration of nginx config file', default=False, is_flag=True)
|
||||||
def setup_nginx(yes=False):
|
def setup_nginx(yes=False):
|
||||||
|
@ -27,31 +27,33 @@ def get_env_cmd(cmd, bench_path='.'):
|
|||||||
|
|
||||||
def init(path, apps_path=None, no_procfile=False, no_backups=False,
|
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,
|
no_auto_update=False, frappe_path=None, frappe_branch=None, wheel_cache_dir=None,
|
||||||
verbose=False, clone_from=None, skip_bench_mkdir=False, skip_redis_config_generation=False):
|
verbose=False, clone_from=None, skip_redis_config_generation=False,
|
||||||
|
ignore_exist = False,
|
||||||
|
python = 'python2'): # Let's change when we're ready. - <achilles@frappe.io>
|
||||||
from .app import get_app, install_apps_from_path
|
from .app import get_app, install_apps_from_path
|
||||||
from .config.common_site_config import make_config
|
from .config.common_site_config import make_config
|
||||||
from .config import redis
|
from .config import redis
|
||||||
from .config.procfile import setup_procfile
|
from .config.procfile import setup_procfile
|
||||||
from bench.patches import set_all_patches_executed
|
from bench.patches import set_all_patches_executed
|
||||||
|
|
||||||
if(skip_bench_mkdir):
|
import os.path as osp
|
||||||
pass
|
|
||||||
|
if osp.exists(path):
|
||||||
|
if not ignore_exist:
|
||||||
|
raise ValueError('Bench Instance {path} already exists.'.format(path = path))
|
||||||
else:
|
else:
|
||||||
if os.path.exists(path):
|
|
||||||
print('Directory {} already exists!'.format(path))
|
|
||||||
raise Exception("Site directory already exists")
|
|
||||||
os.makedirs(path)
|
os.makedirs(path)
|
||||||
|
|
||||||
for dirname in folders_in_bench:
|
for dirname in folders_in_bench:
|
||||||
try:
|
try:
|
||||||
os.makedirs(os.path.join(path, dirname))
|
os.makedirs(os.path.join(path, dirname))
|
||||||
except OSError, e:
|
except OSError as e:
|
||||||
if e.errno != os.errno.EEXIST:
|
if e.errno != os.errno.EEXIST:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
setup_logging()
|
setup_logging()
|
||||||
|
|
||||||
setup_env(bench_path=path)
|
setup_env(bench_path=path, python = python)
|
||||||
|
|
||||||
make_config(path)
|
make_config(path)
|
||||||
|
|
||||||
@ -139,8 +141,21 @@ def exec_cmd(cmd, cwd='.'):
|
|||||||
if return_code > 0:
|
if return_code > 0:
|
||||||
raise CommandFailedError(cmd)
|
raise CommandFailedError(cmd)
|
||||||
|
|
||||||
def setup_env(bench_path='.'):
|
def which(executable, raise_err = False):
|
||||||
exec_cmd('virtualenv -q {} -p {}'.format('env', sys.executable), cwd=bench_path)
|
from distutils.spawn import find_executable
|
||||||
|
exec_ = find_executable(executable)
|
||||||
|
|
||||||
|
if not exec_ and raise_err:
|
||||||
|
raise ValueError('{executable} not found.'.format(
|
||||||
|
executable = executable
|
||||||
|
))
|
||||||
|
|
||||||
|
return exec_
|
||||||
|
|
||||||
|
def setup_env(bench_path='.', python = 'python2'):
|
||||||
|
python = which(python, raise_err = True)
|
||||||
|
|
||||||
|
exec_cmd('virtualenv -q {} -p {}'.format('env', python), cwd=bench_path)
|
||||||
exec_cmd('./env/bin/pip -q install --upgrade pip', cwd=bench_path)
|
exec_cmd('./env/bin/pip -q install --upgrade pip', cwd=bench_path)
|
||||||
exec_cmd('./env/bin/pip -q install wheel', cwd=bench_path)
|
exec_cmd('./env/bin/pip -q install wheel', cwd=bench_path)
|
||||||
# exec_cmd('./env/bin/pip -q install https://github.com/frappe/MySQLdb1/archive/MySQLdb-1.2.5-patched.tar.gz', cwd=bench_path)
|
# exec_cmd('./env/bin/pip -q install https://github.com/frappe/MySQLdb1/archive/MySQLdb-1.2.5-patched.tar.gz', cwd=bench_path)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user