Skip to content

Commit

Permalink
rebase on master
Browse files Browse the repository at this point in the history
  • Loading branch information
yannick2009 committed May 12, 2024
2 parents 0cb5ae6 + d5ce0ab commit 3981616
Show file tree
Hide file tree
Showing 7 changed files with 325 additions and 19 deletions.
21 changes: 21 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
version: 2
updates:
# Maintain golang dependencies defined in go.mod
# These would open PR, these PR would be tested with the CI
# They will have to be merged manually by a maintainer
- package-ecosystem: "gomod"
directory: "/"
open-pull-requests-limit: 10 # avoid spam, if no one reacts
schedule:
interval: "daily"
time: "11:00"

# Maintain dependencies for GitHub Actions
# These would open PR, these PR would be tested with the CI
# They will have to be merged manually by a maintainer
- package-ecosystem: "github-actions"
directory: "/"
open-pull-requests-limit: 10 # avoid spam, if no one reacts
schedule:
interval: "daily"
time: "11:00"
40 changes: 40 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: CI

on:
push:
branches: [ master ]
tags: [ v* ]
pull_request:
types: [opened, synchronize, reopened]

permissions:
contents: read
# Optional: allow read access to pull request. Use with `only-new-issues` option.
pull-requests: read
# Optional: allow write access to checks to allow the action to annotate code in the PR.
checks: write

jobs:
test:
strategy:
matrix:
go-version: [stable]
platform: [ubuntu-latest]
runs-on: ${{ matrix.platform }}
steps:
- name: Install Go
uses: actions/setup-go@v5
with:
go-version: ${{ matrix.go-version }}

- name: Checkout
uses: actions/checkout@v4

- name: Run tests with race detector
run: go test -count=1 -race ./...

- name: Run golangci-lint
uses: golangci/golangci-lint-action@v6
with:
only-new-issues: true # this should be removed at some point, but there are too many issues to address
version: latest
14 changes: 14 additions & 0 deletions .github/workflows/spellchecker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
name: spell checking
on: [pull_request]

jobs:
typos:
name: Spell Check with Typos
runs-on: ubuntu-latest
steps:
- name: Checkout Actions Repository
uses: actions/checkout@v4

- name: typos-action
uses: crate-ci/[email protected]

1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,4 @@ go.work

# End of https://www.toptal.com/developers/gitignore/api/go
pman
coverage.out
230 changes: 230 additions & 0 deletions .golangci.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,230 @@
---
# Options for analysis running.
run:
# Timeout for analysis, e.g. 30s, 5m.
# Default: 1m
timeout: 5m

# Include test files or not.
# Default: true
tests: true

issues:
# Maximum issues count per one linter.
# Set to 0 to disable.
# Default: 50
max-issues-per-linter: 0
# Maximum count of issues with the same text.
# Set to 0 to disable.
# Default: 3
max-same-issues: 0

linters:
enable:
# check when errors are compared without errors.Is
- errorlint

# check imports order and makes it always deterministic.
- gci

# linter to detect errors invalid key values count
- loggercheck

# Very Basic spell error checker
- misspell

# Forbid some imports
- depguard

# simple security check
- gosec

# Copyloopvar is a linter detects places where loop variables are copied.
# this hack was needed before golang 1.22
- copyloopvar

# Fast, configurable, extensible, flexible, and beautiful linter for Go.
# Drop-in replacement of golint.
- revive

# Finds sending http request without context.Context
- noctx

# make sure to use t.Helper() when needed
- thelper

# make sure that error are checked after a rows.Next()
- rowserrcheck

# Checks that sql.Rows, sql.Stmt, sqlx.NamedStmt, pgx.Query are closed.
- sqlclosecheck

# ensure that lint exceptions have explanations. Consider the case below:
- nolintlint

# detect duplicated words in code
- dupword

# detect the possibility to use variables/constants from the Go standard library.
- usestdlibvars

# mirror suggests rewrites to avoid unnecessary []byte/string conversion
- mirror

# testify checks good usage of github.com/stretchr/testify.
- testifylint

# Check whether the function uses a non-inherited context.
- contextcheck

# We already identified we don't want these ones
# - gochecknoinit
# - goerr113 # errorlint is better
# - testpackage

linters-settings:
# configure the golang imports we don't want
depguard:
rules:
# Name of a rule.
main:
# Packages that are not allowed where the value is a suggestion.
deny:
- pkg: "github.com/pkg/errors"
desc: Should be replaced by standard lib errors package

- pkg: "golang.org/x/net/context"
desc: Should be replaced by standard lib context package


