mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-24 11:15:53 +03:00
fix(help-add): валидация кода языка до записи
-Lang брался как есть и шёл и в текст XML, и в имя файла страницы. Измерено на обоих портах: `-Lang "../../beyond"` писал beyond.html двумя уровнями выше каталога Ext/Help и клал <Page>../../beyond</Page> в дескриптор, а `-Lang ""` давал скрытый файл «.html» и пустой <Page></Page>. Оба случая — код возврата 0 и рапорт об успехе, то есть отказ платформы был бы тихим. Проверка — дословная копия той, что появилась в template-add: навыки автономны, но формат «дескриптор + страница» у них общий, и расходиться копиям незачем. Дефект не регрессия, он был до текущей ветки; замечен при ревью соседней правки. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
69175a7a63
commit
c619da4a0a
@@ -1,4 +1,4 @@
|
|||||||
# help-add v1.20 — Add built-in help to 1C object (+write_xml_file/write_utf8_bom: общий эталон записи)
|
# help-add v1.21 — Add built-in help to 1C object (+write_xml_file/write_utf8_bom: общий эталон записи)
|
||||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||||
param(
|
param(
|
||||||
[Parameter(Mandatory)]
|
[Parameter(Mandatory)]
|
||||||
@@ -184,6 +184,17 @@ if (-not (Test-Path $extDir)) {
|
|||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Код языка идёт и в текст XML, и в имя файла страницы, поэтому проверяем его до записи:
|
||||||
|
# пустое значение дало бы файл «.html» и пустой <Page></Page>, а разделитель пути —
|
||||||
|
# запись мимо каталога Ext/Help. Оба отказа платформы были бы тихими.
|
||||||
|
#
|
||||||
|
# Копия этой проверки есть в template-add (навыки автономны, формат «дескриптор +
|
||||||
|
# страница» у них общий). Держать копии одинаковыми — сознательно.
|
||||||
|
if ($Lang -notmatch '^[A-Za-z0-9_-]+$') {
|
||||||
|
Write-Error "Недопустимый код языка: '$Lang'`nОжидается код вида ru, en (буквы, цифры, дефис, подчёркивание)"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
$helpXmlPath = Join-Path $extDir "Help.xml"
|
$helpXmlPath = Join-Path $extDir "Help.xml"
|
||||||
if (Test-Path $helpXmlPath) {
|
if (Test-Path $helpXmlPath) {
|
||||||
Write-Error "Справка уже существует: $helpXmlPath"
|
Write-Error "Справка уже существует: $helpXmlPath"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# help-add v1.20 — Add built-in help to 1C object (+write_xml_file/write_utf8_bom: общий эталон записи)
|
# help-add v1.21 — Add built-in help to 1C object (+write_xml_file/write_utf8_bom: общий эталон записи)
|
||||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
@@ -329,6 +329,17 @@ def main():
|
|||||||
print(f"Каталог объекта не найден: {ext_dir}. Проверьте путь ObjectName (например Catalogs/МойСправочник).", file=sys.stderr)
|
print(f"Каталог объекта не найден: {ext_dir}. Проверьте путь ObjectName (например Catalogs/МойСправочник).", file=sys.stderr)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
# Код языка идёт и в текст XML, и в имя файла страницы, поэтому проверяем его до записи:
|
||||||
|
# пустое значение дало бы файл «.html» и пустой <Page></Page>, а разделитель пути —
|
||||||
|
# запись мимо каталога Ext/Help. Оба отказа платформы были бы тихими.
|
||||||
|
#
|
||||||
|
# Копия этой проверки есть в template-add (навыки автономны, формат «дескриптор +
|
||||||
|
# страница» у них общий). Держать копии одинаковыми — сознательно.
|
||||||
|
if not re.match(r"^[A-Za-z0-9_-]+$", lang):
|
||||||
|
print(f"Недопустимый код языка: '{lang}'", file=sys.stderr)
|
||||||
|
print("Ожидается код вида ru, en (буквы, цифры, дефис, подчёркивание)", file=sys.stderr)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
help_xml_path = os.path.join(ext_dir, "Help.xml")
|
help_xml_path = os.path.join(ext_dir, "Help.xml")
|
||||||
if os.path.exists(help_xml_path):
|
if os.path.exists(help_xml_path):
|
||||||
print(f"Справка уже существует: {help_xml_path}", file=sys.stderr)
|
print(f"Справка уже существует: {help_xml_path}", file=sys.stderr)
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"name": "Недопустимый код языка отвергается до записи",
|
||||||
|
"preRun": [
|
||||||
|
{
|
||||||
|
"script": "epf-init/scripts/init",
|
||||||
|
"args": {
|
||||||
|
"-Name": "МояОбработка",
|
||||||
|
"-SrcDir": "{workDir}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"params": {
|
||||||
|
"objectName": "МояОбработка"
|
||||||
|
},
|
||||||
|
"args_extra": [
|
||||||
|
"-Lang",
|
||||||
|
"../evil"
|
||||||
|
],
|
||||||
|
"expectError": "Недопустимый код языка"
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user