import argparse
import configparser
import sys
def compare_configs(config_files, flag1, flag2):
"""Compares values in configuration files based on optional flags."""
if not config_files:
print("Error: No configuration files provided.")
sys.exit(1)
config_values = {}
for file_path in config_files:
try:
config = configparser.ConfigParser()
config.read(file_path)
config_values[file_path] = config
except Exception as e:
print(f"Error reading {file_path}: {e}")
sys.exit(1)
if flag1 and flag2:
# Compare values based on flags
if not compare_values_with_flags(config_values, flag1, flag2):
print("Configuration values differ based on flags.")
return False # Indicate a difference
else:
print("Configuration values match based on flags.")
return True # Indicate no difference
else:
# Compare all values
if not compare_all_values(config_values):
print("Configuration values differ.")
return False # Indicate a difference
else:
print("Configuration values match.")
return True # Indicate no difference
def compare_values_with_flags(config_values, flag1, flag2):
"""Compares values based on specified flags."""
if flag1 == "cpu_threshold" and flag2 == "memory_limit":
#Example comparison
try:
threshold1 = float(config_values[list(config_values.keys())[0]].get("cpu_threshold", "0.0"))
limit1 = int(config_values[list(config_values.keys())[1]].get("memory_limit", "1024"))
if threshold1 > 0.8 and limit1 < 512:
return False
except ValueError:
print("Invalid numeric value in config files.")
return False
return True
else:
print("Invalid flag combination.")
return False
def compare_all_values(config_values):
"""Compares all values across configuration files."""
first_config = config_values[list(config_values.keys())[0]]
for section in first_config:
for key in first_config[section]:
value = first_config[section][key]
is_consistent = True
for file_path in config_values:
try:
config = configparser.ConfigParser()
config.read(file_path)
if section in config and key in config[section]:
if config[section][key] != value:
is_consistent = False
break
else:
is_consistent = False
break
except Exception as e:
print(f"Error reading {file_path}: {e}")
return False
if not is_consistent:
return False
return True
def main():
parser = argparse.ArgumentParser(description="Compare configuration files.")
parser.add_argument("config_files", nargs="+", help="Paths to configuration files.")
parser.add_argument("--cpu_threshold", action="store_true", help="Compare CPU threshold values.")
parser.add_argument("--memory_limit", action="store_true", help="Compare memory limit values.")
args = parser.parse_args()
compare_configs(args.config_files, args.cpu_threshold, args.memory_limit)
if __name__ == "__main__":
main()
Add your comment