-
Notifications
You must be signed in to change notification settings - Fork 65
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
QoL additions Nix for its wonderful packaging/better reproducibility. Go based tools are tracked via go modules using tools.go setup. A makefile because its just nice and easy and well known. I'm using tinkerbell/lint-install because it integrates with Makefiles well and like the way it configures the tools it uses. Replaces non-functional TravisCI with GitHub Actions. And then just a bunch of formatting/lint fixes.
- Loading branch information
Showing
23 changed files
with
772 additions
and
258 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
has nix && use nix | ||
dotenv_if_exists | ||
PATH_add bin | ||
path_add GOBIN bin |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
name: For each commit and PR | ||
on: | ||
push: | ||
pull_request: | ||
|
||
jobs: | ||
validation: | ||
runs-on: [ubuntu-latest] | ||
env: | ||
CGO_ENABLED: 0 | ||
steps: | ||
- name: Setup Dynamic Env | ||
run: | | ||
echo "MAKEFLAGS=-j$(nproc)" | tee $GITHUB_ENV | ||
- name: Checkout code | ||
uses: actions/checkout@v2 | ||
|
||
- name: Install nix | ||
uses: cachix/install-nix-action@018abf956a0a15673dae4932ae26f0f071ac0944 | ||
with: | ||
nix_path: nixpkgs=channel:nixpkgs-unstable | ||
|
||
- name: Fetch Nix Derivations | ||
run: nix-shell --command true | ||
|
||
- name: Install Go tools | ||
run: nix-shell --run 'make tools' | ||
|
||
- name: Linters and Go Formatting | ||
run: nix-shell --run 'make verify' | ||
|
||
- name: Non Go Formatters | ||
run: ./.github/workflows/formatters.sh | ||
|
||
- name: Install ZFS | ||
run: sudo apt-get -y update && sudo apt-get -y install zfsutils-linux | ||
|
||
- name: Tests | ||
run: nix-shell --run 'sudo make test' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
#!/usr/bin/env nix-shell | ||
#!nix-shell -i bash ../../shell.nix | ||
#shellcheck shell=bash | ||
|
||
set -eux | ||
|
||
failed=0 | ||
|
||
if ! git ls-files '*.md' '*.yaml' '*.yml' | xargs prettier --list-different --write; then | ||
failed=1 | ||
fi | ||
|
||
if ! shfmt -f . | xargs shfmt -l -d; then | ||
failed=1 | ||
fi | ||
|
||
if ! nixfmt shell.nix; then | ||
failed=1 | ||
fi | ||
|
||
if ! git diff | (! grep .); then | ||
failed=1 | ||
fi | ||
|
||
exit "$failed" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,5 @@ | ||
bin | ||
.vagrant | ||
|
||
# added by lint-install | ||
out/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,207 @@ | ||
run: | ||
# The default runtime timeout is 1m, which doesn't work well on Github Actions. | ||
timeout: 4m | ||
|
||
# NOTE: This file is populated by the lint-install tool. Local adjustments may be overwritten. | ||
linters-settings: | ||
cyclop: | ||
# NOTE: This is a very high transitional threshold | ||
max-complexity: 37 | ||
package-average: 34.0 | ||
skip-tests: true | ||
|
||
gocognit: | ||
# NOTE: This is a very high transitional threshold | ||
min-complexity: 98 | ||
|
||
dupl: | ||
threshold: 200 | ||
|
||
goconst: | ||
min-len: 4 | ||
min-occurrences: 5 | ||
ignore-tests: true | ||
|
||
gosec: | ||
excludes: | ||
- G107 # Potential HTTP request made with variable url | ||
- G204 # Subprocess launched with function call as argument or cmd arguments | ||
- G404 # Use of weak random number generator (math/rand instead of crypto/rand | ||
|
||
errorlint: | ||
# these are still common in Go: for instance, exit errors. | ||
asserts: false | ||
|
||
exhaustive: | ||
default-signifies-exhaustive: true | ||
|
||
nestif: | ||
min-complexity: 8 | ||
|
||
nolintlint: | ||
require-explanation: true | ||
allow-unused: false | ||
require-specific: true | ||
|
||
revive: | ||
ignore-generated-header: true | ||
severity: warning | ||
rules: | ||
- name: atomic | ||
- name: blank-imports | ||
- name: bool-literal-in-expr | ||
- name: confusing-naming | ||
- name: constant-logical-expr | ||
- name: context-as-argument | ||
- name: context-keys-type | ||
- name: deep-exit | ||
- name: defer | ||
- name: range-val-in-closure | ||
- name: range-val-address | ||
- name: dot-imports | ||
- name: error-naming | ||
- name: error-return | ||
- name: error-strings | ||
- name: errorf | ||
- name: exported | ||
- name: identical-branches | ||
- name: if-return | ||
- name: import-shadowing | ||
- name: increment-decrement | ||
- name: indent-error-flow | ||
- name: indent-error-flow | ||
- name: package-comments | ||
- name: range | ||
- name: receiver-naming | ||
- name: redefines-builtin-id | ||
- name: superfluous-else | ||
- name: struct-tag | ||
- name: time-naming | ||
- name: unexported-naming | ||
- name: unexported-return | ||
- name: unnecessary-stmt | ||
- name: unreachable-code | ||
- name: unused-parameter | ||
- name: var-declaration | ||
- name: var-naming | ||
- name: unconditional-recursion | ||
- name: waitgroup-by-value | ||
|
||
staticcheck: | ||
go: "1.16" | ||
|
||
unused: | ||
go: "1.16" | ||
|
||
output: | ||
sort-results: true | ||
|
||
linters: | ||
disable-all: true | ||
enable: | ||
- asciicheck | ||
- bodyclose | ||
- cyclop | ||
- deadcode | ||
- dogsled | ||
- dupl | ||
- durationcheck | ||
- errcheck | ||
- errname | ||
- errorlint | ||
- exhaustive | ||
- exportloopref | ||
- forcetypeassert | ||
- gocognit | ||
- goconst | ||
- gocritic | ||
- godot | ||
- gofmt | ||
- gofumpt | ||
- gosec | ||
- goheader | ||
- goimports | ||
- goprintffuncname | ||
- gosimple | ||
- govet | ||
- ifshort | ||
- importas | ||
- ineffassign | ||
- makezero | ||
- misspell | ||
- nakedret | ||
- nestif | ||
- nilerr | ||
- noctx | ||
- nolintlint | ||
- predeclared | ||
# disabling for the initial iteration of the linting tool | ||
# - promlinter | ||
- revive | ||
- rowserrcheck | ||
- sqlclosecheck | ||
- staticcheck | ||
- structcheck | ||
- stylecheck | ||
- thelper | ||
- tparallel | ||
- typecheck | ||
- unconvert | ||
- unparam | ||
- unused | ||
- varcheck | ||
- wastedassign | ||
- whitespace | ||
|
||
# Disabled linters, due to being misaligned with Go practices | ||
# - exhaustivestruct | ||
# - gochecknoglobals | ||
# - gochecknoinits | ||
# - goconst | ||
# - godox | ||
# - goerr113 | ||
# - gomnd | ||
# - lll | ||
# - nlreturn | ||
# - testpackage | ||
# - wsl | ||
# Disabled linters, due to not being relevant to our code base: | ||
# - maligned | ||
# - prealloc "For most programs usage of prealloc will be a premature optimization." | ||
# Disabled linters due to bad error messages or bugs | ||
# - tagliatelle | ||
|
||
issues: | ||
# Excluding configuration per-path, per-linter, per-text and per-source | ||
exclude-rules: | ||
- path: _test\.go | ||
linters: | ||
- dupl | ||
- errcheck | ||
- forcetypeassert | ||
- gocyclo | ||
- gosec | ||
- noctx | ||
|
||
- path: .*cmd.* | ||
linters: | ||
- noctx | ||
|
||
- path: main\.go | ||
linters: | ||
- noctx | ||
|
||
- path: .*cmd.* | ||
text: "deep-exit" | ||
|
||
- path: main\.go | ||
text: "deep-exit" | ||
|
||
# This check is of questionable value | ||
- linters: | ||
- tparallel | ||
text: "call t.Parallel on the top level as well as its subtests" | ||
|
||
# Don't hide lint issues just because there are many of them | ||
max-same-issues: 0 | ||
max-issues-per-linter: 0 |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
--- | ||
extends: default | ||
|
||
rules: | ||
braces: | ||
max-spaces-inside: 1 | ||
brackets: | ||
max-spaces-inside: 1 | ||
comments: disable | ||
comments-indentation: disable | ||
document-start: disable | ||
line-length: | ||
level: warning | ||
max: 160 | ||
allow-non-breakable-inline-mappings: true | ||
truthy: disable |
Oops, something went wrong.