diff options
author | khoden <khoden@yandex-team.com> | 2023-09-08 15:29:00 +0300 |
---|---|---|
committer | khoden <khoden@yandex-team.com> | 2023-09-08 15:56:50 +0300 |
commit | 1327369eb8af90ffcedd1ea4f256c374c52097e1 (patch) | |
tree | a9c6154771777732ad4d1e568ca0de9b38dfab12 /build/plugins/nots.py | |
parent | 2a4344f50e5d190be68407dca1cada777cb04c45 (diff) | |
download | ydb-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.py | 23 |
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): |