Skip to content

just-based development commands#262

Draft
malcolmgreaves wants to merge 2 commits intomainfrom
mg/justfile
Draft

just-based development commands#262
malcolmgreaves wants to merge 2 commits intomainfrom
mg/justfile

Conversation

@malcolmgreaves
Copy link
Copy Markdown
Collaborator

@malcolmgreaves malcolmgreaves commented Feb 10, 2026

Adds a Justfile for development commands for the entire project.
Adds specialized oxen-rust and oxen-python Justfiles too.
Commands are scoped to the project: root-level runs for both.

The READMEs have been updated with just install instructions
and explanations on how to use the various new just commands.

just
The following development commands are supported in both:

  • just check: type checks code
  • just lint: formats code & runs linters
  • just build: downloads all dependencies & builds all artifacts
  • just test: runs all tests
  • just doc: generates all documentation

Both also have just test-only TESTNAME to run a single test.

oxen-rust also has:

  • just serve: uses bacon to run oxen-server
  • just test-cli: runs the Python-based CLI integration tests

mypy Python type checking
And mypy was added to oxen-python's development dependencies to
add support for checking type annotations.

@malcolmgreaves malcolmgreaves marked this pull request as draft February 10, 2026 01:16
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Feb 10, 2026

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

This PR introduces Just as a build orchestration system for the Oxen project. A new top-level Justfile coordinates multi-project operations by delegating to Rust and Python sub-project Justfiles. Each sub-project receives its own Justfile with standardized recipes (build, lint, check, test, doc). Project documentation is updated to highlight Just-based workflows as alternatives to direct tool invocations.

Changes

Cohort / File(s) Summary
Justfile Build System
Justfile, oxen-python/Justfile, oxen-rust/Justfile
Three new Justfiles introduced: root-level orchestration delegates to Rust and Python recipes; Python variant includes build, lint, check, test, test-only, and doc targets using uv and maturin; Rust variant includes build, check, lint, test, test-only, doc, pre-commit, test-cli, and serve targets using cargo, bacon, and nextest.
Python Project Setup
oxen-python/pyproject.toml, oxen-python/.gitignore, oxen-python/README.md, oxen-python/Develop.md
Added dev dependency group with mypy and pdoc; mypy configuration for type-checking Python code; reinstated .python-version in .gitignore; updated Develop.md with inline Just command hints as alternatives to direct tool invocation; added Development section to README highlighting Just recipes.
Root Documentation
README.md
Added comprehensive Developer Quick Start section describing Just installation and cross-project commands; modified existing build/test instructions to mention Just-based workflows (appears to include duplication of Developer Quick Start section).
Rust Documentation
oxen-rust/README.md, oxen-rust/cli-test/README.md, oxen-rust/docs/dev/AddLibraryCode.md, oxen-rust/docs/dev/IntegrateCLICode.md
Added Just documentation with installation, recipe listing, and command table; expanded Build and Server sections with Just alternatives; introduced Unit & Integration Tests and CLI Integration Tests subsections; updated code examples with inline Just command comments; modified relative path links and build instructions.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested reviewers

  • jcelliott
  • gschoeni
  • rpschoenburg

Poem

🐰 With Just, the build scripts hop and play,
Rust and Python build the same way,
No more confusion, recipes are clear,
Orchestrated bliss for all the year! ✨

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'just-based development commands' directly and accurately describes the primary change: introducing Just as a build tool orchestration system across the repository with new Justfiles and related documentation.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch mg/justfile

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
oxen-python/Develop.md (1)

61-69: ⚠️ Potential issue | 🟡 Minor

Stale documentation section: still references Sphinx, but the project now uses pdoc.

The Justfile's doc recipe uses pdoc and pyproject.toml lists pdoc as a dev dependency. This section still instructs users to install and use Sphinx. Consider updating it to reflect the new just doc / pdoc workflow.

Suggested update
 ## Documentation

-```
-brew install sphinx-doc
-```
-
-```
-cd oxen/docs
-make install
-```
+Generate Python API docs with pdoc:
+
+```bash
+just doc          # from oxen-python/
+# or directly:
+uv run pdoc python/oxen -o docs
+```
🧹 Nitpick comments (5)
README.md (1)

180-180: Minor inconsistency: the just alternative here says just python build but Develop.md (line 23) says just build.

The root README suggests just python build (which runs from repo root), while oxen-python/Develop.md says just build (which runs from the oxen-python directory). Both are technically correct depending on working directory, but it could confuse contributors. Consider adding a brief note about the context (repo root vs. sub-project directory).

oxen-python/pyproject.toml (1)

15-27: Pre-existing: dev/build tools in runtime dependencies.

pytest, pytest-datadir, ruff, and maturin are listed as runtime dependencies. End-users installing oxenai shouldn't need these. Consider moving them into the [dependency-groups] dev group alongside mypy and pdoc in a future cleanup.

oxen-python/Justfile (1)

4-6: Consider using uv run maturin develop for consistency.

uv sync installs maturin into the managed venv, but line 6 calls maturin develop directly which requires the venv to be activated or maturin to be on PATH. All other tool invocations in this file use uv run — using uv run maturin develop here would be consistent and work regardless of venv activation state.

Proposed fix
 build:
     uv sync --no-install-project
-    maturin develop
+    uv run maturin develop
oxen-rust/Justfile (1)

28-30: Align test-only with test by using cargo nextest run instead of plain cargo test.

The test recipe uses nextest for better parallelism and output, but test-only falls back to plain cargo test. For substring matching, use the simpler syntax:

Proposed fix
 # Run a specific test by name substring
 test-only NAME:
-    cargo test {{NAME}}
+    cargo nextest run {{NAME}}

This uses nextest's built-in substring filter, which is more consistent with the main test recipe.

oxen-rust/README.md (1)

305-317: Clarify the working directory for the manual CLI test command.

Line 316 uses cd cli-test && ... which is relative. Since this README lives at oxen-rust/README.md, it's implicitly relative to oxen-rust/, but a reader who runs from the repo root would end up in the wrong directory. Consider making this explicit:

-cd cli-test && uv sync && uv run pytest tests -v
+cd oxen-rust/cli-test && uv sync && uv run pytest tests -v

Or add a short note like "from the oxen-rust/ directory".

Malcolm Greaves added 2 commits February 16, 2026 15:24
Adds a `Justfile` for development commands for the entire project.
Adds specialized `oxen-rust` and `oxen-python` `Justfile`s too.
Commands are scoped to the project: root-level runs for both.

The following development commands are supported in both:
- `just check`: type checks code
- `just lint`: formats code & runs linters
- `just build`: downloads all dependencies & builds all artifacts
- `just test`: runs all tests
- `just doc`: generates all documentation

Both also have `just test-only TESTNAME` to run a single test.

`oxen-rust` also has:
- `just serve`: uses `bacon` to run `oxen-server`
- `just test-cli`: runs the Python-based CLI integration tests

And `mypy` was added to `oxen-python`'s development dependencies to
add support for checking type annotations.
@malcolmgreaves malcolmgreaves force-pushed the mg/justfile branch 2 times, most recently from b560d9d to 048b513 Compare February 16, 2026 23:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant