id = "sops"
name = "SOPS"
homepage = "https://github.com/getsops/sops"
description = "Simple and flexible tool for managing secrets."
executables = ["sops"]
[dotfiles]
paths = []
secret = [
"[configHome]/sops/age/keys.txt",
"[appData]/sops/age/keys.txt",
"%APPDATA%/sops/age/keys.txt",
]
side_effect = false
[commands]
format = 1
label = "SOPS"
description = "Encrypt or decrypt a file with sops. Editing, key rotation, key groups, publish and key-service options are left out."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false }
[[commands.subcommand]]
path = ["decrypt"]
label = "Decrypt a file"
description = "Decrypt a file and print it to stdout, or write it elsewhere."
[[commands.subcommand.source]]
id = "help"
kind = "help"
url = "https://github.com/getsops/sops/blob/main/cmd/sops/main.go"
evidence = """decrypt [file]: decrypt a file, and output the results to stdout. If no filename is provided, stdin will be used.
--in-place, -i write output back to the same file instead of stdout
--extract extract a specific key or branch from the input document.
--output Save the output after decryption to the file specified
--input-type currently json, yaml, dotenv, ini and binary are supported.
--output-type currently json, yaml, dotenv, ini and binary are supported."""
[[commands.subcommand.field]]
id = "file"
label = "Encrypted file"
type = "path"
position = 0
path = { kind = "file", role = "input" }
sources = ["help"]
[[commands.subcommand.field]]
id = "in_place"
label = "Decrypt in place"
type = "boolean"
option = ["--in-place", "-i"]
effect = "overwrite"
sources = ["help"]
[[commands.subcommand.field]]
id = "output"
label = "Output file"
type = "path"
option = ["--output"]
path = { kind = "file", role = "output" }
effect = "overwrite"
sources = ["help"]
[[commands.subcommand.field]]
id = "extract"
label = "Extract key"
type = "string"
option = ["--extract"]
sources = ["help"]
[[commands.subcommand.field]]
id = "input_type"
label = "Input type"
type = "enum"
option = ["--input-type"]
choices = [{ value = "json", label = "JSON" }, { value = "yaml", label = "YAML" }, { value = "dotenv", label = "dotenv" }, { value = "ini", label = "INI" }, { value = "binary", label = "Binary" }]
sources = ["help"]
[[commands.subcommand.field]]
id = "output_type"
label = "Output type"
type = "enum"
option = ["--output-type"]
choices = [{ value = "json", label = "JSON" }, { value = "yaml", label = "YAML" }, { value = "dotenv", label = "dotenv" }, { value = "ini", label = "INI" }, { value = "binary", label = "Binary" }]
sources = ["help"]
[[commands.subcommand.task]]
id = "show"
label = "Print decrypted"
fields = ["file", "extract", "output_type"]
required = ["file"]
[[commands.subcommand.task]]
id = "to-file"
label = "Decrypt to a file"
fields = ["file", "output", "output_type"]
required = ["file", "output"]
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["file", "output", "in_place", "extract"]
[[commands.subcommand.group]]
id = "advanced"
label = "Advanced"
fields = ["input_type", "output_type"]
[[commands.subcommand]]
path = ["encrypt"]
label = "Encrypt a file"
description = "Encrypt a file for age, PGP or cloud KMS recipients and print it to stdout, or write it elsewhere."
[[commands.subcommand.source]]
id = "help"
kind = "help"
url = "https://github.com/getsops/sops/blob/main/cmd/sops/main.go"
evidence = """encrypt [file]: encrypt a file, and output the results to stdout. If no filename is provided, stdin will be used.
--in-place, -i write output back to the same file instead of stdout
--output Save the output after encryption to the file specified
--age, -a comma separated list of age recipients
--pgp, -p comma separated list of PGP fingerprints
--kms, -k comma separated list of KMS ARNs
--encrypted-regex set the encrypted key regex. When specified, only keys matching the regex will be encrypted.
--unencrypted-regex set the unencrypted key regex. When specified, only keys matching the regex will be left unencrypted.
--input-type currently json, yaml, dotenv, ini and binary are supported.
--output-type currently json, yaml, dotenv, ini and binary are supported."""
[[commands.subcommand.field]]
id = "file"
label = "Plaintext file"
type = "path"
position = 0
path = { kind = "file", role = "input" }
sources = ["help"]
[[commands.subcommand.field]]
id = "in_place"
label = "Encrypt in place"
type = "boolean"
option = ["--in-place", "-i"]
effect = "overwrite"
sources = ["help"]
[[commands.subcommand.field]]
id = "output"
label = "Output file"
type = "path"
option = ["--output"]
path = { kind = "file", role = "output" }
effect = "overwrite"
sources = ["help"]
[[commands.subcommand.field]]
id = "age"
label = "age recipients"
description = "Comma separated list of age recipients."
type = "string"
option = ["--age", "-a"]
sources = ["help"]
[[commands.subcommand.field]]
id = "pgp"
label = "PGP fingerprints"
description = "Comma separated list of PGP fingerprints."
type = "string"
option = ["--pgp", "-p"]
sources = ["help"]
[[commands.subcommand.field]]
id = "kms"
label = "KMS ARNs"
description = "Comma separated list of KMS ARNs."
type = "string"
option = ["--kms", "-k"]
sources = ["help"]
[[commands.subcommand.field]]
id = "encrypted_regex"
label = "Encrypted key regex"
type = "string"
option = ["--encrypted-regex"]
sources = ["help"]
[[commands.subcommand.field]]
id = "unencrypted_regex"
label = "Unencrypted key regex"
type = "string"
option = ["--unencrypted-regex"]
sources = ["help"]
[[commands.subcommand.field]]
id = "input_type"
label = "Input type"
type = "enum"
option = ["--input-type"]
choices = [{ value = "json", label = "JSON" }, { value = "yaml", label = "YAML" }, { value = "dotenv", label = "dotenv" }, { value = "ini", label = "INI" }, { value = "binary", label = "Binary" }]
sources = ["help"]
[[commands.subcommand.field]]
id = "output_type"
label = "Output type"
type = "enum"
option = ["--output-type"]
choices = [{ value = "json", label = "JSON" }, { value = "yaml", label = "YAML" }, { value = "dotenv", label = "dotenv" }, { value = "ini", label = "INI" }, { value = "binary", label = "Binary" }]
sources = ["help"]
[[commands.subcommand.task]]
id = "age"
label = "Encrypt for age"
fields = ["file", "age", "output", "encrypted_regex"]
required = ["file", "age"]
[[commands.subcommand.task]]
id = "in-place"
label = "Encrypt in place"
set = { in_place = [true] }
lock = ["in_place"]
fields = ["file", "in_place", "age", "pgp", "kms"]
required = ["file"]
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["file", "age", "pgp", "kms", "output", "in_place"]
[[commands.subcommand.group]]
id = "advanced"
label = "Advanced"
fields = ["encrypted_regex", "unencrypted_regex", "input_type", "output_type"]