| #!/usr/bin/env python |
| # coding=utf-8 |
| |
| # Copyright [2017] [B2W Digital] |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| from __future__ import print_function |
| |
| import sys |
| import os.path |
| |
| from marvin_python_toolbox.config import find_inidir, parse_ini |
| from marvin_python_toolbox.management import create_cli |
| import marvin_python_toolbox as toolbox |
| from marvin_python_toolbox import __version__ as TOOLBOX_VERSION |
| |
| # Find the ini directory |
| inifilename = 'marvin.ini' |
| inidir = find_inidir(inifilename) |
| |
| if not inidir: |
| default_ini_path = os.path.dirname(__file__) |
| if os.path.exists(os.path.join(default_ini_path, inifilename)): |
| inidir = default_ini_path |
| |
| if not inidir: |
| print("ERROR: marvinini file '{}' not found".format(inifilename)) |
| sys.exit(1) |
| |
| # Load the ini file |
| inipath = os.path.join(inidir, inifilename) |
| |
| os.environ["DEFAULT_CONFIG_PATH"] = inipath |
| os.environ["MARVIN_ENGINE_PATH"] = inidir |
| os.environ["MARVIN_TOOLBOX_PATH"] = toolbox.__path__[0] |
| os.environ["TOOLBOX_VERSION"] = TOOLBOX_VERSION |
| |
| if not os.getenv("LOG_LEVEL"): |
| os.environ["LOG_LEVEL"] = 'INFO' |
| |
| config_defaults = { |
| 'inidir': inidir, |
| 'marvin_packagedir': '{inidir}/{marvin_package}', |
| } |
| |
| config = parse_ini(inipath, config_defaults) |
| |
| package_name = config['marvin_package'] |
| package_path = config['marvin_packagedir'] |
| |
| home = os.environ['HOME'] |
| os.environ.setdefault('SPARK_HOME', '/opt/spark') |
| os.environ.setdefault('WORKON_HOME', os.path.join(home, '.virtualenvs')) |
| os.environ.setdefault('MARVIN_HOME', os.path.join(home, 'marvin')) |
| os.environ.setdefault('MARVIN_DATA_PATH', os.path.join(home, 'marvin/data')) |
| |
| marvin_data = os.environ['MARVIN_DATA_PATH'] |
| if not os.path.exists(marvin_data): |
| os.makedirs(marvin_data) |
| |
| |
| type_ = config.get('marvin_type', None) |
| |
| exclude_commands = config.get('marvin_exclude', None) |
| |
| cli = create_cli(package_name, package_path, type_=type_, exclude=exclude_commands, config=config) |
| |
| cli() |
| |