Read ~/.devscripts in a more robust way, to ideally pick up multi-line variables (Closes: #725418).

This commit is contained in:
Simon Quigley 2025-03-04 13:17:30 -06:00
parent b551877651
commit 5a20308ab1
2 changed files with 14 additions and 12 deletions

4
debian/changelog vendored
View File

@ -9,6 +9,10 @@ ubuntu-dev-tools (0.206) UNRELEASED; urgency=medium
[ Fernando Bravo Hernández ] [ Fernando Bravo Hernández ]
* Parsing arch parameter to getBinaryPackage() (LP: #2081861) * Parsing arch parameter to getBinaryPackage() (LP: #2081861)
[ Simon Quigley ]
* Read ~/.devscripts in a more robust way, to ideally pick up multi-line
variables (Closes: #725418).
-- Simon Quigley <tsimonq2@debian.org> Tue, 04 Mar 2025 13:04:30 -0600 -- Simon Quigley <tsimonq2@debian.org> Tue, 04 Mar 2025 13:04:30 -0600
ubuntu-dev-tools (0.205) unstable; urgency=medium ubuntu-dev-tools (0.205) unstable; urgency=medium

View File

@ -68,21 +68,19 @@ class UDTConfig:
config = {} config = {}
for filename in ("/etc/devscripts.conf", "~/.devscripts"): for filename in ("/etc/devscripts.conf", "~/.devscripts"):
try: try:
f = open(os.path.expanduser(filename), "r", encoding="utf-8") with open(os.path.expanduser(filename), "r", encoding="utf-8") as f:
content = f.read()
except IOError: except IOError:
continue continue
for line in f: try:
parsed = shlex.split(line, comments=True) tokens = shlex.split(content, comments=True)
if len(parsed) > 1: except ValueError as e:
Logger.warning( Logger.error("Error parsing %s: %s", filename, e)
"Cannot parse variable assignment in %s: %s", continue
getattr(f, "name", "<config>"), for token in tokens:
line, if "=" in token:
) key, value = token.split("=", 1)
if len(parsed) >= 1 and "=" in parsed[0]:
key, value = parsed[0].split("=", 1)
config[key] = value config[key] = value
f.close()
return config return config
def get_value(self, key, default=None, boolean=False, compat_keys=()): def get_value(self, key, default=None, boolean=False, compat_keys=()):