Proposal: ability to add new build-types to ros2cli, e.g., ros2 pkg create --build-type <newbuildtype>

ROS client library developers would you like ros2 projects developed on top of your client-lib and custom programming language binding to be proper ros2 projects supported by the ros2 cli? We are 1 step away from such a reality.

Currently the ros2 cli is hardcoded for creation of only 3 project types, aka build-types: ament_python, ament_cmake and cmake. You can see these listed using ros2 pkg create -h.

Earlier this year I opened an issue on the ros2cli project for the ability to support additional build-types. The idea is to make ros2cli “build-type” an extension point that can be extended with additional build-types beyond the hardcoded list above. This enhancement would open ros2 to a much wider range of developers, e.g., typescript, go, julia, java, rust, … Here’s how it would look to a user for a build-type extension for a javascript build-type:

  ros2 pkg create --build-type ament_javascript myprj

If you’re wondering OK this enhancement will enable creating new project types but what about building such projects. The colcon build system is already open with pluggable build-types. Thus you can easily extend it for your project’s build requirements.

I opened a ros2cli PR with an initial implementation of a build-type extension and a working example for review:

Please visit and comment on the issue and PR to show your interest.