Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,19 +23,19 @@ permissions:
contents: read

env:
GO_VERSION: ${{ vars.golang_version || '1.25' }}
GO_VERSION: ${{ vars.golang_version || '1.26' }}

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
fetch-depth: 0

- name: Set up Go ${{ env.GO_VERSION }}
uses: actions/setup-go@v6
uses: actions/setup-go@v7
with:
go-version: ${{ env.GO_VERSION }}

Expand All @@ -47,7 +47,7 @@ jobs:
go test ./...

- name: GoReleaser
uses: goreleaser/goreleaser-action@v7.2.2
uses: goreleaser/goreleaser-action@v7.2.3
with:
distribution: goreleaser
version: latest
Expand Down
10 changes: 6 additions & 4 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# yamllint disable rule:truthy rule:line-length
# code: language=github-actions.workflows tabSize=2
---
name: Lint

on:
push:
tags-ignore:
Expand All @@ -17,23 +19,23 @@ permissions:

env:
LINT_VERSION: ${{ vars.golangci_version || '2.12.2' }}
GO_VERSION: ${{ vars.golang_version || '1.25' }}
GO_VERSION: ${{ vars.golang_version || '1.26' }}

jobs:
lint:
runs-on: ubuntu-latest

steps:
- name: Set up Go ${{ env.GO_VERSION }}
uses: actions/setup-go@v6
uses: actions/setup-go@v7
with:
go-version: ${{ env.GO_VERSION }}

- name: Check out code
uses: actions/checkout@v6
uses: actions/checkout@v7

- name: Restore Go modules cache
uses: actions/cache@v5
uses: actions/cache@v6
with:
path: ~/go/pkg/mod
key: go-${{ runner.os }}-${{ hashFiles('go.mod') }}
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,24 +12,24 @@ permissions:

env:
LINT_VERSION: ${{ vars.golangci_version || '2.12.2' }}
GO_VERSION: ${{ vars.golang_version || '1.25' }}
GO_VERSION: ${{ vars.golang_version || '1.26' }}

jobs:
goreleaser:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
fetch-depth: 0

- name: Set up Go ${{ env.GO_VERSION }}
uses: actions/setup-go@v6
uses: actions/setup-go@v7
with:
go-version: ${{ env.GO_VERSION }}

- name: GoReleaser
uses: goreleaser/goreleaser-action@v7.2.2
uses: goreleaser/goreleaser-action@v7.2.3
with:
distribution: goreleaser
version: latest
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,4 @@ bin/

**/*.local.*
**/.env*
graphify-out/
5 changes: 4 additions & 1 deletion .mise.toml
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
[env]
_.file = ".env"

[settings]
idiomatic_version_file_enable_tools = ["go"]

[tools]
go = "1.25"
"golangci-lint" = "2.12.2"
goreleaser = "latest"
prek = "latest"
gofumpt = "latest"
"github:oligot/go-mod-upgrade" = "latest"
gotestsum = "latest"
actionlint = "latest"
1 change: 1 addition & 0 deletions .typos.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
extend-exclude = [
"**/.mise.toml",
"vendor/**",
"**/create_acc_test.go",
]

[default]
Expand Down
9 changes: 8 additions & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,9 +69,16 @@ For a complete guide, refer to [TESTING.md](./TESTING.md).

## Commit & Pull Request Guidelines

- **Commits:** Adhere to Conventional Commits specification (e.g., `feat: ...`, `fix: ...`, `chore: ...`, `refactor: ...`).
- **Use Conventional Commits:** `fix(scope): subject`, `feat(scope): subject`, `docs: ...`, `test: ...`.
- **Pull Requests:** Clearly describe changes, rationale, and how to reproduce/verify; reference linked issues.
- **CI Checks:** Run `make lint` and `go test ./...` before submission; update `docs/` if CLI changes.
- **One logical change per commit:** Commit batches are sorted topologically by technical dependencies (the code a commit introduces must exist before code that depends on it).
- **Style/formatting** last, only if the changed file contains pure style changes; otherwise formatting folds into the feature commit.
- Tests go with the file that is under test after the file under test has been committed.
- Every commit must leave the tree in a working state
- **Never commit secrets**, local config (`.mise.local.toml`), or generated artifacts.
- Agents and subagents may never run `git add`, `git commit`, `git commit --amend`, `git reset`, `git checkout`, `git restore`, `git clean`, `git push`.
- Agents and subagents may inspect Git read-only (e.g. `git status`, `git diff`, `git log`) to understand the tree, but must never modify it.

