Skip to content

feat(task): sub-tasks in run lists#6212

Merged
jdx merged 7 commits intomainfrom
feat/task-dependency-groups
Sep 6, 2025
Merged

feat(task): sub-tasks in run lists#6212
jdx merged 7 commits intomainfrom
feat/task-dependency-groups

Conversation

@jdx
Copy link
Owner

@jdx jdx commented Sep 6, 2025

No description provided.

Copilot AI review requested due to automatic review settings September 6, 2025 14:35
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR introduces task dependency groups with support for parallel execution within task definitions, expanding the run field to accept not just shell commands but also task references and parallel task groups.

  • Adds TaskRunCommand enum with three variants: Script, Task, and TaskGroup
  • Updates task execution logic to handle mixed command types including sequential task references and parallel groups
  • Maintains backward compatibility with existing string-based task definitions

Reviewed Changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 4 comments.

File Description
src/task/mod.rs Introduces TaskRunCommand enum and updates Task struct to use it instead of Vec
src/config/config_file/mise_toml.rs Updates task deserialization to use TaskRunCommand::Script for backward compatibility
src/cli/tasks/info.rs Updates task info display to handle TaskRunCommand formatting
src/cli/run.rs Adds execution logic for task references and parallel task groups

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

src/cli/run.rs Outdated
use crate::file::display_path;
use crate::task::task_file_providers::TaskFileProvidersBuilder;
use crate::task::{Deps, GetMatchingExt, Task};
use crate::task::{Deps, GetMatchingExt, Task, TaskRunCommand};
Copy link

Copilot AI Sep 6, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing import for JoinSet which is used in the exec_task_group method but not imported. This will cause a compilation error.

Copilot uses AI. Check for mistakes.
src/cli/run.rs Outdated
}

// Execute tasks in parallel using JoinSet
let mut join_set = JoinSet::new();
Copy link

Copilot AI Sep 6, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

JoinSet is used but not imported. Add use tokio::task::JoinSet; to the imports at the top of the file.

