GithubHelp home page GithubHelp logo

sagiegurari / cargo-make Goto Github PK

View Code? Open in Web Editor NEW
2.4K 15.0 119.0 18.93 MB

Rust task runner and build tool.

Home Page: https://sagiegurari.github.io/cargo-make/

License: Apache License 2.0

Rust 99.92% Shell 0.08%
build build-tool build-automation task-runner task rust cargo cargo-subcommand make travis-ci

cargo-make's People

Contributors

ark0f avatar arlyon avatar azriel91 avatar ben1009 avatar daxpedda avatar dbanty avatar dependabot-preview[bot] avatar dependabot[bot] avatar elpiel avatar epontan avatar gemmaro avatar hecatron avatar indietyp avatar jayvdb avatar legneato avatar ma27 avatar manishearth avatar martinkavik avatar nacardin avatar permosegaard avatar polferov avatar reticulis avatar roblabla avatar sagiegurari avatar saona-raimundo avatar williamvenner avatar wmmc88 avatar worldsender avatar worr avatar xxchan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cargo-make's Issues

workspace support redesign

Internal workspace member handling of sub flows instead of running sub cargo-make processes per member.

Prevent multiple action definitions

This is a breaking change which will break the flow in case a task is defined with multiple action types such as run_task, command or script.
This is a breaking change, but would help make the tasks more clearer to read and understand.

watch task

Support watch for changes that will trigger cargo make automatically.
Should help during development time to reduce the need of manual invocations of cargo make.

Docker image for quicker builds

Feature request

Hi ! As building cargo-make can take a really long and unneeded time on Travis, it could be interesting to have a docker image available, as Travis (and Gitlab-CI, too) support Docker. I don't know the state of Docker/Rust compatibility however, but I could try preparing an image myself and making a PR afterwards.

This way, the actual binary would only be built once per version, and then downloaded from the Docker hub or another repository, instead of rebuilding it during every build.

Code Example

This .travis.yml

before_install:
- cargo install --debug cargo-make

script:
- cargo make ci-flow

would be replaced by:

services:
- docker

before_install:
- docker pull sagiegurari/cargo-make

script:
- docker run sagiegurari/cargo-make ci-flow

Install_crate can be optional for most cases

In many cases cargo plugin is in the form of cargo-command so the crate name can be extracted from the command itself in most cases and there is no need to manually define it.

user level configuration

Support user level configuration file to enable setting defaults for cargo-make.
This should include:

  • default log level
  • search for updates
  • default task name

The file could be named and located as: ~/.cargo/.cargo-make.toml

Workspace support

I saw the recently added workspace support.

This is a great feature, but I would also really want to run special tasks in the root directory where the workspace manifest lives.

Maybe the behaviour could be like this:

  • if task exists in root make file, run it
  • otherwise, execute task in each workspace member

option to set directory

Problem Description

I would like to set directory before running task. For example, if I have sub directory in the project, I want to use that as directory for my task. The directory should be relative directory from project.
Fore example, if I have subdirectory "sub1", then

Code Example

[tasks.do_something]
cd = "sub1"
script = [
  "ls"
]

Error Stack/Info (if any)

This should cd to sub1 in the my project and run "ls".

Workspace feature issue on Windows

I'm trying to build a project with a workspace on CI.

On Travis, it work's perfectly.
On Appveyor, it fails though.

All that I do is run cargo make ci-flow.

The important part of the log below seems to be this:

C:\Windows>cd \\?\C:\projects\juniper 
'\\?\C:\projects\juniper'
CMD does not support UNC paths as current directories.
C:\Windows>cd ./juniper 
The system cannot find the path specified.

All sub-crates use the default ci-flow task, except the juniper_rocket crate, which has a custom Makefile.toml.

What could be the issue here?

Code can be found at: https://github.com/theduke/juniper/tree/11896700e5729b19ee0be34c27e92c71facbc702

Error log:

