[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"$schema":"http://json-schema.org/draft-07/schema#","$id":"https://github.com/sagiegurari/cargo-make","additionalProperties":false,"definitions":{"semver":{"title":"Semantic Version","type":"string","pattern":"^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-((?:0|[1-9][0-9]*|[0-9]*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9][0-9]*|[0-9]*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$"},"extend":{"title":"External Makefile","description":"A potentially optional external makefile to extend","type":"object","x-taplo":{"initKeys":["optional"]},"required":["path"],"additionalProperties":false,"properties":{"path":{"title":"File Path","description":"The path of the external makefile, relative to this file","type":"string","default":"path/to/Makefile.toml"},"optional":{"description":"If true, the external makefile is optional and does not need to exist","type":"boolean","default":true},"relative":{"description":"Where the path is relative to","oneOf":[{"const":"git","description":"The nearest (up) .git folder location"},{"const":"crate","description":"Crate root (based on Cargo.toml file)"},{"const":"workspace","description":"Workspace root (based on second top Cargo.toml file)"},{"type":"null","description":"Current Makefile location"}],"default":null}}},"script":{"title":"Script","oneOf":[{"title":"Script Line","type":"string"},{"title":"Script Lines","type":"array","items":{"type":"string"}},{"title":"Script File","type":"object","examples":[{"file":"path/to/script"},{"file":"path/to/script","absolute_path":true}],"required":["file"],"additionalProperties":false,"properties":{"file":{"title":"File Path","description":"Script file name","type":"string","default":"path/to/script"},"absolute_path":{"description":"If true, the `file` value is an absolute path","default":true,"type":"boolean"}}},{"title":"Split Script","description":"Script content split to parts to enable a more fine tuned extension capability","type":"object","x-taplo":{"initKeys":["pre","main","post"]},"additionalProperties":false,"properties":{"pre":{"title":"Pre-Main Script","description":"Pre-main script section","type":"string"},"main":{"title":"Main Script","description":"Main script section","type":"string"},"post":{"title":"Post-Main Script","description":"Post-main script section","type":"string"}}}]},"env_files":{"title":"List of Env Files","description":"Load environment files","type":"array","default":[],"x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-env-file"}},"items":{"$ref":"#/definitions/envfile"},"uniqueItems":true},"envfile":{"title":"Env File","description":"File containing environment variables and their values","examples":["path/to/env.env",{"path":"path/to/env.env","profile":"development"}],"oneOf":[{"title":"File Path","description":"The path to the env file","type":"string","default":"path/to/env.env"},{"description":"The env file path and attributes","type":"object","x-taplo":{"initKeys":["profile"]},"required":["path"],"additionalProperties":false,"properties":{"path":{"title":"File Path","description":"The path to the env file","type":"string","default":"path/to/env.env"},"base_path":{"title":"Directory Path","description":"The path base directory (relative paths are from this base path)","type":"string","default":"path/to/dir"},"profile":{"title":"Profile","description":"The profile name this file is relevant to","type":"string","default":"development","examples":["development","production"]}}}]},"env":{"title":"Env Vars","description":"Setup environment variables","type":"object","x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-env-config"}},"additionalProperties":{"$ref":"#/definitions/env_value"}},"env_value":{"title":"Env Value","description":"An environment variable value","x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-env"}},"anyOf":[{"title":"Boolean","type":"boolean"},{"title":"Integer","type":"integer"},{"title":"String","type":"string"},{"title":"Separator List","description":"An array which will be joined with the `;` separator ","type":"array","items":{"type":"string"}},{"$ref":"#/definitions/env_value_unset"},{"$ref":"#/definitions/env_value_script"},{"$ref":"#/definitions/env_value_decode"},{"$ref":"#/definitions/env_value_conditioned"},{"$ref":"#/definitions/env_value_path_glob"},{"$ref":"#/definitions/env","title":"Profile Env Vars","description":"Profile dependent environment variables"}]},"env_value_unset":{"title":"Unset","description":"Unsets environment variable","type":"object","required":["unset"],"additionalProperties":false,"properties":{"unset":{"description":"If true, the env variable will be unset, else ignored","default":true,"type":"boolean"}}},"env_value_script":{"title":"Env Value Script","description":"Provide environment variable via script","type":"object","required":["script"],"additionalProperties":false,"properties":{"script":{"title":"Script Lines","type":"array","items":{"type":"string"},"default":[]},"multi_line":{"description":"Enable multi-line values","default":true,"type":"boolean"}}},"env_value_decode":{"title":"Env Value Mapping","description":"Environment variable value provided by decoding other values","type":"object","x-taplo":{"initKeys":["default_value"]},"required":["source","mapping"],"additionalProperties":false,"properties":{"source":{"title":"Env Var","description":"The source environment variable (can be an env expression)","type":"string"},"default_value":{"title":"Env Value","description":"The default value in case no decode mapping was found, if not provided it will default to the source value","type":"string"},"mapping":{"title":"Value Mapping","description":"The decoding mapping from one value to another value","type":"object","default":{},"additionalProperties":{"title":"Env Value","type":"string"}}}},"env_value_conditioned":{"title":"Conditional Env Value","description":"Environment variable value set if condition is met","type":"object","x-taplo":{"initKeys":["condition"]},"required":["value"],"additionalProperties":false,"properties":{"value":{"title":"Env Value","description":"The value to set (can be an env expression)","type":"string"},"condition":{"$ref":"#/definitions/task_condition","description":"Condition to evaluate to see whether to set the environment value or not"}}},"env_value_path_glob":{"title":"Env Value Glob","description":"Environment value holding a list of paths based on given glob definitions","type":"object","required":["glob"],"additionalProperties":false,"properties":{"glob":{"title":"Glob Pattern","description":"The glob used to fetch all paths","type":"string"},"include_files":{"description":"If true, include files in glob","default":true,"type":"boolean"},"include_dirs":{"description":"If true, include directories in glob","default":true,"type":"boolean"},"ignore_type":{"title":"Ignore Source","description":"An ignore source that enables respecting ignore files from that source","enum":["git"],"type":"string","default":"git"}}},"task_condition":{"title":"Condition","description":"Conditions allow you to evaluate at runtime if to run a specific task or not","type":"object","x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-conditions"}},"additionalProperties":false,"properties":{"fail_message":{"title":"Message","description":"Message to display when the condition fails","type":"string"},"profiles":{"title":"List of Profiles","description":"Profile names to match for the condition","type":"array","default":[],"items":{"title":"Profile","description":"Profile name","type":"string","default":"development"}},"platforms":{"title":"List of Platforms","description":"Platform names to match for the condition","type":"array","items":{"title":"Platform","description":"Platform name","enum":["linux","windows","mac"],"type":"string"}},"channels":{"title":"List of Channels","description":"Rust channels to match for the condition","type":"array","items":{"title":"Channel","description":"Rust channel","enum":["stable","beta","nightly"],"type":"string","default":"stable"}},"env_set":{"title":"List of Env Vars","description":"List of environment variables which must be defined","type":"array","items":{"title":"Env Var","description":"Environment variable","type":"string"}},"env_not_set":{"title":"List of Env Vars","description":"List of environment variables which must not be defined","type":"array","items":{"title":"Env Var","description":"Environment variable","type":"string"}},"env_true":{"title":"List of Env Vars","description":"List of environment variables which must be defined and must not be set to any of the following (case insensitive): `false`, `no`, `0`, or empty","type":"array","items":{"title":"Env Var","description":"Environment variable","type":"string"}},"env_false":{"title":"List of Env Vars","description":"List of environment variables which must be defined and must be set to any of the following (case insensitive): `false`, `no`, `0`, or empty","type":"array","items":{"title":"Env Var","description":"Environment variable","type":"string"}},"env":{"title":"Env Vars","description":"Map of environment variables that must be defined and equal to the provided values","type":"object","additionalProperties":{"title":"Env Value","description":"Environment value","type":"string"}},"env_contains":{"title":"Env Vars","description":"Map of environment variables that must be defined and contain (case insensitive) the provided values","type":"object","additionalProperties":{"title":"Env Value","description":"Environment value","type":"string"}},"rust_version":{"title":"Rust Version Criteria","description":"A definition of min, max and/or specific rust version","type":"object","x-taplo":{"initKeys":["min"]},"additionalProperties":false,"properties":{"min":{"$ref":"#/definitions/semver","description":"Minimum Rust version"},"max":{"$ref":"#/definitions/semver","description":"Maximum Rust version"},"equal":{"$ref":"#/definitions/semver","description":"Exact Rust version"}}},"files_exist":{"title":"List of Files","description":"List of absolute path files to check they exist. Environment substitution is supported so you can define relative paths","type":"array","items":{"title":"File Path","description":"File path","type":"string"}},"files_not_exist":{"title":"List of Files","description":"List of absolute path files to check they do not exist. Environment substitution is supported so you can define relative paths","type":"array","items":{"title":"File Path","description":"File path","type":"string"}},"files_modified":{"title":"Lists input and output globs","description":"If any input file is newer than all output files, the condition is met. Environment substitution is supported so you can define relative paths","type":"object","additionalProperties":false,"properties":{"input":{"description":"List of input globs","type":"array","items":{"description":"glob","type":"string"}},"output":{"description":"List of output globs","type":"array","items":{"description":"glob","type":"string"}}}},"condition_type":{"description":"How multiple conditions are evaluated","enum":["And","Or","GroupOr"],"type":"string","default":"And","x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-conditions-and-or"}}}}},"task":{"title":"Task","description":"A task is a command, script, rust code or other sub tasks to execute. Tasks can have dependencies which are also tasks that will be executed before the task itself.","type":"object","additionalProperties":false,"properties":{"clear":{"description":"If true, it should ignore all data in the base task","default":true,"type":"boolean","x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-default-tasks"}}},"description":{"title":"Description","description":"A description used to document the task","type":"string"},"category":{"title":"Category","description":"Category name used to document the task","type":"string"},"disabled":{"description":"If true, the command/script of this task will not be invoked, but dependencies will be","default":true,"type":"boolean","x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-default-tasks"}}},"private":{"description":"If true, the task is hidden from the list of available tasks and also cannot be invoked directly from CLI","default":true,"type":"boolean","x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-private-tasks"}}},"deprecated":{"description":"If set, this task is documented as deprecated. This can be a boolean or a string deprecation message.","default":true,"x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-deprecated-tasks"}},"oneOf":[{"type":"boolean"},{"title":"Deprecation Message","type":"string"}]},"extend":{"title":"Task Name","description":"Extends the specified task as a base task","type":"string","x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-task-extend-attribute"}}},"workspace":{"description":"Set to false to specify that this is not a workspace and should not call the task for every member (same as --no-workspace CLI flag)","default":false,"type":"boolean","x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-workspace-disabling-workspace-support"}}},"watch":{"description":"Watch for file changes and invoke the task operation","default":true,"x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-watch"}},"oneOf":[{"type":"boolean"},{"title":"Watch Options","type":"object","x-taplo":{"initKeys":["watch"]},"additionalProperties":false,"properties":{"version":{"$ref":"#/definitions/semver","description":"Version of cargo-watch to install if it's not already installed"},"postpone":{"description":"Postpone first run until a file changes","default":true,"type":"boolean"},"ignore_pattern":{"title":"Glob Pattern","description":"Ignore a glob/gitignore-style pattern while watching","type":"string"},"no_git_ignore":{"description":"Do not use .gitignore files while watching","default":true,"type":"boolean"},"watch":{"title":"List of Paths","description":"List of files and folders to watch","type":"array","items":{"title":"Path","description":"File or folder to watch","type":"string"}}}}]},"condition":{"$ref":"#/definitions/task_condition","description":"If provided all condition values must be met in order for the task to be invoked (will not stop dependencies)"},"condition_script":{"title":"Script","description":"If script exit code is not 0, the command/script of this task will not be invoked, dependencies however will be","type":"array","items":{"type":"string"},"x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-conditions-script"}}},"ignore_errors":{"description":"If true, any error while executing the task will be printed but will not break the build","default":true,"type":"boolean","x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-ignoring-errors"}}},"force":{"description":"DEPRECATED, replaced with `ignore_errors`","default":true,"type":"boolean","deprecated":true,"x-taplo":{"hidden":true}},"env_files":{"$ref":"#/definitions/env_files","description":"The env files to setup before running the task commands"},"env":{"$ref":"#/definitions/env","description":"The env vars to setup before running the task commands"},"cwd":{"title":"Directory Path","description":"The working directory for the task to execute its command/script","type":"string","default":"path/to/dir"},"alias":{"title":"Task Name","description":"If defined, task points to another task and all other properties are ignored","type":"string","x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-task-dependencies-alias"}}},"linux_alias":{"title":"Task Name","description":"If defined and this platform is Linux, task points to another task and all other properties are ignored (takes precedence over `alias` on Linux)","type":"string","x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-task-dependencies-alias"}}},"windows_alias":{"title":"Task Name","description":"If defined and this platform is Windows, task points to another task and all other properties are ignored (takes precedence over `alias` on Windows)","type":"string","x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-task-dependencies-alias"}}},"mac_alias":{"title":"Task Name","description":"If defined and this platform is Mac, task points to another task and all other properties are ignored (takes precedence over `alias` on Mac)","type":"string","x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-task-dependencies-alias"}}},"install_crate":{"description":"Indicates the provided crate needs to be installed (if needed) before running the task","x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-installing-crates"}},"oneOf":[{"description":"If set to false, will disable crate installation from the base task","default":false,"type":"boolean"},{"title":"Crate Name","description":"Name of the crate to install","type":"string"},{"title":"Crate Install Options","description":"Instructions on how to install a crate","type":"object","required":["crate_name","binary","test_arg"],"additionalProperties":false,"properties":{"crate_name":{"title":"Crate Name","description":"Name of the crate to install","type":"string"},"rustup_component_name":{"title":"Component Name","description":"The component to install via rustup","type":"string"},"binary":{"title":"File Name","description":"The binary file name to be used to test if the crate is already installed","type":"string"},"test_arg":{"title":"Args","description":"Arguments used to check whether a crate or rustup component is installed.","oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"min_version":{"$ref":"#/definitions/semver","description":"Minimum version of installed crate before it needs to be reinstalled"},"version":{"$ref":"#/definitions/semver","description":"Exact version of installed crate"},"install_command":{"title":"Install Command","description":"The alternative cargo install command to install the crate","type":"string"},"force":{"title":"Enable Force flag","description":"Set to false to disable --force being passed to the install command","type":"boolean","default":true}}},{"title":"Component Install Options","description":"Instructions on how to install a rustup component","type":"object","required":["rustup_component_name"],"additionalProperties":false,"properties":{"rustup_component_name":{"title":"Component Name","description":"The component to install via rustup","type":"string"},"binary":{"title":"File Name","description":"The binary file name to be used to test if the crate is already installed","type":"string"},"test_arg":{"title":"Args","description":"Arguments used to check whether a crate or rustup component is installed.","oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},{"title":"Plugin Install Options","description":"Instructions on how to install a cargo plugin","type":"object","required":["crate_name","min_version"],"additionalProperties":false,"properties":{"crate_name":{"title":"Crate Name","description":"Name of the crate to install","type":"string"},"min_version":{"$ref":"#/definitions/semver","description":"Minimum version of installed crate before it needs to be reinstalled"}}}]},"install_crate_args":{"title":"Args","description":"Additional cargo install args","type":"array","items":{"type":"string"}},"install_script":{"$ref":"#/definitions/script","description":"Provided script will be executed before running the task"},"command":{"title":"File Name","description":"The command to execute for this task","type":"string","x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-task-command-script-task-examplecommand"}}},"args":{"title":"Args","description":"The args for the executed command","type":"array","items":{"type":"string"},"x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-task-command-script-task-examplecommand"}}},"script":{"$ref":"#/definitions/script","description":"If `command` is not defined, but `script` is defined, the provided script will be executed","x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-task-command-script-task-examplescript"}}},"script_runner":{"title":"Script Runner","description":"The script attribute may hold non OS scripts, for example rust code to be compiled and executed. In order to use non OS script runners, you must define the special script_runner with the @ prefix.","type":"string","examples":["@rust","@duckscript","@shell","python","perl","node","php","powershell"],"x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-task-command-script-task"}}},"script_runner_args":{"title":"Args","description":"The script runner arguments before the script file path","type":"string","examples":["-f"],"x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-task-command-script-task-examplegeneric"}}},"script_extension":{"title":"File Extension","description":"The file extension to use for the script","type":"string","examples":["py","pl","js","php","ps1"]},"x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-task-command-script-task-examplegeneric"}},"run_task":{"description":"Run a task as a sub-task at the end of executing this task","x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-task-command-script-task-examplesubtask"}},"oneOf":[{"title":"Task Name","description":"Name of the sub-task to execute","type":"string"},{"type":"object","required":["name"],"additionalProperties":false,"properties":{"name":{"title":"Task Name","description":"Name(s) of the sub-task to execute","oneOf":[{"type":"string"},{"title":"List of Task Names","type":"array","items":{"title":"Task Name","type":"string"}}]},"fork":{"description":"Fork the sub-task into a a new subprocess","default":true,"type":"boolean","x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-task-command-script-task-examplesubtask"}}},"parallel":{"description":"Run tasks in parallel","default":true,"type":"boolean","x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-task-command-script-task-examplesubtask"}}},"cleanup_task":{"title":"Task Name","description":"A task to run after all specified sub-tasks have completed","type":"string","x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-task-command-script-task-examplesubtask"}}}}},{"title":"Conditional Tasks","description":"Conditional sub-task selector","type":"array","items":{"description":"Sub-task routing information","type":"object","required":["name"],"additionalProperties":false,"properties":{"name":{"title":"Task Name","description":"Name(s) of the sub-task to execute","oneOf":[{"type":"string"},{"title":"List of Task Names","type":"array","items":{"title":"Task Name","type":"string"}}]},"fork":{"description":"Fork the sub-task into a a new subprocess","default":true,"type":"boolean","x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-task-command-script-task-examplesubtask"}}},"parallel":{"description":"Run tasks in parallel","default":true,"type":"boolean","x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-task-command-script-task-examplesubtask"}}},"cleanup_task":{"title":"Task Name","description":"A task to run after all specified sub-tasks have completed","type":"string","x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-task-command-script-task-examplesubtask"}}},"condition":{"$ref":"#/definitions/task_condition","description":"If provided all condition values must be met in order for the task to be invoked"},"condition_script":{"title":"Script","description":"If script exit code is not 0, the sub tasks will not be invoked","type":"array","items":{"type":"string"}}}}}]},"dependencies":{"title":"List of Tasks","description":"A list of tasks to execute before this task","type":"array","x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-task-dependencies-alias"}},"items":{"oneOf":[{"title":"Task Name","description":"The name of a task in this file","type":"string"},{"title":"External Task","description":"A task dependency potentially in another file","type":"object","x-taplo":{"initKeys":["path"]},"required":["name"],"additionalProperties":false,"properties":{"name":{"title":"Task Name","description":"The task name to execute","type":"string"},"path":{"title":"File Path","description":"The path to the makefile the task resides in","type":"string","default":"path/to/makefile"}}}]}},"toolchain":{"title":"Toolchain","description":"The rust toolchain used to invoke the command or install the needed crates/components","type":"string","x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-toolchain"}}},"linux":{"$ref":"#/definitions/task","description":"Override task if runtime OS is Linux (takes precedence over alias)"},"windows":{"$ref":"#/definitions/task","description":"Override task if runtime OS is Windows (takes precedence over alias)"},"mac":{"$ref":"#/definitions/task","description":"Override task if runtime OS is Mac (takes precedence over alias)"}}},"unstable_feature_flags":{"title":"List of Unstable Feature Flags","description":"Specify unstable features to enable","type":"array","default":[],"x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-unstable-features"}},"items":{"$ref":"#/definitions/unstable_feature_flag"},"uniqueItems":true},"unstable_feature_flag":{"title":"Unstable Feature Flag","description":"Unstable feature flag","enum":["CTRL_C_HANDLING"]}},"description":"A schema for cargo-make makefiles","properties":{"extend":{"title":"Extend External Makefile","description":"Extend an external makefile by importing its tasks and properties to this file. Paths are relative to this makefile","x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-workspace-extending-external-makefile"}},"default":"path/to/Makefile.toml","examples":["path/to/Makefile.toml",{"path":"path/to/Makefile.toml","optional":true},[{"path":"path/to/Makefile.toml","optional":true}]],"oneOf":[{"title":"File Path","description":"File path to external makefile relative to this file","type":"string","examples":["path/to/Makefile.toml"]},{"$ref":"#/definitions/extend"},{"title":"External Makefile List","description":"List of external makefiles to extend","type":"array","items":{"$ref":"#/definitions/extend"},"uniqueItems":true}]},"config":{"title":"Config","description":"Configuration options for this makefile","type":"object","x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/api/cli/types/struct.ConfigSection.html"},"initKeys":["min_version"]},"additionalProperties":false,"properties":{"skip_core_tasks":{"description":"If true, the default core tasks will not be loaded","default":false,"type":"boolean","x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-predefined-flows-disable"}}},"skip_git_env_info":{"description":"If true, the Git related environment variables will not be loaded","default":false,"type":"boolean","x-taplo":{"links":{"key":"https://github.com/sagiegurari/cargo-make#performance-tuning"}}},"skip_rust_env_info":{"description":"If true, the rust related environment variables will not be loaded","default":false,"type":"boolean","x-taplo":{"links":{"key":"https://github.com/sagiegurari/cargo-make#performance-tuning"}}},"skip_crate_env_info":{"description":"If true, the current crate related environment variables will not be loaded","default":false,"type":"boolean","x-taplo":{"links":{"key":"https://github.com/sagiegurari/cargo-make#performance-tuning"}}},"modify_core_tasks":{"description":"Options to modify all the core tasks","type":"object","x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-predefined-flows-modify"}},"examples":[{"private":true},{"namespace":"default"},{"private":true,"namespace":"default"}],"additionalProperties":false,"properties":{"private":{"description":"If true, all core tasks will be set to private (default false)","default":true,"type":"boolean"},"namespace":{"title":"Namespace","description":"If set to some value, all core tasks are modified to: `namespace::name`","type":"string","default":"default"}}},"init_task":{"title":"Task Name","description":"Init task name which will be invoked at the start of every run","type":"string","x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-init-end-tasks"}},"default":"init"},"end_task":{"title":"Task Name","description":"End task name which will be invoked at the end of every run","default":"end","type":"string","x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-init-end-tasks"}}},"on_error_task":{"title":"Task Name","description":"The name of the task to run in case of any error during the invocation of the flow","type":"string","x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-catching-errors"}},"default":"catch"},"legacy_migration_task":{"title":"Task Name","description":"The name of the task which runs legacy migration flows","default":"legacy-migration","type":"string","x-taplo":{"hidden":true}},"additional_profiles":{"title":"List of Profiles","description":"Additional profile names to load","default":[],"type":"array","x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-profiles"}},"examples":[["additional_profile"]],"items":{"title":"Profile","description":"Additional profile name to load","type":"string","default":"additional_profile"},"uniqueItems":true},"min_version":{"$ref":"#/definitions/semver","description":"Minimum cargo-make/makers version","default":"0.35.0","examples":["0.35.0","0.34.0","0.33.0"],"x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-min-version"}}},"default_to_workspace":{"description":"The default value for the `workspace` value of tasks in this makefile","default":true,"type":"boolean","x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-workspace-disabling-workspace-support"}}},"reduce_output":{"description":"Set to true to reduce console output for non CI execution","default":true,"type":"boolean"},"time_summary":{"description":"Set to true to print time summary at the end of the flow","default":true,"type":"boolean"},"load_cargo_aliases":{"description":"Automatically load cargo aliases as cargo-make tasks","default":true,"type":"boolean","x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-cargo-alias-tasks"}}},"main_project_member":{"title":"Crate","description":"The project information member (used by workspaces)","type":"string","default":"main-crate"},"load_script":{"$ref":"#/definitions/script","description":"Invoked while loading the descriptor file but before loading any extended descriptor","x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-load-scripts"}}},"linux_load_script":{"$ref":"#/definitions/script","description":"Invoked while loading the descriptor file but before loading any extended descriptor. Takes precedence over `load_script` if runtime OS is Linux.","x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-load-scripts"}}},"windows_load_script":{"$ref":"#/definitions/script","description":"Invoked while loading the descriptor file but before loading any extended descriptor. Takes precedence over `load_script` if runtime OS is Windows.","x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-load-scripts"}}},"mac_load_script":{"$ref":"#/definitions/script","description":"Invoked while loading the descriptor file but before loading any extended descriptor. Takes precedence over `load_script` if runtime OS is Mac.","x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-load-scripts"}}},"unstable_features":{"$ref":"#/definitions/unstable_feature_flags","description":"Enables unstable cargo-make features","x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-unstable-features"}}}}},"env_files":{"$ref":"#/definitions/env_files","description":"The environment files to setup before running any tasks"},"env_scripts":{"title":"List of Env Scripts","description":"The environment scripts to execute after environment files and the env block. These scripts can be used to run anything needed before starting up the flow.","type":"array","x-taplo":{"links":{"key":"https://sagiegurari.github.io/cargo-make/#usage-env-file"}},"default":[],"items":{"$ref":"#/definitions/script","description":"Env script","type":"string"}},"env":{"$ref":"#/definitions/env","description":"The environment variables to setup before running any tasks"},"tasks":{"description":"Task definitions","type":"object","additionalProperties":{"$ref":"#/definitions/task"}}},"title":"Makefile.toml","type":"object","x-taplo-info":{"authors":["Kathryn Long (https://github.com/starkat99)"],"version":"0.35.0","patterns":["^(.*(/|\\\\)Makefile\\.toml|Makefile\\.toml)$"]}}
</schema>

[User] Provide a JSON object that satisfies the schema "Makefile.toml". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.

Semantic Version

External Makefile

A potentially optional external makefile to extend

File Path

The path of the external makefile, relative to this file

If true, the external makefile is optional and does not need to exist

Where the path is relative to

The nearest (up) .git folder location

Crate root (based on Cargo.toml file)

Workspace root (based on second top Cargo.toml file)

Current Makefile location

Script

Script Line

Script Lines

Script File

File Path

Script file name

If true, the `file` value is an absolute path

Split Script

Script content split to parts to enable a more fine tuned extension capability

Pre-Main Script

Pre-main script section

Main Script

Main script section

Post-Main Script

Post-main script section

List of Env Files

Load environment files

Env File

File containing environment variables and their values

File Path

The path to the env file

The env file path and attributes

File Path

The path to the env file

Directory Path

The path base directory (relative paths are from this base path)

Profile

The profile name this file is relevant to

Env Vars

Setup environment variables

Env Value

An environment variable value

Boolean

Integer

String

Separator List

An array which will be joined with the `;` separator

Profile Env Vars

Profile dependent environment variables

Unset

Unsets environment variable

If true, the env variable will be unset, else ignored

Env Value Script

Provide environment variable via script

Script Lines

Enable multi-line values

Env Value Mapping

Environment variable value provided by decoding other values

Env Var

The source environment variable (can be an env expression)

Env Value

The default value in case no decode mapping was found, if not provided it will default to the source value

Value Mapping

The decoding mapping from one value to another value

Env Value

Conditional Env Value

Environment variable value set if condition is met

Env Value

The value to set (can be an env expression)

Condition to evaluate to see whether to set the environment value or not

Env Value Glob

Environment value holding a list of paths based on given glob definitions

Glob Pattern

The glob used to fetch all paths

If true, include files in glob

If true, include directories in glob

Ignore Source

An ignore source that enables respecting ignore files from that source

Condition

Conditions allow you to evaluate at runtime if to run a specific task or not

Message

Message to display when the condition fails

List of Profiles

Profile names to match for the condition

Profile

Profile name

List of Platforms

Platform names to match for the condition

Platform

Platform name

List of Channels

Rust channels to match for the condition

Channel

Rust channel

List of Env Vars

List of environment variables which must be defined

Env Var

Environment variable

List of Env Vars

List of environment variables which must not be defined

Env Var

Environment variable

List of Env Vars

List of environment variables which must be defined and must not be set to any of the following (case insensitive): `false`, `no`, `0`, or empty

Env Var

Environment variable

List of Env Vars

List of environment variables which must be defined and must be set to any of the following (case insensitive): `false`, `no`, `0`, or empty

Env Var

Environment variable

Env Vars

Map of environment variables that must be defined and equal to the provided values

Env Value

Environment value

Env Vars

Map of environment variables that must be defined and contain (case insensitive) the provided values

Env Value

Environment value

Rust Version Criteria

A definition of min, max and/or specific rust version

Minimum Rust version

Maximum Rust version

Exact Rust version

List of Files

List of absolute path files to check they exist. Environment substitution is supported so you can define relative paths

File Path

File path

List of Files

List of absolute path files to check they do not exist. Environment substitution is supported so you can define relative paths

File Path

File path

Lists input and output globs

If any input file is newer than all output files, the condition is met. Environment substitution is supported so you can define relative paths

List of input globs

glob

List of output globs

glob

How multiple conditions are evaluated

Task

A task is a command, script, rust code or other sub tasks to execute. Tasks can have dependencies which are also tasks that will be executed before the task itself.

If true, it should ignore all data in the base task

Description

A description used to document the task

Category

Category name used to document the task

If true, the command/script of this task will not be invoked, but dependencies will be

If true, the task is hidden from the list of available tasks and also cannot be invoked directly from CLI

If set, this task is documented as deprecated. This can be a boolean or a string deprecation message.

Deprecation Message

Task Name

Extends the specified task as a base task

Set to false to specify that this is not a workspace and should not call the task for every member (same as --no-workspace CLI flag)

Watch for file changes and invoke the task operation

Watch Options

Version of cargo-watch to install if it's not already installed

Postpone first run until a file changes

Glob Pattern

Ignore a glob/gitignore-style pattern while watching

Do not use .gitignore files while watching

List of Paths

List of files and folders to watch

Path

File or folder to watch

If provided all condition values must be met in order for the task to be invoked (will not stop dependencies)

Script

If script exit code is not 0, the command/script of this task will not be invoked, dependencies however will be

If true, any error while executing the task will be printed but will not break the build

DEPRECATED, replaced with `ignore_errors`

The env files to setup before running the task commands

The env vars to setup before running the task commands

Directory Path

The working directory for the task to execute its command/script

Task Name

If defined, task points to another task and all other properties are ignored

Task Name

If defined and this platform is Linux, task points to another task and all other properties are ignored (takes precedence over `alias` on Linux)

Task Name

If defined and this platform is Windows, task points to another task and all other properties are ignored (takes precedence over `alias` on Windows)

Task Name

If defined and this platform is Mac, task points to another task and all other properties are ignored (takes precedence over `alias` on Mac)

Indicates the provided crate needs to be installed (if needed) before running the task

If set to false, will disable crate installation from the base task

Crate Name

Name of the crate to install

Crate Install Options

Instructions on how to install a crate

Crate Name

Name of the crate to install

Component Name

The component to install via rustup

File Name

The binary file name to be used to test if the crate is already installed

Args

Arguments used to check whether a crate or rustup component is installed.

Minimum version of installed crate before it needs to be reinstalled

Exact version of installed crate

Install Command

The alternative cargo install command to install the crate

Enable Force flag

Set to false to disable --force being passed to the install command

Component Install Options

Instructions on how to install a rustup component

Component Name

The component to install via rustup

File Name

Args

Plugin Install Options

Instructions on how to install a cargo plugin

Crate Name

Name of the crate to install

Args

Additional cargo install args

Provided script will be executed before running the task

File Name

The command to execute for this task

Args

The args for the executed command

If `command` is not defined, but `script` is defined, the provided script will be executed

Script Runner

The script attribute may hold non OS scripts, for example rust code to be compiled and executed. In order to use non OS script runners, you must define the special script_runner with the @ prefix.

Args

The script runner arguments before the script file path

File Extension

The file extension to use for the script

Run a task as a sub-task at the end of executing this task

Task Name

Name of the sub-task to execute

Task Name

Name(s) of the sub-task to execute

List of Task Names

Task Name

Fork the sub-task into a a new subprocess

Run tasks in parallel

Task Name

A task to run after all specified sub-tasks have completed

Conditional Tasks

Conditional sub-task selector

Sub-task routing information

Task Name

Name(s) of the sub-task to execute

List of Task Names

Task Name

Run tasks in parallel

Task Name

Script

If script exit code is not 0, the sub tasks will not be invoked

List of Tasks

A list of tasks to execute before this task

Task Name

The name of a task in this file

External Task

A task dependency potentially in another file

Task Name

The task name to execute

File Path

The path to the makefile the task resides in

Toolchain

The rust toolchain used to invoke the command or install the needed crates/components

Override task if runtime OS is Linux (takes precedence over alias)

Override task if runtime OS is Windows (takes precedence over alias)

Override task if runtime OS is Mac (takes precedence over alias)

List of Unstable Feature Flags

Specify unstable features to enable

Unstable Feature Flag

Unstable feature flag

A schema for cargo-make makefiles

Extend External Makefile

Extend an external makefile by importing its tasks and properties to this file. Paths are relative to this makefile

File Path

File path to external makefile relative to this file

External Makefile List

List of external makefiles to extend

Config

Configuration options for this makefile

If true, the default core tasks will not be loaded

If true, the Git related environment variables will not be loaded

If true, the rust related environment variables will not be loaded

If true, the current crate related environment variables will not be loaded

Options to modify all the core tasks

If true, all core tasks will be set to private (default false)

Namespace

If set to some value, all core tasks are modified to: `namespace::name`

Task Name

Init task name which will be invoked at the start of every run

Task Name

End task name which will be invoked at the end of every run

Task Name

The name of the task to run in case of any error during the invocation of the flow

Task Name

The name of the task which runs legacy migration flows

List of Profiles

Additional profile names to load

Profile

Additional profile name to load

Minimum cargo-make/makers version

The default value for the `workspace` value of tasks in this makefile

Set to true to reduce console output for non CI execution

Set to true to print time summary at the end of the flow

Automatically load cargo aliases as cargo-make tasks

Crate

The project information member (used by workspaces)

Invoked while loading the descriptor file but before loading any extended descriptor. Takes precedence over `load_script` if runtime OS is Linux.

Invoked while loading the descriptor file but before loading any extended descriptor. Takes precedence over `load_script` if runtime OS is Windows.

Invoked while loading the descriptor file but before loading any extended descriptor. Takes precedence over `load_script` if runtime OS is Mac.

Enables unstable cargo-make features

The environment files to setup before running any tasks

List of Env Scripts

The environment scripts to execute after environment files and the env block. These scripts can be used to run anything needed before starting up the flow.

Env script

The environment variables to setup before running any tasks

Task definitions

Makefile.toml

Provide a JSON object that satisfies the schema "Makefile.toml". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.


[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"$schema":"http://json-schema.org/draft-07/schema#","$id":"https://json.schemastore.org/cargo-mutants-config.json","additionalProperties":true,"title":"cargo-mutants config","description":"cargo-mutants configuration, read by default from `.cargo/mutants.toml`.\n\nSee <https://mutants.rs/>.","type":"object","properties":{"additional_cargo_args":{"description":"Pass extra args to every cargo invocation.","default":[],"type":"array","items":{"type":"string"}},"additional_cargo_test_args":{"description":"Pass extra args to cargo test.","default":[],"type":"array","items":{"type":"string"}},"build_timeout_multiplier":{"description":"Build timeout multiplier, relative to the baseline 'cargo build'.","default":null,"type":["number","null"],"format":"double"},"cap_lints":{"description":"Pass `--cap-lints` to rustc.","default":false,"type":"boolean"},"copy_vcs":{"description":"Copy `.git` and other VCS directories to the build directory.","default":null,"type":["boolean","null"]},"error_values":{"description":"Generate these error values from functions returning Result.","default":[],"type":"array","items":{"type":"string"}},"examine_globs":{"description":"Generate mutants from source files matching these globs.","default":[],"type":"array","items":{"type":"string"}},"examine_re":{"description":"Examine only mutants matching these regexps.","default":[],"type":"array","items":{"type":"string"}},"exclude_globs":{"description":"Exclude mutants from source files matching these globs.","default":[],"type":"array","items":{"type":"string"}},"exclude_re":{"description":"Exclude mutants from source files matches these regexps.","default":[],"type":"array","items":{"type":"string"}},"minimum_test_timeout":{"description":"Minimum test timeout, in seconds, as a floor on the autoset value.","default":null,"type":["number","null"],"format":"double"},"output":{"description":"Output directory.","default":null,"type":["string","null"]},"profile":{"description":"Cargo profile.","default":null,"type":["string","null"]},"skip_calls":{"description":"Skip calls to functions or methods with these names.\n\nThis is combined with values from the --skip-calls argument.","default":[],"type":"array","items":{"type":"string"}},"skip_calls_defaults":{"description":"Use built-in defaults for `skip_calls` in addition to any explicit values.","default":null,"type":["boolean","null"]},"test_package":{"description":"Run tests from these packages for all mutants.","default":[],"type":"array","items":{"type":"string"}},"test_tool":{"description":"Choice of test tool: cargo or nextest.","anyOf":[{"$ref":"#/definitions/TestTool"},{"type":"null"}]},"test_workspace":{"description":"Run tests from all packages in the workspace, not just the mutated package.\n\nOverrides `test_package`.","default":null,"type":["boolean","null"]},"timeout_multiplier":{"description":"Timeout multiplier, relative to the baseline 'cargo test'.","default":null,"type":["number","null"],"format":"double"}},"definitions":{"TestTool":{"description":"Choice of tool to use to run tests.","oneOf":[{"description":"Use `cargo test`, the default.","type":"string","enum":["cargo"]},{"description":"Use `cargo nextest`.","type":"string","enum":["nextest"]}]}}}
</schema>

[User] Provide a JSON object that satisfies the schema "cargo-mutants config". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.

cargo-mutants config

cargo-mutants configuration, read by default from `.cargo/mutants.toml`.

See <https://mutants.rs/>.

Pass extra args to every cargo invocation.

Pass extra args to cargo test.

Build timeout multiplier, relative to the baseline 'cargo build'.

Pass `--cap-lints` to rustc.

Copy `.git` and other VCS directories to the build directory.

Generate these error values from functions returning Result.

Generate mutants from source files matching these globs.

Examine only mutants matching these regexps.

Exclude mutants from source files matching these globs.

Exclude mutants from source files matches these regexps.

Minimum test timeout, in seconds, as a floor on the autoset value.

Output directory.

Cargo profile.

Skip calls to functions or methods with these names.

This is combined with values from the --skip-calls argument.

Use built-in defaults for `skip_calls` in addition to any explicit values.

Run tests from these packages for all mutants.

Choice of test tool: cargo or nextest.

Run tests from all packages in the workspace, not just the mutated package.

Overrides `test_package`.

Timeout multiplier, relative to the baseline 'cargo test'.

Choice of tool to use to run tests.

Use `cargo test`, the default.

Use `cargo nextest`.

Provide a JSON object that satisfies the schema "cargo-mutants config". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.