#!/usr/bin/python3## Copyright (C) 2025 Red Hat, Inc.# SPDX-License-Identifier: LGPL-2.1-or-later## Merge anaconda's base cockpit.conf with conf.d drop-in overrides.# The merged result is written to a runtime path so that cockpit-ws# picks it up via XDG_CONFIG_DIRS.import configparserimport globimport osimport sysCONF_BASE = "/etc/anaconda/cockpit/cockpit.conf"CONF_D = "/etc/anaconda/cockpit/conf.d"CONF_OUT = "/run/anaconda/cockpit/cockpit.conf"def main():config = configparser.ConfigParser()# Preserve CamelCase keys required by cockpit.conf (e.g. AllowUnencrypted)setattr(config, "optionxform", str) # noqa: B010if not os.path.exists(CONF_BASE):print(f"anaconda-cockpit-conf-merge: base config {CONF_BASE} not found, skipping", file=sys.stderr)returnconfig.read(CONF_BASE)dropins = sorted(glob.glob(os.path.join(CONF_D, "*.conf")))if dropins:config.read(dropins)names = [os.path.basename(f) for f in dropins]print(f"anaconda-cockpit-conf-merge: applied drop-ins: {', '.join(names)}", file=sys.stderr)os.makedirs(os.path.dirname(CONF_OUT), exist_ok=True)with open(CONF_OUT, "w") as f:config.write(f)print(f"anaconda-cockpit-conf-merge: wrote merged config to {CONF_OUT}", file=sys.stderr)if __name__ == "__main__":main()