Cloned SEACAS for EXODUS library with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

87 lines
3.3 KiB

2 years ago
#
# Bash setup gitdist and commandline completion
#
# Usage:
#
# source <base-dir>/gitdist-setup.sh
#
# First, this script, when sourced, will create an alias for gitdist to the
# gitdist script in the same directory where this script resides if 'gitdist'
# is not already in the path. (This just makes it easy to get 'gitdist' in
# your path.)
#
# Second, this script sets up commandline completion for the gitdist command
# the same as for the git command. So, if you have sourced the script
# git-completion.bash before sourcing this script, then gitdist will get all
# of the same commandline command and argument completions as the git command.
# In addition, it adds commandline completions for the additional gitdist
# commands and options (e.g. dist-repo-status, --dist-mod-only, --dist-repos,
# etc.).
#
# Third, this script sets up bash functions and alias for:
#
# gitdist-status Show repo status table
# gitdist-mod Run gitdist only on modified repos
# gitdist-mod-status Show status table for only modified repos
# gitdist-repo-versions Show repo version info (for --dist-version-file)
# gitdist-show-full-repo-state Full repo state (status table, versions, remotes)
#
# Assert this script is sourced, not run!
called=$_
if [ "$called" == "$0" ] ; then
echo "This script '$0' is being called. Instead, it must be sourced!"
exit 1
fi
# Get the base dir for the sourced script
SCRIPT_DIR=`echo $BASH_SOURCE | sed "s/\(.*\)\/.*\.sh/\1/g"`
#echo "SCRIPT_DIR = '$SCRIPT_DIR'"
existing_gitdist=`which gitdist 2> /dev/null`
if [[ "${existing_gitdist}" == "" ]] ; then
alias gitdist=${SCRIPT_DIR}/gitdist
fi
function gitdist_repo_versions {
gitdist "$@" --dist-no-color log -1 --pretty=format:"%H [%cd] <%ae>%n%s" | grep -v "^$"
}
export -f gitdist_repo_versions
function gitdist_show_full_repo_state {
echo
echo "Repo versions:"
echo
gitdist_repo_versions "$@"
echo
echo "Repo branch status:"
echo
gitdist dist-repo-status "$@" | grep -v "^$" | grep -v "(tip: to see a legend"
echo
echo "Repo remotes:"
echo
gitdist --dist-no-color "$@" remote -v | grep "\(Git Repo\|push\)"
}
export -f gitdist_show_full_repo_state
# Source this with bash to load useful env for using gitdist
alias gitdist-status="gitdist dist-repo-status"
alias gitdist-mod="gitdist --dist-mod-only"
alias gitdist-mod-status="gitdist --dist-mod-only dist-repo-status"
alias gitdist-repo-versions=gitdist_repo_versions
alias gitdist-show-full-repo-state=gitdist_show_full_repo_state
# Setup for completions for git command and gitdist options commands
complete -o default -o nospace -F _git \
-W "dist-repo-status --dist-help --dist-use-git --dist-repos --dist-not-repos --dist-version-file --dist-version-file2 --dist-no-color --dist-debug --dist-no-opt --dist-mod-only --dist-legend" \
gitdist gitdist-mod
complete -o default -o nospace \
-W "--dist-use-git --dist-repos --dist-not-repos --dist-mod-only" \
gitdist_repo_versions gitdist-repo-versions
complete -o default -o nospace \
-W "--dist-use-git --dist-repos --dist-not-repos --dist-mod-only" \
gitdist_show_full_repo_state gitdist-show-full-repo-state
complete -o default -o nospace \
-W "--dist-repos --dist-not-repos --dist-mod-only" \
gitdist-status