chore: add github action, Makefile

main
sudo pacman -Syu 2022-11-24 23:16:32 +07:00
parent 90e43ed163
commit e3fd917ba7
No known key found for this signature in database
GPG Key ID: D6CB5C6C567C47B0
6 changed files with 209 additions and 0 deletions

6
.github/dependabot.yml vendored Normal file
View File

@ -0,0 +1,6 @@
version: 2
updates:
- package-ecosystem: "gomod"
directory: "/"
schedule:
interval: "daily"

51
.github/workflows/go.yml vendored Normal file
View File

@ -0,0 +1,51 @@
name: Go
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
test:
name: Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-go@v3
with:
go-version: "1.19"
check-latest: true
cache: true
- run: go test -race -failfast ./...
build:
name: Build
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- uses: actions/checkout@v3
- uses: actions/setup-go@v3
with:
go-version: "1.19"
check-latest: true
cache: true
- run: go build ./cmd/gofimports
golangci-lint:
name: golangci-lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: actions/setup-go@v3
with:
go-version: "1.19"
check-latest: true
cache: true
- uses: golangci/golangci-lint-action@v3
with:
version: latest

29
.github/workflows/goreleaser.yml vendored Normal file
View File

@ -0,0 +1,29 @@
name: goreleaser
on:
push:
tags:
- "*"
permissions:
contents: write
jobs:
goreleaser:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: actions/setup-go@v3
with:
go-version: "1.19"
check-latest: true
cache: true
- uses: goreleaser/goreleaser-action@v3
with:
distribution: goreleaser
version: latest
args: release --rm-dist
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

75
.golangci.yml Normal file
View File

@ -0,0 +1,75 @@
run:
tests: false
skip-dirs:
- ".*test.*"
- ".*mock.*"
- ".*generated.*"
- ".*example.*"
skip-files:
- ".*Mock.*"
- ".*_mock.*"
- ".*_generated.*"
output:
sort-results: true
linters:
disable-all: true
enable:
- errcheck
- gosimple
- govet
- ineffassign
- staticcheck
- typecheck
- unused
- errchkjson
- errname
- errorlint
- execinquery
- gocritic
- goerr113
- gofumpt
- gosec
- importas
- makezero
- nilnil
- prealloc
- unconvert
fast: true
linters-settings:
gosec:
excludes:
- G101
- G112
- G402
- G404
- G501
- G505
exclude-generated: true
govet:
check-shadowing: false
disable-all: true
enable:
- assign
- atomic
- bools
- buildtag
- composites
- copylocks
- fieldalignment
- httpresponse
- loopclosure
- lostcancel
- nilfunc
- printf
- unmarshal
- unreachable
- unusedresult
staticcheck:
checks: ["all", "-SA1019"]
gocritic:
enabled-tags:
- style
- performance

21
.goreleaser.yml Normal file
View File

@ -0,0 +1,21 @@
before:
hooks:
- go mod tidy
builds:
- main: ./cmd/gofimports
goos:
- linux
- windows
- darwin
goarch:
- amd64
- arm64
universal_binaries:
- replace: true
archives:
- format_overrides:
- goos: windows
format: zip
changelog:
skip: false
use: github

27
Makefile Normal file
View File

@ -0,0 +1,27 @@
.PHONY: all test test-color coverage coverage-cli coverate-html lint format
all: test-color lint format
go mod tidy
test:
go test -race -failfast ./...
test-color:
go install github.com/haunt98/go-test-color@latest
go-test-color -race -failfast ./...
coverage:
go test -coverprofile=coverage.out ./...
coverage-cli: coverage
go tool cover -func=coverage.out
coverage-html: coverage
go tool cover -html=coverage.out
lint:
golangci-lint run ./...
format:
go install mvdan.cc/gofumpt@latest
gofumpt -l -w -extra .