loggercheck: # invalid key values count
require-string-key: true
# Require printf-like format specifier (%s, %d for example) not present.
# Default: false
no-printf-like: true

nolintlint:
# Disable to ensure that all nolint directives actually have an effect.
# Default: false
allow-unused: true
# Enable to require an explanation of nonzero length
# after each nolint directive.
# Default: false
require-explanation: true
# Enable to require nolint directives to mention the specific
# linter being suppressed.
# Default: false
require-specific: true

# define the import orders
gci:
sections:
# Standard section: captures all standard packages.
- standard
# Default section: catchall that is not standard or custom
- default
# linters that related to local tool, so they should be separated
- localmodule

staticcheck:
# SAxxxx checks in https://staticcheck.io/docs/configuration/options/#checks
checks: ["all"]

revive:
enable-all-rules: true
rules:
# we must provide configuration for linter that requires them
# enable-all-rules is OK, but many revive linters expect configuration
# and cannot work without them

# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#cognitive-complexity
- name: cognitive-complexity
severity: warning
arguments: [7]
disabled: true # it would require a big refactoring, disabled for now

# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#context-as-argument
- name: context-as-argument
arguments:
- allowTypesBefore: "*testing.T"

# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#cyclomatic
- name: cyclomatic
arguments: [3]
disabled: true # it would require a big refactoring, disabled for now


# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#exported
- name: exported
arguments:
# enables checking public methods of private types
- "checkPrivateReceivers"
# make error messages clearer
- "sayRepetitiveInsteadOfStutters"

# this linter completes errcheck linter, it will report method called without handling the error
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#unhandled-error
- name: unhandled-error
arguments: # here are the exceptions we don't want to be reported
- "fmt.Print.*"
- "fmt.Fprint.*"
- "bytes.Buffer.Write"
- "bytes.Buffer.WriteByte"
- "bytes.Buffer.WriteString"
- "strings.Builder.WriteString"
- "strings.Builder.WriteRune"

# boolean parameters that create a control coupling could be useful
# but this one is way too noisy
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#flag-parameter
- name: flag-parameter
disabled: true

# depguard linter is easier to configure and more powerful
# than revive.imports-blocklist
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#imports-blocklist
- name: imports-blocklist
disabled: true

# it's not really a problem for us in term of readability
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#nested-structs
- name: nested-structs
disabled: true

# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#add-constant
# too noisy
- name: add-constant
disabled: true

# too many false positive on jqp code
- name: modifies-value-receiver
disabled: true

# disable everything we don't want
- name: line-length-limit
disabled: true
- name: argument-limit
disabled: true
- name: banned-characters
disabled: true
- name: max-public-structs
disabled: true
- name: function-result-limit
disabled: true
- name: function-length
disabled: true
- name: file-header
disabled: true
- name: empty-lines
disabled: true

misspell:
locale: "US" # Fix the colour => color, and co


output:
# Make issues output unique by line.
# Default: true
# Note: unique in this case means that you can have at most 1 issue per line of code.
# one issue with a given line and we want to see them all at once.
uniq-by-line: false
12 changes: 6 additions & 6 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,24 @@ go 1.22.2

require (
github.com/charmbracelet/bubbles v0.18.0
github.com/charmbracelet/bubbletea v0.25.0
github.com/charmbracelet/bubbletea v0.26.2
github.com/charmbracelet/glamour v0.7.0
github.com/charmbracelet/lipgloss v0.10.0
github.com/spf13/cobra v1.8.0
github.com/stretchr/testify v1.8.1
github.com/thoas/go-funk v0.9.3
go.etcd.io/bbolt v1.3.9
golang.org/x/text v0.14.0
go.etcd.io/bbolt v1.3.10
golang.org/x/text v0.15.0
)

require (
github.com/alecthomas/chroma/v2 v2.13.0 // indirect
github.com/atotto/clipboard v0.1.4 // indirect
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
github.com/aymerick/douceur v0.2.0 // indirect
github.com/containerd/console v1.0.4 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/dlclark/regexp2 v1.11.0 // indirect
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect
github.com/gorilla/css v1.0.1 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
Expand All @@ -42,7 +42,7 @@ require (
github.com/yuin/goldmark-emoji v1.0.2 // indirect
golang.org/x/net v0.24.0 // indirect
golang.org/x/sync v0.7.0 // indirect
golang.org/x/sys v0.19.0 // indirect
golang.org/x/term v0.19.0 // indirect
golang.org/x/sys v0.20.0 // indirect
golang.org/x/term v0.20.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
Loading

0 comments on commit 3981616

Please sign in to comment.