예제 #1
0
    def checker(hook, repo_path, txn_name, profile_name, halt_on_exception):
        """
        Function to singularize the repoguard in precommit or postcommit mode.
        
        :param hook: Execute the repoguard as pre- or postcommit.
        :type hook: string
        
        :param repo_path: The path to the repository.
        :type repo_path: string
        
        :param txn_name: The name of the current transaction.
        :type txn_name: string
        
        :param halt_on_exception: Flag which indicates whether we halt on unexpected exceptions or not.
        :type halt_on_exception: boolean
        """
        
        logger = LoggerFactory().create('%s.tools.checker' % constants.NAME)
        try:
            hooks_path = os.path.abspath(os.path.join(repo_path, "hooks"))
            project_config = os.path.join(hooks_path, constants.CONFIG_FILENAME)
            os.chdir(hooks_path)
            
            logger.debug("RepoGuard initializing...")
            repoguard = RepoGuard(hook, repo_path)
        
            logger.debug("Loading transaction...")
            repoguard.load_transaction(txn_name)
    
            logger.debug("Loading configuration...")
            main_config = RepoGuardConfig(constants.CONFIG_PATH)
            repoguard.load_config(main_config.template_dirs, project_config)
            
            logger.debug("Validating configuration...")
            if main_config.validate:
                repoguard.validate()
            else:
                logger.warning("Validation skipped.")
            
            logger.debug("RepoGuard running...")
            if profile_name:
                result = repoguard.run_profile(profile_name)
            else:   
                result = repoguard.run()

            logger.debug("RepoGuard finished with %s.", result)
            if result == constants.SUCCESS:
                return 0
            else:
                return 1
        except validate.ValidateError:
            logger.exception("The configuration is invalid!")
            return 1
        except: # pylint: disable=W0702
            logger.exception(
                "An unexpected error occurred during the RepoGuard run! Halt on exception is '%s'." % halt_on_exception)
            if not halt_on_exception:
                return 0
            else:
                return 1
예제 #2
0
    def checker(hook, repo_path, txn_name, profile_name, halt_on_exception):
        """
        Function to singularize the repoguard in precommit or postcommit mode.
        
        :param hook: Execute the repoguard as pre- or postcommit.
        :type hook: string
        
        :param repo_path: The path to the repository.
        :type repo_path: string
        
        :param txn_name: The name of the current transaction.
        :type txn_name: string
        
        :param halt_on_exception: Flag which indicates whether we halt on unexpected exceptions or not.
        :type halt_on_exception: boolean
        """

        logger = LoggerFactory().create("%s.tools.checker" % constants.NAME)
        try:
            hooks_path = os.path.abspath(os.path.join(repo_path, "hooks"))
            project_config = os.path.join(hooks_path, constants.CONFIG_FILENAME)
            os.chdir(hooks_path)

            logger.debug("RepoGuard initializing...")
            repoguard = RepoGuard(hook, repo_path)

            logger.debug("Loading transaction...")
            repoguard.load_transaction(txn_name)

            logger.debug("Loading configuration...")
            main_config = RepoGuardConfig(constants.CONFIG_PATH)
            repoguard.load_config(main_config.template_dirs, project_config)

            logger.debug("Validating configuration...")
            if main_config.validate:
                repoguard.validate()
            else:
                logger.warning("Validation skipped.")

            logger.debug("RepoGuard running...")
            if profile_name:
                result = repoguard.run_profile(profile_name)
            else:
                result = repoguard.run()

            logger.debug("RepoGuard finished with %s.", result)
            if result == constants.SUCCESS:
                return 0
            else:
                return 1
        except validate.ValidateError:
            logger.exception("The configuration is invalid!")
            return 1
        except:  # pylint: disable=W0702
            logger.exception(
                "An unexpected error occurred during the RepoGuard run! Halt on exception is '%s'." % halt_on_exception
            )
            if not halt_on_exception:
                return 0
            else:
                return 1