Skip to content

Commit 9eed754

Browse files
authored
feat: add ts_project validation of root/out/typing_out dir options (#552)
Close #551
1 parent a6cf27b commit 9eed754

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

ts/private/ts_lib.bzl

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,18 @@ def _calculate_assets_outs(assets, out_dir = ".", root_dir = "."):
228228
outs.append(out)
229229
return outs
230230

231+
# Quick check to validate path options
232+
# One usecase: https://github.com/aspect-build/rules_ts/issues/551
233+
def _validate_tsconfig_dirs(root_dir, out_dir, typings_out_dir):
234+
if root_dir and root_dir.find("../") != -1:
235+
fail("root_dir cannot access parent directories")
236+
237+
if out_dir and out_dir.find("../") != -1:
238+
fail("out_dir cannot output to parent directory")
239+
240+
if typings_out_dir and typings_out_dir.find("../") != -1:
241+
fail("typings_out_dir cannot output to parent directory")
242+
231243
def _calculate_js_outs(srcs, out_dir = ".", root_dir = ".", allow_js = False, resolve_json_module = False, preserve_jsx = False, emit_declaration_only = False):
232244
if emit_declaration_only:
233245
return []
@@ -313,6 +325,7 @@ lib = struct(
313325
is_js_src = _is_js_src,
314326
out_paths = _to_js_out_paths,
315327
to_out_path = _to_out_path,
328+
validate_tsconfig_dirs = _validate_tsconfig_dirs,
316329
calculate_js_outs = _calculate_js_outs,
317330
calculate_map_outs = _calculate_map_outs,
318331
calculate_typings_outs = _calculate_typings_outs,

ts/private/ts_project.bzl

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,11 @@ def _ts_project_impl(ctx):
6666
map_outs = _lib.declare_outputs(ctx, [] if ctx.attr.transpile == 0 else _lib.calculate_map_outs(srcs, ctx.attr.out_dir, ctx.attr.root_dir, ctx.attr.source_map, ctx.attr.preserve_jsx, ctx.attr.emit_declaration_only))
6767
typings_outs = _lib.declare_outputs(ctx, _lib.calculate_typings_outs(srcs, typings_out_dir, ctx.attr.root_dir, ctx.attr.declaration, ctx.attr.composite, ctx.attr.allow_js))
6868
typing_maps_outs = _lib.declare_outputs(ctx, _lib.calculate_typing_maps_outs(srcs, typings_out_dir, ctx.attr.root_dir, ctx.attr.declaration_map, ctx.attr.allow_js))
69-
validation_outs = _validate_lib.validation_action(ctx, tsconfig_inputs) if ctx.attr.validate else []
69+
70+
validation_outs = []
71+
if ctx.attr.validate:
72+
validation_outs.extend(_validate_lib.validation_action(ctx, tsconfig_inputs))
73+
_lib.validate_tsconfig_dirs(ctx.attr.root_dir, ctx.attr.out_dir, typings_out_dir)
7074

7175
arguments = ctx.actions.args()
7276
execution_requirements = {}

0 commit comments

Comments
 (0)