mirror of
https://github.com/denoland/deno.git
synced 2024-12-01 16:51:13 -05:00
56f31628f7
Closes #20487 Currently spelled ``` deno outdated ``` and ``` deno outdated --update ``` Works across package.json and deno.json, and in workspaces. There's a bit of duplicated code, I'll refactor to reduce this in follow ups ## Currently supported: ### Printing outdated deps (current output below which basically mimics pnpm, but requesting feedback / suggestions) ``` deno outdated ``` ![Screenshot 2024-11-19 at 2 01 56 PM](https://github.com/user-attachments/assets/51fea83a-181a-4082-b388-163313ce15e7) ### Updating deps semver compatible: ``` deno outdated --update ``` latest: ``` deno outdated --latest ``` current output is basic, again would love suggestions ![Screenshot 2024-11-19 at 2 13 46 PM](https://github.com/user-attachments/assets/e4c4db87-cd67-4b74-9ea7-4bd80106d5e9) #### Filters ``` deno outdated --update "@std/*" deno outdated --update --latest "@std/* "!@std/fmt" ``` #### Update to specific versions ``` deno outdated --update @std/fmt@1.0.2 @std/cli@^1.0.3 ``` ### Include all workspace members ``` deno outdated --recursive deno outdated --update --recursive ``` ## Future work - interactive update - update deps in js/ts files - better support for transitive deps Known issues (to be fixed in follow ups): - If no top level dependencies have changed, we won't update transitive deps (even if they could be updated) - Can't filter transitive deps, or update them to specific versions ## TODO (in this PR): - ~~spec tests for filters~~ - ~~spec test for mixed workspace (have tested manually)~~ - tweak output - suggestion when you try `deno update` --------- Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
153 lines
3.9 KiB
Text
153 lines
3.9 KiB
Text
{
|
|
"tempDir": true,
|
|
"tests": {
|
|
// just to make sure install doesn't change the lockfile
|
|
"sanity_lockfile_up_to_date": {
|
|
"steps": [
|
|
{
|
|
"args": "install",
|
|
"output": "[WILDCARD]"
|
|
},
|
|
{
|
|
"args": [
|
|
"eval",
|
|
"const now = Deno.readTextFileSync('./deno.lock'); console.log(now.trim());"
|
|
],
|
|
"output": "deno.lock.orig.out"
|
|
}
|
|
]
|
|
},
|
|
"print_outdated_root": {
|
|
"steps": [
|
|
{
|
|
"args": "install",
|
|
"output": "[WILDCARD]"
|
|
},
|
|
{
|
|
"args": "outdated",
|
|
"output": "print_outdated/root.out"
|
|
}
|
|
]
|
|
},
|
|
"print_outdated_recursive": {
|
|
"steps": [
|
|
{
|
|
"args": "install",
|
|
"output": "[WILDCARD]"
|
|
},
|
|
{
|
|
"args": "outdated --recursive",
|
|
"output": "print_outdated/recursive.out"
|
|
}
|
|
]
|
|
},
|
|
"print_outdated_subdir": {
|
|
"steps": [
|
|
{
|
|
"args": "install",
|
|
"output": "[WILDCARD]"
|
|
},
|
|
{
|
|
"cwd": "member-a",
|
|
"args": "outdated",
|
|
"output": "print_outdated/member_a.out"
|
|
},
|
|
{
|
|
"cwd": "member-b",
|
|
"args": "outdated",
|
|
"output": "print_outdated/member_b.out"
|
|
}
|
|
]
|
|
},
|
|
"update_latest_root": {
|
|
"steps": [
|
|
{
|
|
"args": "install",
|
|
"output": "[WILDCARD]"
|
|
},
|
|
{
|
|
"args": "outdated --update --latest",
|
|
"output": "update_latest/root/update.out"
|
|
},
|
|
{
|
|
"args": "-A print_file.ts ./deno.json",
|
|
"output": "./update_latest/root/deno.json.out"
|
|
}
|
|
]
|
|
},
|
|
"update_latest_subdir": {
|
|
"steps": [
|
|
{
|
|
"args": "install",
|
|
"output": "[WILDCARD]"
|
|
},
|
|
{
|
|
"cwd": "member-a",
|
|
"args": "outdated --update --latest",
|
|
"output": "update_latest/subdir/member_a.out"
|
|
},
|
|
{
|
|
"args": "-A print_file.ts ./member-a/deno.json",
|
|
"output": "update_latest/subdir/member_a_deno.json.out"
|
|
},
|
|
{
|
|
"cwd": "member-b",
|
|
"args": "outdated --update --latest",
|
|
"output": "update_latest/subdir/member_b.out"
|
|
},
|
|
{
|
|
"args": "-A print_file.ts ./member-b/package.json",
|
|
"output": "update_latest/subdir/member_b_package.json.out"
|
|
}
|
|
]
|
|
},
|
|
"update_latest_recursive": {
|
|
"steps": [
|
|
{
|
|
"args": "install",
|
|
"output": "[WILDCARD]"
|
|
},
|
|
{
|
|
"args": "outdated --update --latest --recursive",
|
|
"output": "update_latest/recursive/update.out"
|
|
},
|
|
{
|
|
"args": "-A print_file.ts ./deno.json",
|
|
"output": "update_latest/root/deno.json.out"
|
|
},
|
|
{
|
|
"args": "-A print_file.ts ./member-a/deno.json",
|
|
"output": "update_latest/subdir/member_a_deno.json.out"
|
|
},
|
|
{
|
|
"args": "-A print_file.ts ./member-b/package.json",
|
|
"output": "update_latest/subdir/member_b_package.json.out"
|
|
}
|
|
]
|
|
},
|
|
"update_filtered": {
|
|
"steps": [
|
|
{
|
|
"args": "install",
|
|
"output": "[WILDCARD]"
|
|
},
|
|
{
|
|
"args": "outdated --update --latest --recursive @denotest/add @denotest/sub* !@denotest/breaking* aliased @denotest/with-subpath@0.5.0",
|
|
"output": "filtered/update.out"
|
|
},
|
|
{
|
|
"args": "-A print_file.ts ./deno.json",
|
|
"output": "./update_latest/root/deno.json.out"
|
|
},
|
|
{
|
|
"args": "-A print_file.ts ./member-a/deno.json",
|
|
"output": "./filtered/member_a_deno.json.out"
|
|
},
|
|
{
|
|
"args": "-A print_file.ts ./member-b/package.json",
|
|
"output": "./filtered/member_b_package.json.out"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|