Re: GIT and COGITO individual scripts hidding from PATH
From: Pavel Pisa <pisa@cmp.felk.cvut.cz>
Date: 2016-06-15 22:41:58
Excuse me for resending of e-mail again, but I have forget
to disable wrapping of lines. Sending as attachmet would be
more secure, but I do not know, if it is convenient
on the git list.
The "cgt" is wrapper for all cogito programs. If cogito is
build and installed to any prefix directory (/opt/git-cogito in my case)
and script is copied to bin subdirectory (/opt/git-cogito/bin),
then only single symbolic link from some searchable directory on PATH
is enough to call all cogito commands
cgt pull
cgt update
so usage is more convenient for my fingers learned to type cvs up, etc.
I think, that addition of intelligent bash completion could be done easier
if number of the first level commands to cover is smaller.
"cgt" script
---------------------------------------------------------------------------
#!/usr/bin/env bash
#
# The GIT scripted toolkit.
# Copyright (c) Petr Baudis, 2005
#
# Script to automatically wrap individual GIT commands under one script
# for those, who prefer only one or two links in /usr/local/bin
# This script added by Pavel Pisa [off-list ref]
#
# This command mostly only multiplexes to the individual scripts based
# on the first argument.
error () {
echo cgt: $@ >&2
}
die () {
error $@
exit 1
}
if [ -z "$GIT_TOOLS_DIR" ] ; then
GIT_MUXBINARY_DIR="$(dirname "$0")"
if [ -h "$0" ]; then
#GIT_TOOLS_DIR="$(ls -l "$0" | sed 's/^.*-> *\(.*\) *$/\1/')"
GIT_TOOLS_DIR="$(readlink -f -n $0)"
GIT_TOOLS_DIR="$(dirname "$GIT_TOOLS_DIR")"
GIT_TOOLS_DIR="$(cd "$GIT_MUXBINARY_DIR" ; cd "$GIT_TOOLS_DIR" ; pwd )"
else
GIT_TOOLS_DIR="$(cd "$GIT_MUXBINARY_DIR" ; pwd )"
fi
if [ -z "$(echo :$PATH: | sed -n -e 's#:'"$GIT_TOOLS_DIR"':#yes#p' )" ] ; then
export PATH="$GIT_TOOLS_DIR:$PATH"
fi
export GIT_TOOLS_DIR
fi
#echo =$GIT_TOOLS_DIR
#echo PATH=$PATH
#echo CWD=$(pwd)
#exit
help () {
echo "cgt recognizes next commands:" >&2
(cd $GIT_TOOLS_DIR ; ls cg-* ) | sed -n -e 's/\<cg-\([^ ]*\)\>/\1/pg' >&2
}
cmd=$1; shift
if [ ! "$cmd" ]; then
error "missing command"
help
exit 1
fi
cgt_cmd_exe="${GIT_TOOLS_DIR}/cg-$cmd"
if [ ! -e "$cgt_cmd_exe" ]; then
error "unrecognized command ${cmd}"
help
exit 1
fi
"$cgt_cmd_exe" "$@"
---------------------------------------------------------------------------
"git" script
---------------------------------------------------------------------------
#!/usr/bin/env bash
#
# The GIT scripted toolkit.
# Copyright (c) Petr Baudis, 2005
#
# Script to automatically wrap individual GIT commands under one script
# for those, who prefer only one or two links in /usr/local/bin
# This script added by Pavel Pisa [off-list ref]
#
# This command mostly only multiplexes to the individual scripts based
# on the first argument.
error () {
echo git: $@ >&2
}
die () {
error $@
exit 1
}
if [ -z "$GIT_TOOLS_DIR" ] ; then
GIT_MUXBINARY_DIR="$(dirname "$0")"
if [ -h "$0" ]; then
#GIT_TOOLS_DIR="$(ls -l "$0" | sed 's/^.*-> *\(.*\) *$/\1/')"
GIT_TOOLS_DIR="$(readlink -f -n $0)"
GIT_TOOLS_DIR="$(dirname "$GIT_TOOLS_DIR")"
GIT_TOOLS_DIR="$(cd "$GIT_MUXBINARY_DIR" ; cd "$GIT_TOOLS_DIR" ; pwd )"
else
GIT_TOOLS_DIR="$(cd "$GIT_MUXBINARY_DIR" ; pwd )"
fi
if [ -z "$(echo :$PATH: | sed -n -e 's#:'"$GIT_TOOLS_DIR"':#yes#p' )" ] ; then
export PATH="$GIT_TOOLS_DIR:$PATH"
fi
export GIT_TOOLS_DIR
fi
#echo =$GIT_TOOLS_DIR
#echo PATH=$PATH
#echo CWD=$(pwd)
#exit
help () {
echo "git recognizes next commands:" >&2
(cd $GIT_TOOLS_DIR ; ls git-* ) | sed -n -e 's/\<git-\([^ ]*\)\>/\1/pg' >&2
}
cmd=$1; shift
if [ ! "$cmd" ]; then
error "missing command"
help
exit 1
fi
git_cmd_exe="${GIT_TOOLS_DIR}/git-$cmd"
if [ ! -e "$git_cmd_exe" ]; then
error "unrecognized command ${cmd}"
help
exit 1
fi
"$git_cmd_exe" "$@"
---------------------------------------------------------------------------