Skip to content

Commit 14dc625

Browse files
authored
Prepare Rust crates for publication (#848)
## Summary - Add crates.io metadata and crate-local READMEs for the `rubydex`, `rubydex-sys`, and `rubydex-mcp` crates. - Add `rust-version` to `rubydex-sys` for consistency with the rest of the workspace. - Make internal `rubydex` dependencies publishable by pairing local `path` dependencies with `version = "0.2.5"`, matching the Ruby gem version. ## Notes This keeps local workspace and Ruby gem builds using path dependencies, while making the manifests valid for crates.io publication. For the first publish, `rubydex` must be published first. After the crates.io index sees `rubydex 0.2.5`, `rubydex-sys` and `rubydex-mcp` can be published. ## Test plan - `PATH="/Users/hung-wulo/.cargo/bin:$PATH" cargo check --workspace --locked` - `PATH="/Users/hung-wulo/.cargo/bin:$PATH" cargo test --workspace --locked` - `PATH="/Users/hung-wulo/.cargo/bin:$PATH" cargo publish --dry-run -p rubydex --locked --allow-dirty`
1 parent 975cae2 commit 14dc625

7 files changed

Lines changed: 59 additions & 9 deletions

File tree

rust/Cargo.lock

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

rust/rubydex-mcp/Cargo.toml

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,22 @@
11
[package]
22
name = "rubydex-mcp"
3-
version = "0.1.0"
3+
version = "0.2.5"
44
edition = "2024"
55
rust-version = "1.89.0"
66
license = "MIT"
7+
description = "MCP server exposing Rubydex semantic Ruby code intelligence tools."
8+
homepage = "https://github.com/Shopify/rubydex"
9+
repository = "https://github.com/Shopify/rubydex"
10+
readme = "README.md"
11+
keywords = ["ruby", "mcp", "static-analysis"]
12+
categories = ["development-tools"]
713

814
[[bin]]
915
name = "rubydex_mcp"
1016
path = "src/main.rs"
1117

1218
[dependencies]
13-
rubydex = { path = "../rubydex" }
19+
rubydex = { version = "0.2.5", path = "../rubydex" }
1420
clap = { version = "4.5.16", features = ["derive"] }
1521
rmcp = { version = "1.4", features = ["server", "macros", "transport-io", "schemars"] }
1622
tokio = { version = "1", features = ["macros", "rt", "io-std"] }
@@ -20,7 +26,7 @@ schemars = "1"
2026
url = "2"
2127

2228
[dev-dependencies]
23-
rubydex = { path = "../rubydex", features = ["test_utils"] }
29+
rubydex = { version = "0.2.5", path = "../rubydex", features = ["test_utils"] }
2430
assert_cmd = "2.0"
2531
serde_json = "1"
2632

rust/rubydex-mcp/README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# rubydex-mcp
2+
3+
`rubydex-mcp` provides an MCP server backed by Rubydex.
4+
5+
The server indexes a Ruby workspace and exposes semantic code intelligence
6+
tools for AI assistants, including declaration search, declaration details,
7+
descendant lookup, constant reference search, file declarations, and codebase
8+
statistics.
9+
10+
For Ruby-project setup, see the MCP section in the repository README.

rust/rubydex-sys/Cargo.toml

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,21 @@
11
[package]
22
name = "rubydex-sys"
3-
version = "0.1.0"
3+
version = "0.2.5"
44
edition = "2024"
5+
rust-version = "1.89.0"
56
license = "MIT"
7+
description = "C FFI bindings for the Rubydex Ruby code indexing engine."
8+
homepage = "https://github.com/Shopify/rubydex"
9+
repository = "https://github.com/Shopify/rubydex"
10+
readme = "README.md"
11+
keywords = ["ruby", "ffi", "static-analysis"]
12+
categories = ["development-tools", "external-ffi-bindings"]
613

714
[lib]
815
crate-type = ["cdylib", "staticlib"]
916

1017
[dependencies]
11-
rubydex = { path = "../rubydex" }
18+
rubydex = { version = "0.2.5", path = "../rubydex" }
1219
libc = "0.2.174"
1320
url = "2.5.4"
1421
line-index = "0.1.2"

rust/rubydex-sys/README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# rubydex-sys
2+
3+
`rubydex-sys` exposes the Rubydex Rust library through a C FFI boundary.
4+
5+
This crate is primarily consumed by the Rubydex Ruby native extension. It
6+
builds static and dynamic libraries plus generated C bindings for integrating
7+
the Rust indexer with the Ruby VM.
8+
9+
Most users should depend on the `rubydex` Ruby gem or the `rubydex` Rust crate
10+
instead of using this crate directly.

rust/rubydex/Cargo.toml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
11
[package]
22
name = "rubydex"
3-
version = "0.1.0"
3+
version = "0.2.5"
44
edition = "2024"
55
rust-version = "1.89.0"
66
license = "MIT"
7+
description = "High-performance Ruby code indexing and static analysis library."
8+
homepage = "https://github.com/Shopify/rubydex"
9+
repository = "https://github.com/Shopify/rubydex"
10+
readme = "README.md"
11+
keywords = ["ruby", "indexing", "static-analysis"]
12+
categories = ["development-tools"]
713

814
[[bin]]
915
name = "rubydex_cli"

rust/rubydex/README.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# rubydex
2+
3+
`rubydex` is the Rust library that powers Rubydex's Ruby code indexing and
4+
static analysis.
5+
6+
The crate is part of the Rubydex project. It provides the graph, indexing,
7+
resolution, query, and diagnostic logic used by the Ruby gem, the native FFI
8+
crate, and the MCP server.
9+
10+
See the repository README for Ruby-level usage examples and project
11+
documentation.

0 commit comments

Comments
 (0)