id = "pinact"
name = "pinact"
homepage = "https://github.com/suzuki-shunsuke/pinact"
executables = ["pinact"]
[dotfiles]
paths = ["[configHome]/pinact/pinact.yaml", "%APPDATA%/pinact/pinact.yaml"]
exclude = []
secret = []
[commands]
format = 1
label = "Pin GitHub Actions"
description = "Pin GitHub Actions and reusable workflows to commit SHAs, or check that they are pinned. Token handling and SARIF output are left out."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = false, short_bundles = false }
[[commands.subcommand]]
path = ["run"]
label = "Pin actions in workflows"
[[commands.subcommand.source]]
id = "docs"
kind = "manual"
url = "https://github.com/suzuki-shunsuke/pinact/blob/main/docs/usage.md"
revision = "2026-10-27"
evidence = """
pinact run [<workflow file>...]
pinact run README.md
pinact run --check
- [Check without editing files](check.md): `--check`, `--fix=false`, `--no-api`
- [Update actions](update.md): `--update`, `--min-age`, `--verify-min-age`
- [Verify version comments](codes/001.md): `--verify-comment`
- [Pin branches](branch_to_tag.md): `--branch-to-tag`
- [Include and exclude specific actions](include_exclude.md): `--include`, `--exclude`
"""
[[commands.subcommand.field]]
id = "files"
label = "Workflow files"
description = "Defaults to the repository's workflow and action files when empty."
type = "path"
position = 0
multiple = true
path = { kind = "file", role = "input" }
effect = "overwrite"
sources = ["docs"]
[[commands.subcommand.field]]
id = "check"
label = "Check only"
description = "Report unpinned actions without editing files."
type = "boolean"
option = ["--check"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "update"
label = "Update actions"
type = "boolean"
option = ["--update"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "verify_comment"
label = "Verify version comments"
type = "boolean"
option = ["--verify-comment"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "branch_to_tag"
label = "Pin branches"
type = "boolean"
option = ["--branch-to-tag"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "no_api"
label = "Offline check"
type = "boolean"
option = ["--no-api"]
sources = ["docs"]
[[commands.subcommand.task]]
id = "pin"
label = "Pin all actions"
fields = ["files", "update"]
[[commands.subcommand.task]]
id = "check"
label = "Check in CI"
set = { check = [true] }
lock = ["check"]
fields = ["files", "check", "no_api"]
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["files", "check", "update"]
[[commands.subcommand.group]]
id = "advanced"
label = "Advanced"
fields = ["verify_comment", "branch_to_tag", "no_api"]