A rule that copies a file to another place.
native.genrule() is sometimes used to copy files (often wishing to rename them). The ‘copy_file’ rule does this with a simpler interface than genrule.
The rule uses a Bash command on Linux/macOS/non-Windows, and a cmd.exe command on Windows (no Bash is required).
This fork of bazel-skylib's copy_file adds DirectoryPathInfo support and allows multiple copy_file in the same package.
copy_file(<a href="#copy_file-name">name</a>, <a href="#copy_file-src">src</a>, <a href="#copy_file-out">out</a>, <a href="#copy_file-is_executable">is_executable</a>, <a href="#copy_file-allow_symlink">allow_symlink</a>, <a href="#copy_file-kwargs">kwargs</a>)
Copies a file or directory to another location.
native.genrule() is sometimes used to copy files (often wishing to rename them). The ‘copy_file’ rule does this with a simpler interface than genrule.
This rule uses a Bash command on Linux/macOS/non-Windows, and a cmd.exe command on Windows (no Bash is required).
If using this rule with source directories, it is recommended that you use the --host_jvm_args=-DBAZEL_TRACK_SOURCE_DIRECTORIES=1 startup option so that changes to files within source directories are detected. See https://github.com/bazelbuild/bazel/commit/c64421bc35214f0414e4f4226cc953e8c55fa0d2 for more context.
PARAMETERS
copy_file_action(<a href="#copy_file_action-ctx">ctx</a>, <a href="#copy_file_action-src">src</a>, <a href="#copy_file_action-dst">dst</a>, <a href="#copy_file_action-dir_path">dir_path</a>)
Factory function that creates an action to copy a file from src to dst.
If src is a TreeArtifact, dir_path must be specified as the path within the TreeArtifact to the file to copy.
This helper is used by copy_file. It is exposed as a public API so it can be used within other rule implementations.
To use copy_file_action in your own rules, you need to include the toolchains it uses in your rule definition. For example:
load("@aspect_bazel_lib//lib:copy_file.bzl", "COPY_FILE_TOOLCHAINS") my_rule = rule( ..., toolchains = COPY_FILE_TOOLCHAINS, )
Additionally, you must ensure that the coreutils toolchain is has been registered in your WORKSPACE if you are not using bzlmod:
load("@aspect_bazel_lib//lib:repositories.bzl", "register_coreutils_toolchains") register_coreutils_toolchains()
PARAMETERS