Release 0.3.1: baseconf help, GPL v3, author Michael BAG.

Улучшена справка --help подкоманд (--baseconf до/после подкоманды), добавлены
LICENSE (GPL v3 EN) и LICENSE.ru (справочный перевод), контакты mk@p7net.ru.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
mihailkudravcev
2026-07-17 10:00:09 +03:00
parent a4b7629d6a
commit 45e798f2bf
9 changed files with 1612 additions and 24 deletions
+64 -3
View File
@@ -62,8 +62,16 @@ def add_tool_args(parser: argparse.ArgumentParser) -> None:
)
def add_baseconf_args(parser: argparse.ArgumentParser) -> None:
def add_baseconf_args(
parser: argparse.ArgumentParser,
*,
mode: str = "query",
) -> None:
"""Фильтр по выгрузке конфигурации 1С в репозитории."""
if mode == "index":
default_hint = "Без параметра — индексировать все выгрузки с src/ в репозитории."
else:
default_hint = "Без параметра — поиск по всем проиндексированным."
parser.add_argument(
"--baseconf",
"-b",
@@ -72,12 +80,65 @@ def add_baseconf_args(parser: argparse.ArgumentParser) -> None:
dest="baseconf",
help=(
"Конфигурация 1С в репозитории (папка <name>/src/). "
"Можно несколько раз. Алиасы: target→crm3-26, source→crm3-dev. "
"Без параметра — поиск по всем проиндексированным."
"Можно несколько раз или через запятую: -b target,source. "
"Алиасы: target→crm3-26, source→crm3-dev. "
f"{default_hint}"
),
)
def make_parent_parser(*, include_baseconf: bool = True, baseconf_mode: str = "query") -> argparse.ArgumentParser:
"""Общие опции для подкоманд (--config, --root, опционально --baseconf)."""
p = argparse.ArgumentParser(add_help=False)
add_tool_args(p)
if include_baseconf:
add_baseconf_args(p, mode=baseconf_mode)
return p
def extract_baseconf_argv(argv: list[str]) -> tuple[list[str], list[str]]:
"""
Извлечь все -b / --baseconf из argv (до или после подкоманды).
Возвращает (значения baseconf, argv без этих аргументов).
"""
baseconfs: list[str] = []
rest: list[str] = []
i = 0
while i < len(argv):
tok = argv[i]
if tok in ("-b", "--baseconf"):
if i + 1 >= len(argv):
rest.append(tok)
break
baseconfs.append(argv[i + 1])
i += 2
continue
if tok.startswith("--baseconf="):
baseconfs.append(tok.split("=", 1)[1])
i += 1
continue
if tok.startswith("-b") and len(tok) > 2:
baseconfs.append(tok[2:])
i += 1
continue
rest.append(tok)
i += 1
return baseconfs, rest
def merge_baseconf_args(args: argparse.Namespace, extra: list[str] | None) -> None:
"""Объединить baseconf из argv и argparse (in-place)."""
if not extra:
return
current = list(getattr(args, "baseconf", None) or [])
seen = set(current)
for item in extra:
if item not in seen:
seen.add(item)
current.append(item)
args.baseconf = current or None
def resolve_baseconf_names(raw: list[str] | None) -> list[str]:
"""Разрешить алиасы имён конфигураций 1С (без проверки индекса)."""
if not raw: