-
Notifications
You must be signed in to change notification settings - Fork 0
/
defs.bzl
44 lines (39 loc) · 1.14 KB
/
defs.bzl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
def _paq_builder(ctx):
name = ctx.label.name
build_file_path = ctx.build_file_path
paq_binary = ctx.executable.paq
source = ctx.files.source
output_file = ctx.actions.declare_file("{}.paq".format(name))
source_path = source[0].path
if len(source) > 1:
build_path_parts = build_file_path.split("/")[:-1]
source_path = '/'.join(source_path.split("/")[0:-len(build_path_parts)+1])
command = (
"{} {} | awk '{{printf \"\\\"%s\\\"\", $0}}' > {}"
).format(
paq_binary.path,
source_path,
output_file.path,
)
ctx.actions.run_shell(
inputs=[paq_binary] + source,
outputs=[output_file],
command=command,
mnemonic="CreatePaqFile",
)
return [DefaultInfo(files = depset([output_file]))]
paq = rule(
_paq_builder,
attrs = {
"paq": attr.label(
doc = "The paq binary",
executable = True,
cfg = "exec",
default = "@paq//:binary",
),
"source": attr.label(
doc = "File or Directory to be hashed by paq",
allow_files = True,
),
},
)