89315e74ad
* Move default command validation to build Move the validation of default commands - checking if a node has multiple default commands or a default command has children - to the build phase rather than tracing. These errors are with the structure of the CLI ast and are detectable before parsing the command line. Add a couple of tests for some of the default command error cases. * Disallow positional args on a default command Do not allow a default command to have positional arguments. The current check is only for branching args, but the error message implies that positional args are not allowed either. So add a check for positional args too, and add a test case for it. This is breaking change to the API but is unlikely to have ill-effect as positional args on a default command cannot be used without explicitly naming the command (i.e. not using it as a default). * Allow default commands with cmds/args/flags Allow default commands to have sub-commands, args and flags when tagged with `default:"withargs"`. This makes specifying the name of the command on the CLI completely optional as long as the args to that command are not ambiguous with other commands.
63 lines
1.2 KiB
YAML
63 lines
1.2 KiB
YAML
run:
|
|
tests: true
|
|
|
|
output:
|
|
print-issued-lines: false
|
|
|
|
linters:
|
|
enable-all: true
|
|
disable:
|
|
- maligned
|
|
- lll
|
|
- gochecknoglobals
|
|
- wsl
|
|
- funlen
|
|
- gocognit
|
|
- gomnd
|
|
- goprintffuncname
|
|
- paralleltest
|
|
- nlreturn
|
|
- goerr113
|
|
- ifshort
|
|
- testpackage
|
|
- wrapcheck
|
|
- exhaustivestruct
|
|
- forbidigo
|
|
- gci
|
|
- godot
|
|
- gofumpt
|
|
- cyclop
|
|
- errorlint
|
|
- nestif
|
|
- golint
|
|
- scopelint
|
|
- interfacer
|
|
- tagliatelle
|
|
- thelper
|
|
- godox
|
|
- goconst
|
|
|
|
linters-settings:
|
|
govet:
|
|
check-shadowing: true
|
|
dupl:
|
|
threshold: 100
|
|
gocyclo:
|
|
min-complexity: 20
|
|
exhaustive:
|
|
default-signifies-exhaustive: true
|
|
|
|
issues:
|
|
max-per-linter: 0
|
|
max-same: 0
|
|
exclude-use-default: false
|
|
exclude:
|
|
- '^(G104|G204):'
|
|
# Very commonly not checked.
|
|
- 'Error return value of .(.*\.Help|.*\.MarkFlagRequired|(os\.)?std(out|err)\..*|.*Close|.*Flush|os\.Remove(All)?|.*printf?|os\.(Un)?Setenv). is not checked'
|
|
- 'exported method (.*\.MarshalJSON|.*\.UnmarshalJSON) should have comment or be unexported'
|
|
- 'composite literal uses unkeyed fields'
|
|
- 'bad syntax for struct tag key'
|
|
- 'bad syntax for struct tag pair'
|
|
- 'result .* \(error\) is always nil'
|