[00:00:00] Build started
[00:00:00] git clone -q https://github.com/mhallin/juniper.git C:\projects\juniper
[00:00:02] git fetch -q origin +refs/pull/73/merge:
[00:00:02] git checkout -qf FETCH_HEAD
[00:00:02] Running Install scripts
[00:00:02] curl -sSf -o rustup-init.exe https://win.rustup.rs
[00:00:04] rustup-init.exe --default-host %TARGET% --default-toolchain %CHANNEL% -y
[00:00:04] info: syncing channel updates for 'stable-i686-pc-windows-gnu'
[00:00:04] info: latest update on 2017-07-20, rust version 1.19.0 (0ade33941 2017-07-17)
[00:00:04] info: downloading component 'rustc'
[00:00:07] info: downloading component 'rust-std'
[00:00:09] info: downloading component 'cargo'
[00:00:09] info: downloading component 'rust-docs'
[00:00:09] info: downloading component 'rust-mingw'
[00:00:10] info: installing component 'rustc'
[00:00:14] info: installing component 'rust-std'
[00:00:26] info: installing component 'cargo'
[00:00:26] info: installing component 'rust-docs'
[00:00:41] info: installing component 'rust-mingw'
[00:00:41] info: default toolchain set to 'stable'
[00:00:41] 
[00:00:42]   stable installed - rustc 1.19.0 (0ade33941 2017-07-17)
[00:00:42] 
[00:00:42] set PATH=%PATH%;C:\Users\appveyor\.cargo\bin
[00:00:43] rustc -Vv
[00:00:43] rustc 1.19.0 (0ade33941 2017-07-17)
[00:00:43] binary: rustc
[00:00:43] commit-hash: 0ade339411587887bf01bcfa2e9ae4414c8900d4
[00:00:43] commit-date: 2017-07-17
[00:00:43] host: i686-pc-windows-gnu
[00:00:43] release: 1.19.0
[00:00:43] LLVM version: 4.0
[00:00:43] cargo -V
[00:00:43] cargo 0.20.0 (a60d185c8 2017-07-13)
[00:00:43] cargo install --debug cargo-make
[00:00:43]     Updating registry `https://github.com/rust-lang/crates.io-index`
[00:00:54]  Downloading cargo-make v0.3.47
[00:00:55]   Installing cargo-make v0.3.47
[00:00:55]  Downloading serde v1.0.11
[00:00:56]  Downloading toml v0.4.4
[00:00:56]  Downloading clap v2.26.0
[00:00:56]  Downloading serde_derive v1.0.11
[00:00:56]  Downloading rand v0.3.16
[00:00:56]  Downloading term_size v0.3.0
[00:00:56]  Downloading bitflags v0.9.1
[00:00:56]  Downloading ansi_term v0.9.0
[00:00:56]  Downloading atty v0.2.2
[00:00:57]  Downloading textwrap v0.7.0
[00:00:57]  Downloading unicode-width v0.1.4
[00:00:57]  Downloading strsim v0.6.0
[00:00:57]  Downloading unicode-segmentation v1.2.0
[00:00:57]  Downloading vec_map v0.8.0
[00:00:57]  Downloading quote v0.3.15
[00:00:57]  Downloading serde_derive_internals v0.15.1
[00:00:57]  Downloading syn v0.11.11
[00:00:57]  Downloading synom v0.11.3
[00:00:57]  Downloading unicode-xid v0.0.4
[00:00:58]  Downloading libc v0.2.29
[00:00:58]  Downloading winapi v0.2.8
[00:00:58]  Downloading kernel32-sys v0.2.2
[00:00:58]  Downloading winapi-build v0.1.1
[00:00:58]    Compiling libc v0.2.29
[00:00:58]    Compiling unicode-width v0.1.4
[00:00:59]    Compiling unicode-segmentation v1.2.0
[00:00:59]    Compiling winapi-build v0.1.1
[00:01:00]    Compiling strsim v0.6.0
[00:01:00]    Compiling vec_map v0.8.0
[00:01:01]    Compiling serde v1.0.11
[00:01:01]    Compiling ansi_term v0.9.0
[00:01:02]    Compiling bitflags v0.9.1
[00:01:02]    Compiling winapi v0.2.8
[00:01:10]    Compiling unicode-xid v0.0.4
[00:01:10]    Compiling quote v0.3.15
[00:01:11]    Compiling rand v0.3.16
[00:01:13]    Compiling kernel32-sys v0.2.2
[00:01:13]    Compiling toml v0.4.4
[00:01:17]    Compiling synom v0.11.3
[00:01:18]    Compiling syn v0.11.11
[00:01:24]    Compiling serde_derive_internals v0.15.1
[00:01:27]    Compiling serde_derive v1.0.11
[00:01:42]    Compiling term_size v0.3.0
[00:01:42]    Compiling atty v0.2.2
[00:01:42]    Compiling textwrap v0.7.0
[00:01:44]    Compiling clap v2.26.0
[00:02:05]    Compiling cargo-make v0.3.47
[00:02:13]     Finished dev [unoptimized + debuginfo] target(s) in 74.77 secs
[00:02:13]   Installing C:\Users\appveyor\.cargo\bin\cargo-make.exe
[00:02:13] cargo make ci-flow
[00:02:13] [cargo-make] info - cargo-make 0.3.47
[00:02:13] [cargo-make] info - Using Build File: Makefile.toml
[00:02:13] [cargo-make] info - Task: ci-flow
[00:02:14] [cargo-make] info - External file not found, skipping.
[00:02:14] [cargo-make] info - Setting Up Env.
[00:02:16] [cargo-make] info - Running Task: init
[00:02:16] [cargo-make] info - Running Task: workspace
[00:02:16] [cargo-make] info - Execute Command: "cmd.exe" "/C" "C:\\Users\\appveyor\\AppData\\Local\\Temp\\1\\cargo-make\\CehlP3I9VQ.bat"
[00:02:16] '\\?\C:\projects\juniper'
[00:02:16] CMD.EXE was started with the above path as the current directory.
[00:02:16] UNC paths are not supported.  Defaulting to Windows directory.
[00:02:16] 
[00:02:16] C:\Windows>cd \\?\C:\projects\juniper 
[00:02:16] '\\?\C:\projects\juniper'
[00:02:16] CMD does not support UNC paths as current directories.
[00:02:16] 
[00:02:16] C:\Windows>cd ./juniper 
[00:02:16] The system cannot find the path specified.
[00:02:16] 
[00:02:16] C:\Windows>cargo make ci-flow 
[00:02:16] [cargo-make] info - cargo-make 0.3.47
[00:02:16] [cargo-make] info - Using Build File: Makefile.toml
[00:02:16] [cargo-make] info - Task: ci-flow
[00:02:16] [cargo-make] info - External file not found, skipping.
[00:02:16] [cargo-make] info - Setting Up Env.
[00:02:16] [cargo-make] error - Error while executing command, exit code: 128
[00:02:16] thread 'main' panicked at 'Build Failed.', C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\log.rs:106
[00:02:16] stack backtrace:
[00:02:16]    0:   0x8723cf - std::panicking::default_hook::{{closure}}::h4f40948f481650e9
[00:02:16]    1:   0x871f81 - std::panicking::default_hook::hcafd67ea48a23ee0
[00:02:16]    2:   0x8727b1 - std::panicking::rust_panic_with_hook::he7f3abd836207891
[00:02:16]    3:   0x442a73 - std::panicking::begin_panic::h181db6e2d0f9c785
[00:02:16]                        at C:\projects\rust\src\libstd/panicking.rs:511
[00:02:16]    4:   0x49697f - cargo_make::log::Logger::error::h5e441a51bc11d3cb
[00:02:16]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/log.rs:106
[00:02:16]    5:   0x49fbd0 - cargo_make::command::validate_exit_code::h7165c8f72ef5574f
[00:02:16]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/command.rs:55
[00:02:16]    6:   0x49b821 - cargo_make::environment::gitinfo::load_branch::ha61188dc0e49c367
[00:02:16]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\environment/gitinfo.rs:74
[00:02:16]    7:   0x49beb9 - cargo_make::environment::gitinfo::load::ha0940e4ec3358022
[00:02:16]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\environment/gitinfo.rs:100
[00:02:16]    8:   0x49e91a - cargo_make::environment::setup_env_for_git_repo::h869320ff912b4bb6
[00:02:16]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\environment/mod.rs:83
[00:02:16]    9:   0x49f4e5 - cargo_make::environment::setup_env::h1bb130f92a02d3c4
[00:02:16]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\environment/mod.rs:163
[00:02:16]   10:   0x4a4aac - cargo_make::cli::run::h8a19113e866bb47f
[00:02:16]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/cli.rs:49
[00:02:16]   11:   0x4a5716 - cargo_make::cli::run_for_args::h5d14d9e46916d3c9
[00:02:16]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/cli.rs:88
[00:02:16]   12:   0x4a6503 - cargo_make::cli::run_cli::h51274122c19865d9
[00:02:16]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/cli.rs:153
[00:02:16]   13:   0x4a6517 - cargo_make::main::h58ec6e08ef64d6d5
[00:02:16]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/main.rs:120
[00:02:16]   14:   0x875745 - __rust_maybe_catch_panic
[00:02:16]   15:   0x872d86 - std::rt::lang_start::hae2aefe6738024b9
[00:02:16]   16:   0x4f99f2 - main
[00:02:16]   17:   0x4013e2 - __tmainCRTStartup
[00:02:16]   18: 0x76e47c03 - unit_addrs_search
[00:02:16]   19: 0x778dad2e - unit_addrs_search
[00:02:16] 
[00:02:16] C:\Windows>cd \\?\C:\projects\juniper 
[00:02:16] '\\?\C:\projects\juniper'
[00:02:16] CMD does not support UNC paths as current directories.
[00:02:16] 
[00:02:16] C:\Windows>cd ./juniper_codegen 
[00:02:16] The system cannot find the path specified.
[00:02:16] 
[00:02:16] C:\Windows>cargo make ci-flow 
[00:02:16] [cargo-make] info - cargo-make 0.3.47
[00:02:16] [cargo-make] info - Using Build File: Makefile.toml
[00:02:16] [cargo-make] info - Task: ci-flow
[00:02:16] [cargo-make] info - External file not found, skipping.
[00:02:16] [cargo-make] info - Setting Up Env.
[00:02:17] [cargo-make] error - Error while executing command, exit code: 128
[00:02:17] thread 'main' panicked at 'Build Failed.', C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\log.rs:106
[00:02:17] stack backtrace:
[00:02:17]    0:   0x8723cf - std::panicking::default_hook::{{closure}}::h4f40948f481650e9
[00:02:17]    1:   0x871f81 - std::panicking::default_hook::hcafd67ea48a23ee0
[00:02:17]    2:   0x8727b1 - std::panicking::rust_panic_with_hook::he7f3abd836207891
[00:02:17]    3:   0x442a73 - std::panicking::begin_panic::h181db6e2d0f9c785
[00:02:17]                        at C:\projects\rust\src\libstd/panicking.rs:511
[00:02:17]    4:   0x49697f - cargo_make::log::Logger::error::h5e441a51bc11d3cb
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/log.rs:106
[00:02:17]    5:   0x49fbd0 - cargo_make::command::validate_exit_code::h7165c8f72ef5574f
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/command.rs:55
[00:02:17]    6:   0x49b821 - cargo_make::environment::gitinfo::load_branch::ha61188dc0e49c367
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\environment/gitinfo.rs:74
[00:02:17]    7:   0x49beb9 - cargo_make::environment::gitinfo::load::ha0940e4ec3358022
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\environment/gitinfo.rs:100
[00:02:17]    8:   0x49e91a - cargo_make::environment::setup_env_for_git_repo::h869320ff912b4bb6
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\environment/mod.rs:83
[00:02:17]    9:   0x49f4e5 - cargo_make::environment::setup_env::h1bb130f92a02d3c4
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\environment/mod.rs:163
[00:02:17]   10:   0x4a4aac - cargo_make::cli::run::h8a19113e866bb47f
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/cli.rs:49
[00:02:17]   11:   0x4a5716 - cargo_make::cli::run_for_args::h5d14d9e46916d3c9
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/cli.rs:88
[00:02:17]   12:   0x4a6503 - cargo_make::cli::run_cli::h51274122c19865d9
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/cli.rs:153
[00:02:17]   13:   0x4a6517 - cargo_make::main::h58ec6e08ef64d6d5
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/main.rs:120
[00:02:17]   14:   0x875745 - __rust_maybe_catch_panic
[00:02:17]   15:   0x872d86 - std::rt::lang_start::hae2aefe6738024b9
[00:02:17]   16:   0x4f99f2 - main
[00:02:17]   17:   0x4013e2 - __tmainCRTStartup
[00:02:17]   18: 0x76e47c03 - unit_addrs_search
[00:02:17]   19: 0x778dad2e - unit_addrs_search
[00:02:17] 
[00:02:17] C:\Windows>cd \\?\C:\projects\juniper 
[00:02:17] '\\?\C:\projects\juniper'
[00:02:17] CMD does not support UNC paths as current directories.
[00:02:17] 
[00:02:17] C:\Windows>cd ./juniper_tests 
[00:02:17] The system cannot find the path specified.
[00:02:17] 
[00:02:17] C:\Windows>cargo make ci-flow 
[00:02:17] [cargo-make] info - cargo-make 0.3.47
[00:02:17] [cargo-make] info - Using Build File: Makefile.toml
[00:02:17] [cargo-make] info - Task: ci-flow
[00:02:17] [cargo-make] info - External file not found, skipping.
[00:02:17] [cargo-make] info - Setting Up Env.
[00:02:17] [cargo-make] error - Error while executing command, exit code: 128
[00:02:17] thread 'main' panicked at 'Build Failed.', C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\log.rs:106
[00:02:17] stack backtrace:
[00:02:17]    0:   0x8723cf - std::panicking::default_hook::{{closure}}::h4f40948f481650e9
[00:02:17]    1:   0x871f81 - std::panicking::default_hook::hcafd67ea48a23ee0
[00:02:17]    2:   0x8727b1 - std::panicking::rust_panic_with_hook::he7f3abd836207891
[00:02:17]    3:   0x442a73 - std::panicking::begin_panic::h181db6e2d0f9c785
[00:02:17]                        at C:\projects\rust\src\libstd/panicking.rs:511
[00:02:17]    4:   0x49697f - cargo_make::log::Logger::error::h5e441a51bc11d3cb
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/log.rs:106
[00:02:17]    5:   0x49fbd0 - cargo_make::command::validate_exit_code::h7165c8f72ef5574f
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/command.rs:55
[00:02:17]    6:   0x49b821 - cargo_make::environment::gitinfo::load_branch::ha61188dc0e49c367
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\environment/gitinfo.rs:74
[00:02:17]    7:   0x49beb9 - cargo_make::environment::gitinfo::load::ha0940e4ec3358022
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\environment/gitinfo.rs:100
[00:02:17]    8:   0x49e91a - cargo_make::environment::setup_env_for_git_repo::h869320ff912b4bb6
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\environment/mod.rs:83
[00:02:17]    9:   0x49f4e5 - cargo_make::environment::setup_env::h1bb130f92a02d3c4
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\environment/mod.rs:163
[00:02:17]   10:   0x4a4aac - cargo_make::cli::run::h8a19113e866bb47f
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/cli.rs:49
[00:02:17]   11:   0x4a5716 - cargo_make::cli::run_for_args::h5d14d9e46916d3c9
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/cli.rs:88
[00:02:17]   12:   0x4a6503 - cargo_make::cli::run_cli::h51274122c19865d9
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/cli.rs:153
[00:02:17]   13:   0x4a6517 - cargo_make::main::h58ec6e08ef64d6d5
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/main.rs:120
[00:02:17]   14:   0x875745 - __rust_maybe_catch_panic
[00:02:17]   15:   0x872d86 - std::rt::lang_start::hae2aefe6738024b9
[00:02:17]   16:   0x4f99f2 - main
[00:02:17]   17:   0x4013e2 - __tmainCRTStartup
[00:02:17]   18: 0x76e47c03 - unit_addrs_search
[00:02:17]   19: 0x778dad2e - unit_addrs_search
[00:02:17] 
[00:02:17] C:\Windows>cd \\?\C:\projects\juniper 
[00:02:17] '\\?\C:\projects\juniper'
[00:02:17] CMD does not support UNC paths as current directories.
[00:02:17] 
[00:02:17] C:\Windows>cd ./juniper_iron 
[00:02:17] The system cannot find the path specified.
[00:02:17] 
[00:02:17] C:\Windows>cargo make ci-flow 
[00:02:17] [cargo-make] info - cargo-make 0.3.47
[00:02:17] [cargo-make] info - Using Build File: Makefile.toml
[00:02:17] [cargo-make] info - Task: ci-flow
[00:02:17] [cargo-make] info - External file not found, skipping.
[00:02:17] [cargo-make] info - Setting Up Env.
[00:02:17] [cargo-make] error - Error while executing command, exit code: 128
[00:02:17] thread 'main' panicked at 'Build Failed.', C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\log.rs:106
[00:02:17] stack backtrace:
[00:02:17]    0:   0x8723cf - std::panicking::default_hook::{{closure}}::h4f40948f481650e9
[00:02:17]    1:   0x871f81 - std::panicking::default_hook::hcafd67ea48a23ee0
[00:02:17]    2:   0x8727b1 - std::panicking::rust_panic_with_hook::he7f3abd836207891
[00:02:17]    3:   0x442a73 - std::panicking::begin_panic::h181db6e2d0f9c785
[00:02:17]                        at C:\projects\rust\src\libstd/panicking.rs:511
[00:02:17]    4:   0x49697f - cargo_make::log::Logger::error::h5e441a51bc11d3cb
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/log.rs:106
[00:02:17]    5:   0x49fbd0 - cargo_make::command::validate_exit_code::h7165c8f72ef5574f
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/command.rs:55
[00:02:17]    6:   0x49b821 - cargo_make::environment::gitinfo::load_branch::ha61188dc0e49c367
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\environment/gitinfo.rs:74
[00:02:17]    7:   0x49beb9 - cargo_make::environment::gitinfo::load::ha0940e4ec3358022
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\environment/gitinfo.rs:100
[00:02:17]    8:   0x49e91a - cargo_make::environment::setup_env_for_git_repo::h869320ff912b4bb6
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\environment/mod.rs:83
[00:02:17]    9:   0x49f4e5 - cargo_make::environment::setup_env::h1bb130f92a02d3c4
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\environment/mod.rs:163
[00:02:17]   10:   0x4a4aac - cargo_make::cli::run::h8a19113e866bb47f
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/cli.rs:49
[00:02:17]   11:   0x4a5716 - cargo_make::cli::run_for_args::h5d14d9e46916d3c9
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/cli.rs:88
[00:02:17]   12:   0x4a6503 - cargo_make::cli::run_cli::h51274122c19865d9
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/cli.rs:153
[00:02:17]   13:   0x4a6517 - cargo_make::main::h58ec6e08ef64d6d5
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/main.rs:120
[00:02:17]   14:   0x875745 - __rust_maybe_catch_panic
[00:02:17]   15:   0x872d86 - std::rt::lang_start::hae2aefe6738024b9
[00:02:17]   16:   0x4f99f2 - main
[00:02:17]   17:   0x4013e2 - __tmainCRTStartup
[00:02:17]   18: 0x76e47c03 - unit_addrs_search
[00:02:17]   19: 0x778dad2e - unit_addrs_search
[00:02:17] 
[00:02:17] C:\Windows>cd \\?\C:\projects\juniper 
[00:02:17] '\\?\C:\projects\juniper'
[00:02:17] CMD does not support UNC paths as current directories.
[00:02:17] 
[00:02:17] C:\Windows>cd ./juniper_rocket 
[00:02:17] The system cannot find the path specified.
[00:02:17] 
[00:02:17] C:\Windows>cargo make ci-flow 
[00:02:17] [cargo-make] info - cargo-make 0.3.47
[00:02:17] [cargo-make] info - Using Build File: Makefile.toml
[00:02:17] [cargo-make] info - Task: ci-flow
[00:02:17] [cargo-make] info - External file not found, skipping.
[00:02:17] [cargo-make] info - Setting Up Env.
[00:02:17] [cargo-make] error - Error while executing command, exit code: 128
[00:02:17] thread 'main' panicked at 'Build Failed.', C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\log.rs:106
[00:02:17] stack backtrace:
[00:02:17]    0:   0x8723cf - std::panicking::default_hook::{{closure}}::h4f40948f481650e9
[00:02:17]    1:   0x871f81 - std::panicking::default_hook::hcafd67ea48a23ee0
[00:02:17]    2:   0x8727b1 - std::panicking::rust_panic_with_hook::he7f3abd836207891
[00:02:17]    3:   0x442a73 - std::panicking::begin_panic::h181db6e2d0f9c785
[00:02:17]                        at C:\projects\rust\src\libstd/panicking.rs:511
[00:02:17]    4:   0x49697f - cargo_make::log::Logger::error::h5e441a51bc11d3cb
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/log.rs:106
[00:02:17]    5:   0x49fbd0 - cargo_make::command::validate_exit_code::h7165c8f72ef5574f
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/command.rs:55
[00:02:17]    6:   0x49b821 - cargo_make::environment::gitinfo::load_branch::ha61188dc0e49c367
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\environment/gitinfo.rs:74
[00:02:17]    7:   0x49beb9 - cargo_make::environment::gitinfo::load::ha0940e4ec3358022
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\environment/gitinfo.rs:100
[00:02:17]    8:   0x49e91a - cargo_make::environment::setup_env_for_git_repo::h869320ff912b4bb6
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\environment/mod.rs:83
[00:02:17]    9:   0x49f4e5 - cargo_make::environment::setup_env::h1bb130f92a02d3c4
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\environment/mod.rs:163
[00:02:17]   10:   0x4a4aac - cargo_make::cli::run::h8a19113e866bb47f
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/cli.rs:49
[00:02:17]   11:   0x4a5716 - cargo_make::cli::run_for_args::h5d14d9e46916d3c9
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/cli.rs:88
[00:02:17]   12:   0x4a6503 - cargo_make::cli::run_cli::h51274122c19865d9
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/cli.rs:153
[00:02:17]   13:   0x4a6517 - cargo_make::main::h58ec6e08ef64d6d5
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/main.rs:120
[00:02:17]   14:   0x875745 - __rust_maybe_catch_panic
[00:02:17]   15:   0x872d86 - std::rt::lang_start::hae2aefe6738024b9
[00:02:17]   16:   0x4f99f2 - main
[00:02:17]   17:   0x4013e2 - __tmainCRTStartup
[00:02:17]   18: 0x76e47c03 - unit_addrs_search
[00:02:17]   19: 0x778dad2e - unit_addrs_search
[00:02:17] 
[00:02:17] C:\Windows>cd \\?\C:\projects\juniper 
[00:02:17] '\\?\C:\projects\juniper'
[00:02:17] CMD does not support UNC paths as current directories.
[00:02:17] [cargo-make] error - Error while executing command, exit code: 1
[00:02:17] thread 'main' panicked at 'Build Failed.', C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\log.rs:106
[00:02:17] stack backtrace:
[00:02:17]    0:   0x8723cf - std::panicking::default_hook::{{closure}}::h4f40948f481650e9
[00:02:17]    1:   0x871f81 - std::panicking::default_hook::hcafd67ea48a23ee0
[00:02:17]    2:   0x8727b1 - std::panicking::rust_panic_with_hook::he7f3abd836207891
[00:02:17]    3:   0x442a73 - std::panicking::begin_panic::h181db6e2d0f9c785
[00:02:17]                        at C:\projects\rust\src\libstd/panicking.rs:511
[00:02:17]    4:   0x49697f - cargo_make::log::Logger::error::h5e441a51bc11d3cb
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/log.rs:106
[00:02:17]    5:   0x49fbd0 - cargo_make::command::validate_exit_code::h7165c8f72ef5574f
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/command.rs:55
[00:02:17]    6:   0x4a1368 - cargo_make::command::run_command::hddec0a2d2d409797
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/command.rs:208
[00:02:17]    7:   0x4a0b9d - cargo_make::command::run_script::hb4302db5ca32d4f6
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/command.rs:171
[00:02:17]    8:   0x4a1516 - cargo_make::command::run::h2567240627e21d6b
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/command.rs:228
[00:02:17]    9:   0x4a2439 - cargo_make::runner::run_task::h5d2e9c63243d4bf2
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/runner.rs:65
[00:02:17]   10:   0x4a25a0 - cargo_make::runner::run_task_flow::hb7abbc951cf78885
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/runner.rs:78
[00:02:17]   11:   0x4a3ed3 - cargo_make::runner::run_flow::h92bede15fbcca898
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/runner.rs:243
[00:02:17]   12:   0x4a4082 - cargo_make::runner::run::h2e6a9d1aeb452b8c
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/runner.rs:261
[00:02:17]   13:   0x4a4ba6 - cargo_make::cli::run::h8a19113e866bb47f
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/cli.rs:56
[00:02:17]   14:   0x4a5716 - cargo_make::cli::run_for_args::h5d14d9e46916d3c9
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/cli.rs:88
[00:02:17]   15:   0x4a6503 - cargo_make::cli::run_cli::h51274122c19865d9
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/cli.rs:153
[00:02:17]   16:   0x4a6517 - cargo_make::main::h58ec6e08ef64d6d5
[00:02:17]                        at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/main.rs:120
[00:02:17]   17:   0x875745 - __rust_maybe_catch_panic
[00:02:17]   18:   0x872d86 - std::rt::lang_start::hae2aefe6738024b9
[00:02:17]   19:   0x4f99f2 - main
[00:02:17]   20:   0x4013e2 - __tmainCRTStartup
[00:02:17]   21: 0x76e47c03 - unit_addrs_search
[00:02:17]   22: 0x778dad2e - unit_addrs_search
[00:02:17] Command exited with code 101

