golangci-lint can run all the currently enabled linters, and as far as I
can tell, does it in under 5 seconds as opposed to over 180 seconds
(compare `time make cilint` and `time make lint`).
Some of the linters that are listed in the "enabled" section but
commented out looked like a good idea to me, and fairly low hanging
fruit to fix, but they are not passing at the moment.
All the linters covered in the current Makefile are run.
TODO:
- replace lint target in Makefile with golangci-lint
- remove .github/workflow/errcheck.yml
Store service credentials securely in the stores supported by docker:
- https://github.com/docker/docker-credential-helpers#available-programs
Introduces a top-level config property, "secretStore" and additional
command line arguments to manage the stored secrets.
The value of secretStore is used to find a helper command,
`docker-credential-<secretStore>`.
The docker project currently provides 4 store helpers:
- "osxkeychain" (OS X only)
- "secretservice" (Linux only)
- "wincred" (Windows only)
- "pass" (any OS supporting pass, which uses gpg2)
Docker-for-desktop installs the credential helpers above, as well as
"desktop" (docker-credential-desktop).
Generic installation instructions for the helpers:
- https://github.com/docker/docker-credential-helpers#installation
Users could provide additional helpers, the only requirement is that the
helper implements the credential store protocol:
- https://github.com/docker/docker-credential-helpers#development
The credential protocol is open, and new credential stores can be
implemented by any CLI satisfying the protocol:
- https://github.com/docker/docker-credential-helpers#development
The modifications to existing modules is not tested due to lack
of API keys, but demonstrates the unobtrusive changes required to
use the secret store.
* Another actions test
Signed-off-by: Chris Cummer <chriscummer@me.com>
* Add BuildTest action
Signed-off-by: Chris Cummer <chriscummer@me.com>
* Remove lint check for the time being (so many issues)
Signed-off-by: Chris Cummer <chriscummer@me.com>
* Fix issues found by errcheck
Signed-off-by: Chris Cummer <chriscummer@me.com>
* Fix errors found by staticcheck
Signed-off-by: Chris Cummer <chriscummer@me.com>
* Fix issues found by goimports
Signed-off-by: Chris Cummer <chriscummer@me.com>
* Comment out the action for the time being
Signed-off-by: Chris Cummer <chriscummer@me.com>
* Fix shadowed variables
Signed-off-by: Chris Cummer <chriscummer@me.com>
* go mod tidy
Signed-off-by: Chris Cummer <chriscummer@me.com>
* Remove buildtest.yml
Signed-off-by: Chris Cummer <chriscummer@me.com>
* go mod tidy
Signed-off-by: Chris Cummer <chriscummer@me.com>
* WTF-657 Add spec coverage for cfg/common_settings.go
Signed-off-by: Chris Cummer <chriscummer@me.com>
* WTF-657 Add spec coverage for cfg/position_validation.go
Signed-off-by: Chris Cummer <chriscummer@me.com>
* WTF-657 Add spec coverage for cfg/validations.go
Signed-off-by: Chris Cummer <chriscummer@me.com>
* WTF-657 Add spec coverage for checklist/checklist.go
Signed-off-by: Chris Cummer <chriscummer@me.com>
* WTF-657 Add spec coverage for checklist/checklist_item.go
Signed-off-by: Chris Cummer <chriscummer@me.com>
* WTF-657 Add spec coverage for utils/conversions.go
Signed-off-by: Chris Cummer <chriscummer@me.com>
* WTF-657 Get rid of utils.Home() function
Signed-off-by: Chris Cummer <chriscummer@me.com>
* WTF-657 Add spec coverage for utils/homedir.go
Signed-off-by: Chris Cummer <chriscummer@me.com>
* WTF-657 Add spec coverage for utils/text.go
Signed-off-by: Chris Cummer <chriscummer@me.com>
* WTF-657 Clean up utils/utils.go
Signed-off-by: Chris Cummer <chriscummer@me.com>
Issue #600 points out Jenkins module panics occasionally
I noticed that a number of places panic because of JSON parsing
Centralize JSON parsing, have it return an error, and have widgets
report the error
'apiKey' is one that people are likely to spell wrong in their configs
as 'apikey'. Given that there's no sanity-checking around required
config values yet, and a missing API key can cause silent failures in
some modules, be liberal in accepting spelling.
Have all instances take a function
Update the remaining modules to take this into account
Numerous smaller refactors to make some widgets work more or less the same
GetRect can lead to a race condition
Add a RenderFunc method so that we can call try to
wrap even more of our rendering in the thread safe
`QueueUpdateDraw` method
* Some assignments simplified by using assignment operators
* Rewrite switch statement with only one case as if.
* Rewrite if-else chain as a switch statement.
* go fmt `modules/todoist/project.go` file.
Define help with keys
This means that keys and help are automatically in sync
This means that you can't define keys, but forget help
This unfortunately also means that formatting may not be quite as good
There is already default handling of title. Remove instances where people are unknowingly overriding it
For instances where we want to set special things, make sure to use CommonSettings.Title, so people can still override
Rather than referencing wtc.Config, instead pass the global config
Also, look up config for the module early and pass that in sooner, to deal with fewer long paths and get rid of the
ConfigKey variable
Allows users to filter the Jenkins jobs shown in the widget by providing a regular expression in the config file. The regex should be specified in the config like so:
```
jobNameRegex: ^[a-z]+.$
```
Another example:
```
jobNameRegex^[a-z]+\[[0-9]+\]$
```
If, on startup, a widget's positional configuration is invalid (ie:
cannot be displayed onscreen) then terminate the app and inform about
which widget is erroring