Просмотр исходного кода

feat(conf): add TS_FILES macro

zaverden 1 год назад
Родитель
Сommit
ca594624ee

+ 2 - 2
build/conf/ts/node_modules.conf

@@ -13,8 +13,8 @@ _NODE_MODULES_CMD=$TOUCH_UNIT && $_NODE_MODULES(IN $_NODE_MODULES_INS OUT $_NODE
 
 module _NODE_MODULES_BASE: _BARE_UNIT {
     .CMD=_NODE_MODULES_CMD
-    # ignore SRCS macro
-    .ALIASES=SRCS=_NOOP_MACRO
+    # ignore SRCS macro, use TS_FILES instead of FILES
+    .ALIASES=SRCS=_NOOP_MACRO FILES=TS_FILES
     # Propagates peers to related modules
     .PEERDIR_POLICY=as_build_from
     .NODE_TYPE=Bundle

+ 11 - 0
build/conf/ts/ts.conf

@@ -12,6 +12,8 @@ module _TS_BASE_UNIT: _BARE_UNIT {
     .NODE_TYPE=Bundle
     # Needed for DEPENDS in tests to choose right submodule from multimodule
     .FINAL_TARGET=yes
+    # use TS_FILES instead of FILES
+    .ALIASES=FILES=TS_FILES
 
     # .NODE_TYPE=Bundle is required for peers propagation, but it also affects
     # how merging of pic/nopic graphs. Here we can override this merging behaviour
@@ -42,6 +44,15 @@ macro _TS_CONFIG_EPILOGUE() {
     _SETUP_EXTRACT_NODE_MODULES_RECIPE(${MODDIR})
 }
 
+_TS_FILES_COPY_CMD=
+
+### TS_FILES(Files...)
+###
+### Adds files to output as is. Similar to FILES but works for TS build modules
+macro TS_FILES(Files...) {
+    _TS_FILES($Files)
+}
+
 @import "${CONF_ROOT}/conf/ts/node_modules.conf"
 @import "${CONF_ROOT}/conf/ts/ts_bundle.conf"
 @import "${CONF_ROOT}/conf/ts/ts_library.conf"

+ 1 - 0
build/conf/ts/ts_bundle.conf

@@ -4,6 +4,7 @@ WEBPACK_OUTPUT_DIR=bundle
 WEBPACK_CONFIG_PATH=webpack.config.js
 
 TS_BUNDLE_WEBPACK=$TOUCH_UNIT \
+    && $_TS_FILES_COPY_CMD \
     && $ADD_VCS_INFO_FILE_CMD \
     && ${cwd:BINDIR} $NOTS_TOOL bundle-webpack $NOTS_TOOL_BASE_ARGS --webpack-resource $WEBPACK_ROOT \
     --moddir $MODDIR --webpack-config ${input:WEBPACK_CONFIG_PATH} --ts-config ${input:TS_CONFIG_PATH} \

+ 1 - 0
build/conf/ts/ts_library.conf

@@ -2,6 +2,7 @@
 TYPESCRIPT_ROOT=
 TS_CONFIG_PATH=tsconfig.json
 TS_COMPILE=$TOUCH_UNIT \
+    && $_TS_FILES_COPY_CMD \
     && ${cwd:BINDIR} $NOTS_TOOL compile-ts $NOTS_TOOL_BASE_ARGS --tsc-resource $TYPESCRIPT_ROOT \
     --moddir $MODDIR --ts-config ${input:TS_CONFIG_PATH} --node-modules-bundle $NOTS_TOOL_NODE_MODULES_BUNDLE \
     $NODE_MODULES_BUNDLE_AS_OUTPUT ${hide:PEERS} ${input;hide:"./package.json"} ${TS_CONFIG_FILES} \

+ 1 - 0
build/conf/ts/ts_next.conf

@@ -5,6 +5,7 @@ TS_NEXT_CONFIG_PATH=next.config.js
 TS_NEXT_SRC_FILES=
 
 TS_NEXT_CMD=$TOUCH_UNIT \
+    && $_TS_FILES_COPY_CMD \
     && $ADD_VCS_INFO_FILE_CMD \
     && ${cwd:BINDIR} $NOTS_TOOL build-nextjs $NOTS_TOOL_BASE_ARGS \
     --moddir $MODDIR --nextjs-resource $NEXT_ROOT \

+ 1 - 0
build/conf/ts/ts_vite_bundle.conf

@@ -4,6 +4,7 @@ VITE_OUTPUT_DIR=dist
 VITE_CONFIG_PATH=vite.config.ts
 
 TS_BUNDLE_VITE=$TOUCH_UNIT \
+    && $_TS_FILES_COPY_CMD \
     && $ADD_VCS_INFO_FILE_CMD \
     && ${cwd:BINDIR} $NOTS_TOOL bundle-vite $NOTS_TOOL_BASE_ARGS --vite-resource $VITE_ROOT \
     --moddir $MODDIR --vite-config ${input:VITE_CONFIG_PATH} --ts-config ${input:TS_CONFIG_PATH} \

+ 9 - 0
build/plugins/nots.py

@@ -515,3 +515,12 @@ def _add_ts_resources_to_test_record(unit, test_record):
         if tool_resource_value:
             test_record[tool_resource_label] = tool_resource_value
     return test_record
+
+
+@_with_report_configure_error
+def on_ts_files(unit, *files):
+    all_cmds = unit.get("_TS_FILES_COPY_CMD")
+    new_cmds = ['$COPY_CMD ${{input:"{0}"}} ${{output:"{0}"}}'.format(f) for f in files]
+    if all_cmds:
+        new_cmds.insert(0, all_cmds)
+    unit.set(["_TS_FILES_COPY_CMD", " && ".join(new_cmds)])