Skip to content

Commit 9fec3ce

Browse files
committed
Initial commit: go-pn532 NFC library
0 parents  commit 9fec3ce

File tree

97 files changed

+37621
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

97 files changed

+37621
-0
lines changed

.github/workflows/ci.yml

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [ main ]
6+
pull_request:
7+
branches: [ main ]
8+
9+
permissions:
10+
contents: read
11+
12+
jobs:
13+
test:
14+
strategy:
15+
matrix:
16+
go-version: ['1.21.x', '1.22.x']
17+
os: [ubuntu-latest, macos-latest, windows-latest]
18+
runs-on: ${{ matrix.os }}
19+
20+
steps:
21+
- uses: actions/checkout@v4
22+
23+
- name: Set up Go
24+
uses: actions/setup-go@v5
25+
with:
26+
go-version: ${{ matrix.go-version }}
27+
28+
- name: Cache Go modules
29+
uses: actions/cache@v3
30+
with:
31+
path: ~/go/pkg/mod
32+
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
33+
restore-keys: |
34+
${{ runner.os }}-go-
35+
36+
- name: Download dependencies
37+
run: go mod download
38+
39+
- name: Run tests
40+
run: go test -v -race -coverprofile=coverage.txt -covermode=atomic ./...
41+
42+
- name: Upload coverage to Codecov
43+
if: matrix.os == 'ubuntu-latest' && matrix.go-version == '1.22.x'
44+
uses: codecov/codecov-action@v3
45+
with:
46+
file: ./coverage.txt
47+
flags: unittests
48+
49+
lint:
50+
runs-on: ubuntu-latest
51+
steps:
52+
- uses: actions/checkout@v4
53+
54+
- name: Set up Go
55+
uses: actions/setup-go@v5
56+
with:
57+
go-version: '1.22.x'
58+
59+
- name: Run golangci-lint
60+
uses: golangci/golangci-lint-action@v3
61+
with:
62+
version: latest
63+
args: --timeout 5m
64+
65+
build:
66+
runs-on: ubuntu-latest
67+
steps:
68+
- uses: actions/checkout@v4
69+
70+
- name: Set up Go
71+
uses: actions/setup-go@v5
72+
with:
73+
go-version: '1.22.x'
74+
75+
- name: Build
76+
run: go build -v ./...
77+
78+
- name: Build examples
79+
run: |
80+
for dir in examples/*/; do
81+
if [ -f "$dir/main.go" ]; then
82+
echo "Building $dir"
83+
(cd "$dir" && go build -v .)
84+
fi
85+
done

.gitignore

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
*.exe
2+
*.exe~
3+
*.dll
4+
*.so
5+
*.dylib
6+
7+
*.test
8+
9+
*.out
10+
coverage.txt
11+
coverage.html
12+
coverage_*.txt
13+
coverage_*.out
14+
*.coverage
15+
*.prof
16+
17+
vendor/
18+
19+
go.work
20+
21+
.idea/
22+
.vscode/
23+
*.swp
24+
*.swo
25+
*~
26+
*.backup
27+
*.bak
28+
*.orig
29+
*.rej
30+
31+
.DS_Store
32+
Thumbs.db
33+
34+
/dist/
35+
/build/
36+
/bin/
37+
38+
cmd/*/readtag
39+
cmd/*/pn532record
40+
cmd/*/*
41+
!cmd/*/*.go
42+
!cmd/*/*.md
43+
44+
.env
45+
.env.local
46+
47+
tmp/
48+
49+
.claude/
50+
.serena/
51+
CLAUDE.md

.golangci.yml

