forked from SeleniumHQ/selenium
-
Notifications
You must be signed in to change notification settings - Fork 0
/
copy_files.bzl
63 lines (54 loc) · 1.96 KB
/
copy_files.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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
def _copy_cmd(ctx, file_list, target_dir):
dest_list = []
if file_list == None or len(file_list) == 0:
return dest_list
shell_content = ""
batch_file_name = "%s-copy-files.bat" % (ctx.label.name)
bat = ctx.actions.declare_file(batch_file_name)
src_file_list = []
for (src_file, relative_dest_file) in file_list:
src_file_list.append(src_file)
dest_file = ctx.actions.declare_file("{}/{}".format(target_dir, relative_dest_file))
dest_list.append(dest_file)
shell_content += "@copy /Y \"%s\" \"%s\" >NUL\n" % (
src_file.path.replace("/", "\\"),
dest_file.path.replace("/", "\\"),
)
ctx.actions.write(
output = bat,
content = shell_content,
is_executable = True,
)
ctx.actions.run(
inputs = src_file_list,
tools = [bat],
outputs = dest_list,
executable = "cmd.exe",
arguments = ["/C", bat.path.replace("/", "\\")],
mnemonic = "CopyFile",
progress_message = "Copying files",
use_default_shell_env = True,
)
return dest_list
def _copy_bash(ctx, src_list, target_dir):
dest_list = []
for (src_file, relative_dest_file) in src_list:
dest_file = ctx.actions.declare_file("{}/{}".format(target_dir, relative_dest_file))
dest_list.append(dest_file)
ctx.actions.run_shell(
tools = [src_file],
outputs = [dest_file],
command = "cp -f \"$1\" \"$2\"",
arguments = [src_file.path, dest_file.path],
mnemonic = "CopyFile",
progress_message = "Copying files",
use_default_shell_env = True,
)
return dest_list
def copy_files(ctx, file_list, base_dest_directory, is_windows):
dest_list = []
if is_windows:
dest_list = _copy_cmd(ctx, file_list, base_dest_directory)
else:
dest_list = _copy_bash(ctx, file_list, base_dest_directory)
return dest_list