Copilot uses AI. Check for mistakes.
src/cli/run.rs Outdated
for cmd in task.run() {
match cmd {
TaskRunCommand::Script(script) => {
self.exec_script(script, &[], task, &BTreeMap::new(), prefix)
Copy link

Copilot AI Sep 6, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using an empty BTreeMap::new() instead of the provided env parameter discards the environment variables that should be passed to the task execution. This should use _env parameter or the actual environment from the calling context.

Suggested change
self.exec_script(script, &[], task, &BTreeMap::new(), prefix)
self.exec_script(script, &[], task, _env, prefix)

Copilot uses AI. Check for mistakes.
src/cli/run.rs Outdated
let continue_on_error = self.continue_on_error;

for task in task_refs {
let _config = Arc::clone(config);
Copy link

Copilot AI Sep 6, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The _config variable is cloned but never used in the spawned task. Either remove this unused variable or implement the actual task execution logic that would use it.

Suggested change
let _config = Arc::clone(config);

Copilot uses AI. Check for mistakes.
cursor[bot]

This comment was marked as outdated.

cursor[bot]

This comment was marked as outdated.

@jdx jdx changed the title feat(task): add support for task dependency groups with parallel execution feat(task): interface for executing tasks in series Sep 6, 2025
cursor[bot]

This comment was marked as outdated.

@github-actions
Copy link

github-actions bot commented Sep 6, 2025

Hyperfine Performance

mise x -- echo

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2025.9.4 x -- echo 18.6 ± 0.4 18.0 20.7 1.00
mise x -- echo 18.9 ± 0.6 18.1 21.5 1.02 ± 0.04

mise env

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2025.9.4 env 18.1 ± 0.3 17.4 21.0 1.00
mise env 18.3 ± 0.6 17.3 25.8 1.01 ± 0.04

mise hook-env

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2025.9.4 hook-env 17.6 ± 0.3 17.0 19.4 1.00 ± 0.03
mise hook-env 17.6 ± 0.3 17.1 21.3 1.00

mise ls

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2025.9.4 ls 16.0 ± 0.2 15.6 16.8 1.00 ± 0.02
mise ls 15.9 ± 0.2 15.6 17.1 1.00

xtasks/test/perf

Command mise-2025.9.4 mise Variance
install (cached) 162ms ✅ 100ms +62%
ls (cached) 61ms 61ms +0%
bin-paths (cached) 65ms 65ms +0%
task-ls (cached) 461ms 464ms +0%

✅ Performance improvement: install cached is 62%

cursor[bot]

This comment was marked as outdated.

cursor[bot]

This comment was marked as outdated.

cursor[bot]

This comment was marked as outdated.

@jdx jdx force-pushed the feat/task-dependency-groups branch 2 times, most recently from 8860b37 to 2c940df Compare September 6, 2025 18:01
cursor[bot]

This comment was marked as outdated.

@jdx jdx closed this Sep 6, 2025
@jdx jdx force-pushed the feat/task-dependency-groups branch from 2c940df to 0a979ac Compare September 6, 2025 18:36
@jdx jdx reopened this Sep 6, 2025
@jdx jdx changed the title feat(task): interface for executing tasks in series feat(task): sub-tasks in run lists Sep 6, 2025
@jdx jdx force-pushed the feat/task-dependency-groups branch from 24847af to b793988 Compare September 6, 2025 19:07
cursor[bot]

This comment was marked as outdated.

@jdx jdx force-pushed the feat/task-dependency-groups branch from c39b484 to 24d54c2 Compare September 6, 2025 20:10
@jdx jdx force-pushed the feat/task-dependency-groups branch 2 times, most recently from c8e4057 to 1301a7c Compare September 6, 2025 20:16
@jdx jdx force-pushed the feat/task-dependency-groups branch from 1301a7c to f03b0bc Compare September 6, 2025 20:19
@jdx jdx merged commit 67ad9c9 into main Sep 6, 2025
19 checks passed
@jdx jdx deleted the feat/task-dependency-groups branch September 6, 2025 20:37
@jdx jdx mentioned this pull request Sep 6, 2025
jdx added a commit that referenced this pull request Sep 6, 2025
It is no longer necessary that we have #6212
jdx added a commit that referenced this pull request Sep 6, 2025
It is no longer necessary that we have #6212
jdx added a commit that referenced this pull request Sep 6, 2025
It is no longer necessary that we have
#6212
jdx added a commit that referenced this pull request Sep 6, 2025
### 🚀 Features

- **(task)** add timeout support for task execution by @jdx in
[#6216](#6216)
- **(task)** sub-tasks in run lists by @jdx in
[#6212](#6212)

### Chore

- fix npm publish action by @jdx in
[14f4b09](14f4b09)
- fix cloudflare release action by @jdx in
[00afa25](00afa25)
- fix git-cliff for release notes by @jdx in
[15a9aed](15a9aed)

Co-authored-by: mise-en-dev <release@mise.jdx.dev>
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request Sep 8, 2025
## [2025.9.5](https://github.com/jdx/mise/compare/v2025.9.4..v2025.9.5) - 2025-09-06

### 🚀 Features

- **(task)** add timeout support for task execution by @jdx in [#6216](jdx/mise#6216)
- **(task)** sub-tasks in run lists by @jdx in [#6212](jdx/mise#6212)

### Chore

- fix npm publish action by @jdx in [14f4b09](jdx/mise@14f4b09)
- fix cloudflare release action by @jdx in [00afa25](jdx/mise@00afa25)
- fix git-cliff for release notes by @jdx in [15a9aed](jdx/mise@15a9aed)

## [2025.9.4](https://github.com/jdx/mise/compare/v2025.9.3..v2025.9.4) - 2025-09-06

### Chore

- fix git-cliff on release by @jdx in [3c388f2](jdx/mise@3c388f2)

## [2025.9.3](https://github.com/jdx/mise/compare/v2025.9.2..v2025.9.3) - 2025-09-06

### 🚀 Features

- **(backend)** improve http error when platform url missing; list available platforms by @jdx in [#6200](jdx/mise#6200)
- **(cli)** support scoped packages for all backend types by @earlgray283 in [#6213](jdx/mise#6213)
- **(http)** add URL replacement feature for HTTP requests by @ThomasSteinbach in [#6207](jdx/mise#6207)

### 🐛 Bug Fixes

- **(backend)** preserve arch underscores in platform keys by @jdx in [#6202](jdx/mise#6202)
- **(task)** resolve hanging issue with multiple depends_post by @jdx in [#6206](jdx/mise#6206)
- couldn't download node binary in Alpine, even if it exists in the mirror url by @Hazer in [#5972](jdx/mise#5972)
- **breaking** use config_root for env._.path by @jdx in [#6204](jdx/mise#6204)
- bugfix for paths that include spaces by @karim-elkholy in [#6210](jdx/mise#6210)

### 📚 Documentation

- improve release notes generation by @jdx in [#6197](jdx/mise#6197)
- fix release changelog contributor reporting by @jdx in [#6201](jdx/mise#6201)

### Chore

- use fine-grained gh token by @jdx in [#6208](jdx/mise#6208)
- use settings.local.json for claude config by @jdx in [fd0fba9](jdx/mise@fd0fba9)

### New Contributors

- @ThomasSteinbach made their first contribution in [#6207](jdx/mise#6207)
- @earlgray283 made their first contribution in [#6213](jdx/mise#6213)
- @karim-elkholy made their first contribution in [#6210](jdx/mise#6210)
- @Hazer made their first contribution in [#5972](jdx/mise#5972)

## [2025.9.2](https://github.com/jdx/mise/compare/v2025.9.1..v2025.9.2) - 2025-09-05

### 🐛 Bug Fixes

- **(ci)** set required environment variables for npm publishing by @jdx in [#6189](jdx/mise#6189)
- **(release)** clean up extra newlines in release notes formatting by @jdx in [#6190](jdx/mise#6190)
- **(release)** add proper newline after New Contributors section in cliff template by @jdx in [#6194](jdx/mise#6194)
- **(release)** fix changelog formatting to remove extra blank lines by @jdx in [#6195](jdx/mise#6195)
- **(release)** restore proper newline after New Contributors section by @jdx in [#6196](jdx/mise#6196)

### 🚜 Refactor

- **(ci)** split release workflow into separate specialized workflows by @jdx in [#6193](jdx/mise#6193)

### Chore

- **(release)** require GitHub Actions environment for release-plz script by @jdx in [#6191](jdx/mise#6191)

## [2025.9.1](https://github.com/jdx/mise/compare/v2025.9.0..v2025.9.1) - 2025-09-05

### 🐛 Bug Fixes

- python nested venv path order by @elvismacak in [#6124](jdx/mise#6124)
- resolve immutable release workflow and VERSION file timing issues by @jdx in [#6187](jdx/mise#6187)

### New Contributors

- @elvismacak made their first contribution in [#6124](jdx/mise#6124)

## [2025.9.0](https://github.com/jdx/mise/compare/v2025.8.21..v2025.9.0) - 2025-09-05

### 🚀 Features

- allow set/unset backend aliases by @roele in [#6172](jdx/mise#6172)

### 🐛 Bug Fixes

- **(aqua)** respect order of asset_strs by @risu729 in [#6143](jdx/mise#6143)
- **(java)** treat freebsd as linux (assuming linux compatability) by @roele in [#6161](jdx/mise#6161)
- **(nushell/windows)** Fix $env.PATH getting converted to a string by @zackyancey in [#6157](jdx/mise#6157)
- **(sync)** create uv_versions_path dir if it doesn't exist by @risu729 in [#6142](jdx/mise#6142)
- **(ubi)** show relevent error messages for v-prefixed tags by @risu729 in [#6183](jdx/mise#6183)
- remove nodejs/golang alias migrate code by @risu729 in [#6141](jdx/mise#6141)
- mise activate not working on powershell v5 by @L0RD-ZER0 in [#6168](jdx/mise#6168)

### 📚 Documentation

- **(task)** remove word "additional" to avoid confusions by @risu729 in [#6159](jdx/mise#6159)

### Chore

- update Cargo.lock by @risu729 in [#6184](jdx/mise#6184)

### New Contributors

- @zackyancey made their first contribution in [#6157](jdx/mise#6157)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants