Skip to content

feat: add PowerShell completion support#431

Merged
jdx merged 2 commits intomainfrom
feat/powershell-support
Jan 19, 2026
Merged

feat: add PowerShell completion support#431
jdx merged 2 commits intomainfrom
feat/powershell-support

Conversation

@jdx
Copy link
Owner

@jdx jdx commented Jan 19, 2026

Summary

  • Add PowerShell as a supported shell for completion generation and script execution
  • New usage powershell <script> command (uses pwsh interpreter)
  • Add powershell to usage generate completion shell choices
  • Add powershell to usage complete-word --shell options
  • Integration test requires pwsh to be installed (no skip for CI)

Fixes #314

Changes

New files:

  • lib/src/complete/powershell.rs - PowerShell completion script generator
  • docs/cli/reference/powershell.md - Documentation

Modified files:

  • lib/src/complete/mod.rs - Wire in powershell module
  • cli/src/cli/mod.rs - Add Powershell command variant
  • cli/src/cli/complete_word.rs - Add powershell shell option
  • cli/src/cli/generate/completion.rs - Add powershell to shell choices
  • cli/tests/shell_completions_integration.rs - Add PowerShell integration test

Test plan

  • Unit tests pass (cargo test -p usage-lib test_complete_powershell)
  • Integration test passes (cargo test -p usage-cli test_powershell_completion_integration)
  • All existing tests pass
  • Manual test: cargo run -- generate completion powershell mycli --usage-cmd "echo test"

🤖 Generated with Claude Code


Note

Adds first-class PowerShell support across completion and execution.

  • New lib/src/complete/powershell.rs generator wired into complete(); outputs PS Register-ArgumentCompleter script
  • CLI updates: usage generate completion and complete-word --shell accept powershell; new usage powershell subcommand (executes via pwsh)
  • Integration: PowerShell completion test added; snapshot tests for generator output
  • Assets/docs/manpage updated (Fig spec, usage.1, KDL spec, reference pages) to include PowerShell options and command

Written by Cursor Bugbot for commit 2587c6d. This will update automatically on new commits. Configure here.

Copilot AI review requested due to automatic review settings January 19, 2026 03:10
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 adds PowerShell completion support to the usage CLI, enabling completion generation and script execution for PowerShell environments.

Changes:

  • Add PowerShell as a supported shell for completion generation alongside bash, fish, and zsh
  • Implement usage powershell <script> command using pwsh interpreter
  • Add PowerShell integration test requiring pwsh installation

Reviewed changes

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

