Skip to content

Development

Want to help with cjsh? This page is the quickest path from clone to a tested local build. For the full contributor workflow, see the repository's CONTRIBUTING.md.

Requirements

  • C compiler
  • C++ compiler
  • CMake 3.25 or newer
  • Ninja
  • Python 3 for parts of the test suite

Build

From the repository root:

git clone https://github.com/CadenFinley/CJsShell && cd CJsShell
cmake --preset release
cmake --build --preset release --parallel

Run the shell with:

./build/release/cjsh

Useful presets:

  • release: optimized default build
  • debug: debug build with AddressSanitizer enabled
  • minimal: size-focused release profile

Test

Run the focused CTest suites:

ctest --preset release

Run the full shell and integration harness:

./tests/run_shell_tests.sh "build/release/cjsh"

If you are changing parser behavior, runtime execution, job control, or interactive input handling, also build and test the debug preset.

Work On Docs

Documentation contributions are always useful, especially when they clarify behavior, explain configuration, or document new builtins and options.

To preview the docs locally:

python3 -m pip install -r docs/requirements.txt
mkdocs serve --config-file docs/mkdocs.yml

Themes And Prompt Styling

Prompt, theme, and styling contributions are welcome. If you have a PS1, RPS1, or cjshopt style_def setup worth sharing, open a pull request that adds it to the docs or examples. The Prompt Markup and Styling guide covers the available knobs.