## Security & Configuration Tips

Expand Down
3 changes: 1 addition & 2 deletions docs/azdo.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,5 @@ Work seamlessly with Azure DevOps from the command line.

```bash
$ azdo project list
$ azdo repo clone myorg/myrepo
$ azdo repo clone myorg:myproject/myrepo
```

10 changes: 5 additions & 5 deletions docs/azdo_boards_area_project_list.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
## Command `azdo boards area project list`

```
azdo boards area project list [ORGANIZATION/]PROJECT [flags]
azdo boards area project list [ORG:]PROJECT [flags]
```

List Azure Boards area paths for a project. The project argument accepts the form
[ORGANIZATION/]PROJECT. When the organization segment is omitted, the default
organization from configuration is used.
[ORG:]PROJECT. When the ORG: prefix is omitted, the default organization from
configuration is used.


### Options
Expand Down Expand Up @@ -49,10 +49,10 @@ organization from configuration is used.
azdo boards area project list Fabrikam

# List the full area tree for a project in a specific organization
azdo boards area project list myorg/Fabrikam --depth 5
azdo boards area project list myorg:Fabrikam --depth 5

# List the sub-tree under a specific area path (relative paths are resolved under <project>/Area)
azdo boards area project list myorg/Fabrikam --path Payments --depth 3
azdo boards area project list myorg:Fabrikam --path Payments --depth 3
```

### See also
Expand Down
8 changes: 4 additions & 4 deletions docs/azdo_boards_area_team_list.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
## Command `azdo boards area team list`

```
azdo boards area team list [ORGANIZATION/]PROJECT/TEAM [flags]
azdo boards area team list [ORG:]PROJECT/TEAM [flags]
```

List Azure Boards area paths assigned to a team. The TEAM argument accepts
the ID (GUID) or name of the team. The argument accepts the form
[ORGANIZATION/]PROJECT/TEAM. When the organization segment is omitted,
the default organization from configuration is used.
[ORG:]PROJECT/TEAM. When the ORG: prefix is omitted, the default
organization from configuration is used.


### Options
Expand Down Expand Up @@ -42,7 +42,7 @@ the default organization from configuration is used.
azdo boards area team list Fabrikam/"Fabrikam Engineering"

# List area paths for a team in a specific organization
azdo boards area team list MyOrg/Fabrikam/"My Team"
azdo boards area team list MyOrg:Fabrikam/"My Team"
```

### See also
Expand Down
4 changes: 2 additions & 2 deletions docs/azdo_boards_iteration_project_create.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
Create an iteration (sprint) in a project.

```
azdo boards iteration project create [ORGANIZATION/]PROJECT[/PATH]/NAME [flags]
azdo boards iteration project create [ORG:]PROJECT[/PATH]/NAME [flags]
```

### Options
Expand Down Expand Up @@ -54,7 +54,7 @@ azdo boards iteration project create Fabrikam/Sprint\ 2 \
--start-date 2025-01-06 --finish-date 2025-01-19

# Create a nested iteration under an existing release
azdo boards iteration project create myorg/Fabrikam/Release\ 2025/Sprint\ 2
azdo boards iteration project create myorg:Fabrikam/Release\ 2025/Sprint\ 2

# Set a custom attribute alongside the dates
azdo boards iteration project create Fabrikam/Sprint\ 1 \
Expand Down
2 changes: 1 addition & 1 deletion docs/azdo_boards_iteration_project_delete.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
## Command `azdo boards iteration project delete`

```
azdo boards iteration project delete [ORGANIZATION/]PROJECT[/PATH]/NAME [flags]
azdo boards iteration project delete [ORG:]PROJECT[/PATH]/NAME [flags]
```

Delete an iteration (sprint) from a project. The command prompts for
Expand Down
4 changes: 2 additions & 2 deletions docs/azdo_boards_iteration_project_list.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
## Command `azdo boards iteration project list`

