Skip to content

fix(schema): allow nested arrays in task.depends#6265

Merged
jdx merged 7 commits intojdx:mainfrom
risu729:depends-arg-arr-schema
Sep 11, 2025
Merged

fix(schema): allow nested arrays in task.depends#6265
jdx merged 7 commits intojdx:mainfrom
risu729:depends-arg-arr-schema

Conversation

@risu729
Copy link
Contributor

@risu729 risu729 commented Sep 11, 2025

This is allowed and parsed correctly, but was not allowed by the schema.

[task.test]
depends = ["other", ["other2", "--arg", "--arg2"]]

Please close this if this was because it's deprecated.

Copilot AI review requested due to automatic review settings September 11, 2025 12:37
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 fixes the JSON schema to allow nested arrays in task dependency definitions. The main change enables tasks to specify their dependencies using arrays of arrays, where each dependency can be either a string (task name) or an array of strings (task name with arguments).

  • Updates the depends and depends_post properties in the task schema to support nested array structures
  • Reformats several array definitions to use multi-line format for better readability

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

schema/mise.json Outdated
Comment on lines +1160 to +1172
"type": {
"oneOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
]
}
Copy link

Copilot AI Sep 11, 2025

Choose a reason for hiding this comment

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

The 'type' property is incorrectly nested. It should be at the same level as 'description', not as a value of 'type'. This creates an invalid JSON schema structure.

Copilot uses AI. Check for mistakes.
Copy link
Owner

@jdx jdx Sep 11, 2025

Choose a reason for hiding this comment

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

I think copilot is correct

@jdx
Copy link
Owner

jdx commented Sep 11, 2025

bugbot run

@jdx
Copy link
Owner

jdx commented Sep 11, 2025

if it's not too much of a pain, it might be nice to use taplo to validate our json schema in CI

cursor[bot]

This comment was marked as outdated.

@jdx jdx enabled auto-merge (squash) September 11, 2025 12:42
auto-merge was automatically disabled September 11, 2025 12:45

Head branch was pushed to by a user without write access

@risu729 risu729 force-pushed the depends-arg-arr-schema branch from 19109f7 to b5a10e6 Compare September 11, 2025 12:45
@jdx
Copy link
Owner

jdx commented Sep 11, 2025

bugbot run

cursor[bot]

This comment was marked as outdated.

@risu729
Copy link
Contributor Author

risu729 commented Sep 11, 2025

Bug: Task Argument Schema Mismatch

The wait_for field's schema was not updated to allow nested arrays for task arguments. This creates an inconsistency with depends and depends_post, which now support this syntax for their dependency lists, despite their similar purpose.

schema/mise.json#L1174-L1200

mise/schema/mise.json