Overriding default tasks non-trivial/annoying.

Problem Description

Creating a default task in project's Makefile.toml still pulls in dependencies from global default.

More generally, the global defaults are quite heavyweight and overprescriptive.

Code Example

$ cat Makefile.toml
[tasks.default]
dependencies = ["build"]

[tasks.build]
command = "cargo"
args = ["build", "--release"]
dependencies = []

Error Stack/Info (if any)


$ cargo make
[cargo-make] INFO - cargo-make 0.9.2
[cargo-make] INFO - Using Build File: Makefile.toml
[cargo-make] INFO - Task: default
[cargo-make] INFO - Setting Up Env.
[cargo-make] INFO - Running Task: init // ?? Why?
[cargo-make] INFO - Running Task: pre-format
[cargo-make] INFO - Running Task: format-stable
[cargo-make] INFO - Execute Command: "cargo" "fmt" "--" "--write-mode=overwrite" "--force"
Unrecognized option: 'force'.
usage: rustfmt [options] <file>...

Options:
    -h, --help          show this message
    -V, --version       show version information
    -v, --verbose       show progress
        --write-mode [replace|overwrite|display|diff|coverage|checkstyle]
                        mode to write in (not usable when piping from stdin)
        --skip-children
                        don't reformat child modules
        --config-help   show details of rustfmt configuration options
        --config-path [Path for the configuration file]
                        Recursively searches the given path for the
                        rustfmt.toml config file. If not found reverts to the
                        input file path

