Skip to content

Commit 189aa20

Browse files
wolfieschclaude
andcommitted
feat: initial Slack daemon implementation
Full FGP daemon for Slack with: - Conversations: list, info, history, members - Chat: post, update, delete messages - Users: list, info - Reactions: add, remove, get - Search: messages, files - Files: list Authentication via SLACK_TOKEN env var or --token flag. CLI with start/stop/status/health commands. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
0 parents  commit 189aa20

11 files changed

Lines changed: 4427 additions & 0 deletions

File tree

.github/workflows/ci.yml

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [master, main]
6+
pull_request:
7+
branches: [master, main]
8+
9+
env:
10+
CARGO_TERM_COLOR: always
11+
12+
jobs:
13+
test:
14+
name: Test
15+
runs-on: ubuntu-latest
16+
steps:
17+
- uses: actions/checkout@v4
18+
- uses: dtolnay/rust-toolchain@stable
19+
- uses: Swatinem/rust-cache@v2
20+
- run: cargo test --all-features
21+
22+
clippy:
23+
name: Clippy
24+
runs-on: ubuntu-latest
25+
steps:
26+
- uses: actions/checkout@v4
27+
- uses: dtolnay/rust-toolchain@stable
28+
with:
29+
components: clippy
30+
- uses: Swatinem/rust-cache@v2
31+
- run: cargo clippy -- -D warnings
32+
33+
fmt:
34+
name: Format
35+
runs-on: ubuntu-latest
36+
steps:
37+
- uses: actions/checkout@v4
38+
- uses: dtolnay/rust-toolchain@stable
39+
with:
40+
components: rustfmt
41+
- run: cargo fmt --check

.github/workflows/release.yml

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
name: Release
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*'
7+
8+
env:
9+
CARGO_TERM_COLOR: always
10+
BINARY_NAME: fgp-slack
11+
12+
jobs:
13+
build:
14+
name: Build ${{ matrix.target }}
15+
runs-on: ${{ matrix.os }}
16+
strategy:
17+
fail-fast: false
18+
matrix:
19+
include:
20+
- target: x86_64-unknown-linux-gnu
21+
os: ubuntu-latest
22+
artifact: fgp-slack-linux-x64
23+
- target: aarch64-unknown-linux-gnu
24+
os: ubuntu-latest
25+
artifact: fgp-slack-linux-arm64
26+
cross: true
27+
- target: x86_64-apple-darwin
28+
os: macos-latest
29+
artifact: fgp-slack-macos-x64
30+
- target: aarch64-apple-darwin
31+
os: macos-latest
32+
artifact: fgp-slack-macos-arm64
33+
34+
steps:
35+
- uses: actions/checkout@v4
36+
37+
- uses: dtolnay/rust-toolchain@stable
38+
with:
39+
targets: ${{ matrix.target }}
40+
41+
- uses: Swatinem/rust-cache@v2
42+
with:
43+
key: ${{ matrix.target }}
44+
45+
- name: Install cross
46+
if: matrix.cross
47+
run: cargo install cross --git https://github.com/cross-rs/cross
48+
49+
- name: Build (cross)
50+
if: matrix.cross
51+
run: cross build --release --target ${{ matrix.target }}
52+
53+
- name: Build (native)
54+
if: ${{ !matrix.cross }}
55+
run: cargo build --release --target ${{ matrix.target }}
56+
57+
- name: Package binary
58+
shell: bash
59+
run: |
60+
cd target/${{ matrix.target }}/release
61+
tar czvf ../../../${{ matrix.artifact }}.tar.gz ${{ env.BINARY_NAME }}
62+
63+
- name: Upload artifact
64+
uses: actions/upload-artifact@v4
65+
with:
66+
name: ${{ matrix.artifact }}
67+
path: ${{ matrix.artifact }}.tar.gz
68+
if-no-files-found: error
69+
70+
release:
71+
name: Create Release
72+
needs: build
73+
runs-on: ubuntu-latest
74+
permissions:
75+
contents: write
76+
steps:
77+
- uses: actions/checkout@v4
78+
79+
- name: Download all artifacts
80+
uses: actions/download-artifact@v4
81+
with:
82+
path: artifacts
83+
84+
- name: List artifacts
85+
run: find artifacts -type f
86+
87+
- name: Create Release
88+
uses: softprops/action-gh-release@v1
89+
with:
90+
generate_release_notes: true
91+
files: artifacts/**/*.tar.gz
92+
93+
publish-crates:
94+
name: Publish to crates.io
95+
needs: release
96+
runs-on: ubuntu-latest
97+
steps:
98+
- uses: actions/checkout@v4
99+
100+
- uses: dtolnay/rust-toolchain@stable
101+
102+
- name: Verify version matches tag
103+
run: |
104+
VERSION=$(cargo metadata --format-version 1 --no-deps | jq -r '.packages[0].version')
105+
TAG=${GITHUB_REF#refs/tags/v}
106+
if [ "$VERSION" != "$TAG" ]; then
107+
echo "Version mismatch: Cargo.toml has $VERSION but tag is $TAG"
108+
exit 1
109+
fi
110+
111+
- name: Publish to crates.io
112+
run: cargo publish --token ${{ secrets.CARGO_REGISTRY_TOKEN }}
113+
continue-on-error: true

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/target

0 commit comments

Comments
 (0)