aboutsummaryrefslogtreecommitdiffstats
path: root/build/plugins/nots.py
diff options
context:
space:
mode:
authorkhoden <khoden@yandex-team.com>2023-09-08 15:29:00 +0300
committerkhoden <khoden@yandex-team.com>2023-09-08 15:56:50 +0300
commit1327369eb8af90ffcedd1ea4f256c374c52097e1 (patch)
treea9c6154771777732ad4d1e568ca0de9b38dfab12 /build/plugins/nots.py
parent2a4344f50e5d190be68407dca1cada777cb04c45 (diff)
downloadydb-1327369eb8af90ffcedd1ea4f256c374c52097e1.tar.gz
Изменить логику дискаверинга исходников для TS_*
### Принцип работы: 1. В переменную с помощью `_GLOB` записываем все файлы (*.ts *.tsx *.js *.jsx *.json) проекта, кроме дефолтного списка исключений (типа `node_modules`, `dist/build`, `a.yaml`, `ya.make`, `package.json`, `pnpm-lock.yaml` и подобные) 2. Вызываем плагин (`_TS_CONFIGURE`), где удаляем из этого списка файлы, не покрываемые `tsconfig.json` 3. Получившееся значение используем в качестве источника инпутов для таргета
Diffstat (limited to 'build/plugins/nots.py')
-rw-r--r--build/plugins/nots.py23
1 files changed, 23 insertions, 0 deletions
diff --git a/build/plugins/nots.py b/build/plugins/nots.py
index 740b042376..f6363dfd6f 100644
--- a/build/plugins/nots.py
+++ b/build/plugins/nots.py
@@ -200,6 +200,29 @@ def on_ts_configure(unit, tsconfig_path):
unit.set(["TS_CONFIG_PRESERVE_JSX", to_yesno(tsconfig.compiler_option("jsx") == "preserve")])
_setup_eslint(unit)
+ _filter_inputs_by_rules_from_tsconfig(unit, tsconfig)
+
+
+def __strip_prefix(prefix, line):
+ # type: (str, str) -> str
+ if line.startswith(prefix):
+ prefix_len = len(prefix)
+ return line[prefix_len:]
+
+ return line
+
+
+def _filter_inputs_by_rules_from_tsconfig(unit, tsconfig):
+ """
+ Reduce file list from the TS_GLOB_FILES variable following tsconfig.json rules
+ """
+ mod_dir = unit.get("MODDIR")
+ target_path = "${ARCADIA_ROOT}/" + mod_dir + "/"
+
+ all_files = [__strip_prefix(target_path, f) for f in unit.get("TS_GLOB_FILES").split(" ")]
+ filtered_files = tsconfig.filter_files(all_files)
+
+ unit.set(["TS_GLOB_FILES", ' '.join([target_path + f for f in filtered_files])])
def _get_ts_test_data_dirs(unit):