diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 991c948..8c4cf7c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,17 +18,7 @@ jobs: with: go-version: ^1.18 id: go - - name: Check out code into the Go module directory uses: actions/checkout@v2 - - - name: Get dependencies - run: | - go get -v -t -d ./... - if [ -f Gopkg.toml ]; then - curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh - dep ensure - fi - - - name: Build - run: go build -v cmd/dyndns-netcup-go/main.go + - name: CI Tasks + run: make ci diff --git a/.gitignore b/.gitignore index aad5f3c..a325194 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ config.yml -go.sum dyndns-netcup-go dist/ diff --git a/Makefile b/Makefile index 328cc14..59b827f 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,8 @@ DIST_DIR ?= $(shell pwd)/dist +ci: clean lint +.PHONY: ci + build: @echo "Building release artifacts" ./scripts/make-releases.sh $(DIST_DIR) @@ -9,3 +12,9 @@ clean: @echo "Cleaning artifacts" @rm -rf $(DIST_DIR) .PHONY: clean + +lint: + @echo "Linting sources" + @docker run --rm -v $(shell pwd):/app -w /app golangci/golangci-lint:v1.43.0 golangci-lint run -v +.PHONY: lint + diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..c2e4c43 --- /dev/null +++ b/go.sum @@ -0,0 +1,29 @@ +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5 h1:2M3HP5CCK1Si9FQhwnzYhXdG6DXeebvUHFpre8QvbyI= +golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/internal/cache.go b/internal/cache.go index 7cc311d..92bdb3e 100644 --- a/internal/cache.go +++ b/internal/cache.go @@ -41,7 +41,10 @@ func NewCache(location string, timeout time.Duration) (*Cache, error) { location += defaultDir if _, err := os.Stat(location); os.IsNotExist(err) { - os.MkdirAll(location, 0700) + err = os.MkdirAll(location, 0700) + if err != nil { + return nil, err + } } location += "/" + defaultIPCache @@ -55,7 +58,6 @@ func NewCache(location string, timeout time.Duration) (*Cache, error) { // was made before the cache timeout it will ignore the file content. func (c *Cache) Load() error { csvfile, err := os.Open(c.location) - defer csvfile.Close() if err != nil { if os.IsNotExist(err) { return nil @@ -68,7 +70,7 @@ func (c *Cache) Load() error { return err } - if time.Now().Sub(fileinfo.ModTime()) > c.timeout { + if time.Since(fileinfo.ModTime()) > c.timeout { return nil } @@ -92,7 +94,7 @@ func (c *Cache) Load() error { c.entries = append(c.entries, entry) } - return nil + return csvfile.Close() } // SetIPv4 sets the ipv4 address for a specified domain and host to diff --git a/pkg/netcup/response.go b/pkg/netcup/response.go index 20cb381..33cedd4 100644 --- a/pkg/netcup/response.go +++ b/pkg/netcup/response.go @@ -88,10 +88,6 @@ func NewDNSRecord(hostname, dnstype, destination string) *DNSRecord { } } -func (r *Response) isError() bool { - return r.Status == "error" -} - func (r *Response) isSuccess() bool { return r.Status == "success" }