ci: modernize repo to use justfile (#33)
diff --git a/.copywrite.hcl b/.copywrite.hcl
deleted file mode 100644
index 87af51d..0000000
--- a/.copywrite.hcl
+++ /dev/null
@@ -1,12 +0,0 @@
-schema_version = 1
-
-project {
- license = "MPL-2.0"
- copyright_holder = "The M1CPU Authors"
- copyright_year = 2022
- header_ignore = [
- ".golangci.yaml",
- ".copywrite.hcl",
- ".github/**",
- ]
-}
diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml
index b5501e3..44db944 100644
--- a/.github/dependabot.yaml
+++ b/.github/dependabot.yaml
@@ -1,7 +1,15 @@
version: 2
updates:
- - package-ecosystem: gomod
- directory: "/"
+ - package-ecosystem: "github-actions"
+ directories:
+ - "/"
+ schedule:
+ interval: "monthly"
+ labels:
+ - "dependencies"
+ - package-ecosystem: "gomod"
+ directories:
+ - "/"
schedule:
interval: "monthly"
labels:
diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
index b7b4ba4..bbf5077 100644
--- a/.github/workflows/ci.yaml
+++ b/.github/workflows/ci.yaml
@@ -1,41 +1,28 @@
name: Run CI Tests
-on: [push]
+on:
+ pull_request:
+ paths-ignore:
+ - 'README.md'
+ - 'LICENSE'
+ push:
+ branches:
+ - 'main'
jobs:
- run-copywrite:
- runs-on: ubuntu-22.04
- steps:
- - uses: actions/checkout@v4
- - uses: hashicorp/setup-copywrite@v1.1.2
- - name: verify copyright
- run: |
- copywrite headers --plan
- run-lint:
- runs-on: [macos-latest]
- steps:
- - uses: actions/checkout@v3
- - uses: hashicorp/setup-golang@v1
- with:
- version-file: go.mod
- - name: GolangCI-Lint
- uses: golangci/golangci-lint-action@v3
- with:
- version: v1.52.2
- skip-cache: true
run-tests:
- strategy:
- fail-fast: false
- matrix:
- os:
- - macos-11
- - macos-12
- - ubuntu-22.04
- runs-on: ${{matrix.os}}
+ timeout-minutes: 5
+ runs-on: ubuntu-24.04
steps:
- - uses: actions/checkout@v3
- - uses: hashicorp/setup-golang@v1
+ - uses: actions/checkout@v6
+ - uses: extractions/setup-just@53165ef7e734c5c07cb06b3c8e7b647c5aa16db3
+ - uses: actions/setup-go@v6
with:
- version-file: go.mod
+ cache: true
+ go-version-file: go.mod
+ - name: Show System
+ run: |
+ uname -a
+ just sysinfo
- name: Run Go Test
run: |
- make vet
- make test
+ just init tidy lint tests
+
diff --git a/.github/workflows/scripts/golangci.yaml b/.github/workflows/scripts/golangci.yaml
new file mode 100644
index 0000000..a44689c
--- /dev/null
+++ b/.github/workflows/scripts/golangci.yaml
@@ -0,0 +1,43 @@
+version: "2"
+linters:
+ enable:
+ - asasalint
+ - asciicheck
+ - bidichk
+ - bodyclose
+ - copyloopvar
+ - dogsled
+ - dupword
+ - durationcheck
+ - errname
+ - errorlint
+ - exhaustive
+ - gochecknoinits
+ - gocritic
+ - makezero
+ - misspell
+ - musttag
+ - nilnil
+ - noctx
+ - perfsprint
+ - prealloc
+ - predeclared
+ - reassign
+ - revive
+ - rowserrcheck
+ - sqlclosecheck
+ - tagalign
+ - usetesting
+ - whitespace
+ settings:
+ exhaustive:
+ default-signifies-exhaustive: true
+ exclusions:
+ generated: lax
+ presets:
+ - comments
+formatters:
+ enable:
+ - gofmt
+ exclusions:
+ generated: lax
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..3727f8b
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,14 @@
+*~
+~*
+
+# OS files
+**/.DS_Store
+
+# Go workspace file
+go.work
+go.work.sum
+
+# Local source and binary files
+.src/
+.bin/
+
diff --git a/.golangci.yaml b/.golangci.yaml
deleted file mode 100644
index dc6fefb..0000000
--- a/.golangci.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-run:
- timeout: 5m
-linters:
- enable:
- - gofmt
- - errcheck
- - errname
- - errorlint
- - bodyclose
- - durationcheck
- - whitespace
-
diff --git a/Justfile b/Justfile
new file mode 100644
index 0000000..76e5bad
--- /dev/null
+++ b/Justfile
@@ -0,0 +1,45 @@
+set shell := ["bash", "-u", "-c"]
+
+export scripts := ".github/workflows/scripts"
+export GOBIN := `echo $PWD/.bin`
+
+# show available commands
+[private]
+default:
+ @just --list
+
+# tidy up Go modules
+[group('build')]
+tidy:
+ go mod tidy
+
+# run tests across source tree
+[group('testing')]
+tests:
+ go test -v -race -count=1 ./...
+
+# run specific unit test
+[group('testing')]
+[no-cd]
+test unit:
+ go test -v -count=1 -race -run {{unit}} 2>/dev/null
+
+# apply go vet command on source tree
+[group('lint')]
+vet:
+ go vet ./...
+
+# apply golangci-lint linters on source tree
+[group('lint')]
+lint: vet
+ $GOBIN/golangci-lint run --config {{scripts}}/golangci.yaml
+
+# show host system information
+[group('build')]
+@sysinfo:
+ echo "{{os()/arch()}} {{num_cpus()}}c"
+
+# locally install build dependencies
+[group('build')]
+init:
+ go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.11.4
diff --git a/Makefile b/Makefile
deleted file mode 100644
index 28d7863..0000000
--- a/Makefile
+++ /dev/null
@@ -1,12 +0,0 @@
-SHELL = bash
-
-default: test
-
-.PHONY: test
-test:
- @echo "--> Running Tests ..."
- @go test -v -race ./...
-
-vet:
- @echo "--> Vet Go sources ..."
- @go vet ./...
diff --git a/go.mod b/go.mod
index e5ac114..02e31b3 100644
--- a/go.mod
+++ b/go.mod
@@ -1,7 +1,7 @@
module github.com/shoenig/go-m1cpu
-go 1.20
+go 1.26
-require github.com/shoenig/test v1.7.0
+require github.com/shoenig/test v1.13.2
-require github.com/google/go-cmp v0.6.0 // indirect
+require github.com/google/go-cmp v0.7.0 // indirect
diff --git a/go.sum b/go.sum
index a223e19..f8c868e 100644
--- a/go.sum
+++ b/go.sum
@@ -1,4 +1,4 @@
-github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
-github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
-github.com/shoenig/test v1.7.0 h1:eWcHtTXa6QLnBvm0jgEabMRN/uJ4DMV3M8xUGgRkZmk=
-github.com/shoenig/test v1.7.0/go.mod h1:UxJ6u/x2v/TNs/LoLxBNJRV9DiwBBKYxXSyczsBHFoI=
+github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
+github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
+github.com/shoenig/test v1.13.2 h1:SaGxHxg7xkRuKuNtuFmHf0LgNGaAgcBT7HN4WHCKfqU=
+github.com/shoenig/test v1.13.2/go.mod h1:MKmiRyEeuFl8y9PCoThaRDgYQZeWBhRQlH99poXz5LI=