def main(*args): """Main method of artman.""" # If no arguments are sent, we are using the entry point; derive # them from sys.argv. if not args: args = sys.argv[1:] # Get to a normalized set of arguments. flags = parse_args(*args) user_config = loader.read_user_config(flags.user_config) _adjust_root_dir(flags.root_dir) pipeline_name, pipeline_kwargs = normalize_flags(flags, user_config) if flags.local: try: pipeline = pipeline_factory.make_pipeline(pipeline_name, False, **pipeline_kwargs) # Hardcoded to run pipeline in serial engine, though not necessarily. engine = engines.load( pipeline.flow, engine='serial', store=pipeline.kwargs) engine.run() except: logger.error(traceback.format_exc()) sys.exit(32) finally: _change_owner(flags, pipeline_name, pipeline_kwargs) else: support.check_docker_requirements(flags.image) # Note: artman currently won't work if input directory doesn't contain # shared configuration files (e.g. gapic/packaging/dependencies.yaml). # This will make artman less useful for non-Google APIs. # TODO(ethanbao): Fix that by checking the input directory and # pulling the shared configuration files if necessary. logger.info('Running artman command in a Docker instance.') _run_artman_in_docker(flags)
def main(*args): """Main method of artman.""" # If no arguments are sent, we are using the entry point; derive # them from sys.argv. if not args: args = sys.argv[1:] # Get to a normalized set of arguments. flags = parse_args(*args) user_config = loader.read_user_config(flags.user_config) _adjust_root_dir(flags.root_dir) pipeline_name, pipeline_kwargs = normalize_flags(flags, user_config) if flags.local: try: pipeline = pipeline_factory.make_pipeline(pipeline_name, **pipeline_kwargs) # Hardcoded to run pipeline in serial engine, though not necessarily. engine = engines.load( pipeline.flow, engine='serial', store=pipeline.kwargs) engine.run() except: logger.error(traceback.format_exc()) sys.exit(32) finally: _change_owner(flags, pipeline_name, pipeline_kwargs) else: support.check_docker_requirements(flags.image) # Note: artman currently won't work if input directory doesn't contain # common-protos. logger.info('Running artman command in a Docker instance.') _run_artman_in_docker(flags)
def test_with_config(self, is_file, open_): # Create our stand-in config file. config_file = textwrap.dedent(u"""\ local: toolkit: /toolkit """) is_file.return_value = True open_.return_value = io.StringIO(config_file) # Get the config and test the result. user_config = loader.read_user_config('~/.artman/config.yaml') assert user_config.local.toolkit == '/toolkit'
def test_no_config(self, warn): loader.read_user_config('/unexisting_user_config.yaml') warn.assert_called_once_with( 'No artman user config defined. Use the default one for this ' 'execution. Run `configure-artman` to set up user config.')