aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzaverden <zaverden@yandex-team.com>2025-04-15 20:01:01 +0300
committerzaverden <zaverden@yandex-team.com>2025-04-15 20:55:45 +0300
commitc6d88ba4d5da3da9f389ed0737351d11a931ca55 (patch)
treeb78b202deac0cb016881d138ee78835092d1e2a1
parent3b1c16e57e7e2e4499c9d1b592f350f5a4a1a960 (diff)
downloadydb-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.conf10
-rw-r--r--build/conf/ts/ts_package.conf2
-rw-r--r--build/plugins/nots.py33
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)])