mirror of
https://github.com/bjoernellens1/rmp220_middleware.git
synced 2024-11-22 07:43:48 +00:00
83 lines
2.8 KiB
Bash
83 lines
2.8 KiB
Bash
|
#!/bin/bash
|
||
|
# Copyright 2018 Shane Loretz
|
||
|
#
|
||
|
# 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 [ "${COLCON_SPAWN_SHELL_GET_WORKSPACE_INFO}" = "workspace_name" ] ;
|
||
|
then
|
||
|
# script is being sourced to get info and should not spawn a shell
|
||
|
COLCON_SPAWN_SHELL_WORKSPACE_NAME='rmp220_middleware'
|
||
|
unset COLCON_SPAWN_SHELL_GET_WORKSPACE_INFO
|
||
|
return
|
||
|
fi
|
||
|
|
||
|
# Get absolute path to install root ( directory this script is in)
|
||
|
_CCSSB_dir=$(builtin cd "`dirname "${BASH_SOURCE[0]}"`" > /dev/null && pwd)
|
||
|
# Append workspace to list of workspaces (for chaining workspaces)
|
||
|
_CCSSB_workspaces=$COLCON_SPAWN_SHELL_BASH:$_CCSSB_dir
|
||
|
|
||
|
# Need to source user's rcfiles first because --rcfile causes them to be ignored
|
||
|
if [ -f /etc/bash.bashrc ]
|
||
|
then
|
||
|
_CCSSB_rcfile="$_CCSSB_rcfile . /etc/bash.bashrc ;"
|
||
|
fi
|
||
|
if [ -f ~/.bashrc ]
|
||
|
then
|
||
|
_CCSSB_rcfile="$_CCSSB_rcfile . ~/.bashrc ;"
|
||
|
fi
|
||
|
|
||
|
# Build a prompt prefix showing the order workspaces have been chained
|
||
|
_CCSSB_ps1_prefix=""
|
||
|
|
||
|
# Make code to source all colcon workspaces
|
||
|
while read -d ':' _CCSSB_ws_dir; do
|
||
|
if [ -z "$_CCSSB_ws_dir" ]
|
||
|
then
|
||
|
# No text before first ':' so ignore it
|
||
|
continue
|
||
|
fi
|
||
|
# make sure shell sources the workspace on startup
|
||
|
_CCSSB_rcfile="$_CCSSB_rcfile . $_CCSSB_ws_dir/local_setup.bash ;"
|
||
|
|
||
|
# Source the workspace here to get the workspace name
|
||
|
COLCON_SPAWN_SHELL_GET_WORKSPACE_INFO=workspace_name
|
||
|
. $_CCSSB_ws_dir/spawn_shell.bash
|
||
|
unset COLCON_SPAWN_SHELL_GET_WORKSPACE_INFO
|
||
|
|
||
|
if [ -z "$_CCSSB_ps1_prefix" ]
|
||
|
then
|
||
|
# First workspace is separated from PS1 by "|"
|
||
|
_CCSSB_ps1_prefix="${COLCON_SPAWN_SHELL_WORKSPACE_NAME}|"
|
||
|
else
|
||
|
# Chained workspaces are separated with "<-"
|
||
|
_CCSSB_ps1_prefix="${COLCON_SPAWN_SHELL_WORKSPACE_NAME}<-$_CCSSB_ps1_prefix"
|
||
|
fi
|
||
|
unset COLCON_SPAWN_SHELL_WORKSPACE_NAME
|
||
|
done <<< "$_CCSSB_workspaces:"
|
||
|
|
||
|
# Support chaining by setting a variable with the list of spawned workspaces
|
||
|
_CCSSB_rcfile="$_CCSSB_rcfile COLCON_SPAWN_SHELL_BASH=\"$_CCSSB_workspaces\" ;"
|
||
|
|
||
|
# Set prompt to indicate sourced workspaces
|
||
|
_CCSSB_rcfile="$_CCSSB_rcfile export PS1=\"$_CCSSB_ps1_prefix\$PS1\" ;"
|
||
|
|
||
|
# Spawn a child shell using custom startup commands
|
||
|
$SHELL --rcfile <(echo "$_CCSSB_rcfile")
|
||
|
|
||
|
# Cleanup the variables used
|
||
|
unset _CCSSB_workspaces
|
||
|
unset _CCSSB_rcfile
|
||
|
unset _CCSSB_ps1_prefix
|
||
|
unset _CCSSB_ws_dir
|
||
|
unset _CCSSB_dir
|