diff --git a/flake.nix b/flake.nix index 46f1472..874c0e4 100644 --- a/flake.nix +++ b/flake.nix @@ -60,14 +60,19 @@ src = pkgs.lib.cleanSource ./.; pyproject = true; - nativeBuildInputs = with pkgs.python3Packages; [ + build-system = with pkgs.python3Packages; [ setuptools ]; + nativeBuildInputs = with pkgs; [ + installShellFiles + python3Packages.argcomplete + ]; propagatedBuildInputs = with pkgs; [ git nix-prefetch-git nixfmt-rfc-style superflore + python3Packages.argcomplete ]; makeWrapperArgs = [ "--set ROS_HOME ${rosdep-cache}" @@ -75,6 +80,13 @@ "--set ROSDISTRO_INDEX_URL file://${rosdistro}/index-v4.yaml" "--set ROS_OS_OVERRIDE nixos" ]; + postInstall = '' + installShellCompletion --cmd ros2nix \ + --bash <(register-python-argcomplete ros2nix) \ + --fish <(register-python-argcomplete ros2nix -s fish) \ + --zsh <(register-python-argcomplete ros2nix -s zsh) + ''; + }; in { diff --git a/ros2nix/ros2nix.py b/ros2nix/ros2nix.py index 1084a3f..a753203 100755 --- a/ros2nix/ros2nix.py +++ b/ros2nix/ros2nix.py @@ -1,9 +1,10 @@ #!/usr/bin/env python3 +# PYTHON_ARGCOMPLETE_OK # Copyright 2019-2024 Ben Wolsieffer # Copyright 2024 Michal Sojka -import argparse +import argcomplete, argparse import difflib import io import itertools @@ -319,6 +320,7 @@ def ros2nix(args): "--license", help="License of the generated Nix expressions, e.g. 'BSD'" ) + argcomplete.autocomplete(parser) args = parser.parse_args() if args.output_dir is None and (args.output_as_nix_pkg_name or args.output_as_ros_pkg_name):