[+] implement toml_add_overlay

This commit is contained in:
Siarhei Siniak 2025-06-04 11:24:06 +03:00
parent 49119673d2
commit 20a4570484
4 changed files with 43 additions and 4 deletions

@ -5,7 +5,7 @@ project(
).stdout().strip('\n'), ).stdout().strip('\n'),
# 'online.fxreader.uv', # 'online.fxreader.uv',
# ['c', 'cpp'], # ['c', 'cpp'],
version: '0.1.5.17+27.13', version: '0.1.5.17+27.14',
# default_options: [ # default_options: [
# 'cpp_std=c++23', # 'cpp_std=c++23',
# # 'prefer_static=true', # # 'prefer_static=true',

@ -796,6 +796,7 @@ class CLI(abc.ABC):
from . import cli_bootstrap from . import cli_bootstrap
from . import argparse as pr34_argparse from . import argparse as pr34_argparse
from .toml import toml_add_overlay
project = self.projects[project_name] project = self.projects[project_name]
@ -859,9 +860,14 @@ class CLI(abc.ABC):
# assert isinstance(pyproject_tool, tomlkit.items.Array) # assert isinstance(pyproject_tool, tomlkit.items.Array)
assert isinstance(pyproject_tool, MutableMapping) assert isinstance(pyproject_tool, MutableMapping)
for k, v in module.tool.items(): toml_add_overlay(
assert not k in pyproject_tool pyproject_tool,
pyproject_tool[k] = v module.tool,
)
# for k, v in module.tool.items():
# assert not k in pyproject_tool
# pyproject_tool[k] = v
del p del p
del pyproject_tool del pyproject_tool

@ -0,0 +1,30 @@
from .cli_bootstrap import check_dict
from typing import (
Any,
Mapping,
MutableMapping,
Iterable,
)
def toml_add_overlay(
toml: Any,
overlay: Any,
) -> Any:
if isinstance(toml, MutableMapping):
overlay2 = check_dict(
overlay,
str,
)
for k, v in overlay2.items():
if not k in toml:
toml[k] = v
else:
toml_add_overlay(
toml[k],
v,
)
else:
raise NotImplementedError

Binary file not shown.