Improve --help text and add it to the README

This commit is contained in:
Michal Sojka 2024-09-15 14:08:07 +02:00
parent 20504c30f9
commit ca4c0e6bfc
3 changed files with 113 additions and 18 deletions

View file

@ -6,6 +6,67 @@ compatible with [nix-ros-overlay][].
This is work-in-progress. I'll add documentation after it works
reasonably well.
<!-- `$ python3 -m ros2nix --help` -->
```
usage: ros2nix [-h]
[--output OUTPUT | --output-as-ros-pkg-name | --output-as-nix-pkg-name]
[--output-dir OUTPUT_DIR] [--fetch] [--distro DISTRO]
[--src-param SRC_PARAM] [--source-root SOURCE_ROOT] [--flake]
[--nixfmt] [--copyright-holder COPYRIGHT_HOLDER]
[--license LICENSE]
source [source ...]
positional arguments:
source Path to package.xml
options:
-h, --help show this help message and exit
--output OUTPUT Output filename (default: package.nix)
--output-as-ros-pkg-name
Name output files based on ROS package name, e.g.,
package_name.nix. Implies --output-dir=. (default:
False)
--output-as-nix-pkg-name
Name output files based on Nix package name, e.g.,
package-name.nix. Implies --output-dir=. (default:
False)
--output-dir OUTPUT_DIR
Directory to generate output files in. By default,
package files are stored next to their corresponding
package.xml, top-level files like overlay.nix in the
current directory) (default: None)
--fetch Use fetches like fetchFromGitHub in src attribute
values. The fetch function and its parameters are
determined from the local git work tree. sourceRoot
attribute is set if needed and not overridden by
--source-root. (default: False)
--distro DISTRO ROS distro (used as a context for evaluation of
conditions in package.xml, in the name of the Nix
expression and in flake.nix). Note that the generated
Nix expression can be used with any ROS distro if its
package.xml contains no conditions. (default: rolling)
--src-param SRC_PARAM
Adds a parameter to the generated function and uses it
as a value of the src attribute (default: None)
--source-root SOURCE_ROOT
Set sourceRoot attribute value in the generated Nix
expression. Substring '{package_name}' gets replaced
with the package name. (default: None)
--flake Generate top-level flake.nix instead of default.nix.
Use with --fetch if some package.xml files are outside
of the flake repo. (default: False)
--nixfmt Format the resulting expressions with nixfmt (default:
False)
--copyright-holder COPYRIGHT_HOLDER
--license LICENSE License of the generated Nix expression, e.g. 'BSD'
(default: None)
```
[ROS]: https://www.ros.org/
[Nix]: https://nixos.org/
[nix-ros-overlay]: https://github.com/lopsided98/nix-ros-overlay
<!-- Local Variables: -->
<!-- compile-command: "mdsh" -->
<!-- End: -->

2
ros2nix/__main__.py Normal file
View file

@ -0,0 +1,2 @@
from .ros2nix import main
main()

View file

@ -150,38 +150,70 @@ def generate_flake(args):
def ros2nix(args):
parser = argparse.ArgumentParser(
formatter_class=argparse.ArgumentDefaultsHelpFormatter
prog="ros2nix", formatter_class=argparse.ArgumentDefaultsHelpFormatter
)
parser.add_argument("source", nargs="+", help="Path to package.xml")
group = parser.add_mutually_exclusive_group()
group.add_argument("--output", default="package.nix", help="Output filename")
group.add_argument("--output-as-ros-pkg-name", action="store_true", help="Name output file based on ROS package name, e.g., package_name.nix. Implies --output-dir=.")
group.add_argument("--output-as-nix-pkg-name", action="store_true", help="Name output file based on Nix package name, e.g., package-name.nix. Implies --output-dir=.")
group.add_argument(
"--output-as-ros-pkg-name",
action="store_true",
help="Name output files based on ROS package name, e.g., package_name.nix. Implies --output-dir=.",
)
group.add_argument(
"--output-as-nix-pkg-name",
action="store_true",
help="Name output files based on Nix package name, e.g., package-name.nix. Implies --output-dir=.",
)
parser.add_argument("--output-dir", help="Directory to generate output files in (by default, files are stored next to their corresponding package.xml)")
parser.add_argument(
"--output-dir",
help="Directory to generate output files in. "
"By default, package files are stored next to their corresponding package.xml, "
"top-level files like overlay.nix in the current directory)",
)
parser.add_argument("--fetch", action="store_true", help="Use fetches like fetchFromGitHub for src attribute. "
"The fetch function and its parameters are determined from the local git work tree."
"sourceRoot attribute is set if needed and not overridden by --source-root.")
parser.add_argument(
"--fetch",
action="store_true",
help="Use fetches like fetchFromGitHub in src attribute values. "
"The fetch function and its parameters are determined from the local git work tree. "
"sourceRoot attribute is set if needed and not overridden by --source-root.",
)
parser.add_argument(
"--distro",
default="rolling",
help="ROS distro (used as a context for evaluation of conditions "
"in package.xml, in the name of the Nix expression and in flake.nix.)",
"in package.xml, in the name of the Nix expression and in flake.nix). "
"Note that the generated Nix expression can be used with any ROS distro if its package.xml contains no conditions.",
)
parser.add_argument("--src-param",
help="Parameter name in arguments of the generated function to be used as a src attribute")
parser.add_argument("--source-root",
parser.add_argument(
"--src-param",
help="Adds a parameter to the generated function and uses it as a value of the src attribute",
)
parser.add_argument(
"--source-root",
help="Set sourceRoot attribute value in the generated Nix expression. "
"Substring '{package_name}' gets replaced with the package name.")
"Substring '{package_name}' gets replaced with the package name.",
)
parser.add_argument("--flake", action="store_true", help="Generate top-level flake.nix instead of default.nix. "
"Use with --fetch if some package.xml files are outside of the flake repo.")
parser.add_argument("--nixfmt", action="store_true", help="Format the resulting expressions with nixfmt")
parser.add_argument(
"--flake",
action="store_true",
help="Generate top-level flake.nix instead of default.nix. "
"Use with --fetch if some package.xml files are outside of the flake repo.",
)
parser.add_argument(
"--nixfmt",
action="store_true",
help="Format the resulting expressions with nixfmt",
)
parser.add_argument("--copyright-holder")
parser.add_argument("--license", help="License of the generated Nix expression, e.g. 'BSD'")
parser.add_argument(
"--license", help="License of the generated Nix expression, e.g. 'BSD'"
)
args = parser.parse_args()
@ -342,4 +374,4 @@ def main():
if __name__ == '__main__':
main()
sys.exit(main())