mirror of
https://github.com/paymog/slack-cli.git
synced 2026-09-18 23:43:49 +08:00
6a972a1f05
Turn the forked slack-mcp-server into a CLI so running many agents no
longer means one resident MCP process each. Every command is a
short-lived process that reads the shared on-disk cache.
- rename module to github.com/paymog/slack-cli (go install/homebrew/ldflags)
- internal/toolcall: invoke the upstream tool handlers in-process; the only
mcp-go coupling lives here, so pkg/handler and pkg/provider are reused
byte-for-byte (clean upstream merges, fork-and-extend)
- internal/{cli,cmds,config,credstore,runtime,output}: cobra command tree,
keyring-backed credential profiles, provider bootstrap, result printing
- 21 tools as subcommands (channels, conversations, users, usergroups,
saved, reactions, attachments, cache); write tools keep their env gating
- goreleaser + homebrew release workflow; ships a skills/slack-cli skill
- unit tests for config/credstore/toolcall; MCP server still builds
The MCP server (cmd/slack-mcp-server) is kept intact.
75 lines
2.2 KiB
YAML
75 lines
2.2 KiB
YAML
name: release
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- "v*"
|
|
|
|
permissions:
|
|
contents: write
|
|
|
|
jobs:
|
|
goreleaser:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
- uses: actions/setup-go@v5
|
|
with:
|
|
go-version-file: go.mod
|
|
cache: true
|
|
- uses: goreleaser/goreleaser-action@v6
|
|
with:
|
|
distribution: goreleaser
|
|
version: "~> v2"
|
|
args: release --clean
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
- name: Update Homebrew tap
|
|
env:
|
|
DEPLOY_KEY: ${{ secrets.HOMEBREW_TAP_DEPLOY_KEY }}
|
|
TAG: ${{ github.ref_name }}
|
|
run: |
|
|
set -euo pipefail
|
|
|
|
version="${TAG#v}"
|
|
revision="$(git rev-parse HEAD)"
|
|
tap_dir="$(mktemp -d)/homebrew-tap"
|
|
|
|
key_file="$(mktemp)"
|
|
printf '%s\n' "$DEPLOY_KEY" > "$key_file"
|
|
chmod 600 "$key_file"
|
|
export GIT_SSH_COMMAND="ssh -i $key_file -o IdentitiesOnly=yes -o StrictHostKeyChecking=accept-new"
|
|
|
|
git clone git@github.com:paymog/homebrew-tap.git "$tap_dir"
|
|
mkdir -p "$tap_dir/Formula"
|
|
cat > "$tap_dir/Formula/slack-cli.rb" <<EOF
|
|
class SlackCli < Formula
|
|
desc "Slack workspace tools as a CLI (no daemon, no MCP server process)"
|
|
homepage "https://github.com/paymog/slack-cli"
|
|
url "https://github.com/paymog/slack-cli.git",
|
|
tag: "$TAG",
|
|
revision: "$revision"
|
|
version "$version"
|
|
|
|
depends_on "go" => :build
|
|
|
|
def install
|
|
system "go", "build", *std_go_args(ldflags: "-s -w -X github.com/paymog/slack-cli/internal/cli.version=#{version}"), "./cmd/slack-cli"
|
|
end
|
|
|
|
test do
|
|
assert_match "slack-cli", shell_output("#{bin}/slack-cli --help")
|
|
end
|
|
end
|
|
EOF
|
|
|
|
cd "$tap_dir"
|
|
git config user.name "github-actions[bot]"
|
|
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
|
git add Formula/slack-cli.rb
|
|
git diff --cached --quiet && exit 0
|
|
git commit -m "chore: update slack-cli to $TAG"
|
|
git push
|