mirror of
https://gitlab.archlinux.org/archlinux/aurweb.git
synced 2025-02-03 10:43:03 +01:00
70 lines
1.7 KiB
Python
70 lines
1.7 KiB
Python
import configparser
|
|
import os
|
|
from typing import Any
|
|
|
|
# Publicly visible version of aurweb. This is used to display
|
|
# aurweb versioning in the footer and must be maintained.
|
|
# Todo: Make this dynamic/automated.
|
|
AURWEB_VERSION = "v6.2.0"
|
|
|
|
_parser = None
|
|
|
|
|
|
def _get_parser():
|
|
global _parser
|
|
|
|
if not _parser:
|
|
path = os.environ.get("AUR_CONFIG", "/etc/aurweb/config")
|
|
defaults = os.environ.get("AUR_CONFIG_DEFAULTS", path + ".defaults")
|
|
|
|
_parser = configparser.RawConfigParser()
|
|
_parser.optionxform = lambda option: option
|
|
if os.path.isfile(defaults):
|
|
with open(defaults) as f:
|
|
_parser.read_file(f)
|
|
_parser.read(path)
|
|
|
|
return _parser
|
|
|
|
|
|
def rehash():
|
|
"""Globally rehash the configuration parser."""
|
|
global _parser
|
|
_parser = None
|
|
_get_parser()
|
|
|
|
|
|
def get_with_fallback(section, option, fallback):
|
|
return _get_parser().get(section, option, fallback=fallback)
|
|
|
|
|
|
def get(section, option):
|
|
return _get_parser().get(section, option)
|
|
|
|
|
|
def getboolean(section, option):
|
|
return _get_parser().getboolean(section, option)
|
|
|
|
|
|
def getint(section, option, fallback=None):
|
|
return _get_parser().getint(section, option, fallback=fallback)
|
|
|
|
|
|
def get_section(section):
|
|
if section in _get_parser().sections():
|
|
return _get_parser()[section]
|
|
|
|
|
|
def unset_option(section: str, option: str) -> None:
|
|
_get_parser().remove_option(section, option)
|
|
|
|
|
|
def set_option(section: str, option: str, value: Any) -> None:
|
|
_get_parser().set(section, option, value)
|
|
return value
|
|
|
|
|
|
def save() -> None:
|
|
aur_config = os.environ.get("AUR_CONFIG", "/etc/aurweb/config")
|
|
with open(aur_config, "w") as fp:
|
|
_get_parser().write(fp)
|