Manage ROS workspaces linking packages and handling justfiles
ros
Find a file
2026-05-29 14:30:15 +02:00
src Add support for dependencies.repos 2026-05-29 14:29:19 +02:00
tests Add support for dependencies.repos 2026-05-29 14:29:19 +02:00
.gitignore Initial import 2026-03-30 15:43:21 +02:00
Cargo.lock Bump version to 0.6.0 2026-05-29 14:30:15 +02:00
Cargo.toml Bump version to 0.6.0 2026-05-29 14:30:15 +02:00
LICENSE Add LICENSE 2026-04-13 12:13:27 +02:00
README.md Add support for dependencies.repos 2026-05-29 14:29:19 +02:00

rws

rws is an opinionated tool to manage a ROS workspace by registering external packages, linking them into src/, and generating a root justfile that exposes each package as a module. You can also provide a envrc and dependencies.repos that will be exposed at the root of the workspace.

The final workspace layout is:

workspace/
  src/
  .rws/
    rws.toml
    justfile.common
    envrc
    dependencies.repos
  justfile
  .envrc
  dependencies.repos

Each package can provide its own justfile at .rws/justfile:

camera/
  package.xml
  .rws/
    justfile

Install

cargo install --branch main --git https://noa.mornie.org/eriol/rws

Shell Completion

After installing rws, shell completions can be installed for Bash or Zsh.

For Bash:

mkdir -p ~/.local/share/bash-completion/completions
rws completion bash > ~/.local/share/bash-completion/completions/rws

For Zsh:

mkdir -p ~/.zfunc
rws completion zsh > ~/.zfunc/_rws

Make sure ~/.zfunc is in your fpath for Zsh.

Usage

rws init ~/ws/my_robot
cd ~/ws/my_robot
rws update --common-justfile path/to/common.just --envrc path/to/.envrc --dependencies-repos path/to/dependencies.repos
rws package add ~/dev/robot/camera ~/dev/robot/lidar
rws sync
just camera start
just lidar start

After init, rws commands can run from the workspace root or any subdirectory. rws finds the workspace by walking up to .rws/rws.toml.

To remove managed workspace files later:

rws update --no-common-justfile
rws update --no-envrc
rws update --no-dependencies-repos