[cargo-make] ERROR - Error while executing command, exit code: 1
[cargo-make] WARN - Build Failed.

allow environment variable to refer to each other

Problem Description

Please allow environment variable to be computed from other variable. I can sort of do it in the task but then I have to declare unnecessary dependency.

Code Example

[env]
MAKE = "ford"
YEAR = "2014"
MODEL = "${MAKE} ${YEAR}

Error Stack/Info (if any)

Current MODEL is set to be empty.

Tasks new run type - rust code

Apart of running other tasks, commands and scripts, add support for running rust code.
This way we can have multi platform steps that do not have cargo plugins or commands without writing scripts for each platform.
In addition rust developers should feel comfortable to write tasks in rust code.

add support for script_file

Instead of embedding the script text which could be long if using @rust simply direct to a file using a new task attribute: script_file

coverall support

Just like codecov support, should add task to publish coverage report to coverall

cargo-make build without local git repository fail

Problem Description

cargo make fails on projects without git repository. Stripped down example below for getting the 128 error code.

Steps to reproduce

cargo new hello_cargo --bin --vcs none
cd hello_cargo
cargo make

Error Stack/Info (if any)

[cargo-make] INFO - cargo-make 0.9.0
[cargo-make] INFO - Using Build File: Makefile.toml
[cargo-make] INFO - Task: default
[cargo-make] INFO - External file not found, skipping.
[cargo-make] INFO - Setting Up Env.
[cargo-make] ERROR - Error while executing command, exit code: 128
[cargo-make] WARN - Build Failed.

