dlang module: simplify dependency handling with DRY

It can be a list or a single dependency, but the same logic happens
either way. Instead of manually expanding the logic for both cases, just
convert it to a list as needed.
This commit is contained in:
Eli Schwartz 2024-01-01 10:07:34 -05:00
parent f4f50db441
commit dbfc9d0908
No known key found for this signature in database
GPG Key ID: CEB167EFB5722BD6
1 changed files with 12 additions and 21 deletions

View File

@ -13,7 +13,7 @@ from .. import mlog
from ..dependencies import Dependency from ..dependencies import Dependency
from ..dependencies.dub import DubDependency from ..dependencies.dub import DubDependency
from ..interpreterbase import typed_pos_args from ..interpreterbase import typed_pos_args
from ..mesonlib import Popen_safe, MesonException from ..mesonlib import Popen_safe, MesonException, listify
class DlangModule(ExtensionModule): class DlangModule(ExtensionModule):
class_dubbin = None class_dubbin = None
@ -69,27 +69,18 @@ class DlangModule(ExtensionModule):
for key, value in kwargs.items(): for key, value in kwargs.items():
if key == 'dependencies': if key == 'dependencies':
values = listify(value, flatten=False)
config[key] = {} config[key] = {}
if isinstance(value, list): for dep in values:
for dep in value: if isinstance(dep, Dependency):
if isinstance(dep, Dependency): name = dep.get_name()
name = dep.get_name() ret, res = self._call_dubbin(['describe', name])
ret, res = self._call_dubbin(['describe', name]) if ret == 0:
if ret == 0: version = dep.get_version()
version = dep.get_version() if version is None:
if version is None: config[key][name] = ''
config[key][name] = '' else:
else: config[key][name] = version
config[key][name] = version
elif isinstance(value, Dependency):
name = value.get_name()
ret, res = self._call_dubbin(['describe', name])
if ret == 0:
version = value.get_version()
if version is None:
config[key][name] = ''
else:
config[key][name] = version
else: else:
config[key] = value config[key] = value