Lines changed: 195 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,195 @@
1+
version: "2"
2+
3+
run:
4+
go: '1.24'
5+
6+
linters:
7+
enable:
8+
- staticcheck
9+
- errcheck
10+
- gosec
11+
- govet
12+
- unused
13+
- ineffassign
14+
- sqlclosecheck
15+
- rowserrcheck
16+
- revive
17+
- gocritic
18+
- nolintlint
19+
- gocyclo
20+
- funlen
21+
- bodyclose
22+
- nilerr
23+
- unconvert
24+
- usestdlibvars
25+
- errorlint
26+
- exhaustive
27+
- prealloc
28+
- noctx
29+
- nilnil
30+
- errname
31+
- wrapcheck
32+
- gocognit
33+
- cyclop
34+
- nestif
35+
- maintidx
36+
- makezero
37+
- sloglint
38+
- gosmopolitan
39+
- tagliatelle
40+
- testableexamples
41+
- testifylint
42+
- varnamelen
43+
- decorder
44+
- dupl
45+
- goheader
46+
- grouper
47+
- paralleltest
48+
- tparallel
49+
settings:
50+
govet:
51+
enable:
52+
- shadow
53+
- fieldalignment
54+
gocritic:
55+
enabled-tags:
56+
- diagnostic
57+
- style
58+
- performance
59+
gocyclo:
60+
min-complexity: 15
61+
funlen:
62+
lines: 80
63+
statements: 50
64+
prealloc:
65+
simple: true
66+
range-loops: true
67+
for-loops: true
68+
revive:
69+
severity: warning
70+
rules:
71+
- name: argument-limit
72+
arguments: [5]
73+
- name: atomic
74+
- name: bool-literal-in-expr
75+
- name: call-to-gc
76+
- name: cognitive-complexity
77+
arguments: [15]
78+
- name: comment-spacings
79+
- name: confusing-naming
80+
- name: confusing-results
81+
- name: constant-logical-expr
82+
- name: context-as-argument
83+
- name: context-keys-type
84+
- name: cyclomatic
85+
arguments: [15]
86+
- name: datarace
87+
- name: deep-exit
88+
- name: defer
89+
- name: dot-imports
90+
- name: duplicated-imports
91+
- name: early-return
92+
- name: empty-block
93+
- name: empty-lines
94+
- name: error-naming
95+
- name: error-return
96+
- name: error-strings
97+
- name: errorf
98+
- name: flag-parameter
99+
- name: function-length
100+
arguments: [50, 0]
101+
- name: function-result-limit
102+
arguments: [3]
103+
- name: get-return
104+
- name: identical-branches
105+
- name: if-return
106+
- name: import-alias-naming
107+
- name: import-shadowing
108+
- name: increment-decrement
109+
- name: indent-error-flow
110+
- name: line-length-limit
111+
arguments: [120]
112+
- name: max-control-nesting
113+
arguments: [3]
114+
- name: modifies-parameter
115+
- name: modifies-value-receiver
116+
- name: nested-structs
117+
- name: optimize-operands-order
118+
- name: range-val-address
119+
- name: range-val-in-closure
120+
- name: range
121+
- name: receiver-naming
122+
- name: redefines-builtin-id
123+
- name: redundant-build-tag
124+
- name: redundant-import-alias
125+
- name: redundant-test-main-exit
126+
- name: string-of-int
127+
- name: struct-tag
128+
arguments: ["toml,multiline"]
129+
- name: superfluous-else
130+
- name: time-date
131+
- name: time-equal
132+
- name: time-naming
133+
- name: unchecked-type-assertion
134+
- name: unconditional-recursion
135+
- name: unexported-naming
136+
- name: unexported-return
137+
- name: unhandled-error
138+
- name: unnecessary-format
139+
- name: unnecessary-stmt
140+
- name: unreachable-code
141+
- name: unused-parameter
142+
- name: unused-receiver
143+
- name: use-any
144+
- name: use-errors-new
145+
- name: use-fmt-print
146+
- name: useless-break
147+
- name: var-declaration
148+
- name: var-naming
149+
- name: waitgroup-by-value
150+
gocognit:
151+
min-complexity: 15
152+
cyclop:
153+
max-complexity: 15
154+
skip-tests: true
155+
nestif:
156+
min-complexity: 4
157+
varnamelen:
158+
min-name-length: 2
159+
ignore-names: ["err", "id", "i", "j", "k", "db", "tx", "ctx", "wg"]
160+
tagliatelle:
161+
case:
162+
rules:
163+
json: snake
164+
dupl:
165+
threshold: 100
166+
wrapcheck:
167+
extra-ignore-sigs:
168+
- .Err(
169+
goheader:
170+
template: |-
171+
go-pn532
172+
Copyright (c) {{ YEAR }} The Zaparoo Project Contributors.
173+
SPDX-License-Identifier: LGPL-3.0-or-later
174+
175+
This file is part of go-pn532.
176+
177+
go-pn532 is free software; you can redistribute it and/or
178+
modify it under the terms of the GNU Lesser General Public
179+
License as published by the Free Software Foundation; either
180+
version 3 of the License, or (at your option) any later version.
181+
182+
go-pn532 is distributed in the hope that it will be useful,
183+
but WITHOUT ANY WARRANTY; without even the implied warranty of
184+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
185+
Lesser General Public License for more details.
186+
187+
You should have received a copy of the GNU Lesser General Public License
188+
along with go-pn532; if not, write to the Free Software Foundation,
189+
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
190+
191+
formatters:
192+
enable:
193+
- gofumpt
194+
- gci
195+

0 commit comments

Comments
 (0)