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
+52 -13
View File
@@ -35,11 +35,14 @@ from index1c.cli import ( # noqa: E402
BaseconfError,
add_baseconf_args,
add_tool_args,
extract_baseconf_argv,
format_not_found_modules,
format_not_found_object,
get_baseconfs_for_query,
handle_baseconf_error,
index_db_missing_message,
make_parent_parser,
merge_baseconf_args,
resolve_project_root,
)
from index1c.config import resolve_object_type # noqa: E402
@@ -349,11 +352,14 @@ def cmd_module(args: argparse.Namespace) -> int:
def build_parser() -> argparse.ArgumentParser:
common = make_parent_parser(include_baseconf=True, baseconf_mode="query")
p = argparse.ArgumentParser(
description="Поиск по cache/1c_meta/index.sqlite (метаданные и BSL-модули).",
formatter_class=argparse.RawDescriptionHelpFormatter,
epilog=(
"Конфигурация 1С — параметр --baseconf (-b): папка выгрузки в репозитории.\n"
"Можно указать до или после подкоманды; несколько раз или через запятую.\n"
"Файл настроек утилиты — --config (-c): см. tools/index/config.example.json"
),
)
@@ -363,18 +369,29 @@ def build_parser() -> argparse.ArgumentParser:
version=f"%(prog)s {read_version_file()}",
)
add_tool_args(p)
add_baseconf_args(p, mode="query")
sub = p.add_subparsers(dest="cmd", required=True)
s = sub.add_parser("search", help="Полнотекстовый поиск объектов метаданных")
s = sub.add_parser(
"search",
help="Полнотекстовый поиск объектов метаданных",
parents=[common],
formatter_class=argparse.RawDescriptionHelpFormatter,
description="Поиск объектов по имени, синониму или фрагменту поля.",
)
s.add_argument("query", help="Имя, синоним, фрагмент поля")
add_baseconf_args(s)
s.add_argument("--type", help="Тип объекта: Document, Catalog, рс, …")
s.add_argument("--limit", type=int, default=30)
s.set_defaults(func=cmd_search)
m = sub.add_parser("modules", help="Поиск по BSL: процедуры, тело модуля, путь")
m = sub.add_parser(
"modules",
help="Поиск по BSL: процедуры, тело модуля, путь",
parents=[common],
formatter_class=argparse.RawDescriptionHelpFormatter,
description="Поиск по BSL-модулям: процедуры, фрагменты кода, путь файла.",
)
m.add_argument("query")
add_baseconf_args(m)
m.add_argument("--limit", type=int, default=30)
m.add_argument(
"--names-only",
@@ -384,9 +401,14 @@ def build_parser() -> argparse.ArgumentParser:
)
m.set_defaults(func=cmd_modules)
ref = sub.add_parser("refs", help="Обратный индекс: кто ссылается на объект")
ref = sub.add_parser(
"refs",
help="Обратный индекс: кто ссылается на объект",
parents=[common],
formatter_class=argparse.RawDescriptionHelpFormatter,
description="Обратный индекс: какие реквизиты ссылаются на указанный объект.",
)
ref.add_argument("target", help="Catalog.Партнеры | CatalogRef.Партнеры | Партнеры")
add_baseconf_args(ref)
ref.add_argument(
"--limit",
type=int,
@@ -398,12 +420,14 @@ def build_parser() -> argparse.ArgumentParser:
mov = sub.add_parser(
"movements",
help="Регистратор ↔ регистры движений (RegisterRecords)",
parents=[common],
formatter_class=argparse.RawDescriptionHelpFormatter,
description="Связи документ ↔ регистры движений (RegisterRecords).",
)
mov.add_argument(
"target",
help="Document.ЗаказКлиента | AccumulationRegister.ТоварыНаСкладах | имя",
)
add_baseconf_args(mov)
mov.add_argument(
"--type",
help="Уточнить тип: Document, AccumulationRegister, InformationRegister, …",
@@ -416,17 +440,24 @@ def build_parser() -> argparse.ArgumentParser:
)
mov.set_defaults(func=cmd_movements)
sh = sub.add_parser("show", help="Карточка объекта (JSON: поля, типы, ссылки)")
sh = sub.add_parser(
"show",
help="Карточка объекта (JSON: поля, типы, ссылки)",
parents=[common],
formatter_class=argparse.RawDescriptionHelpFormatter,
description="Полная карточка объекта в JSON (поля, типы, ссылки).",
)
sh.add_argument("name", help="ЗаказКлиента | Document.ЗаказКлиента")
add_baseconf_args(sh)
sh.set_defaults(func=cmd_show)
ob = sub.add_parser(
"object",
help="Структура объекта: дерево реквизитов, обязательность, типы",
parents=[common],
formatter_class=argparse.RawDescriptionHelpFormatter,
description="Дерево структуры объекта: реквизиты, обязательность, типы.",
)
ob.add_argument("query", help="Имя/синоним объекта или реквизита")
add_baseconf_args(ob)
ob.add_argument("--type", help="Ограничить типом: Document, Catalog, …")
ob.add_argument("--limit", type=int, default=10, help="Макс. число объектов")
ob.add_argument(
@@ -439,17 +470,25 @@ def build_parser() -> argparse.ArgumentParser:
)
ob.set_defaults(func=cmd_object)
md = sub.add_parser("module", help="Метаданные модуля по пути или owner")
md = sub.add_parser(
"module",
help="Метаданные модуля по пути или owner",
parents=[common],
formatter_class=argparse.RawDescriptionHelpFormatter,
description="Метаданные одного BSL-модуля по пути или имени owner.",
)
md.add_argument("path", help="CommonModules/… или CommonModule.Имя")
add_baseconf_args(md)
md.set_defaults(func=cmd_module)
return p
def main(argv: list[str] | None = None) -> int:
raw = list(argv if argv is not None else sys.argv[1:])
early_baseconf, raw = extract_baseconf_argv(raw)
parser = build_parser()
args = parser.parse_args(argv)
args = parser.parse_args(raw)
merge_baseconf_args(args, early_baseconf)
return int(args.func(args))