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