def bench_command(bench_path='.'): """Bench manager for Dataent""" import bench from bench.utils import setup_logging bench.set_dataent_version(bench_path=bench_path) setup_logging(bench_path=bench_path)
def backup_site(site, bench_path='.'): bench.set_dataent_version(bench_path=bench_path) if bench.DATAENT_VERSION == 4: exec_cmd("{dataent} --backup {site}".format( dataent=get_dataent(bench_path=bench_path), site=site), cwd=os.path.join(bench_path, 'sites')) else: run_dataent_cmd('--site', site, 'backup', bench_path=bench_path)
def build_assets(bench_path='.', app=None): bench.set_dataent_version(bench_path=bench_path) if bench.DATAENT_VERSION == 4: exec_cmd("{dataent} --build".format(dataent=get_dataent( bench_path=bench_path)), cwd=os.path.join(bench_path, 'sites')) else: command = 'bench build' if app: command += ' --app {}'.format(app) exec_cmd(command, cwd=bench_path)
def patch_sites(bench_path='.'): bench.set_dataent_version(bench_path=bench_path) try: if bench.DATAENT_VERSION == 4: exec_cmd("{dataent} --latest all".format(dataent=get_dataent( bench_path=bench_path)), cwd=os.path.join(bench_path, 'sites')) else: run_dataent_cmd('--site', 'all', 'migrate', bench_path=bench_path) except subprocess.CalledProcessError: raise PatchError
def new_app(app, bench_path='.'): # For backwards compatibility app = app.lower().replace(" ", "_").replace("-", "_") logger.info('creating new app {}'.format(app)) apps = os.path.abspath(os.path.join(bench_path, 'apps')) bench.set_dataent_version(bench_path=bench_path) if bench.DATAENT_VERSION == 4: exec_cmd("{dataent} --make_app {apps} {app}".format(dataent=get_dataent(bench_path=bench_path), apps=apps, app=app)) else: run_dataent_cmd('make-app', apps, app, bench_path=bench_path) install_app(app, bench_path=bench_path)
def setup_backups(bench_path='.'): logger.info('setting up backups') bench_dir = get_bench_dir(bench_path=bench_path) bench.set_dataent_version(bench_path=bench_path) if bench.DATAENT_VERSION == 4: backup_command = "cd {sites_dir} && {dataent} --backup all".format( dataent=get_dataent(bench_path=bench_path), ) else: backup_command = "cd {bench_dir} && {bench} --site all backup".format( bench_dir=bench_dir, bench=sys.argv[0]) add_to_crontab('0 */6 * * * {backup_command} >> {logfile} 2>&1'.format( backup_command=backup_command, logfile=os.path.join(get_bench_dir(bench_path=bench_path), 'logs', 'backup.log')))
def init(path, apps_path=None, no_procfile=False, no_backups=False, no_auto_update=False, dataent_path=None, dataent_branch=None, wheel_cache_dir=None, verbose=False, clone_from=None, skip_redis_config_generation=False, clone_without_update=False, ignore_exist=False, python='python' ): # Let's change when we're ready. - <*****@*****.**> from .app import get_app, install_apps_from_path from .config.common_site_config import make_config from .config import redis from .config.procfile import setup_procfile from bench.patches import set_all_patches_executed import os.path as osp if osp.exists(path): if not ignore_exist: raise ValueError( 'Bench Instance {path} already exists.'.format(path=path)) else: os.makedirs(path) for dirname in folders_in_bench: try: os.makedirs(os.path.join(path, dirname)) except OSError as e: if e.errno == os.errno.EEXIST: pass setup_logging() setup_env(bench_path=path, python=python) make_config(path) if clone_from: clone_apps_from(bench_path=path, clone_from=clone_from, update_app=not clone_without_update) else: if not dataent_path: dataent_path = 'https://github.com/dataent/dataent.git' get_app(dataent_path, branch=dataent_branch, bench_path=path, build_asset_files=False, verbose=verbose) if apps_path: install_apps_from_path(apps_path, bench_path=path) bench.set_dataent_version(bench_path=path) if bench.DATAENT_VERSION > 5: update_node_packages(bench_path=path) set_all_patches_executed(bench_path=path) build_assets(bench_path=path) if not skip_redis_config_generation: redis.generate_config(path) if not no_procfile: setup_procfile(path) if not no_backups: setup_backups(bench_path=path) if not no_auto_update: setup_auto_update(bench_path=path) copy_patches_txt(path)