load("@aspect_rules_js//js:defs.bzl", "js_test") load("@aspect_rules_js//npm:defs.bzl", "npm_package", "stamped_package_json") load("@bazel_skylib//rules:copy_file.bzl", "copy_file") copy_file( name = "copy_LICENSE", src = "//:LICENSE", out = "LICENSE", ) genrule( name = "buildifier_launcher", srcs = ["//:launcher.js"], outs = ["buildifier.js"], cmd = "sed s/_TOOL_/buildifier/ $< > $@", ) # npm rules live in this subdirectory to avoid a load() statement # in the parent package leaking to users. This means we need # to copy the output files so the pkg_npm will find them in the # output directory for this package. _PARENT_PACKAGE_FILES = [ "README.md", "buildifier-darwin_amd64", "buildifier-darwin_arm64", "buildifier-linux_amd64", "buildifier-linux_arm64", "buildifier-windows_amd64.exe", ] [ copy_file( name = "copy_%s" % s, # go_binary doesn't give a predeclared output for # the file in "out" so we have to construct a # label to reference the go_binary rule itself. src = "//buildifier:%s" % s.replace("_arm64", "-arm64").split("_amd64")[0], out = s, ) for s in _PARENT_PACKAGE_FILES ] stamped_package_json( name = "package", stamp_var = "BUILD_SCM_VERSION", ) npm_package( name = "buildifier", srcs = [ "LICENSE", "buildifier.js", ":package", ] + _PARENT_PACKAGE_FILES, package = "@bazel/buildifier", ) js_test( name = "integration_test", data = [":buildifier"], entry_point = "test.js", )