Lines 1174 to 1200 in b5a10e6

},
"wait_for": {
"oneOf": [
{
"description": "task with args to wait for completion first",
"type": "string"
},
{
"description": "task with args to wait for completion first",
"items": {
"description": "task name and args",
"type": "string"
},
"type": "array"
}
]
},
"description": {
"description": "description of task",
"type": "string"
},
"dir": {
"default": "{{ config_root }}",
"description": "directory to run script in, default is the project's base directory",
"type": "string"
},
"env": {

This is intentional, as mise does allow it, but it's meaningless.

@risu729
Copy link
Contributor Author

risu729 commented Sep 11, 2025

I think taplo doesn't support validating the schema itself.
I'll add this somewhere.

mise x npm:ajv-cli -- ajv compile -s schema/mise.json --spec=draft2019

@jdx jdx enabled auto-merge (squash) September 11, 2025 16:05
auto-merge was automatically disabled September 11, 2025 16:21

Head branch was pushed to by a user without write access

@risu729 risu729 force-pushed the depends-arg-arr-schema branch from 3b51014 to 09ab492 Compare September 11, 2025 16:39
@risu729
Copy link
Contributor Author

risu729 commented Sep 11, 2025

Sorry, the ajv usage was wrong. I have now fixed it.

@jdx jdx merged commit 4ce4dcd into jdx:main Sep 11, 2025
17 checks passed
@jdx jdx mentioned this pull request Sep 11, 2025
@risu729 risu729 deleted the depends-arg-arr-schema branch September 11, 2025 19:22
jdx added a commit that referenced this pull request Sep 11, 2025
### 🐛 Bug Fixes

- **(backend)** make HTTP installs atomic and serialize with cache lock
by @jdx in [#6259](#6259)
- **(env)** allow nested env._.path directives by @risu729 in
[#6160](#6160)
- **(env)** disallow nested env objects by @risu729 in
[#6268](#6268)
- **(schema)** allow nested arrays in task.depends by @risu729 in
[#6265](#6265)
- **(task)** resolve jobs=1 hang and keep-order panic; improve Ctrl-C
handling by @jdx in [#6264](#6264)
- **(tasks)** stop CLI group after first failure without
--continue-on-error by @jdx in
[#6270](#6270)

### 📚 Documentation

- fixed toml issues in URL replacements settings documentation by
@ThomasSteinbach in [#6269](#6269)

### Chore

- **(schema)** strict oneOf branches and DRY env_directive in schemas by
@jdx in [#6271](#6271)
- add schema linter by @risu729 in
[#6267](#6267)

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

### 🐛 Bug Fixes

- **(ci)** properly exclude aqua-registry files from hk linting by @jdx in [42d7758](jdx/mise@42d7758)

### Chore

- **(release)** embed aqua-registry under crate and publish like vfox by @jdx in [#6306](jdx/mise#6306)
- ignore aqua-registry assets from prettier by @jdx in [047d77b](jdx/mise@047d77b)
- disable "useless cat" shellcheck by @jdx in [a6def59](jdx/mise@a6def59)

## [2025.9.11](https://github.com/jdx/mise/compare/v2025.9.10..v2025.9.11) - 2025-09-16

### 📦 Registry

- indicate aws-cli is v2 by @jayvdb in [#6300](jdx/mise#6300)

### 🚀 Features

- **(ci)** run all registry tools when workflow_dispatch is triggered by @jdx in [#6295](jdx/mise#6295)
- **(cli)** handle non-existent working directories gracefully by @jdx in [#6304](jdx/mise#6304)
- **(set)** add -E/--env flag to mise set command by @jdx in [#6291](jdx/mise#6291)
- **(tasks)** make auto outputs default by @risu729 in [#6137](jdx/mise#6137)

### 🐛 Bug Fixes

- align crate versions to fix release-plz script by @jdx in [5a464e9](jdx/mise@5a464e9)

### 🚜 Refactor

- **(aqua)** extract aqua registry into internal subcrate by @jdx in [#6293](jdx/mise#6293)

### 📚 Documentation

- fix mkdir paths by @risu729 in [#6298](jdx/mise#6298)
- fix rust profile default by @risu729 in [#6305](jdx/mise#6305)

### Chore

- **(aqua-registry)** remove unused aqua-registry files by @jdx in [#6294](jdx/mise#6294)
- **(release)** make release-plz idempotent for existing crate versions by @jdx in [dbdfd6a](jdx/mise@dbdfd6a)
- **(release)** skip publishing mise when aqua-registry is a path dep by @jdx in [47efffd](jdx/mise@47efffd)
- keep aqua-registry LICENSE file by @risu729 in [#6297](jdx/mise#6297)

### New Contributors

- @jayvdb made their first contribution in [#6300](jdx/mise#6300)

## [2025.9.10](https://github.com/jdx/mise/compare/v2025.9.9..v2025.9.10) - 2025-09-13

### 📦 Registry

- use asdf to install semver-tool by @jylenhof in [#6233](jdx/mise#6233)

### 🐛 Bug Fixes

- **(tool-stub)** detect binary names from single-file downloads by @jdx in [#6281](jdx/mise#6281)

### 🚜 Refactor

- allow any collection types in deserialize_arr by @risu729 in [#6282](jdx/mise#6282)
- use deserialize_arr for task runs by @risu729 in [#6253](jdx/mise#6253)

### 📚 Documentation

- **(getting-started)** add backends step with diagram, github example, env vars and simple tasks by @jdx in [#6288](jdx/mise#6288)
- simplify OS detection in tool plugin development by @jdx in [#6287](jdx/mise#6287)
- update backend plugin template references by @jdx in [942f5eb](jdx/mise@942f5eb)

### 📦️ Dependency Updates

- update rust crate chrono to v0.4.42 by @renovate[bot] in [#6274](jdx/mise#6274)
- update taiki-e/install-action digest to 0154864 by @renovate[bot] in [#6273](jdx/mise#6273)

### Chore

- **(schema)** fix schema for subtasks by @risu729 in [#6289](jdx/mise#6289)
- update render:schema task by @risu729 in [#6275](jdx/mise#6275)

## [2025.9.9](https://github.com/jdx/mise/compare/v2025.9.8..v2025.9.9) - 2025-09-11

### 🐛 Bug Fixes

- **(backend)** make HTTP installs atomic and serialize with cache lock by @jdx in [#6259](jdx/mise#6259)
- **(env)** allow nested env._.path directives by @risu729 in [#6160](jdx/mise#6160)
- **(env)** disallow nested env objects by @risu729 in [#6268](jdx/mise#6268)
- **(schema)** allow nested arrays in task.depends by @risu729 in [#6265](jdx/mise#6265)
- **(task)** resolve jobs=1 hang and keep-order panic; improve Ctrl-C handling by @jdx in [#6264](jdx/mise#6264)
- **(tasks)** stop CLI group after first failure without --continue-on-error by @jdx in [#6270](jdx/mise#6270)

### 📚 Documentation

- fixed toml issues in URL replacements settings documentation by @ThomasSteinbach in [#6269](jdx/mise#6269)

### Chore

- **(schema)** strict oneOf branches and DRY env_directive in schemas by @jdx in [#6271](jdx/mise#6271)
- add schema linter by @risu729 in [#6267](jdx/mise#6267)

## [2025.9.8](https://github.com/jdx/mise/compare/v2025.9.7..v2025.9.8) - 2025-09-10

### 🐛 Bug Fixes

- **(tasks)** prevent hang when task fails in sequence by @jdx in [#6260](jdx/mise#6260)
- **(version)** fetch mise version if cached version is older than the current by @risu729 in [#6252](jdx/mise#6252)

### 📦️ Dependency Updates

- update rhysd/action-setup-vim action to v1.4.3 by @renovate[bot] in [#6249](jdx/mise#6249)

## [2025.9.7](https://github.com/jdx/mise/compare/v2025.9.6..v2025.9.7) - 2025-09-09

### 🐛 Bug Fixes

- **(env)** allow mixed map for env._.file by @risu729 in [#6148](jdx/mise#6148)
- **(tasks)** restore parallel starts with poetry via list_paths cache and stable exec-env cache by @jdx in [#6237](jdx/mise#6237)
- add 'unknown' to the list of OS patterns by @efussi in [#6235](jdx/mise#6235)
- propagate errors from backend installs by @jdx in [#6236](jdx/mise#6236)

### 📦️ Dependency Updates

- update taiki-e/install-action digest to 0c5db7f by @renovate[bot] in [#6244](jdx/mise#6244)
- update golang docker tag to v1.25.1 by @renovate[bot] in [#6247](jdx/mise#6247)
- update dependency vitepress to v1.6.4 by @renovate[bot] in [#6246](jdx/mise#6246)

### New Contributors

- @efussi made their first contribution in [#6235](jdx/mise#6235)
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.

3 participants