- Standard linters built using golang functions
- contains
- regexp match
- Ignore mechanisms
- Ignore full file
- polylint disable-for-file=$RULE_ID
- Ignore next line
- polylint disable-next-line=$RULE_ID
- polylint disable=$RULE_ID
- Ignore for path match
- polylint disable-for-path=$RULE_ID,$RULE_ID2
- Ignore full file
- Types of rules
- line
- file content
- file path
- Builtin linters configured for use in config file
- Plugin linters configured for use in config file
- otto / goja / v8go
- supports line / file / path types
- Use cobra for CLI
- Build in a way to source rules from remote locations, via path + sha?
- ie re-usable plugin infrastructure
- support include statements
- support SHA hash requirement for includes
- support caching
- Rename rules to... rules or validations?
- Add validation that the version of config file is supported
- Ensure that we confirm uniqueness of rule ids at the beginning of run during a pre-flight check
- Replace argv[0] option to accept:
- a directory
- many files passed as argv
- [deferred]a testing config file used as virtual filesystem
- Set the severity threshold for what constitutes a non-zero exit code
- Add pluggable output reporters
- Textual / table based reporter
- Colored output
- JSON reporter
- Configurable logging (log levels for debugging and k/v log values)
- Add
init
command to create a default named config file - Remove panics that are poor programming style
- Add testing for config files... lines, path
- Setup goreleaser for releases
- Setup version bumper
- Ensure version is embedded into cobra cli and available for --version
- Add way to pipe to exec process and non-zero exit is a failing to provide builtin, js, exec mechanisms
- Setup version reading https://goreleaser.com/cookbooks/using-main.version/
- Add this as a hermit-package in zph/hermit-packages
- Setup support for gitignore and global gitignore to avoid reading things like node_modules 🥱
- Setup parallelism for larger repos
- Requires reworking how we use goja functions because those VMs are not thread safe
- Could setup a worker pool of VMs? Or could provision new VM for each fn call....