From b270070467a5c3babad51d2f9d5a152af8d23964 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lovro=20Ma=C5=BEgon?= Date: Wed, 16 Oct 2024 16:35:27 +0200 Subject: [PATCH] fix CRLF --- .gitignore | 58 +++---- .golangci.yml | 240 +++++++++++++-------------- .goreleaser.yml | 54 +++--- LICENSE.md | 402 ++++++++++++++++++++++----------------------- Makefile | 70 ++++---- README.md | 130 +++++++-------- README_TEMPLATE.md | 68 ++++---- 7 files changed, 511 insertions(+), 511 deletions(-) diff --git a/.gitignore b/.gitignore index 6d0b35d..61a3bbc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,29 +1,29 @@ -### Go ### -# Binaries for programs and plugins -*.exe -*.exe~ -*.dll -*.so -*.dylib -*.wasm -/vendor - -# Test binary, built with `go test -c` -*.test - -# Output of the go coverage tool, specifically when used with LiteIDE -*.out - -### Intellij ### -.idea - -### VisualStudioCode ### -.vscode - -# Binary, built with `make build` -/conduit-processor-processorname.wasm - -### OS ### -.DS_Store - - +### Go ### +# Binaries for programs and plugins +*.exe +*.exe~ +*.dll +*.so +*.dylib +*.wasm +/vendor + +# Test binary, built with `go test -c` +*.test + +# Output of the go coverage tool, specifically when used with LiteIDE +*.out + +### Intellij ### +.idea + +### VisualStudioCode ### +.vscode + +# Binary, built with `make build` +/conduit-processor-processorname.wasm + +### OS ### +.DS_Store + + diff --git a/.golangci.yml b/.golangci.yml index a5dfca5..3c72277 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,120 +1,120 @@ -run: - timeout: 5m - -linters-settings: - nolintlint: - allow-unused: false # report any unused nolint directives - require-explanation: true # require an explanation for nolint directives - require-specific: true # require nolint directives to mention the specific linter being suppressed - goconst: - ignore-tests: true - wrapcheck: - ignoreSigs: - - .Errorf( - - errors.New( - - errors.Unwrap( - - errors.Join( - - .Wrap( - - .Wrapf( - - .WithMessage( - - .WithMessagef( - - .WithStack( - - (context.Context).Err() - -issues: - exclude-rules: - - path: _test\.go - linters: - - dogsled - - gosec - - gocognit - - errcheck - - forcetypeassert - - funlen - - err113 - - dupl - - maintidx - -linters: - # please, do not use `enable-all`: it's deprecated and will be removed soon. - # inverted configuration with `enable-all` and `disable` is not scalable during updates of golangci-lint - disable-all: true - enable: - - asasalint - - asciicheck - - bidichk - - bodyclose - - containedctx - - contextcheck - - copyloopvar - - decorder - # - depguard - - dogsled - - dupl - - dupword - - durationcheck - - errcheck - - errchkjson - - errname - - errorlint - - exhaustive - # - forbidigo - - forcetypeassert - - funlen - - gci - - ginkgolinter - - gocheckcompilerdirectives - - gochecknoinits - - gocognit - - goconst - - gocritic - - godot - - err113 - - gofmt - - gofumpt - - goheader - - goimports - - gomoddirectives - - goprintffuncname - - gosec - - gosimple - - gosmopolitan - - govet - - grouper - - importas - - ineffassign - - interfacebloat - # - ireturn # Doesn't have correct support for generic types https://github.com/butuzov/ireturn/issues/37 - - loggercheck - - maintidx - - makezero - - mirror - - misspell - - musttag - - nakedret - - nestif - - nilerr - - nilnil - - noctx - - nolintlint - - nosprintfhostport - - prealloc - - predeclared - - promlinter - - reassign - - revive - - rowserrcheck - - sqlclosecheck - - staticcheck - - stylecheck - - tenv - - testableexamples - - thelper - - unconvert - - unparam - - unused - - usestdlibvars - - wastedassign - - whitespace - - wrapcheck - - zerologlint +run: + timeout: 5m + +linters-settings: + nolintlint: + allow-unused: false # report any unused nolint directives + require-explanation: true # require an explanation for nolint directives + require-specific: true # require nolint directives to mention the specific linter being suppressed + goconst: + ignore-tests: true + wrapcheck: + ignoreSigs: + - .Errorf( + - errors.New( + - errors.Unwrap( + - errors.Join( + - .Wrap( + - .Wrapf( + - .WithMessage( + - .WithMessagef( + - .WithStack( + - (context.Context).Err() + +issues: + exclude-rules: + - path: _test\.go + linters: + - dogsled + - gosec + - gocognit + - errcheck + - forcetypeassert + - funlen + - err113 + - dupl + - maintidx + +linters: + # please, do not use `enable-all`: it's deprecated and will be removed soon. + # inverted configuration with `enable-all` and `disable` is not scalable during updates of golangci-lint + disable-all: true + enable: + - asasalint + - asciicheck + - bidichk + - bodyclose + - containedctx + - contextcheck + - copyloopvar + - decorder + # - depguard + - dogsled + - dupl + - dupword + - durationcheck + - errcheck + - errchkjson + - errname + - errorlint + - exhaustive + # - forbidigo + - forcetypeassert + - funlen + - gci + - ginkgolinter + - gocheckcompilerdirectives + - gochecknoinits + - gocognit + - goconst + - gocritic + - godot + - err113 + - gofmt + - gofumpt + - goheader + - goimports + - gomoddirectives + - goprintffuncname + - gosec + - gosimple + - gosmopolitan + - govet + - grouper + - importas + - ineffassign + - interfacebloat + # - ireturn # Doesn't have correct support for generic types https://github.com/butuzov/ireturn/issues/37 + - loggercheck + - maintidx + - makezero + - mirror + - misspell + - musttag + - nakedret + - nestif + - nilerr + - nilnil + - noctx + - nolintlint + - nosprintfhostport + - prealloc + - predeclared + - promlinter + - reassign + - revive + - rowserrcheck + - sqlclosecheck + - staticcheck + - stylecheck + - tenv + - testableexamples + - thelper + - unconvert + - unparam + - unused + - usestdlibvars + - wastedassign + - whitespace + - wrapcheck + - zerologlint diff --git a/.goreleaser.yml b/.goreleaser.yml index 2673bd5..0891e45 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -1,27 +1,27 @@ -version: 2 -builds: - - main: ./cmd/processor/main.go - goos: - - wasip1 - goarch: - - wasm - env: - - CGO_ENABLED=0 - ldflags: - - "-s -w -X 'github.com/conduitio/conduit-processor-processorname.version={{ .Tag }}'" -checksum: - name_template: checksums.txt -archives: - - name_template: >- - {{ .ProjectName }}_ - {{- .Version }}.wasm -changelog: - sort: asc - use: github - filters: - exclude: - - '^docs:' - - '^test:' - - '^go.mod:' - - '^.github:' - - Merge branch +version: 2 +builds: + - main: ./cmd/processor/main.go + goos: + - wasip1 + goarch: + - wasm + env: + - CGO_ENABLED=0 + ldflags: + - "-s -w -X 'github.com/conduitio/conduit-processor-processorname.version={{ .Tag }}'" +checksum: + name_template: checksums.txt +archives: + - name_template: >- + {{ .ProjectName }}_ + {{- .Version }}.wasm +changelog: + sort: asc + use: github + filters: + exclude: + - '^docs:' + - '^test:' + - '^go.mod:' + - '^.github:' + - Merge branch diff --git a/LICENSE.md b/LICENSE.md index 5d710d5..a6204b8 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,201 +1,201 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2024 Meroxa, Inc. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2024 Meroxa, Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/Makefile b/Makefile index 032e43b..042be68 100644 --- a/Makefile +++ b/Makefile @@ -1,35 +1,35 @@ -VERSION=$(shell git describe --tags --dirty --always) - -.PHONY: build -build: - GOARCH=wasm GOOS=wasip1 go build -o conduit-processor-processorname.wasm cmd/processor/main.go - -.PHONY: test -test: - go test $(GOTEST_FLAGS) -race ./... - -.PHONY: test-integration -test-integration: - # run required docker containers, execute integration tests, stop containers after tests - docker compose -f test/docker-compose.yml up -d - go test $(GOTEST_FLAGS) -v -race ./...; ret=$$?; \ - docker compose -f test/docker-compose.yml down; \ - exit $$ret - -.PHONY: generate -generate: - go generate ./... - -.PHONY: install-tools -install-tools: - @echo Installing tools from tools.go - @go list -e -f '{{ join .Imports "\n" }}' tools.go | xargs -I % go list -f "%@{{.Module.Version}}" % | xargs -tI % go install % - @go mod tidy - -.PHONY: fmt -fmt: - gofumpt -l -w . - -.PHONY: lint -lint: - golangci-lint run +VERSION=$(shell git describe --tags --dirty --always) + +.PHONY: build +build: + GOARCH=wasm GOOS=wasip1 go build -o conduit-processor-processorname.wasm cmd/processor/main.go + +.PHONY: test +test: + go test $(GOTEST_FLAGS) -race ./... + +.PHONY: test-integration +test-integration: + # run required docker containers, execute integration tests, stop containers after tests + docker compose -f test/docker-compose.yml up -d + go test $(GOTEST_FLAGS) -v -race ./...; ret=$$?; \ + docker compose -f test/docker-compose.yml down; \ + exit $$ret + +.PHONY: generate +generate: + go generate ./... + +.PHONY: install-tools +install-tools: + @echo Installing tools from tools.go + @go list -e -f '{{ join .Imports "\n" }}' tools.go | xargs -I % go list -f "%@{{.Module.Version}}" % | xargs -tI % go install % + @go mod tidy + +.PHONY: fmt +fmt: + gofumpt -l -w . + +.PHONY: lint +lint: + golangci-lint run diff --git a/README.md b/README.md index 8dc927c..10d161e 100644 --- a/README.md +++ b/README.md @@ -1,65 +1,65 @@ -# Conduit Processor Template - -This is a template project for building [Conduit](https://conduit.io) processors in Go. It makes it possible to -start working on a Conduit processor in a matter of seconds. - -## Quick start - -1. Click [_Use this template_]() and clone your new repository. -2. Initialize the repository using [`setup.sh`](https://github.com/ConduitIO/conduit-processor-template/blob/main/setup.sh) and commit your changes. - ```sh - ./setup.sh github.com/myusername/conduit-processor-myprocessor - git add -A - git commit -m "initialize repository" - ``` -3. Set up [automatic Dependabot PR merges](#automatically-merging-dependabot-prs).a - -With that, you're all set up and ready to start working on your processor! As a next step, we recommend that you -check out the [Conduit Processor SDK](https://github.com/ConduitIO/conduit-processor-sdk). - -## What's included? - -* Skeleton code for the processor and its configuration. -* Example unit tests. -* A [Makefile](/Makefile) with commonly used targets. -* A [GitHub workflow](/.github/workflows/build.yml) to build the code and run the tests. -* A [GitHub workflow](/.github/workflows/lint.yml) to run a pre-configured set of linters. -* A [GitHub workflow](/.github/workflows/release.yml) which automatically creates a release when a tag is pushed. -* A [Dependabot setup](/.github/dependabot.yml) which checks your dependencies for available updates and -[merges minor version upgrades](/.github/workflows/dependabot-auto-merge-go.yml) automatically. -* [Issue](/.github/ISSUE_TEMPLATE) and [PR templates](/.github/pull_request_template.md). -* A [README template](/README_TEMPLATE.md). - -## Automatically merging Dependabot PRs - -> [!NOTE] -> This applies only to public processor repositories, as branch protection rules are not enforced in private repositories. - -The template makes it simple to keep your processor up-to-date using automatic merging of -[Dependabot](https://github.com/dependabot) PRs. To make use of this setup, you need to adjust -some repository settings. - -1. Navigate to Settings -> General and allow auto-merge of PRs. - - ![Allow auto-merge](https://github.com/ConduitIO/conduit-processor-template/assets/8320753/695b15f0-85b4-49cb-966d-649e9bf03455) - -2. Navigate to Settings -> Branches and add a branch protection rule. - - ![Add branch protection rule](https://github.com/ConduitIO/conduit-processor-template/assets/8320753/9f5a07bc-d141-42b9-9918-e8d9cc648482) - -3. Create a rule for branch `main` that requires status checks `build` and `golangci-lint`. - - ![Status checks](https://github.com/ConduitIO/conduit-processor-template/assets/8320753/96219185-c329-432a-8623-9b4462015f32) - -## Recommended repository settings - -- Allow squash merging only. -- Always suggest updating pull request branches. -- Automatically delete head branches. -- Branch protection rules on branch `main` (only in public repositories): - - Require a pull request before merging. - - Require approvals. - - Require status checks `build` and `golangci-lint`. - - Require branches to be up to date before merging. - - Require conversation resolution before merging. - - Do not allow bypassing the above settings. +# Conduit Processor Template + +This is a template project for building [Conduit](https://conduit.io) processors in Go. It makes it possible to +start working on a Conduit processor in a matter of seconds. + +## Quick start + +1. Click [_Use this template_]() and clone your new repository. +2. Initialize the repository using [`setup.sh`](https://github.com/ConduitIO/conduit-processor-template/blob/main/setup.sh) and commit your changes. + ```sh + ./setup.sh github.com/myusername/conduit-processor-myprocessor + git add -A + git commit -m "initialize repository" + ``` +3. Set up [automatic Dependabot PR merges](#automatically-merging-dependabot-prs).a + +With that, you're all set up and ready to start working on your processor! As a next step, we recommend that you +check out the [Conduit Processor SDK](https://github.com/ConduitIO/conduit-processor-sdk). + +## What's included? + +* Skeleton code for the processor and its configuration. +* Example unit tests. +* A [Makefile](/Makefile) with commonly used targets. +* A [GitHub workflow](/.github/workflows/build.yml) to build the code and run the tests. +* A [GitHub workflow](/.github/workflows/lint.yml) to run a pre-configured set of linters. +* A [GitHub workflow](/.github/workflows/release.yml) which automatically creates a release when a tag is pushed. +* A [Dependabot setup](/.github/dependabot.yml) which checks your dependencies for available updates and +[merges minor version upgrades](/.github/workflows/dependabot-auto-merge-go.yml) automatically. +* [Issue](/.github/ISSUE_TEMPLATE) and [PR templates](/.github/pull_request_template.md). +* A [README template](/README_TEMPLATE.md). + +## Automatically merging Dependabot PRs + +> [!NOTE] +> This applies only to public processor repositories, as branch protection rules are not enforced in private repositories. + +The template makes it simple to keep your processor up-to-date using automatic merging of +[Dependabot](https://github.com/dependabot) PRs. To make use of this setup, you need to adjust +some repository settings. + +1. Navigate to Settings -> General and allow auto-merge of PRs. + + ![Allow auto-merge](https://github.com/ConduitIO/conduit-processor-template/assets/8320753/695b15f0-85b4-49cb-966d-649e9bf03455) + +2. Navigate to Settings -> Branches and add a branch protection rule. + + ![Add branch protection rule](https://github.com/ConduitIO/conduit-processor-template/assets/8320753/9f5a07bc-d141-42b9-9918-e8d9cc648482) + +3. Create a rule for branch `main` that requires status checks `build` and `golangci-lint`. + + ![Status checks](https://github.com/ConduitIO/conduit-processor-template/assets/8320753/96219185-c329-432a-8623-9b4462015f32) + +## Recommended repository settings + +- Allow squash merging only. +- Always suggest updating pull request branches. +- Automatically delete head branches. +- Branch protection rules on branch `main` (only in public repositories): + - Require a pull request before merging. + - Require approvals. + - Require status checks `build` and `golangci-lint`. + - Require branches to be up to date before merging. + - Require conversation resolution before merging. + - Do not allow bypassing the above settings. diff --git a/README_TEMPLATE.md b/README_TEMPLATE.md index 9d9788c..a1c908f 100644 --- a/README_TEMPLATE.md +++ b/README_TEMPLATE.md @@ -1,34 +1,34 @@ -# Conduit Processor for - -[Conduit](https://conduit.io) processor for . - -## How to build? - -Run `make build` to build the processor. - -## Testing - -Run `make test` to run all the unit tests. Run `make test-integration` to run the integration tests. - -The Docker compose file at `test/docker-compose.yml` can be used to run the required resource locally. - -## Functionality - -A description of what the processor achieves. - -### Processor Configuration - -| name | description | required | default value | -|--------------------------|------------------------------------------|----------|---------------| -| `processor_config_param` | Description of `processor_config_param`. | true | "" | - - -## Known Issues & Limitations - -- Known issue A -- Limitation A - -## Planned work - -- [ ] Item A -- [ ] Item B +# Conduit Processor for + +[Conduit](https://conduit.io) processor for . + +## How to build? + +Run `make build` to build the processor. + +## Testing + +Run `make test` to run all the unit tests. Run `make test-integration` to run the integration tests. + +The Docker compose file at `test/docker-compose.yml` can be used to run the required resource locally. + +## Functionality + +A description of what the processor achieves. + +### Processor Configuration + +| name | description | required | default value | +|--------------------------|------------------------------------------|----------|---------------| +| `processor_config_param` | Description of `processor_config_param`. | true | "" | + + +## Known Issues & Limitations + +- Known issue A +- Limitation A + +## Planned work + +- [ ] Item A +- [ ] Item B