42e20462ca
Variable MYSHELLCONFIG_GIT_SYNC in ~/.bashrc if unset it defaults to true. So profile is synced If Set to false, do not sync profile
87 lines
3.4 KiB
Bash
Executable file
87 lines
3.4 KiB
Bash
Executable file
#!/bin/bash
|
|
#debug
|
|
|
|
# set SSHS to false, if not set
|
|
if [ -z ${SSHS+x} ]; then SSHS=false;fi
|
|
|
|
# check if we are a interactive shell
|
|
# https://guide.bash.academy/expansions/
|
|
# https://www.tldp.org/LDP/abs/html/refcards.html#AEN22473
|
|
if [[ $- = *i* ]] ; then
|
|
#echo "interactive shell" >&2
|
|
|
|
# define variables
|
|
[ -z "${USERNAME+x}" ] && USERNAME="$USER"
|
|
[ -z "${USEREMAIL+x}" ] && USEREMAIL="$USER@$(domainname -f)"
|
|
[ -z "${FULLNAME+x}" ] && FULLNAME="$(getent passwd $USER | cut -d ":" -f 5 | cut -d ',' -f 1)"
|
|
[ -z "${GIT_AUTHOR_NAME+x}" ] && GIT_AUTHOR_NAME=$FULLNAME
|
|
[ -z "${GIT_AUTHOR_EMAIL+x}" ] && GIT_AUTHOR_EMAIL=$FULLNAME
|
|
[ -z "${GIT_COMMITTER_NAME+x}" ] && GIT_COMMITTER_NAME=$FULLNAME
|
|
[ -z "${GIT_COMMITTER_EMAIL+x}" ] && GIT_COMMITTER_EMAIL=$FULLNAME
|
|
|
|
[ -z "${MYSHELLCONFIG_SUBPATH+x}" ] && MYSHELLCONFIG_SUBPATH=".local/myshellconfig"
|
|
[ -z "${MYSHELLCONFIG_BASE+x}" ] && MYSHELLCONFIG_BASE="${HOME}/${MYSHELLCONFIG_SUBPATH}"
|
|
MYSHELLCONFIG_BASE_PARENT="$(dirname $MYSHELLCONFIG_BASE)"
|
|
[ -z "${MYSHELLCONFIG_LOGDIR+x}" ] && MYSHELLCONFIG_LOGDIR="${MYSHELLCONFIG_BASE}/logs"
|
|
[ -z "${MYSHELLCONFIG_LOGFILE+x}" ] && MYSHELLCONFIG_LOGFILE="${MYSHELLCONFIG_LOGDIR}/myshellconfig.log"
|
|
[ -z "${MYSHELLCONFIG_GIT_TIMEOUT+x}" ] && MYSHELLCONFIG_GIT_TIMEOUT=5s
|
|
[ -z "${MYSHELLCONFIG_GIT_CHECKOUT_TIMEOUT+x}" ] && MYSHELLCONFIG_GIT_CHECKOUT_TIMEOUT=20s
|
|
MYSHELLCONFIG_BASH_COMPLETION="${HOME}/${MYSHELLCONFIG_SUBPATH}/bash_completion.d"
|
|
[ -z "${MYSHELLCONFIG_GIT_SYNC+x}" ] && MYSHELLCONFIG_GIT_SYNC=true
|
|
|
|
SGIT="git -C ${MYSHELLCONFIG_BASE}"
|
|
export MYSHELLCONFIG_BASE MYSHELLCONFIG_LOGDIR MYSHELLCONFIG_LOGFILE SGIT MYSHELLCONFIG_VIM_PLUGINS
|
|
|
|
cat << EOF >> "${MYSHELLCONFIG_LOGFILE}"
|
|
------- start -------------- $(date) ---------------8<--
|
|
|
|
EOF
|
|
# define functions
|
|
ckrepo () {
|
|
# check if remote repo is reachable
|
|
if $( timeout --foreground "${MYSHELLCONFIG_GIT_TIMEOUT}" $SGIT ls-remote >/dev/null 2>&1) ;then
|
|
return 0
|
|
else
|
|
return 1
|
|
fi
|
|
|
|
}
|
|
|
|
sync_config () {
|
|
if $MYSHELLCONFIG_GIT_SYNC; then
|
|
local nok=""
|
|
local gco=""
|
|
if which git >/dev/null; then
|
|
echo -n "Sync config with ${MYSHELLCONFIG_GIT_SERVER}: " 1>&2
|
|
# MYSHELLCONFIG_GITCHECKOUTSCRIPT_OPTIONS are options for bin/git-myshellconfig-checkout
|
|
if [ -z ${MYSHELLCONFIG_GIT_CHECKOUTSCRIPT_OPTIONS+x} ]; then
|
|
gco="-h"
|
|
else
|
|
gco="$MYSHELLCONFIG_GIT_CHECKOUTSCRIPT_OPTIONS"
|
|
fi
|
|
${MYSHELLCONFIG_BASE}/bin/git-myshellconfig-checkout ${gco}|| nok="not " 1>>"${MYSHELLCONFIG_LOGFILE}" 2>&1
|
|
printf '%s\n' "${nok}synced" 1>&2
|
|
[ -z "$nok" ] && mkdir -pv "${MYSHELLCONFIG_LOGDIR}"
|
|
|
|
else
|
|
echo "git not installed, no configuration possible, please install git" >&2
|
|
fi
|
|
else
|
|
echo "Not syncing profile in case of configuration"
|
|
fi
|
|
}
|
|
|
|
|
|
|
|
# source git-sync part of myshellconfig
|
|
. "${MYSHELLCONFIG_BASE}/myshell_git_sync"
|
|
|
|
# source loading defaults part of myshellconfig
|
|
. "${MYSHELLCONFIG_BASE}/myshell_load_defaults"
|
|
|
|
cat << EOF >> "${MYSHELLCONFIG_LOGFILE}"
|
|
--8<--- end ---------------- $(date) ---------------8<--
|
|
|
|
EOF
|
|
fi
|
|
|