Add workflows and fix linter errors
All checks were successful
go-test-build / go-test-build (1.21) (push) Successful in 58s
go-test-build / go-test-build (1.22) (push) Successful in 1m0s
golangci-lint / goglangci-lint (push) Successful in 1m21s
nix-check-build / nix-check-build (push) Successful in 1m26s

This commit is contained in:
Torjus Håkestad 2024-10-11 01:17:33 +02:00
parent 4f594f7412
commit 84fcfdde62
Signed by: torjus
SSH Key Fingerprint: SHA256:KjAds8wHfD2mBYK2H815s/+ABcSdcIHUndwHEdSxml4
5 changed files with 67 additions and 7 deletions

20
.github/workflows/go-test-build.yaml vendored Normal file
View File

@ -0,0 +1,20 @@
name: go-test-build
on:
push:
pull_request:
jobs:
go-test-build:
runs-on: ubuntu-latest
container:
image: ghcr.io/catthehacker/ubuntu:runner-latest
strategy:
matrix:
go: [ "1.22", "1.21" ]
steps:
- uses: actions/checkout@v3
- uses: actions/setup-go@v5
with:
go-version: ${{ matrix.go }}
- run: go test -v ./...
- run: go build -o main main.go

19
.github/workflows/golangci-lint.yaml vendored Normal file
View File

@ -0,0 +1,19 @@
name: golangci-lint
on:
push:
pull_request:
jobs:
goglangci-lint:
runs-on: ubuntu-latest
container:
image: ghcr.io/catthehacker/ubuntu:runner-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-go@v5
with:
go-version: "1.22"
- name: golangci-lint
uses: golangci/golangci-lint-action@v6
with:
version: v1.61

15
.github/workflows/nix-check-build.yaml vendored Normal file
View File

@ -0,0 +1,15 @@
name: nix-check-build
on:
push:
pull_request:
jobs:
nix-check-build:
runs-on: ubuntu-latest
container:
image: ghcr.io/catthehacker/ubuntu:runner-latest
steps:
- uses: actions/checkout@v3
- uses: cachix/install-nix-action@v27
- run: nix flake check
- run: nix build

1
.gitignore vendored
View File

@ -1 +1,2 @@
.direnv
result

19
main.go
View File

@ -40,7 +40,10 @@ func main() {
panic(err)
}
defer input.Close()
input.NonBlock()
if err := input.NonBlock(); err != nil {
slog.Error("Failed to set non-blocking mode", "error", err)
os.Exit(1)
}
// Start metrics server
srvCtx, srvCancel := context.WithCancel(context.Background())
@ -54,12 +57,14 @@ func main() {
}
go func() {
<-ctx.Done()
srv.Shutdown(context.Background())
_ = srv.Shutdown(context.Background())
srvCancel()
}()
slog.Info("Starting metrics server", "addr", srv.Addr)
srv.ListenAndServe()
if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
slog.Warn("Failed to start metrics server", "error", err)
}
}()
// Listen for context cancellation
@ -84,7 +89,7 @@ func main() {
continue
}
slog.Error("Error reading from input device", "error", err)
mbus.StopTalking()
_ = mbus.StopTalking()
os.Exit(1)
}
if ev.Code == evdev.KEY_F24 && ev.Value == 1 {
@ -104,15 +109,15 @@ func main() {
for v := range debouncer.C {
if v {
mbus.StartTalking()
_ = mbus.StartTalking()
slog.Info("Started talking")
} else {
mbus.StopTalking()
_ = mbus.StopTalking()
slog.Info("Stopped talking")
}
}
mbus.StopTalking()
_ = mbus.StopTalking()
<-srvCtx.Done()
slog.Info("Exiting")
}