add cache in CI builds

For faster execution, use cache in CI builds, but force cargo-make installation to use latest features.

set environment variable based on script evaluation

Problem Description

I need to set environment variable based on result of the script. This variable will be feed to another task. This is blocker for me to use this tool. Something like this will be good way to configure env variable.

Code Example

[env]
name = "count"
description = "count of file"
script = "wc file.txt"

[task.echo]
script = ["echo ${count}]

Error Stack/Info (if any)

Environment variable issue on windows

The following won't work as expected on bash nor msys2:

[config]
skip_core_tasks = true

[tasks.default]
script = [
    "echo \"var: ${CARGO_MAKE_CRATE_VERSION}\""
]

Emits:

$ cargo make
[cargo-make] INFO - cargo-make 0.9.4
[cargo-make] INFO - Using Build File: Makefile.toml
[cargo-make] INFO - Task: default
[cargo-make] INFO - Setting Up Env.
[cargo-make] INFO - Running Task: empty
[cargo-make] INFO - Running Task: default

C:\workspace2\gen>cd C:\workspace2\gen

C:\workspace2\gen>echo "var: ${CARGO_MAKE_CRATE_VERSION}"
"var: ${CARGO_MAKE_CRATE_VERSION}"
[cargo-make] INFO - Running Task: empty
[cargo-make] INFO - Build Done  in 0 seconds.

Toolchain override

Similar to the platform override, it would be very nice to have a toolchain override for stable / beta / nightly.

This is most useful for running additional stuff on nightly, or ignoring things on nightly.

This can of course be already done with a condition_script, but that's pretty awkward compared to the override, Especially since you need a different script for windows and linux.

Even better would be a combination with the platform.

So, something like this:

[tasks.build]
...

[tasks.build.nightly]
...

[tasks.build.windows.nightly]
...

allow condition in the environment

Problem Description

Similar to task, environment can be set based on condition.

Code Example

[env]
DIR="ls"

[env.window]
DIR="dir"

Error Stack/Info (if any)

Workspace target directory not being passed in `coverage` flow when run locally

Problem Description

Is the coverage task intended to only be run in CI builds and not locally?

When running cargo make coverage locally, the coverage-kcov task misses binaries built in the <workspace_dir>/target/debug/deps directory, seemingly because it misses this script:

[tasks.workspace-members-ci]
description = "Runs the ci-flow for every workspace member."
script = [
'''
#prevent codecov publish in member builds
export CARGO_MAKE_SKIP_CODECOV="true"

export CARGO_MAKE_WORKSPACE_TARGET_DIRECTORY="${CARGO_MAKE_WORKING_DIRECTORY}/target"

#output coverage data goes into workspace level
export CARGO_MAKE_COVERAGE_REPORT_DIRECTORY="${CARGO_MAKE_WORKSPACE_TARGET_DIRECTORY}/coverage"

cargo make --loglevel=${CARGO_MAKE_LOG_LEVEL} ci-flow

unset CARGO_MAKE_COVERAGE_REPORT_DIRECTORY
unset CARGO_MAKE_WORKSPACE_TARGET_DIRECTORY
unset CARGO_MAKE_SKIP_CODECOV
'''
]

Execution Example

I edited the coverage-kcov script a bit to see if CARGO_MAKE_WORKSPACE_TARGET_DIRECTORY was populated, but it wasn't:

[cargo-make] INFO - Execute Command: "sh" "/tmp/cargo-make/RFPj37lX46.sh"
+ cd /home/azriel/work/gitlab/azriel91/free_will/crate/application
+ echo Working Directory: /home/azriel/work/gitlab/azriel91/free_will/crate/application
Working Directory: /home/azriel/work/gitlab/azriel91/free_will/crate/application
+ echo CARGO_MAKE_WORKSPACE_TARGET_DIRECTORY: 
CARGO_MAKE_WORKSPACE_TARGET_DIRECTORY: 
+ TARGET_DIRECTORY=target/coverage
+ [ -n  ]
+ mkdir -p ./target/coverage
+ BINARY_DIRECTORY=target/debug/deps
+ [ -n  ]
+ echo Running unit tests from directory: target/debug/deps
Running unit tests from directory: target/debug/deps
+ target/debug/deps/application*
/tmp/cargo-make/RFPj37lX46.sh: 22: /tmp/cargo-make/RFPj37lX46.sh: target/debug/deps/application*: not found

Error Stack/Info (if any)

If I export CARGO_MAKE_WORKSPACE_TARGET_DIRECTORY and CARGO_MAKE_COVERAGE_REPORT_DIRECTORY myself, I do get the coverage generated in the right place.

Panic on failing task

Seems like the current stable version panics when a task fails.

Simple example:

[tasks.post-build]
dependencies = [
    "format",
    "clippy"
]
...
...
warning: rustfmt may have failed to format. See previous 1 errors.
[cargo-make] ERROR - Error while executing command, exit code: 3
thread 'main' panicked at 'Build Failed.', /home/theduke/.cargo/registry/src/github.com-1ecc6299db9ec823/cargo-make-0.3.75/src/logger.rs:56:16
stack backtrace:
   0:     0x560a6c305393 - std::sys::imp::backtrace::tracing::imp::unwind_backtrace::ha36f9d6000a258d0
                               at /checkout/src/libstd/sys/unix/backtrace/tracing/gcc_s.rs:49
   1:     0x560a6c3019ca - std::sys_common::backtrace::_print::h9e51e0c7e57504cc
                               at /checkout/src/libstd/sys_common/backtrace.rs:71
   2:     0x560a6c308fe3 - std::panicking::default_hook::{{closure}}::h6ad513f5b7fa7e45
                               at /checkout/src/libstd/sys_common/backtrace.rs:60
                               at /checkout/src/libstd/panicking.rs:381
   3:     0x560a6c308d52 - std::panicking::default_hook::h92972e21fe795ab1
                               at /checkout/src/libstd/panicking.rs:397
   4:     0x560a6c309447 - std::panicking::rust_panic_with_hook::h8231d9bc11839b47
                               at /checkout/src/libstd/panicking.rs:577
   5:     0x560a6c198f2a - std::panicking::begin_panic::h527cec84396e91a6
   6:     0x560a6c1b4e43 - cargo_make::logger::init::{{closure}}::h47bedaf674e30241
   7:     0x560a6c2e861c - <fern::log_impl::Dispatch as fern::FernLog>::log_args::h632e7f5f8ffa61f3
   8:     0x560a6c2f3f1a - log::__log::h70c54316b85ca3db
   9:     0x560a6c1b8c94 - cargo_make::command::validate_exit_code::h1aeb6ec528c2e2c5
  10:     0x560a6c1ba24a - cargo_make::command::run_command::hea93f14a5edab934
  11:     0x560a6c1bb498 - cargo_make::runner::run_task::hb7027958db09b457
  12:     0x560a6c1bd56b - cargo_make::runner::run_flow::h6ce16b508ef6d43c
  13:     0x560a6c1bd68f - cargo_make::runner::run::hcb7541bc671237da
  14:     0x560a6c1a98db - cargo_make::main::he7241edaf43a5955
  15:     0x560a6c31024c - __rust_maybe_catch_panic
                               at /checkout/src/libpanic_unwind/lib.rs:99
  16:     0x560a6c309c6b - std::rt::lang_start::hb98200139e7807ed
                               at /checkout/src/libstd/panicking.rs:459
                               at /checkout/src/libstd/panic.rs:361
                               at /checkout/src/libstd/rt.rs:59
  17:     0x7fc8c99404c9 - __libc_start_main
  18:     0x560a6c182719 - _start
  19:                0x0 - <unknown>

Conditions are not respected for task with dependencies

[tasks.whatever]
condition = {channels = ["stable"]}
dependencies = [
    "some",
    "deps",
]

I would expect the condition to block the whole task from running, which it does for a task with a script definition, but not for a task with dependencies.

I read the documentation and it says this is the intended behaviour, but I find this very weird. It makes running tasks conditionally kind of awkward for workspaces, because you have to define a wrapper task with run_task in every workspace member just to enable checking a condition.

Wha'ts the reasoning behind this behaviour?


ps: my workaround for now was to do this:

[tasks.scoped-ci-flow]
description = "CI task will run cargo build and cargo test with verbose output"
dependencies = [
    "pre-ci-flow",
    "pre-build",
    "build-verbose",
    "post-build",
    "pre-test",
    "test-verbose",
    "post-test",
    "ci-coverage-flow",
    "post-ci-flow"
]

[tasks.ci-flow]
condition = { channels = ["nightly"] }
run_task = "scoped-ci-flow"
dependencies = []

Update coverage pattern requirements

  • support user level configuration to allow user level pattern instead of internal to include/exclude tests
  • exclude binaries with same name as crate name

Based on comments in #44

`cargo make` in workspace does not work when members are not explicitly listed

Problem Description

cargo make panics when workspace members are not explicitly listed.

Code Example

I have the following crate structure:

  • workspace_test is a root workspace crate
  • member1 and member2 are members
workspace_test
├── Cargo.lock
├── Cargo.toml
├── member
│  ├── member1
│  └── member2
└── src
   └── lib.rs

In workspace_test I have the following Cargo.toml:

[package]
name = "workspace_test"
version = "0.1.0"
authors = ["Azriel Hoh <[email protected]>"]

[dependencies]
member1 = { path = "./member/member1" }
member2 = { path = "./member/member2" }

[workspace]
# note: no members explicitly listed

This is a valid set up based on Cargo's workspace section docs:

All path dependencies residing in the workspace directory become members.

Error Stack/Info (if any)

When I run cargo make I get:

[cargo-make] info - cargo-make 0.3.58
[cargo-make] info - Using Build File: Makefile.toml
[cargo-make] info - Task: default
[cargo-make] info - External file not found, skipping.
[cargo-make] info - Setting Up Env.
[cargo-make] info - Setting Up Env.
[cargo-make] info - Running Task: init
[cargo-make] info - Setting Up Env.
[cargo-make] info - Running Task: workspace
[cargo-make] info - Setting Up Env.
thread 'main' panicked at 'index out of bounds: the len is 0 but the index is 0', /Users/travis/build/rust-lang/rust/src/liballoc/vec.rs:1555:10
stack backtrace:
   0:        0x1060c0af3 - std::sys::imp::backtrace::tracing::imp::unwind_backtrace::hea646f639f5724a9
   1:        0x1060c441a - std::panicking::default_hook::{{closure}}::h85c76fcfe66fd3c4
   2:        0x1060c40d2 - std::panicking::default_hook::h3eec3c203ceba436
   3:        0x1060c6692 - std::panicking::rust_panic_with_hook::h70dc815ddbea04a3
   4:        0x1060c6574 - std::panicking::begin_panic::h964e463242cdda22
   5:        0x1060c6442 - std::panicking::begin_panic_fmt::h5836acd93f32a20b
   6:        0x1060c63aa - rust_begin_unwind
   7:        0x1060ef373 - core::panicking::panic_fmt::hf5ab42af92a0e0c7
   8:        0x1060ef2e8 - core::panicking::panic_bounds_check::h0d8311933e2799f3
   9:        0x105ff9d6b - cargo_make::command::run_script::hb0271043a70e11b9
  10:        0x105ffd6a7 - cargo_make::runner::run_task::h1e124d98163bfa20
  11:        0x105fffca5 - cargo_make::runner::run_flow::h4fa2ea28900b8575
  12:        0x106002c4a - cargo_make::cli::run_for_args::hb238ff9e91649f98
  13:        0x10600480f - cargo_make::main::heaf0a96bae02441f
  14:        0x1060c776c - __rust_maybe_catch_panic
  15:        0x1060c6ae8 - std::rt::lang_start::h97e5b1c9e293b92d

No line numbers, because it's probably release mode, and also I'm on OS X which rustc doesn't give line numbers anyway. However we can at least see the panic happens in command.rs#run_script.

Btw, if I add a glob like so:

[workspace]
members = ["member/*"]

which is also a valid configuration:

The path dependency can also use globs to match multiple paths.

Running cargo make from the workspace root will run the default task on workspace_test and member, but not member2

I'd've started looking into why, but then I had to type this twice because I accidentally clicked on a link and lost the first post ._.. Btw awesome crate!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.