Show a summary per file
File Description
lib/src/complete/powershell.rs PowerShell completion script generator implementation
lib/src/complete/mod.rs Wire PowerShell module into completion system
cli/src/cli/mod.rs Add Powershell command variant
cli/src/cli/complete_word.rs Add powershell to shell option choices
cli/src/cli/generate/completion.rs Add powershell to shell choices for completion generation
cli/tests/shell_completions_integration.rs PowerShell integration test
docs/cli/reference/powershell.md PowerShell command documentation
docs/cli/reference/index.md Update command index with PowerShell entry
docs/cli/reference/generate/completion.md Update completion docs to include PowerShell
docs/cli/reference/complete-word.md Update complete-word docs with PowerShell option
docs/cli/reference/commands.json Update command metadata with PowerShell entries
cli/usage.usage.kdl Update usage spec with PowerShell command
cli/assets/usage.1 Update manpage with PowerShell documentation
cli/assets/fig.ts Update Fig completion spec with PowerShell
lib/src/complete/snapshots/* Snapshot test files for PowerShell completion

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@codecov
Copy link

codecov bot commented Jan 19, 2026

Codecov Report

❌ Patch coverage is 93.26923% with 7 lines in your changes missing coverage. Please review.
✅ Project coverage is 47.42%. Comparing base (2cd5def) to head (2587c6d).
⚠️ Report is 2 commits behind head on main.

Files with missing lines Patch % Lines
lib/src/complete/powershell.rs 95.04% 5 Missing ⚠️
cli/src/cli/complete_word.rs 0.00% 0 Missing and 1 partial ⚠️
cli/src/cli/mod.rs 0.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #431      +/-   ##
==========================================
+ Coverage   46.63%   47.42%   +0.78%     
==========================================
  Files          46       47       +1     
  Lines        6546     6651     +105     
  Branches     6546     6651     +105     
==========================================
+ Hits         3053     3154     +101     
- Misses       1732     1737       +5     
+ Partials     1761     1760       -1     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@jdx jdx force-pushed the feat/powershell-support branch from 93e3d6a to 7153284 Compare January 19, 2026 03:16
Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

@jdx jdx force-pushed the feat/powershell-support branch from 7153284 to d7b4583 Compare January 19, 2026 03:27
Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

Add PowerShell as a supported shell for completion generation and script
execution, alongside bash, fish, and zsh.

Changes:
- Add lib/src/complete/powershell.rs with completion script generator
- Add `usage powershell <script>` command (uses pwsh interpreter)
- Add powershell to `usage generate completion` shell choices
- Add powershell to `usage complete-word --shell` options
- Add integration test (requires pwsh - no skip for CI)
- Update documentation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@jdx jdx force-pushed the feat/powershell-support branch from d7b4583 to 77c06f3 Compare January 19, 2026 03:39
@jdx jdx merged commit c888c58 into main Jan 19, 2026
9 checks passed
@jdx jdx deleted the feat/powershell-support branch January 19, 2026 04:27
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request Jan 19, 2026
This MR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [usage](https://github.com/jdx/usage) | minor | `2.12.0` → `2.13.1` |

MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot).

**Proposed changes to behavior should be submitted there as MRs.**

---

### Release Notes

<details>
<summary>jdx/usage (usage)</summary>

### [`v2.13.1`](https://github.com/jdx/usage/blob/HEAD/CHANGELOG.md#2131---2026-01-19)

[Compare Source](jdx/usage@v2.13.0...v2.13.1)

##### 🐛 Bug Fixes

- use correct PowerShell casing in enum variant by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;438](jdx/usage#438)

### [`v2.13.0`](https://github.com/jdx/usage/blob/HEAD/CHANGELOG.md#2130---2026-01-19)

[Compare Source](jdx/usage@v2.12.0...v2.13.0)

##### 🚀 Features

- **(release)** add LLM-generated prose summary to release notes by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;421](jdx/usage#421)
- add LLM-generated release notes for GitHub releases by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;423](jdx/usage#423)
- add spec lint command by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;430](jdx/usage#430)
- add PowerShell completion support by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;431](jdx/usage#431)

##### 🐛 Bug Fixes

- replace unsafe path unwrap chains with proper error handling by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;424](jdx/usage#424)
- pass positional args through to executed scripts by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;425](jdx/usage#425)
- replace unimplemented!() with proper errors for unsupported shells by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;432](jdx/usage#432)
- update claude CLI model and add bypassPermissions by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;435](jdx/usage#435)

##### 🚜 Refactor

- remove unused double-shebang support by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;426](jdx/usage#426)
- replace once\_cell with std::sync::LazyLock by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;428](jdx/usage#428)
- improve code quality with safety and lint fixes by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;427](jdx/usage#427)

##### ⚡ Performance

- use Arc for flag/arg keys in ParseOutput to reduce cloning by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;422](jdx/usage#422)

##### 🔍 Other Changes

- update insta snapshots to newer format by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;429](jdx/usage#429)
- fix legacy inline snapshot format warnings by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;433](jdx/usage#433)
- replace TODO with doc comment for subcommand\_lookup by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;434](jdx/usage#434)

##### 📦️ Dependency Updates

- update actions/setup-node digest to [`6044e13`](jdx/usage@6044e13) by [@&#8203;renovate\[bot\]](https://github.com/renovate\[bot]) in [#&#8203;419](jdx/usage#419)
- replace dependency [@&#8203;tsconfig/node22](https://github.com/tsconfig/node22) with [@&#8203;tsconfig/node24](https://github.com/tsconfig/node24) by [@&#8203;renovate\[bot\]](https://github.com/renovate\[bot]) in [#&#8203;418](jdx/usage#418)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this MR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi44NC4yIiwidXBkYXRlZEluVmVyIjoiNDIuODQuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiUmVub3ZhdGUgQm90IiwiYXV0b21hdGlvbjpib3QtYXV0aG9yZWQiLCJkZXBlbmRlbmN5LXR5cGU6Om1pbm9yIl19-->
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.

Implementing pwsh

1 participant

Comments