From 6589ecae139f3ccdfd13ea14a0e773c9c7ccb606 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matt=C3=A9o=20Delabre?= Date: Thu, 18 Jun 2026 18:33:42 -0400 Subject: [PATCH] init: Allow specifying secrets via env vars --- feedleware/__init__.py | 43 ++++++++++++++++++++++++++++-------------- 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/feedleware/__init__.py b/feedleware/__init__.py index f9e0b59..c5518a4 100644 --- a/feedleware/__init__.py +++ b/feedleware/__init__.py @@ -21,23 +21,38 @@ def create_app(): logging.basicConfig(level=level) config_path = environ.get("FEEDLEWARE_CONFIG") + config = {} - if not config_path: - print( - "Please set the FEEDLEWARE_CONFIG environment variable", - file=sys.stderr, - ) - sys.exit(1) + if config_path: + print(f"Reading config from {config_path}") + config = configparser.ConfigParser() + config.read(config_path) + + if "twitch" not in config: + config["twitch"] = {} + + if (client_id := environ.get("FEEDLEWARE_TWITCH_CLIENT_ID")): + config["twitch"]["client_id"] = client_id + + if (secret := environ.get("FEEDLEWARE_TWITCH_SECRET")): + config["twitch"]["secret"] = secret + + if "youtube" not in config: + config["youtube"] = {} + + if (key := environ.get("FEEDLEWARE_YOUTUBE_KEY")): + config["youtube"]["key"] = key + + if "openalex" not in config: + config["openalex"] = {} + + if (email := environ.get("FEEDLEWARE_OPENALEX_EMAIL")): + config["openalex"]["email"] = email - config = configparser.ConfigParser() - config.read(config_path) app = Flask(__name__) - for section in config.sections(): - if section in blueprints: - blueprint = blueprints[section].create_blueprint(config[section]) - app.register_blueprint(blueprint, url_prefix="/" + section) - else: - logger.warning("Unknown service '%s'", section) + for section in blueprints.keys(): + blueprint = blueprints[section].create_blueprint(config[section]) + app.register_blueprint(blueprint, url_prefix="/" + section) return app