gazebosim / gz-tools

Command line tools for the Gazebo libraries.
https://gazebosim.org
Apache License 2.0
15 stars 18 forks source link

Source bash completion files for all other gz libraries #103

Closed azeey closed 2 years ago

azeey commented 2 years ago

🎉 New feature

Toward #1

Summary

Source the gz*.completion file from wherever its installed so that the bash completion functions for other gz libraries can be picked up automatically.

Additionally, this installed the cmake configured etc/ign.bash_completion.sh file to <prefix>/share/bash-completion/completions/ign instead of relying on the debian/homebrew build infrastructure (see https://github.com/gazebo-release/gz-tools-release/pull/6). This has two advantages (1) makes it easy to use the cmake configured file so we can have cmake variables in etc/ign.bash_completion.sh (2) tab completion works the same way when building from source if <prefix> is set to /usr.

Related: https://github.com/gazebo-release/gz-tools-release/pull/6

Test it

To build this with https://github.com/gazebo-release/gz-tools-release/pull/6 on focal, symlink gz-tools-release/focal/debian into the the root directory of gz-tools, then from the root directory of gz-tools, build the deb files using dpkg-buildpackage -us -uc -b. The deb files will be created in the parent directory. You can then copy the debs to a docker container, install it, and test tab completion.

Checklist

Note to maintainers: Remember to use Squash-Merge and edit the commit message to match the pull request summary while retaining Signed-off-by messages.

mabelzhang commented 2 years ago

I'll let someone else review this, especially regarding the gz-tools-release part.

I only tested from source - things are installed to the right places. It doesn't work if I just manually source like before:

$ . install/share/bash-completion/completions/ign
$ ign bash: ign: command not found

I guess that's intended? I guess the release repo sources it in some different way? I haven't tried the release repo.

azeey commented 2 years ago

I'll let someone else review this, especially regarding the gz-tools-release part.

I only tested from source - things are installed to the right places. It doesn't work if I just manually source like before:

$ . install/share/bash-completion/completions/ign
$ ign bash: ign: command not found

I guess that's intended? I guess the release repo sources it in some different way? I haven't tried the release repo.

Just tested it locally and it seems to work. From the error message, it looks like you may not have sourced the workspace (install/setup.bash).

mabelzhang commented 2 years ago

OOPS. You're right. Works from source now :D Sorry for the noise.

mjcarroll commented 2 years ago

I made some comments over here: https://github.com/gazebo-release/gz-tools-release/pull/6

It looks like the nightly job may not have done the right thing, but a local docker build of the deb seems right?

azeey commented 2 years ago

Replaced by https://github.com/gazebosim/gz-tools/pull/104 (Creating a new PR with a branch on the upstream repo instead of a fork so I can test with a debbuilder job).