1. import os
  2. import json
  3. def mirror_config(config_dir, output_dir, fallback_config="default.json"):
  4. """Mirrors configuration files from a source directory to a destination directory,
  5. using a fallback configuration if a file is missing.
  6. """
  7. if not os.path.exists(output_dir):
  8. os.makedirs(output_dir)
  9. for filename in os.listdir(config_dir):
  10. if filename.endswith(".json"):
  11. source_path = os.path.join(config_dir, filename)
  12. output_path = os.path.join(output_dir, filename)
  13. try:
  14. with open(source_path, "r") as f:
  15. config_data = json.load(f) # Load config data
  16. with open(output_path, "w") as f:
  17. json.dump(config_data, f, indent=4) # Write config data to output
  18. print(f"Mirrored: {filename}")
  19. except FileNotFoundError:
  20. print(f"Error: File not found: {filename}. Using fallback.")
  21. try:
  22. with open(fallback_config, "r") as f:
  23. fallback_data = json.load(f)
  24. with open(output_path, "w") as f:
  25. json.dump(fallback_data, f, indent=4)
  26. print(f"Mirrored using fallback: {filename}")
  27. except FileNotFoundError:
  28. print(f"Error: Fallback file not found: {fallback_config}. Skipping {filename}")
  29. except json.JSONDecodeError:
  30. print(f"Error: Invalid JSON in fallback file {fallback_config}. Skipping {filename}")
  31. except json.JSONDecodeError:
  32. print(f"Error: Invalid JSON in {filename}. Skipping {filename}")
  33. if __name__ == "__main__":
  34. # Example Usage:
  35. config_directory = "config_files" # Directory containing config files
  36. output_directory = "mirrored_configs" # Directory to store mirrored configs
  37. mirror_config(config_directory, output_directory)

Add your comment