From 35e2d580bf7d04884d793a5484c7e7b445e27d6b Mon Sep 17 00:00:00 2001 From: ruffsl Date: Thu, 5 Sep 2019 14:28:14 -0700 Subject: [PATCH 1/5] Initial commit for adding fish support Signed-off-by: ruffsl --- ros2cli/colcon.pkg | 1 + ros2cli/completion/ros2-argcomplete.fish | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 ros2cli/completion/ros2-argcomplete.fish diff --git a/ros2cli/colcon.pkg b/ros2cli/colcon.pkg index a762fd0cc..b361b7948 100644 --- a/ros2cli/colcon.pkg +++ b/ros2cli/colcon.pkg @@ -1,6 +1,7 @@ { "hooks": [ "share/ros2cli/environment/ros2-argcomplete.bash", + "share/ros2cli/environment/ros2-argcomplete.fish", "share/ros2cli/environment/ros2-argcomplete.zsh" ] } diff --git a/ros2cli/completion/ros2-argcomplete.fish b/ros2cli/completion/ros2-argcomplete.fish new file mode 100644 index 000000000..48b9f635a --- /dev/null +++ b/ros2cli/completion/ros2-argcomplete.fish @@ -0,0 +1,19 @@ +# Copyright 2017-2019 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +if type register-python-argcomplete3 > /dev/null 2>&1 + eval "register-python-argcomplete3 --shell fish ros2 | ." +else if type register-python-argcomplete > /dev/null 2>&1 + eval "register-python-argcomplete3 --shell fish ros2 | ." +end From 1bf7013b430615e25d5d41271a18a5306ee13889 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Thu, 5 Sep 2019 14:28:57 -0700 Subject: [PATCH 2/5] Stage local_setup.fish from bash Signed-off-by: ruffsl --- ros2cli/resource/local_setup.fish | 37 +++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 ros2cli/resource/local_setup.fish diff --git a/ros2cli/resource/local_setup.fish b/ros2cli/resource/local_setup.fish new file mode 100644 index 000000000..29aa7ff27 --- /dev/null +++ b/ros2cli/resource/local_setup.fish @@ -0,0 +1,37 @@ +# reduced from ament_package/template/package_level/local_setup.bash.in + +# provide AMENT_CURRENT_PREFIX to shell script +AMENT_CURRENT_PREFIX=$(builtin cd "`dirname "${BASH_SOURCE[0]}"`/../.." && pwd) +# store AMENT_CURRENT_PREFIX to restore it before each environment hook +_package_local_setup_AMENT_CURRENT_PREFIX=$AMENT_CURRENT_PREFIX + +# unset AMENT_ENVIRONMENT_HOOKS +# if not appending to them for return +if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then + unset AMENT_ENVIRONMENT_HOOKS +fi + +# restore AMENT_CURRENT_PREFIX before evaluating the environment hooks +AMENT_CURRENT_PREFIX=$_package_local_setup_AMENT_CURRENT_PREFIX +# list all environment hooks of this package +ament_append_value AMENT_ENVIRONMENT_HOOKS "$AMENT_CURRENT_PREFIX/share/ros2cli/environment/ros2-argcomplete.bash" +# source all shell-specific environment hooks of this package +# if not returning them +if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then + _package_local_setup_IFS=$IFS + IFS=":" + for _hook in $AMENT_ENVIRONMENT_HOOKS; do + # restore AMENT_CURRENT_PREFIX for each environment hook + AMENT_CURRENT_PREFIX=$_package_local_setup_AMENT_CURRENT_PREFIX + # restore IFS before sourcing other files + IFS=$_package_local_setup_IFS + . "$_hook" + done + unset _hook + IFS=$_package_local_setup_IFS + unset _package_local_setup_IFS + unset AMENT_ENVIRONMENT_HOOKS +fi + +unset _package_local_setup_AMENT_CURRENT_PREFIX +unset AMENT_CURRENT_PREFIX From 380c1dd63ee40bb01a1ffdad28ae284236965fa7 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Thu, 5 Sep 2019 15:14:42 -0700 Subject: [PATCH 3/5] Port local_setup to fish Signed-off-by: ruffsl --- ros2cli/resource/local_setup.fish | 42 +++++++++++++------------------ 1 file changed, 18 insertions(+), 24 deletions(-) diff --git a/ros2cli/resource/local_setup.fish b/ros2cli/resource/local_setup.fish index 29aa7ff27..60333d15a 100644 --- a/ros2cli/resource/local_setup.fish +++ b/ros2cli/resource/local_setup.fish @@ -1,37 +1,31 @@ -# reduced from ament_package/template/package_level/local_setup.bash.in +# reduced from ament_package/template/package_level/local_setup.fish.in # provide AMENT_CURRENT_PREFIX to shell script -AMENT_CURRENT_PREFIX=$(builtin cd "`dirname "${BASH_SOURCE[0]}"`/../.." && pwd) +set -l AMENT_CURRENT_PREFIX (cd (dirname (status -f))/../.. && pwd) # store AMENT_CURRENT_PREFIX to restore it before each environment hook -_package_local_setup_AMENT_CURRENT_PREFIX=$AMENT_CURRENT_PREFIX +set -l _package_local_setup_AMENT_CURRENT_PREFIX $AMENT_CURRENT_PREFIX # unset AMENT_ENVIRONMENT_HOOKS # if not appending to them for return -if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then - unset AMENT_ENVIRONMENT_HOOKS -fi +if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS"] + set -e AMENT_ENVIRONMENT_HOOKS +end # restore AMENT_CURRENT_PREFIX before evaluating the environment hooks -AMENT_CURRENT_PREFIX=$_package_local_setup_AMENT_CURRENT_PREFIX +set -l AMENT_CURRENT_PREFIX $_package_local_setup_AMENT_CURRENT_PREFIX # list all environment hooks of this package -ament_append_value AMENT_ENVIRONMENT_HOOKS "$AMENT_CURRENT_PREFIX/share/ros2cli/environment/ros2-argcomplete.bash" +ament_append_value AMENT_ENVIRONMENT_HOOKS "$AMENT_CURRENT_PREFIX/share/ros2cli/environment/ros2-argcomplete.fish" # source all shell-specific environment hooks of this package # if not returning them -if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then - _package_local_setup_IFS=$IFS - IFS=":" - for _hook in $AMENT_ENVIRONMENT_HOOKS; do +if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS"] + set -l _package_local_setup_IFS $IFS + set -l IFS ":" + for _hook in $AMENT_ENVIRONMENT_HOOKS # restore AMENT_CURRENT_PREFIX for each environment hook - AMENT_CURRENT_PREFIX=$_package_local_setup_AMENT_CURRENT_PREFIX + set AMENT_CURRENT_PREFIX $_package_local_setup_AMENT_CURRENT_PREFIX # restore IFS before sourcing other files - IFS=$_package_local_setup_IFS - . "$_hook" - done - unset _hook - IFS=$_package_local_setup_IFS - unset _package_local_setup_IFS - unset AMENT_ENVIRONMENT_HOOKS -fi - -unset _package_local_setup_AMENT_CURRENT_PREFIX -unset AMENT_CURRENT_PREFIX + set IFS $_package_local_setup_IFS + source "$_hook" + end + set IFS $_package_local_setup_IFS +end From 3afbe375def4b7a8e4e462a5c9ca1bc95e4fa621 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Thu, 5 Sep 2019 15:17:09 -0700 Subject: [PATCH 4/5] Add fish files in setup.py Signed-off-by: ruffsl --- ros2cli/setup.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ros2cli/setup.py b/ros2cli/setup.py index c3f503231..000f962c0 100644 --- a/ros2cli/setup.py +++ b/ros2cli/setup.py @@ -14,10 +14,12 @@ ]), ('share/ros2cli', [ 'resource/local_setup.bash', + 'resource/local_setup.fish', 'resource/local_setup.zsh', ]), ('share/ros2cli/environment', [ 'completion/ros2-argcomplete.bash', + 'completion/ros2-argcomplete.fish', 'completion/ros2-argcomplete.zsh' ]), ], From a84707387a413243213d53cd59a2abbbea7b69e7 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Thu, 5 Sep 2019 15:25:27 -0700 Subject: [PATCH 5/5] The `.` command is deprecated and the `source` command is preferred https://github.com/fish-shell/fish-shell/issues/310 Signed-off-by: ruffsl --- ros2cli/completion/ros2-argcomplete.fish | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ros2cli/completion/ros2-argcomplete.fish b/ros2cli/completion/ros2-argcomplete.fish index 48b9f635a..e72102089 100644 --- a/ros2cli/completion/ros2-argcomplete.fish +++ b/ros2cli/completion/ros2-argcomplete.fish @@ -13,7 +13,7 @@ # limitations under the License. if type register-python-argcomplete3 > /dev/null 2>&1 - eval "register-python-argcomplete3 --shell fish ros2 | ." + eval "register-python-argcomplete3 --shell fish ros2 | source" else if type register-python-argcomplete > /dev/null 2>&1 - eval "register-python-argcomplete3 --shell fish ros2 | ." + eval "register-python-argcomplete3 --shell fish ros2 | source" end