"""# Cargo settings

Definitions for all `@rules_rust//cargo` settings
"""

load("@bazel_skylib//rules:common_settings.bzl", "bool_flag", "string_list_flag")

def experimental_symlink_execroot():
    """A flag for which causes `cargo_build_script` to symlink the execroot of the action to \
    the `CARGO_MANIFEST_DIR` where the scripts are run.
    """
    bool_flag(
        name = "experimental_symlink_execroot",
        build_setting_default = False,
    )

def incompatible_runfiles_cargo_manifest_dir():
    """A flag which causes `cargo_build_script` to write an explicit `CARGO_MANFIEST_DIR` \
    directory from an action instead of using runfiles directories which cannot be \
    passed to downstream actions.

    https://github.com/bazelbuild/bazel/issues/15486
    """
    bool_flag(
        name = "incompatible_runfiles_cargo_manifest_dir",
        build_setting_default = True,
    )

def cargo_manifest_dir_filename_suffixes_to_retain():
    """A flag which determines what files are retained in `CARGO_MANIFEST_DIR` directories \
    that are created in `CargoBuildScriptRun` actions.
    """
    string_list_flag(
        name = "cargo_manifest_dir_filename_suffixes_to_retain",
        build_setting_default = [
            ".lib",
            ".so",
        ],
    )

def debug_std_streams_output_group():
    """A flag which adds a `streams` output group to `cargo_build_script` targets that contain \
    the raw `stderr` and `stdout` streams from the build script.
    """
    bool_flag(
        name = "debug_std_streams_output_group",
        build_setting_default = False,
    )

def use_default_shell_env():
    """A flag which controls the global default of `ctx.actions.run.use_default_shell_env` for `cargo_build_script` targets.
    """
    bool_flag(
        name = "use_default_shell_env",
        build_setting_default = True,
    )
