diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..576bb5b --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,3 @@ +# These are supported funding model platforms + +github: mathematic-inc diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..e008f45 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,31 @@ +name: CI + +on: + push: + branches: [main] + pull_request: + branches: [main] + +concurrency: + group: ci-${{ github.ref }} + cancel-in-progress: true + +jobs: + ci: + name: CI + runs-on: ubuntu-latest + timeout-minutes: 15 + steps: + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0 + with: + go-version-file: go.mod + cache-dependency-path: go.sum + - name: Check formatting + run: test -z "$(gofmt -l .)" + - name: Vet + run: go vet ./... + - name: Build + run: go build ./... + - name: Test + run: go test -race ./... diff --git a/.github/workflows/release-notes.yml b/.github/workflows/release-notes.yml new file mode 100644 index 0000000..1820290 --- /dev/null +++ b/.github/workflows/release-notes.yml @@ -0,0 +1,53 @@ +name: Release Notes + +on: + workflow_dispatch: + inputs: + tag: + description: "Release tag (e.g. v0.1.0)" + required: true + type: string + +concurrency: + group: release-notes-${{ github.event.inputs.tag }} + cancel-in-progress: true + +jobs: + enhance: + name: Enhance release notes with Claude + runs-on: ubuntu-latest + permissions: + contents: write + id-token: write + steps: + - name: Checkout + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + fetch-depth: 0 + + - name: Write release notes with Claude + uses: anthropics/claude-code-action@26ec041249acb0a944c0a47b6c0c13f05dbc5b44 # v1 + with: + claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }} + claude_args: --allowedTools "Bash(git log:*),Bash(git describe:*),Read,Write" + prompt: | + Write an exciting, polished GitHub release body for mcpr ${{ inputs.tag }} and save it to `release-notes.md`. + + mcpr is a Go CLI tool for managing Model Context Protocol (MCP) servers across multiple AI-powered code editors and development tools. It provides a unified registry for installing, configuring, and updating MCP servers. + + Steps: + 1. Run `git describe --tags --abbrev=0 HEAD^` to get the previous tag, then run `git log ..HEAD --oneline` to see all commits in this release. + 2. Read `main.go`, `README.md`, and files under `cmd/` to understand the CLI commands and features. + 3. Write the release body to `release-notes.md`. It should: + - Open with an enthusiastic one-paragraph summary of what's new or why this release is exciting. + - Have clearly labelled sections (e.g. **✨ New Features**, **🐛 Bug Fixes**, **⚡ Improvements**) — only include sections that actually have content. + - For any significant new feature, include a short shell example showing it in action. + - End with an installation snippet (`go install github.com/mathematic-inc/mcpr@${{ inputs.tag }}`). + - Be written in an upbeat, developer-friendly tone — celebrate the work! + Do NOT publish it yourself — a subsequent step will do that. + + - name: Publish release notes + uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b # v2 + with: + tag_name: ${{ inputs.tag }} + body_path: release-notes.md diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml new file mode 100644 index 0000000..71140d5 --- /dev/null +++ b/.github/workflows/release-please.yml @@ -0,0 +1,20 @@ +name: Release Please + +on: + push: + branches: [main] + +permissions: + contents: write + pull-requests: write + +jobs: + release-please: + runs-on: ubuntu-latest + steps: + - name: Run Release Please + uses: googleapis/release-please-action@16a9c90856f42705d54a6fda1823352bdc62cf38 # v4 + with: + token: ${{ secrets.RELEASE_TOKEN }} + config-file: release-please-config.json + manifest-file: .release-please-manifest.json diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..695e47e --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,61 @@ +name: Release + +on: + push: + tags: + - v* + +concurrency: + group: release-${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: false + +permissions: + contents: write + id-token: write + +jobs: + build-artifacts: + name: Build and Test + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - name: Set up Go + uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6.3.0 + with: + go-version-file: go.mod + - name: Build + run: go build ./... + - name: Test + run: go test ./... + + create-release: + name: Publish GitHub Release + needs: + - build-artifacts + runs-on: ubuntu-latest + environment: release + permissions: + contents: write + id-token: write + steps: + - name: Checkout + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + fetch-depth: 0 + + - name: Create GitHub release + uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b # v2.5.0 + with: + tag_name: ${{ github.ref_name }} + name: ${{ github.ref_name }} + generate_release_notes: true + prerelease: ${{ contains(github.ref_name, '-') }} + make_latest: ${{ !contains(github.ref_name, '-') }} + + - name: Trigger release notes workflow + env: + GH_TOKEN: ${{ secrets.RELEASE_TOKEN }} + run: | + gh workflow run release-notes.yml \ + --field tag="${{ github.ref_name }}" diff --git a/.release-please-manifest.json b/.release-please-manifest.json new file mode 100644 index 0000000..466df71 --- /dev/null +++ b/.release-please-manifest.json @@ -0,0 +1,3 @@ +{ + ".": "0.1.0" +} diff --git a/LICENSE b/LICENSE index 638d52c..62ed328 100644 --- a/LICENSE +++ b/LICENSE @@ -1,21 +1,202 @@ -MIT License - -Copyright (c) 2025 jrandolf - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. + + 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 2025 Mathematic 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/README.md b/README.md index 48047b1..c4ebc0c 100644 --- a/README.md +++ b/README.md @@ -18,13 +18,13 @@ MCPR provides a centralized way to configure and synchronize MCP server configur ## Installation ```bash -go install github.com/jrandolf/mcpr@latest +go install github.com/mathematic-inc/mcpr@latest ``` Or build from source: ```bash -git clone https://github.com/jrandolf/mcpr.git +git clone https://github.com/mathematic-inc/mcpr.git cd mcpr go build -o mcpr . ``` @@ -60,10 +60,10 @@ Add a stdio-based MCP server that communicates via stdin/stdout. ```bash # Basic usage -mcpr add stdio npx -y @modelcontextprotocol/server-filesystem /home/jrandolf +mcpr add stdio npx -y @modelcontextprotocol/server-filesystem /home/user # With custom name -mcpr add stdio --name filesystem npx -y @modelcontextprotocol/server-filesystem /home/jrandolf +mcpr add stdio --name filesystem npx -y @modelcontextprotocol/server-filesystem /home/user # With environment variables mcpr add stdio --env API_KEY=secret --env DEBUG=true npx my-server @@ -192,7 +192,7 @@ mcpr list -c "name": "filesystem", "type": "stdio", "command": "npx", - "args": ["-y", "@modelcontextprotocol/server-filesystem", "/home/jrandolf"], + "args": ["-y", "@modelcontextprotocol/server-filesystem", "/home/user"], "env": {} }, { @@ -298,4 +298,6 @@ MCPR reads each client's existing configuration and updates only the MCP server ## License -MIT +Apache-2.0 + +> This project is free and open-source work by a 501(c)(3) non-profit. If you find it useful, please consider [donating](https://github.com/sponsors/mathematic-inc). diff --git a/clients/antigravity.go b/clients/antigravity.go index 8cc1298..adc29ac 100644 --- a/clients/antigravity.go +++ b/clients/antigravity.go @@ -6,7 +6,7 @@ import ( "os" "path/filepath" - "github.com/jrandolf/mcpr/config" + "github.com/mathematic-inc/mcpr/config" ) // Path functions as variables for testing diff --git a/clients/antigravity_test.go b/clients/antigravity_test.go index fa5984b..61a64ba 100644 --- a/clients/antigravity_test.go +++ b/clients/antigravity_test.go @@ -6,7 +6,7 @@ import ( "path/filepath" "testing" - "github.com/jrandolf/mcpr/config" + "github.com/mathematic-inc/mcpr/config" ) func TestSyncToAntigravityConfig(t *testing.T) { diff --git a/clients/claude.go b/clients/claude.go index 1b80cbc..8618cda 100644 --- a/clients/claude.go +++ b/clients/claude.go @@ -7,7 +7,7 @@ import ( "path/filepath" "runtime" - "github.com/jrandolf/mcpr/config" + "github.com/mathematic-inc/mcpr/config" ) // Path functions as variables for testing diff --git a/clients/clients_test.go b/clients/clients_test.go index bbffff2..085edbb 100644 --- a/clients/clients_test.go +++ b/clients/clients_test.go @@ -7,7 +7,7 @@ import ( "runtime" "testing" - "github.com/jrandolf/mcpr/config" + "github.com/mathematic-inc/mcpr/config" ) func TestGetClients(t *testing.T) { diff --git a/clients/codex.go b/clients/codex.go index 938ecfc..a44bc30 100644 --- a/clients/codex.go +++ b/clients/codex.go @@ -6,7 +6,7 @@ import ( "path/filepath" "sort" - "github.com/jrandolf/mcpr/config" + "github.com/mathematic-inc/mcpr/config" ) // Path functions as variables for testing diff --git a/clients/common.go b/clients/common.go index bad3946..a5e362f 100644 --- a/clients/common.go +++ b/clients/common.go @@ -6,7 +6,7 @@ import ( "os" "path/filepath" - "github.com/jrandolf/mcpr/config" + "github.com/mathematic-inc/mcpr/config" ) // Client represents an MCP client that can have servers installed diff --git a/clients/continue.go b/clients/continue.go index 6a1f442..9632667 100644 --- a/clients/continue.go +++ b/clients/continue.go @@ -6,7 +6,7 @@ import ( "os" "path/filepath" - "github.com/jrandolf/mcpr/config" + "github.com/mathematic-inc/mcpr/config" ) // Path functions as variables for testing diff --git a/clients/opencode.go b/clients/opencode.go index e751ff5..6800f08 100644 --- a/clients/opencode.go +++ b/clients/opencode.go @@ -6,7 +6,7 @@ import ( "os" "path/filepath" - "github.com/jrandolf/mcpr/config" + "github.com/mathematic-inc/mcpr/config" ) // Path functions as variables for testing diff --git a/clients/vscode.go b/clients/vscode.go index 3457b60..920d3b5 100644 --- a/clients/vscode.go +++ b/clients/vscode.go @@ -6,7 +6,7 @@ import ( "path/filepath" "runtime" - "github.com/jrandolf/mcpr/config" + "github.com/mathematic-inc/mcpr/config" ) // Path functions as variables for testing diff --git a/clients/zed.go b/clients/zed.go index eff9bc7..6410429 100644 --- a/clients/zed.go +++ b/clients/zed.go @@ -6,7 +6,7 @@ import ( "os" "path/filepath" - "github.com/jrandolf/mcpr/config" + "github.com/mathematic-inc/mcpr/config" ) // Path functions as variables for testing diff --git a/cmd/add.go b/cmd/add.go index 8f2a8b1..791a9a4 100644 --- a/cmd/add.go +++ b/cmd/add.go @@ -5,7 +5,7 @@ import ( "path/filepath" "strings" - "github.com/jrandolf/mcpr/config" + "github.com/mathematic-inc/mcpr/config" "github.com/spf13/cobra" ) diff --git a/cmd/client.go b/cmd/client.go index cd6d2a0..35e7241 100644 --- a/cmd/client.go +++ b/cmd/client.go @@ -4,8 +4,8 @@ import ( "fmt" "strings" - "github.com/jrandolf/mcpr/clients" - "github.com/jrandolf/mcpr/config" + "github.com/mathematic-inc/mcpr/clients" + "github.com/mathematic-inc/mcpr/config" "github.com/spf13/cobra" ) diff --git a/cmd/list.go b/cmd/list.go index 873382d..98e2d7f 100644 --- a/cmd/list.go +++ b/cmd/list.go @@ -4,8 +4,8 @@ import ( "fmt" "strings" - "github.com/jrandolf/mcpr/clients" - "github.com/jrandolf/mcpr/config" + "github.com/mathematic-inc/mcpr/clients" + "github.com/mathematic-inc/mcpr/config" "github.com/spf13/cobra" ) diff --git a/cmd/remove.go b/cmd/remove.go index 4d85696..92199ed 100644 --- a/cmd/remove.go +++ b/cmd/remove.go @@ -3,7 +3,7 @@ package cmd import ( "fmt" - "github.com/jrandolf/mcpr/config" + "github.com/mathematic-inc/mcpr/config" "github.com/spf13/cobra" ) diff --git a/config/config_test.go b/config/config_test.go index 7b2d31a..68eb769 100644 --- a/config/config_test.go +++ b/config/config_test.go @@ -445,10 +445,10 @@ func TestConfig_ServerWithAllFields(t *testing.T) { Command: "/usr/bin/node", Args: []string{"--experimental", "server.js", "--port", "3000"}, Env: map[string]string{ - "NODE_ENV": "production", - "API_KEY": "secret123", - "DEBUG": "true", - "LOG_LEVEL": "info", + "NODE_ENV": "production", + "API_KEY": "secret123", + "DEBUG": "true", + "LOG_LEVEL": "info", }, }, }, diff --git a/go.mod b/go.mod index c476ec0..9751d76 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module github.com/jrandolf/mcpr +module github.com/mathematic-inc/mcpr go 1.25.5 @@ -6,5 +6,5 @@ require github.com/spf13/cobra v1.10.2 require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/spf13/pflag v1.0.9 // indirect + github.com/spf13/pflag v1.0.10 // indirect ) diff --git a/go.sum b/go.sum index a6ee3e0..ef5d78d 100644 --- a/go.sum +++ b/go.sum @@ -4,7 +4,8 @@ github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLf github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= -github.com/spf13/pflag v1.0.9 h1:9exaQaMOCwffKiiiYk6/BndUBv+iRViNW+4lEMi0PvY= github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= +github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/lefthook.yml b/lefthook.yml new file mode 100644 index 0000000..f3d3a54 --- /dev/null +++ b/lefthook.yml @@ -0,0 +1,6 @@ +pre-commit: + commands: + go-fmt: + glob: "**/*.go" + run: gofmt -w {staged_files} + stage_fixed: true diff --git a/main.go b/main.go index 7c0d359..da0dd5e 100644 --- a/main.go +++ b/main.go @@ -1,6 +1,6 @@ package main -import "github.com/jrandolf/mcpr/cmd" +import "github.com/mathematic-inc/mcpr/cmd" func main() { cmd.Execute() diff --git a/release-please-config.json b/release-please-config.json new file mode 100644 index 0000000..8110432 --- /dev/null +++ b/release-please-config.json @@ -0,0 +1,15 @@ +{ + "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json", + "bump-minor-pre-major": true, + "bump-patch-for-minor-pre-major": true, + "initial-version": "0.1.0", + "packages": { + ".": { + "release-type": "go", + "include-component-in-tag": false + } + }, + "plugins": [ + "sentence-case" + ] +}