function Get-GitCommandBlameDefinition { <# .SYNOPSIS Get the command definition for the git blame verb command This is useful for validating a git input is reasonably correct .NOTES Not documented here: [-M] [-C] Not handled because this is a weird scenario to match on given the other constraints # TODO ~ cbrand - Handle this case #> [CmdletBinding()] [OutputType([object])] param() return @{ CommandName = 'Blame' Alias = @( 'blame' ) [-c] [-b] [-l] [--root] [-t] [-f] [-n] [-s] [-e] [-p] [-w] [--incremental] [-L ] [-S ] [--since=] [--ignore-rev ] [--ignore-revs-file ] [--progress] [--abbrev=] [ | --contents | --reverse ..] Arguments = @( @{ ArgumentName = 'Verbose' Variants = @( '--verbose' '-vv' '-v' ) RequiredAdditionalArguments = 0 EqualsSplitAcceptRegex = '' TrailingArguments = @() } @{ ArgumentName = 'Dry Run' Variants = @( '--dry-run' '-n' ) RequiredAdditionalArguments = 0 EqualsSplitAcceptRegex = '' TrailingArguments = @() } @{ ArgumentName = 'Force' Variants = @( '--force' '-f' ) RequiredAdditionalArguments = 0 EqualsSplitAcceptRegex = '' TrailingArguments = @() } @{ ArgumentName = 'Interactive' Variants = @( '--interactive' '-i' ) RequiredAdditionalArguments = 0 EqualsSplitAcceptRegex = '' TrailingArguments = @() } @{ ArgumentName = 'Patch' Variants = @( '--patch' '-p' ) RequiredAdditionalArguments = 0 EqualsSplitAcceptRegex = '' TrailingArguments = @() } @{ ArgumentName = 'Edit' Variants = @( '--edit' '-e' ) RequiredAdditionalArguments = 0 EqualsSplitAcceptRegex = '' TrailingArguments = @() } @{ ArgumentName = 'MaybeUpdate' Variants = @( '--no-all' '--all' '--no-ignore-removal' '--ignore-removal' '-A' ) RequiredAdditionalArguments = 0 EqualsSplitAcceptRegex = '' TrailingArguments = @( @{ ArgumentName = 'Update' Variants = @( '-update' '-u' ) RequiredAdditionalArguments = 0 EqualsSplitAcceptRegex = '' TrailingArguments = @() } ) } @{ ArgumentName = 'IntentToAdd' Variants = @( '--intent-to-add' '-N' ) RequiredAdditionalArguments = 0 EqualsSplitAcceptRegex = '' TrailingArguments = @() } @{ ArgumentName = 'Refresh' Variants = @( '--refresh' ) RequiredAdditionalArguments = 0 EqualsSplitAcceptRegex = '' TrailingArguments = @() } @{ ArgumentName = 'IgnoreErrors' Variants = @( '--ignore-errors' ) RequiredAdditionalArguments = 0 EqualsSplitAcceptRegex = '' TrailingArguments = @() } @{ ArgumentName = 'IgnoreMissing' Variants = @( '--ignore-missing' ) RequiredAdditionalArguments = 0 EqualsSplitAcceptRegex = '' TrailingArguments = @() } @{ ArgumentName = 'Renormalize' Variants = @( '--renormalize' ) RequiredAdditionalArguments = 0 EqualsSplitAcceptRegex = '' TrailingArguments = @() } @{ ArgumentName = 'ChangeModificationStrategy' Variants = @( '--chmod' ) RequiredAdditionalArguments = 0 EqualsSplitAcceptRegex = '(+|-){1}.+' TrailingArguments = @() } @{ ArgumentName = 'PathspecFromFile' Variants = @( '--pathspec-from-file' ) RequiredAdditionalArguments = 0 EqualsSplitAcceptRegex = '.+' TrailingArguments = @( @{ ArgumentName = 'PathspecFileNull' Variants = @( '--pathspec-file-nul' ) RequiredAdditionalArguments = 0 EqualsSplitAcceptRegex = '' TrailingArguments = @() } ) } @{ ArgumentName = 'RestOfLine' Variants = @( '--' ) RequiredAdditionalArguments = 0 EqualsSplitAcceptRegex = '' TrailingArguments = @() } ) } }