```
azdo boards iteration project list [ORGANIZATION/]PROJECT[/PATH] [flags]
azdo boards iteration project list [ORG:]PROJECT[/PATH] [flags]
```

List the iteration (sprint) hierarchy for a project within an Azure DevOps organization.
Expand Down Expand Up @@ -52,7 +52,7 @@ List the iteration (sprint) hierarchy for a project within an Azure DevOps organ

```bash
# List the top-level iterations (depth 3)
azdo boards iteration project list myorg/myproject
azdo boards iteration project list myorg:myproject

# List from a specific path
azdo boards iteration project list myproject/Release\ 2025/Sprint\ 1
Expand Down
4 changes: 2 additions & 2 deletions docs/azdo_boards_iteration_project_show.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
## Command `azdo boards iteration project show`

```
azdo boards iteration project show [ORGANIZATION/]PROJECT[/PATH]/NAME [flags]
azdo boards iteration project show [ORG:]PROJECT[/PATH]/NAME [flags]
```

Display the details of a single iteration (sprint) node in a project.
Expand Down Expand Up @@ -52,7 +52,7 @@ The iteration is identified by its fully-qualified path under /Iteration.
azdo boards iteration project show Fabrikam/Sprint\ 1

# Show a nested iteration
azdo boards iteration project show myorg/Fabrikam/Release\ 2025/Sprint\ 1
azdo boards iteration project show myorg:Fabrikam/Release\ 2025/Sprint\ 1

# Include child nodes in the template output
azdo boards iteration project show Fabrikam/Release\ 2025 --include-children
Expand Down
6 changes: 3 additions & 3 deletions docs/azdo_boards_iteration_project_update.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
## Command `azdo boards iteration project update`

```
azdo boards iteration project update [ORGANIZATION/]PROJECT[/PATH]/NAME [flags]
azdo boards iteration project update [ORG:]PROJECT[/PATH]/NAME [flags]
```

Update an iteration (sprint) in a project. The positional argument identifies
the iteration as [ORGANIZATION/]PROJECT[/PATH]/NAME.
the iteration as [ORG:]PROJECT[/PATH]/NAME.

Supports changing start/finish dates and setting arbitrary attributes.

Expand Down Expand Up @@ -59,7 +59,7 @@ azdo boards iteration project update Fabrikam/Release\ 2025/Sprint\ 1 \
--attributes goal="Ship login"

# Combine: reschedule + set a custom attribute
azdo boards iteration project update myorg/Fabrikam/Release\ 2025/Sprint\ 1 \
azdo boards iteration project update myorg:Fabrikam/Release\ 2025/Sprint\ 1 \
--start-date 2025-01-06 --finish-date 2025-01-19 \
--attributes goal="Ship login"

Expand Down
2 changes: 1 addition & 1 deletion docs/azdo_boards_work-item_list.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
## Command `azdo boards work-item list`

```
azdo boards work-item list [ORGANIZATION/]PROJECT [flags]
azdo boards work-item list [ORG:]PROJECT [flags]
```

List work items belonging to a project within an Azure DevOps organization.
Expand Down
9 changes: 7 additions & 2 deletions docs/azdo_graph_user_list.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
## Command `azdo graph user list`

```
azdo graph user list [project] [flags]
azdo graph user list [PROJECT] [flags]
```

List users and groups from an Azure DevOps project or organization.

By default, it lists users in the organization. You can scope the search to a specific
project by providing the project name as an argument.
project by providing the project name as an argument. When an organization is supplied
with --organization together with a project argument, the project scope is resolved as
ORG:PROJECT.

The command allows filtering by user type (e.g., 'aad', 'msa', 'svc') and supports
prefix-based filtering on user display names.
Expand Down Expand Up @@ -62,6 +64,9 @@ azdo graph user list
# List all users in a specific project
azdo graph user list "My Project"

# List users in a project of a specific organization (equivalent to ORG:PROJECT)
azdo graph user list "My Project" --organization "MyOrganization"

# List all users with the 'msa' subject type (Microsoft Account)
azdo graph user list --type msa

Expand Down
Loading
Loading