def check_local_config_schema(build):
	log.info("Verifying your configuration settings...")
	# leave this import here: might not be on sys.path in some situations
	import validictory

	local_conf_filename = build.tool_config.get('general.local_config')
	if local_conf_filename is not None:
		# explicit conf file defined
		if not path.isfile(local_conf_filename):
			raise ConfigurationError("{file} does not exist!".format(file=local_conf_filename))
	else:
		local_conf_filename = 'local_config.json'
		if not path.isfile(local_conf_filename):
			log.warning("Local configuration file '{file}' does not exist!".format(file=local_conf_filename))
	
	with open(path.join(path_to_lib(), "local_config_schema.json")) as local_conf_schema_file:
		local_conf_schema = json.load(local_conf_schema_file)
	
	try:
		validictory.validate(build.tool_config.all_config(), local_conf_schema)
	except validictory.validator.UnexpectedPropertyError as e:
		log.warning('Unexpected setting: "{error}" in "{file}". This will be ignored.'.format(
			file=local_conf_filename,
			error=e)
		)
	log.info("Configuration settings check complete")
Example #2
0
def check_local_config_schema(build):
    log.info("Verifying your configuration settings...")
    # leave this import here: might not be on sys.path in some situations
    import validictory

    local_conf_filename = build.tool_config.get('general.local_config')
    if local_conf_filename is not None:
        # explicit conf file defined
        if not path.isfile(local_conf_filename):
            raise ConfigurationError(
                "{file} does not exist!".format(file=local_conf_filename))
    else:
        local_conf_filename = 'local_config.json'
        if not path.isfile(local_conf_filename):
            log.warning(
                "Local configuration file '{file}' does not exist!".format(
                    file=local_conf_filename))

    with open(path.join(path_to_lib(),
                        "local_config_schema.json")) as local_conf_schema_file:
        local_conf_schema = json.load(local_conf_schema_file)

    try:
        validictory.validate(build.tool_config.all_config(), local_conf_schema)
    except validictory.validator.UnexpectedPropertyError as e:
        log.warning(
            'Unexpected setting: "{error}". This will be ignored'.format(
                file=local_conf_filename, error=e))
    log.info("Configuration settings check complete")
def config_changes_invalidate_templates(
		generate,
		old_config_filename,
		new_config_filename):
	with open(old_config_filename) as old_config_file:
		old_config = old_config_file.read()
	with open(new_config_filename) as new_config_file:
		new_config = new_config_file.read()
	
	try:
		current_filename = old_config_filename
		old_config_d = json.loads(old_config)
		current_filename = new_config_filename
		new_config_d = json.loads(new_config)
	except Exception as e:
		raise generate.lib.BASE_EXCEPTION(
				"{file} is not valid JSON: {msg}".format(
					file=current_filename,
					msg=e,
				)
		)
	
	if old_config_d == new_config_d:
		LOG.debug("configuration is identical to last run")
		return False

	with open(
			path.join(utils.path_to_lib(), "invalidating_config.json")
			) as invalidating_config_file:
		invalidating_config = json.load(invalidating_config_file)

	for key in invalidating_config:
		if old_config_d.get(key) != new_config_d.get(key):
			LOG.debug("'{key}' has changed in configuration".format(key=key))
			return True
	
	LOG.debug("configuration has not changed")
	return False