feat: new bun_build and bun_compile, extend bun_install
This commit is contained in:
84
internal/bun_command.bzl
Normal file
84
internal/bun_command.bzl
Normal file
@@ -0,0 +1,84 @@
|
||||
"""Shared Bun CLI flag builders for rules and launchers."""
|
||||
|
||||
def shell_quote(value):
|
||||
return "'" + str(value).replace("'", "'\"'\"'") + "'"
|
||||
|
||||
def _runfiles_workspace(file):
|
||||
workspace_name = file.owner.workspace_name
|
||||
if workspace_name:
|
||||
return workspace_name
|
||||
return "_main"
|
||||
|
||||
def runfiles_path_expr(file):
|
||||
return '"${runfiles_dir}/%s/%s"' % (_runfiles_workspace(file), file.short_path)
|
||||
|
||||
def render_shell_array(name, values):
|
||||
rendered = [shell_quote(value) for value in values]
|
||||
return "%s=(%s)" % (name, " ".join(rendered))
|
||||
|
||||
def append_shell_arg(lines, name, value):
|
||||
lines.append("%s+=(%s)" % (name, shell_quote(value)))
|
||||
|
||||
def append_shell_expr(lines, name, expr):
|
||||
lines.append("%s+=(%s)" % (name, expr))
|
||||
|
||||
def append_shell_flag(lines, name, flag, enabled):
|
||||
if enabled:
|
||||
append_shell_arg(lines, name, flag)
|
||||
|
||||
def append_shell_flag_value(lines, name, flag, value):
|
||||
if value == None:
|
||||
return
|
||||
if type(value) == type("") and not value:
|
||||
return
|
||||
append_shell_arg(lines, name, flag)
|
||||
append_shell_arg(lines, name, value)
|
||||
|
||||
def append_shell_flag_values(lines, name, flag, values):
|
||||
for value in values:
|
||||
append_shell_flag_value(lines, name, flag, value)
|
||||
|
||||
def append_shell_flag_files(lines, name, flag, files):
|
||||
for file in files:
|
||||
append_shell_arg(lines, name, flag)
|
||||
append_shell_expr(lines, name, runfiles_path_expr(file))
|
||||
|
||||
def append_shell_raw_flags(lines, name, values):
|
||||
for value in values:
|
||||
append_shell_arg(lines, name, value)
|
||||
|
||||
def append_shell_install_mode(lines, name, install_mode):
|
||||
if install_mode == "disable":
|
||||
append_shell_arg(lines, name, "--no-install")
|
||||
elif install_mode in ["fallback", "force"]:
|
||||
append_shell_flag_value(lines, name, "--install", install_mode)
|
||||
|
||||
def add_flag(args, flag, enabled):
|
||||
if enabled:
|
||||
args.add(flag)
|
||||
|
||||
def add_flag_value(args, flag, value):
|
||||
if value == None:
|
||||
return
|
||||
if type(value) == type("") and not value:
|
||||
return
|
||||
args.add(flag)
|
||||
args.add(value)
|
||||
|
||||
def add_flag_values(args, flag, values):
|
||||
for value in values:
|
||||
add_flag_value(args, flag, value)
|
||||
|
||||
def add_flag_files(args, flag, files):
|
||||
for file in files:
|
||||
args.add(flag)
|
||||
args.add(file.path)
|
||||
|
||||
def add_raw_flags(args, values):
|
||||
args.add_all(values)
|
||||
|
||||
def add_install_mode(args, install_mode):
|
||||
if install_mode == "disable":
|
||||
args.add("--no-install")
|
||||
elif install_mode in ["fallback", "force"]:
|
||||
add_flag_value(args, "--install", install_mode)
|
||||
Reference in New Issue
Block a user