bcli() { if [ "$1" = "up" ]; then MEMBERS="$(groups | sed 's/ /\n/g' | xargs -I{} getent group {} | sed 's/\([^:]*\):[^:]*:\([^:]*\):.*/\2 \1/g')" docker run --rm -d --net=host -v $HOME:/host -v "${BCLI_TECH:-/opt/tech}:/opt/cad/conf" --name "bcli-$USER" -h "bcli-$USER" -e USER=$USER -e USER_ID=$(id -u) -e GROUP_ID=$(id -g) -e DISPLAY=$DISPLAY -e MEMBERS="$MEMBERS" -v "/tmp/.X11-unix:/tmp/.X11-unix:rw" broccolimicro/broccoli-cli:latest > /dev/null echo "bcli-$USER started" elif [ "$1" = "down" ]; then docker stop "bcli-$USER" > /dev/null echo "bcli-$USER stopped" #legacy, or if server files change faster than a new download elif [ "$1" = "mount" ]; then if [ -z "$2" ]; then echo "expected an ssh path to a tech directory (user@server:path/to/tech)." else mkdir -p $HOME/tech sshfs $2 $HOME/tech/ fi elif [ "$1" = "unmount" ]; then shift if [ "$1" = "-f" ]; then pkill -KILL sshfs fusermount -u $HOME/tech else umount $HOME/tech fi rmdir $HOME/tech elif [ "$#" -eq 0 ]; then WD="/host" if [[ "$PWD" = "$HOME/"* ]]; then WD="/host${PWD#$HOME}" fi XAUTH_TOKEN="$(xauth list | sed 's/^[^:]*/localhost/g' | sed 's/localhost: /localhost:0 /g')" docker exec -u $(id -u) -e XAUTH_TOKEN="$XAUTH_TOKEN" -it "bcli-$USER" /bin/bash -c "echo \"$XAUTH_TOKEN\" | xargs -n 3 xauth add" docker exec -u $(id -u) -w $WD -e DISPLAY=$DISPLAY -it "bcli-$USER" /bin/bash else if [ "$1" != "--help" ]; then echo "error: unrecognized command '$1'" echo "" fi echo "usage: bcli " echo "If command is empty, then start a terminal logged into the toolset." echo " up - launch the toolset" echo " down - shutdown the toolset" echo " mount - legacy command; mount the technology files from broccolimicro.io" echo " unmount - legacy command; unmount the technology files" echo " -f - legacy option; force the unmount if the connection has been broken" fi }