Implementation
final FigSpec passSpec = FigSpec(
name: 'pass',
description: 'Pass - stores, retrieves, generates, and synchronizes passwords securely',
args: [
FigArg(
name: 'pass-name',
description: 'The password you want to show',
generators: [_listPasswords],
),
],
options: [
FigOption(
name: ['--clip', '-c'],
description: 'Copy the password to the clipboard',
),
FigOption(
name: ['--qrcode', '-q'],
description: 'Display a QRcode of the password',
),
FigOption(
name: ['--help'],
description: 'Show help for pass',
),
],
subcommands: [
FigSubcommand(
name: ['init'],
description: 'Initialize new password storage and use gpg-id for encryption',
args: [
FigArg(
name: 'gpg-id',
description: 'The gpg-id you want to use to encrypt your password store',
),
],
options: [
FigOption(
name: ['--path', '-p'],
description: 'A specific gpg-id or set of gpg-ids is assigned for that specific sub folder of the password store',
args: [
FigArg(
name: 'sub-folder',
template: 'folders',
),
],
),
],
),
FigSubcommand(
name: ['insert'],
description: 'Insert a new password into the password store called pass-name',
args: [
FigArg(
name: 'pass-name',
description: 'The password name',
),
],
options: [
FigOption(
name: ['--echo', '-e'],
description: 'Disable keyboard echo when the password is entered and confirm the password by asking for it twice',
),
FigOption(
name: ['--multi-line', '-m'],
description: 'Lines will be read until EOF or Ctrl+D is reached. Otherwise, only a single line from standard in is read',
),
FigOption(
name: ['--force', '-f'],
description: "Don't prompt before overwriting an existing password",
),
],
),
FigSubcommand(
name: ['git'],
description: 'Password store git functions',
loadSpec: 'git',
),
FigSubcommand(
name: ['version'],
description: 'Show version information',
),
FigSubcommand(
name: ['help'],
description: 'Show usage message',
),
FigSubcommand(
name: ['cp'],
description: 'Copies the password or directory named old-path to new-path',
args: [
FigArg(
name: 'old-path',
description: 'The old password name or directory',
generators: [_listPasswords],
),
FigArg(
name: 'new-path',
description: 'The new password name or directory',
),
],
options: [
FigOption(
name: ['--force', '-f'],
description: 'Do not interactively prompt before moving',
),
],
),
FigSubcommand(
name: ['mv'],
description: 'Renames the password or directory named old-path to new-path',
args: [
FigArg(
name: 'old-path',
description: 'The old password name or directory',
generators: [_listPasswords],
),
FigArg(
name: 'new-path',
description: 'The new password name or directory',
),
],
options: [
FigOption(
name: ['--force', '-f'],
description: 'Do not interactively prompt before moving',
),
],
),
FigSubcommand(
name: ['rm'],
description: 'Remove the password named pass-name from the password store',
args: [
FigArg(
name: 'pass-name',
description: 'The password name',
generators: [_listPasswords],
),
],
options: [
FigOption(
name: ['--recursive', '-r'],
description: 'Delete pass-name recursively if it is a directory',
),
FigOption(
name: ['--force', '-f'],
description: 'Do not interactively prompt before removal',
),
],
),
FigSubcommand(
name: ['generate'],
description: 'Generate a new password of length pass-length and insert into pass-name',
args: [
FigArg(
name: 'pass-name',
description: 'The password name',
),
FigArg(
name: 'pass-length',
description: 'The length of the password',
isOptional: true,
),
],
options: [
FigOption(
name: ['--no-symbols', '-n'],
description: 'Do not use any non-alphanumeric characters in the generated password',
),
FigOption(
name: ['--clip', '-c'],
description: 'Do not print the password but instead copy it to the clipboard',
),
FigOption(
name: ['--in-place', '-i'],
description: 'Do not interactively prompt, and only replace the first line of the password file with the new generated password, keeping the remainder of the file intact',
),
FigOption(
name: ['--force', '-f'],
description: 'Overwrite the existing password',
),
],
),
FigSubcommand(
name: ['ls', 'list'],
description: 'List names of passwords inside the tree at subfolder by using the tree',
args: [
FigArg(
name: 'password sub-directory',
description: 'The password sub directory you want to list',
isOptional: true,
generators: [_listDirectories],
),
],
),
FigSubcommand(
name: ['find'],
description: 'List names of passwords inside the tree that match pass-names',
args: [
FigArg(
name: 'pass-name',
description: 'The password name you want to search for',
),
],
),
FigSubcommand(
name: ['show'],
description: 'Decrypt and print a password',
args: [
FigArg(
name: 'pass-name',
description: 'The password you want to show',
generators: [_listPasswords],
),
],
options: [
FigOption(
name: ['--clip', '-c'],
description: 'Copy the password to the clipboard',
),
FigOption(
name: ['--qrcode', '-q'],
description: 'Display a QRcode of the password',
),
],
),
FigSubcommand(
name: ['edit'],
description: 'Insert a new password or edit an existing password using the default text editor specified by the environment',
args: [
FigArg(
name: 'pass-name',
description: 'The password you want to edit',
generators: [_listPasswords],
),
],
),
FigSubcommand(
name: ['grep'],
description: 'Searches inside each decrypted password file for search-string. Grep options can be used',
loadSpec: 'grep',
args: [
FigArg(
name: 'pass-name',
description: 'The password name you want to grep for',
),
],
),
],
);