diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..9e6e52b --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,37 @@ +name: goreleaser + +on: + push: + # run only against tags + tags: + - '*' + +permissions: + contents: write + +jobs: + goreleaser: + runs-on: ubuntu-latest + steps: + - + name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 0 + - + name: Fetch all tags + run: git fetch --force --tags + - + name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: 1.19 + - + name: Run GoReleaser + uses: goreleaser/goreleaser-action@v2 + with: + distribution: goreleaser + version: latest + args: release --rm-dist + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml new file mode 100644 index 0000000..a780840 --- /dev/null +++ b/.github/workflows/workflow.yml @@ -0,0 +1,39 @@ +name: dev-workflow + +on: + - push +jobs: + run: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: + - ubuntu-latest + # - macos-latest + # - windows-latest + go: + - '1.19' + # - '1.18' + # - '1.17' + # - '1.16' + # - '1.15' + env: + OS: ${{ matrix.os }} + steps: + - uses: actions/checkout@master + + - name: Setup Go + uses: actions/setup-go@v3 + with: + go-version: ${{ matrix.go }} + + - name: golangci-lint + uses: golangci/golangci-lint-action@v3 + with: + version: v1.48 + + - name: Test + run: make test + + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v3 diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 84f3531..0000000 --- a/.travis.yml +++ /dev/null @@ -1,29 +0,0 @@ -language: go - -go: - # - 1.7.x - # - 1.8.x - # - 1.9.x - - 1.10.x - # - master - -before_script: - - go version - - make setup - - make lint - -script: - - make test - -after_success: - - bash <(curl -s https://codecov.io/bash) - -notifications: - email: false - -deploy: - - provider: script - skip_cleanup: true - script: curl -sL http://git.io/goreleaser | bash - on: - tags: true diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index aa03b8c..448ed60 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -55,3 +55,6 @@ A single test: go test -run TestSimplePost ./... ``` +### Release + +The release runs automatically with a Github action on pushed git tags. diff --git a/Makefile b/Makefile index 4db7679..c2d45e3 100644 --- a/Makefile +++ b/Makefile @@ -3,26 +3,14 @@ TEST_PACKAGES := $(shell go list ./... | grep -v cmd) COVER_PACKAGES := $(shell go list ./... | grep -v cmd | paste -sd "," -) LINTER := $(shell command -v gometalinter 2> /dev/null) -.PHONY: setup - -setup: -ifndef LINTER - @echo "Installing linter" - @go get -u github.com/alecthomas/gometalinter - @gometalinter --install -endif - build: @go build -o ./gaper cmd/gaper/main.go ## lint: Validate golang code +# Install it following this doc https://golangci-lint.run/usage/install/#local-installation, +# please use the same version from .github/workflows/workflow.yml. lint: - @gometalinter \ - --deadline=120s \ - --line-length=120 \ - --enable-all \ - --disable=gochecknoinits --disable=gochecknoglobals \ - --vendor ./... + @golangci-lint run test: @go test -p=1 -coverpkg $(COVER_PACKAGES) \ diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index b37702c..0000000 --- a/appveyor.yml +++ /dev/null @@ -1,31 +0,0 @@ -version: "{build}" - -# Source Config - -clone_folder: c:\gopath\src\github.com\maxcnunes\gaper - -# Build host - -environment: - GOPATH: c:\gopath - GOBIN: c:\gopath\bin - -init: - - git config --global core.autocrlf input - -# Build - -install: - - set Path=c:\go\bin;c:\gopath\bin;%Path% - - go version - - go env - - go get -u github.com/golang/dep/cmd/dep - - choco install make - - make setup - -build: false -deploy: false - -test_script: - - go build github.com/maxcnunes/gaper/cmd/gaper - - make test diff --git a/builder.go b/builder.go index e5e2be7..3117138 100644 --- a/builder.go +++ b/builder.go @@ -17,7 +17,6 @@ type Builder interface { type builder struct { dir string binary string - errors string wd string buildArgs []string } diff --git a/gaper.go b/gaper.go index d2200fb..6409720 100644 --- a/gaper.go +++ b/gaper.go @@ -212,9 +212,7 @@ func setupConfig(cfg *Config) error { var extensions []string for i := range cfg.Extensions { values := strings.Split(cfg.Extensions[i], ",") - for _, e := range values { - extensions = append(extensions, e) - } + extensions = append(extensions, values...) } cfg.Extensions = extensions diff --git a/testdata/.hidden-file b/testdata/.hidden-file new file mode 100644 index 0000000..e69de29 diff --git a/testdata/.hidden-folder/.gitkeep b/testdata/.hidden-folder/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/watcher_test.go b/watcher_test.go index 9aaa556..975974f 100644 --- a/watcher_test.go +++ b/watcher_test.go @@ -104,14 +104,19 @@ func TestWatcherWatchChange(t *testing.T) { time.Sleep(time.Millisecond * 500) // update hidden files and dirs to check builtin hidden ignore is working - os.Chtimes(hiddenfile1, time.Now(), time.Now()) - os.Chtimes(hiddenfile2, time.Now(), time.Now()) + err = os.Chtimes(hiddenfile1, time.Now(), time.Now()) + assert.Nil(t, err, "chtimes error") + + err = os.Chtimes(hiddenfile2, time.Now(), time.Now()) + assert.Nil(t, err, "chtimes error") // update testfile first to check ignore is working - os.Chtimes(testfile, time.Now(), time.Now()) + err = os.Chtimes(testfile, time.Now(), time.Now()) + assert.Nil(t, err, "chtimes error") time.Sleep(time.Millisecond * 500) - os.Chtimes(mainfile, time.Now(), time.Now()) + err = os.Chtimes(mainfile, time.Now(), time.Now()) + assert.Nil(t, err, "chtimes error") select { case event := <-w.Events():