diff options
author | zaverden <zaverden@yandex-team.com> | 2025-04-15 20:01:01 +0300 |
---|---|---|
committer | zaverden <zaverden@yandex-team.com> | 2025-04-15 20:55:45 +0300 |
commit | c6d88ba4d5da3da9f389ed0737351d11a931ca55 (patch) | |
tree | b78b202deac0cb016881d138ee78835092d1e2a1 | |
parent | 3b1c16e57e7e2e4499c9d1b592f350f5a4a1a960 (diff) | |
download | ydb-c6d88ba4d5da3da9f389ed0737351d11a931ca55.tar.gz |
chore(conf): rework _RUN_JAVASCRIPT_AFTER_BUILD_INPUTS processing for STRUCT_CMD
Приношу результаты перехода на STRUCT\_CMD, которые работают одинаково как на старом движке команд, так и на новом. Это нужно, чтобы не накапливать изменения в основной ветке, где переключаю движок
commit_hash:baa35f0d3eec8598d0e9ca57e3c1b0edb5ae8bc2
-rw-r--r-- | build/conf/ts/ts.conf | 10 | ||||
-rw-r--r-- | build/conf/ts/ts_package.conf | 2 | ||||
-rw-r--r-- | build/plugins/nots.py | 33 |
3 files changed, 31 insertions, 14 deletions
diff --git a/build/conf/ts/ts.conf b/build/conf/ts/ts.conf index 295fd218965..18f292b9be4 100644 --- a/build/conf/ts/ts.conf +++ b/build/conf/ts/ts.conf @@ -63,13 +63,13 @@ _RUN_JAVASCRIPT_AFTER_BUILD_TS_PACKAGE_EXTRA= # Arguments for builders' commands, passed after the command # TODO FBP-1978 (remove output.tar output) NOTS_TOOL_COMMON_BUILDER_ARGS=\ - --output-file ${output:TARGET} ${hide;output:"output.tar"} ${hide;output:"output.tar.uuid"} \ + --output-file ${TARGET} ${hide;output:"output.tar"} ${hide;output:"output.tar.uuid"} \ --tsconfigs $TS_CONFIG_PATH \ --vcs-info "${VCS_INFO_FILE}" \ $NOTS_TOOL_BUILD_REQUIREMENTS__NO_UID__ \ $NOTS_TOOL_BUILD_ENV \ $_RUN_JAVASCRIPT_AFTER_BUILD_ARGS \ - $_RENDER_RUN_JAVASCRIPT_AFTER_BUILD_INPUTS($_RUN_JAVASCRIPT_AFTER_BUILD_INPUTS) + $_RUN_JAVASCRIPT_AFTER_BUILD_INPUTS ERM_PACKAGES_PATH=devtools/frontend_build_platform/erm/erm-packages.json @@ -238,11 +238,7 @@ macro RUN_JAVASCRIPT_AFTER_BUILD(JS_SCRIPT, OUTDIR="", IN{input}[], ARGS...) { SET(_RUN_JAVASCRIPT_AFTER_BUILD_INPUTS ${IN}) # here we need to escape $, otherwise it will be expanded in-place and will end up with empty value SET(_RUN_JAVASCRIPT_AFTER_BUILD_TS_PACKAGE_EXTRA \${hide;output:"output.tar"} \${hide;output:"output.tar.uuid"}) - _RUN_JAVASCRIPT_AFTER_BUILD_ADD_JS_SCRIPT_AS_INPUT($JS_SCRIPT) -} - -macro _RENDER_RUN_JAVASCRIPT_AFTER_BUILD_INPUTS(IN{input}[]) { - .CMD=${hide;input:IN} + _RUN_JAVASCRIPT_AFTER_BUILD_PROCESS_INPUTS($JS_SCRIPT) } ### @usage RUN_JAVASCRIPT(script_path [args...] [IN inputs...] [OUTDIR outdir]) diff --git a/build/conf/ts/ts_package.conf b/build/conf/ts/ts_package.conf index 8215ac82c93..cef3941822d 100644 --- a/build/conf/ts/ts_package.conf +++ b/build/conf/ts/ts_package.conf @@ -5,7 +5,7 @@ TS_PACK=$_TS_PROJECT_SETUP_CMD \ ${hide;kv:"p TS_PKG"} ${hide;kv:"pc magenta"} \ $_RUN_JAVASCRIPT_AFTER_BUILD_TS_PACKAGE_EXTRA \ $_RUN_JAVASCRIPT_AFTER_BUILD_ARGS \ - $_RENDER_RUN_JAVASCRIPT_AFTER_BUILD_INPUTS($_RUN_JAVASCRIPT_AFTER_BUILD_INPUTS) + $_RUN_JAVASCRIPT_AFTER_BUILD_INPUTS ### # internal diff --git a/build/plugins/nots.py b/build/plugins/nots.py index 911f10f65a2..7b31dfd7f4d 100644 --- a/build/plugins/nots.py +++ b/build/plugins/nots.py @@ -1,3 +1,4 @@ +import re import os from enum import auto, StrEnum from typing import Any, Literal, TYPE_CHECKING @@ -295,6 +296,19 @@ def _with_report_configure_error(fn): return _wrapper +def _get_var_name(s: str) -> tuple[bool, str]: + if not s.startswith("$"): + return False, "" + + PLAIN_VAR_PATTERN = r"^\$\w+$" + WRAPPED_VAR_PATTERN = r"^\$\{\w+\}$" + if re.match(PLAIN_VAR_PATTERN, s): + return True, s[1:] + if re.match(WRAPPED_VAR_PATTERN, s): + return True, s[2:-1] + return False, "" + + def _build_directives(flags: list[str] | tuple[str], paths: list[str]) -> str: parts = [p for p in (flags or []) if p] parts_str = ";".join(parts) @@ -994,12 +1008,19 @@ def on_depends_on_mod(unit: NotsUnitType) -> None: @_with_report_configure_error -def on_run_javascript_after_build_add_js_script_as_input(unit: NotsUnitType, js_script: str) -> None: - js_script = os.path.normpath(js_script) - if js_script.startswith("node_modules/"): - return +def on_run_javascript_after_build_process_inputs(unit: NotsUnitType, js_script: str) -> None: + inputs = unit.get("_RUN_JAVASCRIPT_AFTER_BUILD_INPUTS").split(" ") + + def process_input(input: str) -> str: + is_var, var_name = _get_var_name(input) + if is_var: + return f"${{hide;input:{var_name}}}" + return _build_cmd_input_paths([input], hide=True) - __set_append(unit, "_RUN_JAVASCRIPT_AFTER_BUILD_INPUTS", js_script) + processed_inputs = [process_input(i) for i in inputs if i] + js_script = os.path.normpath(js_script) + if not js_script.startswith("node_modules/"): + processed_inputs.append(_build_cmd_input_paths([js_script], hide=True)) -# Zero-diff commit + unit.set(["_RUN_JAVASCRIPT_AFTER_BUILD_INPUTS", " ".join(processed_inputs)]) |