id = "cycode"
name = "Cycode CLI"
homepage = "https://github.com/cycodehq/cycode-cli"
description = "A command-line client for Cycode security scanning and authentication."
executables = ["cycode"]
[dotfiles]
paths = ["~/.cycode/config.yaml"]
secret = ["~/.cycode/credentials.yaml"]
side_effect = false
[commands]
format = 1
label = "Cycode CLI"
description = "Global output options only. Authentication, client secrets and the platform command groups are left out; use the scan subcommand form for scanning."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false }
[[commands.source]]
id = "readme"
kind = "help"
url = "https://raw.githubusercontent.com/cycodehq/cycode-cli/HEAD/README.md"
revision = "README global options"
evidence = '''
| `-v`, `--verbose` | Show detailed logs. |
| `-o`, `--output [rich\|text\|json\|table]` | Specify the output type. The default is `rich`. |
'''
[[commands.field]]
id = "verbose"
label = "Verbose"
type = "boolean"
option = ["--verbose", "-v"]
sources = ["readme"]
[[commands.field]]
id = "output"
label = "Output type"
type = "enum"
option = ["--output", "-o"]
choices = [{ value = "rich", label = "Rich" }, { value = "text", label = "Text" }, { value = "json", label = "JSON" }, { value = "table", label = "Table" }]
sources = ["readme"]
[[commands.task]]
id = "json"
label = "JSON output"
fields = ["verbose", "output"]
required = []
set = { output = ["json"] }
[[commands.group]]
id = "basic"
label = "Basic"
fields = ["verbose", "output"]
[[commands.subcommand]]
path = ["scan"]
label = "Scan a repository"
description = "Scan a local repository path. Scan types other than secret, SCA sub-scans, Maven/Gradle options and other scan targets are left out."
[[commands.subcommand.source]]
id = "readme"
kind = "help"
url = "https://raw.githubusercontent.com/cycodehq/cycode-cli/HEAD/README.md"
revision = "README scan command"
evidence = '''
| `-t, --scan-type [secret\|iac\|sca\|sast]` | Specify the scan you wish to execute (`secret`/`iac`/`sca`/`sast`), the default is `secret`. |
| `--severity-threshold [INFO\|LOW\|MEDIUM\|HIGH\|CRITICAL]` | Show only violations at the specified level or higher. |
| `--monitor` | When specified, the scan results will be recorded in Cycode. |
| `--cycode-report` | Display a link to the scan report in the Cycode platform in the console output. |
| `--no-restore` | When specified, Cycode will not run the restore command. This will scan direct dependencies ONLY! |
`cycode scan --severity-threshold MEDIUM repository ~/home/git/codebase`
'''
[[commands.subcommand.field]]
id = "scan_type"
label = "Scan type"
type = "enum"
option = ["--scan-type", "-t"]
choices = [{ value = "secret", label = "Secrets" }, { value = "iac", label = "Infrastructure as code" }, { value = "sca", label = "Dependencies (SCA)" }, { value = "sast", label = "SAST" }]
sources = ["readme"]
[[commands.subcommand.field]]
id = "severity"
label = "Minimum severity"
type = "enum"
option = ["--severity-threshold"]
choices = [{ value = "INFO", label = "Info" }, { value = "LOW", label = "Low" }, { value = "MEDIUM", label = "Medium" }, { value = "HIGH", label = "High" }, { value = "CRITICAL", label = "Critical" }]
sources = ["readme"]
[[commands.subcommand.field]]
id = "monitor"
label = "Record results in Cycode"
type = "boolean"
option = ["--monitor"]
sources = ["readme"]
[[commands.subcommand.field]]
id = "report"
label = "Print report link"
type = "boolean"
option = ["--cycode-report"]
sources = ["readme"]
[[commands.subcommand.field]]
id = "no_restore"
label = "Skip dependency restore"
type = "boolean"
option = ["--no-restore"]
sources = ["readme"]
[[commands.subcommand.field]]
id = "target"
label = "Scan target"
type = "enum"
position = 0
choices = [{ value = "repository", label = "Repository path" }]
sources = ["readme"]
[[commands.subcommand.field]]
id = "path"
label = "Repository path"
type = "path"
position = 1
path = { kind = "directory", role = "input" }
sources = ["readme"]
[[commands.subcommand.task]]
id = "scan_repo"
label = "Scan a repository"
fields = ["scan_type", "severity", "target", "path"]
required = ["target", "path"]
set = { target = ["repository"] }
lock = ["target"]
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["target", "path", "scan_type", "severity"]
[[commands.subcommand.group]]
id = "advanced"
label = "Advanced"
fields = ["monitor", "report", "no_restore"]