def invoke_dbt(parsed): task = None cfg = None try: if parsed.which in {'deps', 'clean'}: # deps doesn't need a profile, so don't require one. cfg = Project.from_current_directory() elif parsed.which != 'debug': # for debug, we will attempt to load the various configurations as # part of the task, so just leave cfg=None. cfg = RuntimeConfig.from_args(parsed) except DbtProjectError as e: logger.info("Encountered an error while reading the project:") logger.info(dbt.compat.to_string(e)) all_profiles = read_profiles(parsed.profiles_dir).keys() if len(all_profiles) > 0: logger.info("Defined profiles:") for profile in all_profiles: logger.info(" - {}".format(profile)) else: logger.info("There are no profiles defined in your " "profiles.yml file") logger.info(PROFILES_HELP_MESSAGE) dbt.tracking.track_invalid_invocation(config=cfg, args=parsed, result_type=e.result_type) return None except DbtProfileError as e: logger.info("Encountered an error while reading profiles:") logger.info(" ERROR {}".format(str(e))) dbt.tracking.track_invalid_invocation(config=cfg, args=parsed, result_type=e.result_type) return None flags.NON_DESTRUCTIVE = getattr(parsed, 'non_destructive', False) arg_drop_existing = getattr(parsed, 'drop_existing', False) arg_full_refresh = getattr(parsed, 'full_refresh', False) if arg_drop_existing: dbt.deprecations.warn('drop-existing') flags.FULL_REFRESH = True elif arg_full_refresh: flags.FULL_REFRESH = True logger.debug("running dbt with arguments %s", parsed) task = parsed.cls(args=parsed, config=cfg) return task, cfg
def _load_project(self): if not os.path.exists(self.project_path): self.project_fail_details = FILE_NOT_FOUND return red('ERROR not found') try: self.project = Project.from_current_directory(self.cli_vars) except dbt.exceptions.DbtConfigError as exc: self.project_fail_details = str(exc) return red('ERROR invalid') return green('OK found and valid')