CLI

With more features being added, it would likely be beneficial to wrap all the FIRE commands and utilities with a custom CLI. This would be mainly to hide some implementation details and provide a more centralized location for interacting with the tool.

I'm not certain of the best language for this. We will likely be interacting with a lot of external software so I'm inclined to say Python or maybe nushell. On the other hand, using C++ or Rust would likely let us use various APIs directly, but we will have to write more code manually.

Proposed commands:

  • fire new package - initialize a new package
  • fire new workspace - initialize a new workspace
  • fire add <pkg-url> - add an external input to this package / workspace
  • fire update - auto update the package
  • fire upgrade - update fire itself
  • fire generate - automatically generate a package definition (ros2nix)
  • fire build - build the workspace / package
  • fire reload - reload the environment (like direnv)
  • fire run - Run the package as defined in the flake
  • fire dev <pkg> - Switch a package to dev mode (see #2)
Edited by Adkins, Cameron