This commit is contained in:
Jakobus Schürz 2020-12-13 15:32:24 +01:00
commit 0925848e5f
16 changed files with 258 additions and 211 deletions

View file

@ -49,7 +49,7 @@ Ausloggen und neu Einloggen.
## Lokale Configuration ## Lokale Configuration
in ~/.bashrc werden vor der Zeile zum Einbinden der myshellconfig die Variablen eingefügt um damit ein hostspezifisches Verhalten zu steuern in ~/.bashrc werden vor der Zeile zum Einbinden der myshellconfig die Variablen eingefügt um damit ein hostspezifisches Verhalten zu steuern
``` ```
MYSHELLCONFIG_GIT_CHECKOUTSCRIPT_OPTIONS= MSC_GIT_CHECKOUTSCRIPT_OPTIONS=
``` ```
Mögliche Optionen: Mögliche Optionen:
@ -64,13 +64,13 @@ Mit der Option -s kann ein Update der Submodules (tmux-, vim-plugins) erzwungen
``` ```
MYSHELLCONFIG_GIT_CHECKOUTSCRIPT_OPTIONS="" MSC_GIT_CHECKOUTSCRIPT_OPTIONS=""
``` ```
### Git Protokolle für push und pull ### Git Protokolle für push und pull
``` ```
MYSHELLCONFIG_GIT_REMOTE_PROTOCOL=git # git ist default MSC_GIT_REMOTE_PROTOCOL=git # git ist default
MYSHELLCONFIG_GIT_REMOTE_PUSH_PROTOCOL=$MYSHELLCONFIG_GIT_REMOTE_PROTOCOL # MYSHELLCONFIG_GIT_REMOTE_PROTOCOL ist default MSC_GIT_REMOTE_PUSH_PROTOCOL=$MSC_GIT_REMOTE_PROTOCOL # MSC_GIT_REMOTE_PROTOCOL ist default
``` ```
Mögliche Optionen: Mögliche Optionen:
@ -78,12 +78,12 @@ Mögliche Optionen:
* git - (default) Gitprotokoll ist git (Auf manchen Umgebungen kann der dazu notwenidge Port gesperrt sein) * git - (default) Gitprotokoll ist git (Auf manchen Umgebungen kann der dazu notwenidge Port gesperrt sein)
* http - wenn git nicht möglich ist, kann das http/https Protokoll verwendet werden. (ist langsamer als git, jedoch ist fast überall Port 80 oder 440 freigeschaltet) * http - wenn git nicht möglich ist, kann das http/https Protokoll verwendet werden. (ist langsamer als git, jedoch ist fast überall Port 80 oder 440 freigeschaltet)
* ssh - Wenn auch schreibend auf das Repo zugegriffen werden soll, so muss Privatekey, Pubkey (und wenn konfiguriert Certifikate mit den notwendigen Principals) vorhanden sein, dann kann das ssh-Prodokoll verwendet werden. * ssh - Wenn auch schreibend auf das Repo zugegriffen werden soll, so muss Privatekey, Pubkey (und wenn konfiguriert Certifikate mit den notwendigen Principals) vorhanden sein, dann kann das ssh-Prodokoll verwendet werden.
* file - Das entfernte Repository ist auf einem USB-Stick, welcher unter /media/$USER/gitstick beim Einstecken gemountet wird. Der Pfad ist anpassbar (siehe MYSHELLCONFIG_GIT_REPO_PATH) * file - Das entfernte Repository ist auf einem USB-Stick, welcher unter /media/$USER/gitstick beim Einstecken gemountet wird. Der Pfad ist anpassbar (siehe MSC_GIT_REPO_PATH)
Vim Plugins werden prinzipiell von github.com bezogen. Für spezielle Anwendungsfälle (github.com ist per firewall gesperrt), kann man diese auch in eigenen Repos hosten. Um diese eigenen Repos zu verwenden, muss in ~/.bashrc die Variable entsprechend gesetzt werden. Es ist ein Verzeichnis anzugeben, unter dem alle Pluginrepos als bare-Repos gecloned werden. Wichtig ist, dass die Usernamenverzeichnisse von github.com hier auch vorhanden sind, damit ohne dieser gesetzten Variable die Plugins direkt von github.com geladen werden können. Vim Plugins werden prinzipiell von github.com bezogen. Für spezielle Anwendungsfälle (github.com ist per firewall gesperrt), kann man diese auch in eigenen Repos hosten. Um diese eigenen Repos zu verwenden, muss in ~/.bashrc die Variable entsprechend gesetzt werden. Es ist ein Verzeichnis anzugeben, unter dem alle Pluginrepos als bare-Repos gecloned werden. Wichtig ist, dass die Usernamenverzeichnisse von github.com hier auch vorhanden sind, damit ohne dieser gesetzten Variable die Plugins direkt von github.com geladen werden können.
``` ```
MYSHELLCONFIG_VIM_PLUGINS=https://my.git.server/public/Vim MSC_VIM_PLUGINS=https://my.git.server/public/Vim
``` ```
Z.B. das Plugin Vundle.vim hat ist auf github unter dieser URL zu finden Z.B. das Plugin Vundle.vim hat ist auf github unter dieser URL zu finden
@ -97,17 +97,17 @@ https://my.git.server/public/Vim/gmarik/Vundle
### Über ~/.bashrc manuell festlegbare Variablen und ihre Default-Werte, wenn nicht manuell gesetzt: ### Über ~/.bashrc manuell festlegbare Variablen und ihre Default-Werte, wenn nicht manuell gesetzt:
``` ```
MYSHELLCONFIG_SUBPATH=.local/myshellconfig MSC_SUBPATH=.local/myshellconfig
MYSHELLCONFIG_BASE="${HOME}/${MYSHELLCONFIG_SUBPATH}" MSC_BASE="${HOME}/${MSC_SUBPATH}"
MYSHELLCONFIG_LOGDIR="${MYSHELLCONFIG_BASE}/logs" MSC_LOGDIR="${MSC_BASE}/logs"
MYSHELLCONFIG_LOGFILE="${MYSHELLCONFIG_LOGDIR}/git.log" MSC_LOGFILE="${MSC_LOGDIR}/git.log"
MYSHELLCONFIG_GIT_TIMEOUT=5s MSC_GIT_TIMEOUT=5s
MYSHELLCONFIG_GIT_SERVER="git.schuerz.at" MSC_GIT_SERVER="git.schuerz.at"
MYSHELLCONFIG_GIT_REPO_NAME="server-config.git" MSC_GIT_REPO_NAME="server-config.git"
MYSHELLCONFIG_GIT_REPO_PATH_HTTP="/public/" MSC_GIT_REPO_PATH_HTTP="/public/"
MYSHELLCONFIG_GIT_REPO_PATH_SSH=":public/" MSC_GIT_REPO_PATH_SSH=":public/"
MYSHELLCONFIG_GIT_REPO_PATH_GIT="/public/" MSC_GIT_REPO_PATH_GIT="/public/"
``` ```

View file

@ -61,9 +61,9 @@ alias goarchive='[ -e $(xdg-user-dir ARCHIVE) ] && cd $(xdg-user-dir ARCHIVE)'
alias godebian='cd ~/debian' alias godebian='cd ~/debian'
alias gofvwm='cd /home/jakob/src/fvwmverve/' alias gofvwm='cd /home/jakob/src/fvwmverve/'
alias gofvwmsys='cd /usr/share/fvwm-verve/' alias gofvwmsys='cd /usr/share/fvwm-verve/'
alias goserverconfig='cd $MYSHELLCONFIG_BASE' alias goserverconfig='cd $MSC_BASE'
alias gomyshellconfig='cd $MYSHELLCONFIG_BASE' alias gomyshellconfig='cd $MSC_BASE'
alias catmyshellconfiglog='cat $MYSHELLCONFIG_LOGFILE' alias catmyshellconfiglog='cat $MSC_LOGFILE'
alias goxund='cd /home/jakob/xundeenergie.at/' alias goxund='cd /home/jakob/xundeenergie.at/'
# system-dirs # system-dirs

View file

@ -21,11 +21,16 @@ if [[ $- = *i* ]] ; then
# define variables # define variables
# Base Path # Base Path
[ -z "${MYSHELLCONFIG_SUBPATH+x}" ] && export MYSHELLCONFIG_SUBPATH=".local/myshellconfig" [ -z "${MSC_SUBPATH+x}" ] && export MSC_SUBPATH=".local/myshellconfig"
[ -z "${MYSHELLCONFIG_BASE+x}" ] && export MYSHELLCONFIG_BASE="${HOME}/${MYSHELLCONFIG_SUBPATH}" [ -z "${MSC_BASE+x}" ] && export MSC_BASE="${HOME}/${MSC_SUBPATH}"
# hardcoded paths # hardcoded paths
export MYSHELLCONFIG_BASE_PARENT="$(dirname $MYSHELLCONFIG_BASE)" export MSC_BASE_PARENT="$(dirname $MSC_BASE)"
export MYSHELLCONFIG_BASH_COMPLETION="${HOME}/${MYSHELLCONFIG_SUBPATH}/bash_completion.d" export MSC_BASH_COMPLETION="${HOME}/${MSC_SUBPATH}/bash_completion.d"
# Load DEFAULTS
[ -e ${MSC_BASE}/defaults.conf ] && . ${MSC_BASE}/defaults.conf
# Userdata # Userdata
[ -z "${USERNAME+x}" ] && export USERNAME="$USER" [ -z "${USERNAME+x}" ] && export USERNAME="$USER"
@ -37,34 +42,36 @@ if [[ $- = *i* ]] ; then
[ -z "${GIT_AUTHOR_EMAIL+x}" ] && export GIT_AUTHOR_EMAIL=$USEREMAIL [ -z "${GIT_AUTHOR_EMAIL+x}" ] && export GIT_AUTHOR_EMAIL=$USEREMAIL
[ -z "${GIT_COMMITTER_NAME+x}" ] && export GIT_COMMITTER_NAME=$FULLNAME [ -z "${GIT_COMMITTER_NAME+x}" ] && export GIT_COMMITTER_NAME=$FULLNAME
[ -z "${GIT_COMMITTER_EMAIL+x}" ] && export GIT_COMMITTER_EMAIL=$USEREMAIL [ -z "${GIT_COMMITTER_EMAIL+x}" ] && export GIT_COMMITTER_EMAIL=$USEREMAIL
[ -z "${MYSHELLCONFIG_GIT_TIMEOUT+x}" ] && export MYSHELLCONFIG_GIT_TIMEOUT=5s
[ -z "${MYSHELLCONFIG_GIT_CHECKOUT_TIMEOUT+x}" ] && export MYSHELLCONFIG_GIT_CHECKOUT_TIMEOUT=20s [ -z "${MSC_GIT_TIMEOUT+x}" ] && export MSC_GIT_TIMEOUT=5s
[ -z "${MYSHELLCONFIG_GIT_SYNC+x}" ] && export MYSHELLCONFIG_GIT_SYNC=true [ -z "${MSC_GIT_CHECKOUT_TIMEOUT+x}" ] && export MSC_GIT_CHECKOUT_TIMEOUT=20s
[ -z "${MYSHELLCONFIG_GIT_SUBMODULES_UPDATE_DEFAULT+x}" ] && export MYSHELLCONFIG_GIT_SUBMODULES_UPDATE_DEFAULT=true [ -z "${MSC_GIT_SYNC+x}" ] && export MSC_GIT_SYNC=true
[ -z "${MYSHELLCONFIG_GIT_SUBMODULES_UPDATE_INTERVALL+x}" ] && export MYSHELLCONFIG_GIT_SUBMODULES_UPDATE_INTERVALL=48 #intervall in hours [ -z "${MSC_GIT_SUBMODULES_UPDATE_DEFAULT+x}" ] && export MSC_GIT_SUBMODULES_UPDATE_DEFAULT=true
[ -z "${MYSHELLCONFIG_GIT_SUBMODULES_SERVER_DEFAULT+x}" ] && export MYSHELLCONFIG_GIT_SUBMODULES_SERVER_DEFAULT="git://git.schuerz.at/github.com/" [ -z "${MSC_GIT_SUBMODULES_UPDATE_INTERVALL+x}" ] && export MSC_GIT_SUBMODULES_UPDATE_INTERVALL=48 #intervall in hours
[ -z "${MSC_GIT_SUBMODULES_SERVER_DEFAULT+x}" ] && export MSC_GIT_SUBMODULES_SERVER_DEFAULT="git://git.schuerz.at/github.com/"
[ -z "${MSC_GIT_CHECKOUTSCRIPT_OPTIONS_DEFAULT+x}" ] && export MSC_GIT_CHECKOUTSCRIPT_OPTIONS_DEFAULT="-h"
# hardcoded git # hardcoded git
export SGIT="git -C ${MYSHELLCONFIG_BASE}" export SGIT="git -C ${MSC_BASE}"
# git-repo-url for vim plugin # git-repo-url for vim plugin
# TODO: check how to use # TODO: check how to use
export MYSHELLCONFIG_VIM_PLUGINS export MSC_VIM_PLUGINS
# Logging # Logging
[ -z "${MYSHELLCONFIG_LOGDIR+x}" ] && export MYSHELLCONFIG_LOGDIR="${HOME}/logs" [ -z "${MSC_LOGDIR+x}" ] && export MSC_LOGDIR="${HOME}/logs"
[ -z "${MYSHELLCONFIG_LOGFILE+x}" ] && export MYSHELLCONFIG_LOGFILE="${MYSHELLCONFIG_LOGDIR}/myshellconfig.log" [ -z "${MSC_LOGFILE+x}" ] && export MSC_LOGFILE="${MSC_LOGDIR}/myshellconfig.log"
[ -z "${MYHSELLCONFIG_LOGLEVEL_DEFAULT+x}" ] && export MYHSELLCONFIG_LOGLEVEL_DEFAULT="INFO" [ -z "${MSC_LOGLEVEL_DEFAULT+x}" ] && export MSC_LOGLEVEL_DEFAULT="INFO"
[ -z "${MYHSELLCONFIG_FILELOGLEVEL_DEFAULT+x}" ] && export MYHSELLCONFIG_FILELOGLEVEL_DEFAULT="DEBUG" [ -z "${MSC_FILELOGLEVEL_DEFAULT+x}" ] && export MSC_FILELOGLEVEL_DEFAULT="DEBUG"
[ -z "${SCRIPT_LOG+x}" ] && export SCRIPT_LOG="${MYSHELLCONFIG_LOGFILE}" [ -z "${SCRIPT_LOG+x}" ] && export SCRIPT_LOG="${MSC_LOGFILE}"
[ -z "${LOGLEVEL_DEFAULT+x}" ] && export LOGLEVEL_DEFAULT="${MYHSELLCONFIG_LOGLEVEL_DEFAULT-INFO}" [ -z "${LOGLEVEL_DEFAULT+x}" ] && export LOGLEVEL_DEFAULT="${MSC_LOGLEVEL_DEFAULT-INFO}"
[ -z "${FILELOGLEVEL_DEFAULT+x}" ] && export FILELOGLEVEL_DEFAULT="${MYHSELLCONFIG_FILELOGLEVEL_DEFAULT-INFO}" [ -z "${FILELOGLEVEL_DEFAULT+x}" ] && export FILELOGLEVEL_DEFAULT="${MSC_FILELOGLEVEL_DEFAULT-INFO}"
# Create necessary directories for logging # Create necessary directories for logging
[ -n "${MYSHELLCONFIG_LOGDIR-x}" ] && mkdir -p "$MYSHELLCONFIG_LOGDIR" [ -n "${MSC_LOGDIR-x}" ] && mkdir -p "$MSC_LOGDIR"
# load logging functions # load logging functions
. ${MYSHELLCONFIG_BASE}/logging . ${MSC_BASE}/logging
# PKCS11_MODULE for etoken/smartcard authentification # PKCS11_MODULE for etoken/smartcard authentification
[ -n "$(whereis p11-kit-proxy.so|awk '{print $2}')" ] && PKCS11_MODULE=$(whereis p11-kit-proxy.so|awk '{print $2}') [ -n "$(whereis p11-kit-proxy.so|awk '{print $2}')" ] && PKCS11_MODULE=$(whereis p11-kit-proxy.so|awk '{print $2}')
@ -73,17 +80,18 @@ if [[ $- = *i* ]] ; then
[ -z "${VISUAL+x}" ] && export VISUAL=vim [ -z "${VISUAL+x}" ] && export VISUAL=vim
[ -z "${EDITOR+x}" ] && export EDITOR=vim [ -z "${EDITOR+x}" ] && export EDITOR=vim
cat << EOF >> "${MYSHELLCONFIG_LOGFILE}" cat << EOF >> "${MSC_LOGFILE}"
==8<=== start configure new shell ============== $(date) ===============8<== ==8<=== start configure new shell ============== $(date) ===============8<==
EOF EOF
SCRIPTENTRY SCRIPTENTRY
# define functions # define functions
ckrepo () { ckrepo () {
# check if remote repo is reachable # check if remote repo is reachable
if $MYSHELLCONFIG_GIT_SYNC; then if $MSC_GIT_SYNC; then
if $( timeout --foreground "${MYSHELLCONFIG_GIT_TIMEOUT}" $SGIT ls-remote >/dev/null 2>&1) ;then if $( timeout --foreground "${MSC_GIT_TIMEOUT}" $SGIT ls-remote >/dev/null 2>&1) ;then
return 0 return 0
else else
return 1 return 1
@ -96,20 +104,15 @@ EOF
} }
sync_config () { sync_config () {
if $MYSHELLCONFIG_GIT_SYNC; then if $MSC_GIT_SYNC; then
local nok="" local nok=""
local gco="" local gco=""
if which git >/dev/null; then if which git >/dev/null; then
loginfo -n "Sync config with ${MYSHELLCONFIG_GIT_SERVER}: " loginfo -n "Sync config with ${MSC_GIT_SERVER}: "
# MYSHELLCONFIG_GITCHECKOUTSCRIPT_OPTIONS are options for bin/git-myshellconfig-checkout # MSC_GITCHECKOUTSCRIPT_OPTIONS are options for bin/git-myshellconfig-checkout
if [ -z ${MYSHELLCONFIG_GIT_CHECKOUTSCRIPT_OPTIONS+x} ]; then ${MSC_BASE}/bin/git-myshellconfig-checkout ${MSC_GIT_CHECKOUTSCRIPT_OPTIONS:=${MSC_GIT_CHECKOUTSCRIPT_OPTIONS_DEFAULT}}|| nok="not " 1>>"${MSC_LOGFILE}" 2>&1
gco="-h"
else
gco="$MYSHELLCONFIG_GIT_CHECKOUTSCRIPT_OPTIONS"
fi
${MYSHELLCONFIG_BASE}/bin/git-myshellconfig-checkout ${gco}|| nok="not " 1>>"${MYSHELLCONFIG_LOGFILE}" 2>&1
loginfo "$(printf '%s\n' "${nok}synced" )" loginfo "$(printf '%s\n' "${nok}synced" )"
[ -z "$nok" ] && mkdir -pv "${MYSHELLCONFIG_LOGDIR}" [ -z "$nok" ] && mkdir -pv "${MSC_LOGDIR}"
else else
logwarn "git not installed, no configuration possible, please install git" >&2 logwarn "git not installed, no configuration possible, please install git" >&2
@ -135,8 +138,8 @@ EOF
EXIT EXIT
} }
if [ -d "${MYSHELLCONFIG_BASE}/bin" ] ; then if [ -d "${MSC_BASE}/bin" ] ; then
pathmunge "${MYSHELLCONFIG_BASE}/bin" pathmunge "${MSC_BASE}/bin"
export PATH export PATH
fi fi
@ -163,19 +166,19 @@ EOF
fi fi
# source git-sync part of myshellconfig # source git-sync part of myshellconfig
. "${MYSHELLCONFIG_BASE}/myshell_git_sync" . "${MSC_BASE}/myshell_git_sync"
# source loading defaults part of myshellconfig # source loading defaults part of myshellconfig
. "${MYSHELLCONFIG_BASE}/myshell_load_defaults" . "${MSC_BASE}/myshell_load_defaults"
# source loading workaround for x2go to forward local etoken to remote machine with forwardagent # source loading workaround for x2go to forward local etoken to remote machine with forwardagent
. "${MYSHELLCONFIG_BASE}/myshell_load_x2go_tokenforward" . "${MSC_BASE}/myshell_load_x2go_tokenforward"
promptcommandmunge "_tmux_hook" promptcommandmunge "_tmux_hook"
promptcommandmunge "_umask_hook" promptcommandmunge "_umask_hook"
which direnv >/dev/null && eval "$(direnv hook bash)" which direnv >/dev/null && eval "$(direnv hook bash)"
cat << EOF >> "${MYSHELLCONFIG_LOGFILE}" cat << EOF >> "${MSC_LOGFILE}"
==8<=== finished configure new shell ================ $(date) ===============8<== ==8<=== finished configure new shell ================ $(date) ===============8<==
EOF EOF
@ -184,7 +187,7 @@ EOF
SCRIPTEXIT SCRIPTEXIT
# Start tmux if not defined as STARTTMUX in bashrc # Start tmux if not defined as STARTTMUX in bashrc
logdebug "start tmux ${STARTTMUXDEFAULT} - ${STARTTMUXDEFAULT-$STARTTMUX}" logdebug "start tmux ${STARTTMUXDEFAULT} - ${STARTTMUXDEFAULT-$STARTTMUX}"
if ${STARTTMUXDEFAULT-$STARTTMUX} ; then if ${STARTTMUXDEFAULT-$STARTTMUX} ; then
cat << EOF cat << EOF

View file

@ -12,16 +12,23 @@
################################################################################################# #################################################################################################
[ -z "${SGIT+x}" ] && SGIT=git [ -z "${SGIT+x}" ] && SGIT=git
[ -z "${MYSHELLCONFIG_LOGDIR+x}" ] && export MYSHELLCONFIG_LOGDIR="${HOME}/logs" [ -z "${MSC_LOGDIR+x}" ] && export MSC_LOGDIR="${HOME}/logs"
[ -z "${MYSHELLCONFIG_LOGFILE+x}" ] && export MYSHELLCONFIG_LOGFILE="${MYSHELLCONFIG_LOGDIR}/myshellconfig.log" [ -z "${MSC_LOGFILE+x}" ] && export MSC_LOGFILE="${MSC_LOGDIR}/myshellconfig.log"
#MYSHELLCONFIG_LOGDIR="./logs" #MSC_LOGDIR="./logs"
#MYSHELLCONFIG_LOGFILE="${MYSHELLCONFIG_LOGDIR}/git.log" #MSC_LOGFILE="${MSC_LOGDIR}/git.log"
[ -d "${MYSHELLCONFIG_LOGDIR}" ] || mkdir -p "${MYSHELLCONFIG_LOGDIR}" [ -d "${MSC_LOGDIR}" ] || mkdir -p "${MSC_LOGDIR}"
[ -z "${MYSHELLCONFIG_GIT_REMOTE_NAME+x}" ] && export MYSHELLCONFIG_GIT_REMOTE_NAME=origin [ -z "${MSC_GIT_REMOTE_NAME+x}" ] && export MSC_GIT_REMOTE_NAME=origin
[ -z "${MYSHELLCONFIG_GIT_BRANCH+x}" ] && export MYSHELLCONFIG_GIT_BRANCH=master [ -z "${MSC_GIT_BRANCH+x}" ] && export MSC_GIT_BRANCH=master
lastupdatesubmodules () {
date "+%s" > ${MSC_BASE%/}${MSC_BASE:+/}.last_update_submodules
}
lastupdaterepo () {
date "+%s" > ${MSC_BASE%/}${MSC_BASE:+/}.last_update_repo
}
gitupdateend() { gitupdateend() {
cat << EOF >> "${MYSHELLCONFIG_LOGFILE}" cat << EOF >> "${MSC_LOGFILE}"
+-----ENDE git update repo $(date) ---------------------------------+ +-----ENDE git update repo $(date) ---------------------------------+
@ -29,7 +36,7 @@ EOF
} }
ENTRY ENTRY
cat << EOF >> "${MYSHELLCONFIG_LOGFILE}" cat << EOF >> "${MSC_LOGFILE}"
+-----BEGINN git update repo $(date) -------------------------------+ +-----BEGINN git update repo $(date) -------------------------------+
EOF EOF
@ -39,7 +46,7 @@ while [ $# -gt 0 ]; do
case $1 in case $1 in
-h|--headless) -h|--headless)
# Headless repo local # Headless repo local
PRE="${MYSHELLCONFIG_GIT_REMOTE_NAME}" PRE="${MSC_GIT_REMOTE_NAME}"
shift shift
;; ;;
-s|--submodules-update) -s|--submodules-update)
@ -53,38 +60,43 @@ while [ $# -gt 0 ]; do
esac esac
done done
# If TAG is set, checkout is always headless. # If TAG is set, checkout is always headless.
[ -z "${MYSHELLCONFIG_GIT_TAG:+x}" ] || { export MYSHELLCONFIG_GIT_BRANCH=${MYSHELLCONFIG_GIT_TAG}; export PRE=""; } [ -z "${MSC_GIT_TAG:+x}" ] || { export MSC_GIT_BRANCH=${MSC_GIT_TAG}; export PRE=""; }
# Output # Output
#echo -n " remote: ${MYSHELLCONFIG_GIT_REMOTE_NAME}, branch: ${MYSHELLCONFIG_GIT_BRANCH}: " #echo -n " remote: ${MSC_GIT_REMOTE_NAME}, branch: ${MSC_GIT_BRANCH}: "
# Check for updates in submodules only if last check was INTERVALL hours in the past # Check for updates in submodules only if last check was INTERVALL hours in the past
updated=$(cat ${MYSHELLCONFIG_BASE%/}${MYSHELLCONFIG_BASE:+/}.last_update_submodules 2>/dev/null || echo 0 ) if [ $(cat ${MSC_BASE%/}${MSC_BASE:+/}.last_update_submodules 2>/dev/null || echo 0 ) \
logtrace "dosubmodupdate before: $dosubmodupdate" -lt $(date --date="${MSC_GIT_SUBMODULES_UPDATE_INTERVALL} hours ago" "+%s") \
if [ $updated -lt $(date --date="${MYSHELLCONFIG_GIT_SUBMODULES_UPDATE_INTERVALL} hours ago" "+%s") -a ${MYSHELLCONFIG_GIT_SUBMODULES_UPDATE-${MYSHELLCONFIG_GIT_SUBMODULES_UPDATE_DEFAULT-true}} ]; then -a ${MSC_GIT_SUBMODULES_UPDATE-${MSC_GIT_SUBMODULES_UPDATE_DEFAULT-true}} ]; then
[ -z "${dosubmodupdate+x}" ] && dosubmodupdate="true" [ -z "${dosrepoupdate+x}" ] && dorepoupdate="true"
fi
logtrace "dosubmodupdate after: $dosubmodupdate"
#echo $SGIT fetch ${MYSHELLCONFIG_GIT_REMOTE_NAME} -p 1>&2
loginfo "fetch repo${dosubmodupdate:+ and submodules}"
$SGIT fetch ${dosubmodupdate:+--recurse-submodules} ${MYSHELLCONFIG_GIT_REMOTE_NAME} -p 2>>"${MYSHELLCONFIG_LOGFILE}"|| { logwarn fetch failed; gitupdateend; exit 1; }
if ${dosubmodupdate:-false}; then
date "+%s" > ${MYSHELLCONFIG_BASE%/}${MYSHELLCONFIG_BASE:+/}.last_update_submodules
fi fi
echo "Check for local changes:" >> "${MYSHELLCONFIG_LOGFILE}" if [ $(cat ${MSC_BASE%/}${MSC_BASE:+/}.last_update_submodules 2>/dev/null || echo 0 ) \
if $SGIT diff-index --ignore-submodules --exit-code HEAD -- >> "${MYSHELLCONFIG_LOGFILE}" ; then -lt $(date --date="${MSC_GIT_SUBMODULES_UPDATE_INTERVALL} hours ago" "+%s") \
cat << EOF >> "${MYSHELLCONFIG_LOGFILE}" -a ${MSC_GIT_SUBMODULES_UPDATE-${MSC_GIT_SUBMODULES_UPDATE_DEFAULT-true}} ]; then
[ -z "${dosubmodupdate+x}" ] && dosubmodupdate="true"
fi
#echo $SGIT fetch ${MSC_GIT_REMOTE_NAME} -p 1>&2
loginfo "fetch repo${dosubmodupdate:+ and submodules}"
$SGIT fetch ${dosubmodupdate:+--recurse-submodules} ${MSC_GIT_REMOTE_NAME} -p 2>>"${MSC_LOGFILE}"|| { logwarn fetch failed; gitupdateend; exit 1; }
if ${dosubmodupdate:-false}; then
lastupdatesubmodules
fi
echo "Check for local changes:" >> "${MSC_LOGFILE}"
if $SGIT diff-index --ignore-submodules --exit-code HEAD -- >> "${MSC_LOGFILE}" ; then
cat << EOF >> "${MSC_LOGFILE}"
no changes in local repo no changes in local repo
$SGIT checkout repo ${PRE}${PRE:+/}${MYSHELLCONFIG_GIT_BRANCH} $SGIT checkout repo ${PRE}${PRE:+/}${MSC_GIT_BRANCH}
EOF EOF
$SGIT checkout ${PRE}${PRE:+/}${MYSHELLCONFIG_GIT_BRANCH} 1>>"${MYSHELLCONFIG_LOGFILE}" 2>>"${MYSHELLCONFIG_LOGFILE}"|| { gitupdateend; exit 2; } $SGIT checkout ${PRE}${PRE:+/}${MSC_GIT_BRANCH} 1>>"${MSC_LOGFILE}" 2>>"${MSC_LOGFILE}"|| { gitupdateend; exit 2; }
$SGIT merge FETCH_HEAD 1>>"${MYSHELLCONFIG_LOGFILE}" 2>>"${MYSHELLCONFIG_LOGFILE}"|| { gitupdateend; exit 3; } $SGIT merge FETCH_HEAD 1>>"${MSC_LOGFILE}" 2>>"${MSC_LOGFILE}"|| { gitupdateend; exit 3; }
else else
logwarn -n " Lokale Änderungen festgestellt:" logwarn -n " Lokale Änderungen festgestellt:"
echo " Siehe Logfile ${MYSHELLCONFIG_LOGFILE}" >&2 echo " Siehe Logfile ${MSC_LOGFILE}" >&2
cat << EOF >> "${MYSHELLCONFIG_LOGFILE}" cat << EOF >> "${MSC_LOGFILE}"
um die Änderung zurückzusetzen bitte um die Änderung zurückzusetzen bitte
$SGIT checkout \$FILENAME $SGIT checkout \$FILENAME
@ -107,17 +119,17 @@ fi
loginfo "repo${dosubmodupdate:+ and submodules} synced" loginfo "repo${dosubmodupdate:+ and submodules} synced"
#if ${MYSHELLCONFIG_GIT_SUBMODULES_UPDATE-${MYSHELLCONFIG_GIT_SUBMODULES_UPDATE_DEFAULT-true}}; then #if ${MSC_GIT_SUBMODULES_UPDATE-${MSC_GIT_SUBMODULES_UPDATE_DEFAULT-true}}; then
if ${dosubmodupdate:-false}; then if ${dosubmodupdate:-false}; then
loginfo "update and commit submodules" loginfo "update and commit submodules"
logdebug "$($SGIT submodule update --remote)" logdebug "$($SGIT submodule update --remote)"
logdebug "$($SGIT commit -a -m 'update submodules')" logdebug "$($SGIT commit -a -m 'update submodules')"
date "+%s" > ${MYSHELLCONFIG_BASE%/}${MYSHELLCONFIG_BASE:+/}.last_update_submodules lastupdatesubmodules
logwarn "submodules synced" logwarn "submodules synced"
fi fi
#else #else
# loginfo -n ", submodules not synced" # loginfo -n ", submodules not synced"
# logdebug "Do not update submodules. It's denied by environment MYSHELLCONFIG_GIT_UPDATE_SUBMODULES: ${MYSHELLCONFIG_GIT_SUBMODULES_UPDATE-${MYSHELLCONFIG_GIT_SUBMODULES_UPDATE_DEFAULT-true}}" # logdebug "Do not update submodules. It's denied by environment MSC_GIT_UPDATE_SUBMODULES: ${MSC_GIT_SUBMODULES_UPDATE-${MSC_GIT_SUBMODULES_UPDATE_DEFAULT-true}}"
#fi #fi
EXIT EXIT

View file

@ -52,7 +52,7 @@ do
appuser=jira appuser=jira
;; ;;
*) *)
echo "host ${DEST} not found -> exit" echo "host ${DEST} not found -> exit"
exit exit
;; ;;
esac esac

8
defaults.conf Normal file
View file

@ -0,0 +1,8 @@
export MSC_GIT_SUBMODULES_UPDATE_DEFAULT=true
export MSC_GIT_SUBMODULES_UPDATE_INTERVALL=48 #intervall in hours
export MSC_GIT_SUBMODULES_SERVER_DEFAULT="git://git.schuerz.at/github.com/"
export MSC_GIT_CHECKOUTSCRIPT_OPTIONS_DEFAULT="-h"
export MSC_LOGLEVEL_DEFAULT="INFO"
export MSC_FILELOGLEVEL_DEFAULT="DEBUG"
export LOGLEVEL_DEFAULT="${MSC_LOGLEVEL_DEFAULT-INFO}"
export FILELOGLEVEL_DEFAULT="${MSC_FILELOGLEVEL_DEFAULT-INFO}"

View file

@ -71,22 +71,22 @@ sudo() {
} }
create_symlinks() { create_symlinks() {
#echo MYSHELLCONFIG_BASE: $MYSHELLCONFIG_BASE #echo MSC_BASE: $MSC_BASE
# MYSHELLCONFIG_BASEDIR="$1" # MSC_BASEDIR="$1"
# DIR="$(basename ${MYSHELLCONFIG_BASEDIR})" # DIR="$(basename ${MSC_BASEDIR})"
# cd "${MYSHELLCONFIG_BASEDIR}" # cd "${MSC_BASEDIR}"
cd ${MYSHELLCONFIG_BASE} cd ${MSC_BASE}
#echo "DIR MYSHELLCONFIG_BASEDIR $DIR $MYSHELLCONFIG_BASEDIR" #echo "DIR MSC_BASEDIR $DIR $MSC_BASEDIR"
git config credential.helper 'cache --timeout=300' git config credential.helper 'cache --timeout=300'
#Anlegen von Symlinks #Anlegen von Symlinks
rm -rf ~/.vimrc ~/.vim ~/bashrc_add ~/.gitconfig ~/.tmux.conf ~/.tmux rm -rf ~/.vimrc ~/.vim ~/bashrc_add ~/.gitconfig ~/.tmux.conf ~/.tmux
ln -sf "${MYSHELLCONFIG_BASE}/vimrc" ~/.vimrc ln -sf "${MSC_BASE}/vimrc" ~/.vimrc
ln -sf "${MYSHELLCONFIG_BASE}/vim" ~/.vim ln -sf "${MSC_BASE}/vim" ~/.vim
ln -sf "${MYSHELLCONFIG_BASE}/.gitconfig" ~/.gitconfig ln -sf "${MSC_BASE}/.gitconfig" ~/.gitconfig
ln -sf "${MYSHELLCONFIG_BASE}/.gitignore_global" ~/.gitignore_global ln -sf "${MSC_BASE}/.gitignore_global" ~/.gitignore_global
#ln -sf "${MYSHELLCONFIG_BASE}/bashrc_add" ~/bashrc_add #ln -sf "${MSC_BASE}/bashrc_add" ~/bashrc_add
ln -sf "${MYSHELLCONFIG_BASE}/tmux" ~/.tmux ln -sf "${MSC_BASE}/tmux" ~/.tmux
ln -sf "${MYSHELLCONFIG_BASE}/tmux/tmux.conf" ~/.tmux.conf ln -sf "${MSC_BASE}/tmux/tmux.conf" ~/.tmux.conf
# Configure to use githooks in .githooks, not in standardlocation .git/hooks # Configure to use githooks in .githooks, not in standardlocation .git/hooks
$SGIT config core.hooksPath .githooks $SGIT config core.hooksPath .githooks
@ -309,15 +309,15 @@ mkcd () {
sshmyshellconfig() { sshmyshellconfig() {
ENTRY ENTRY
[ -z "${MYSHELLCONFIG_SUBPATH+x}" ] && MYSHELLCONFIG_SUBPATH=".local/myshellconfig" [ -z "${MSC_SUBPATH+x}" ] && MSC_SUBPATH=".local/myshellconfig"
[ -z "${MYSHELLCONFIG_BASE+x}" ] && MYSHELLCONFIG_BASE="${HOME}/${MYSHELLCONFIG_SUBPATH}" [ -z "${MSC_BASE+x}" ] && MSC_BASE="${HOME}/${MSC_SUBPATH}"
MYSHELLCONFIG_BASE_PARENT="$(dirname $MYSHELLCONFIG_BASE)" MSC_BASE_PARENT="$(dirname $MSC_BASE)"
if [ $1 == "localhost" ]; then if [ $1 == "localhost" ]; then
CMD="" CMD=""
else else
local SSH="/usr/bin/ssh" local SSH="/usr/bin/ssh"
[ -e ${MYSHELLCONFIG_BASE}/bashrc_add ] && $SSH -T -o VisualHostKey=no $@ "mkdir -p ~/\$MYSHELLCONFIG_BASE_PARENT; cat > ~/bashrc_add" < "${MYSHELLCONFIG_BASE}/bashrc_add" [ -e ${MSC_BASE}/bashrc_add ] && $SSH -T -o VisualHostKey=no $@ "mkdir -p ~/\$MSC_BASE_PARENT; cat > ~/bashrc_add" < "${MSC_BASE}/bashrc_add"
local CMD="$SSH -T $@" local CMD="$SSH -T $@"
fi fi
$CMD /bin/bash << EOF $CMD /bin/bash << EOF
@ -327,11 +327,13 @@ sshmyshellconfig() {
sed -i -e '/^\[ -f bashrc_add \] /d' ~/.bashrc sed -i -e '/^\[ -f bashrc_add \] /d' ~/.bashrc
sed -i -e '/#MYSHELLCONFIG-start/,/#MYSHELLCONFIG-end/d' ~/.bashrc sed -i -e '/#MYSHELLCONFIG-start/,/#MYSHELLCONFIG-end/d' ~/.bashrc
echo echo
printf "%s\n" "#MYSHELLCONFIG-start" "[ -f \"\${HOME}/${MYSHELLCONFIG_SUBPATH}/bashrc_add\" ] && . \"\${HOME}/${MYSHELLCONFIG_SUBPATH}/bashrc_add\"" "#MYSHELLCONFIG-end"| tee -a ~/.bashrc printf "%s\n" "#MYSHELLCONFIG-start" "[ -f \"\${HOME}/${MSC_SUBPATH}/bashrc_add\" ] && . \"\${HOME}/${MSC_SUBPATH}/bashrc_add\"" "#MYSHELLCONFIG-end"| tee -a ~/.bashrc
#printf "%s\n" "#MYSHELLCONFIG-start" "if [ -e \${HOME}/${MYSHELLCONFIG_SUBPATH}/bashrc_add ]; then" " . \${HOME}/${MYSHELLCONFIG_SUBPATH}/bashrc_add;" "else" " if [ -f ~/bashrc_add ] ;then" " . ~/bashrc_add;" " fi;" "fi" "#MYSHELLCONFIG-end" |tee -a ~/.bashrc #printf "%s\n" "#MYSHELLCONFIG-start" "if [ -e \${HOME}/${MSC_SUBPATH}/bashrc_add ]; then" " . \${HOME}/${MSC_SUBPATH}/bashrc_add;" "else" " if [ -f ~/bashrc_add ] ;then" " . ~/bashrc_add;" " fi;" "fi" "#MYSHELLCONFIG-end" |tee -a ~/.bashrc
echo echo
loginfo cleanup from old config loginfo cleanup from old config
rm -rf ~/server-config && echo rm -rf ~/server-config rm -rf ~/server-config && echo rm -rf ~/server-config
loginfo git clone
git clone --recurse-submodules $MSC_GIT_REMOTE \${HOME}/${MSC_SUBPATH}
EOF EOF
EXIT EXIT
@ -347,7 +349,7 @@ sshs() {
local f local f
local TMPBASHCONFIG=$(mktemp -p ${XDG_RUNTIME_DIR} -t bashrc.XXXXXXXX --suffix=.conf) local TMPBASHCONFIG=$(mktemp -p ${XDG_RUNTIME_DIR} -t bashrc.XXXXXXXX --suffix=.conf)
local FILELIST=( "${MYSHELLCONFIG_BASE}/functions.sh" "${MYSHELLCONFIG_BASE}/logging" "${MYSHELLCONFIG_BASE}/myshell_load_fortmpconfig" $(getbashrcfile) ~/.aliases "${MYSHELLCONFIG_BASE}/aliases" "${MYSHELLCONFIG_BASE}/PS1" "${MYSHELLCONFIG_BASE}/bash_completion.d/*" ) local FILELIST=( "${MSC_BASE}/functions.sh" "${MSC_BASE}/logging" "${MSC_BASE}/myshell_load_fortmpconfig" $(getbashrcfile) ~/.aliases "${MSC_BASE}/aliases" "${MSC_BASE}/PS1" "${MSC_BASE}/bash_completion.d/*" )
local SSH_OPTS="-o VisualHostKey=no -o ControlMaster=auto -o ControlPersist=15s -o ControlPath=~/.ssh/ssh-%r@%h:%p" local SSH_OPTS="-o VisualHostKey=no -o ControlMaster=auto -o ControlPersist=15s -o ControlPath=~/.ssh/ssh-%r@%h:%p"
# Read /etc/bashrc or /etc/bash.bashrc (depending on distribution) and /etc/profile.d/*.sh first # Read /etc/bashrc or /etc/bash.bashrc (depending on distribution) and /etc/profile.d/*.sh first
@ -385,8 +387,8 @@ EOF
if [ $# -ge 1 ]; then if [ $# -ge 1 ]; then
if [ -e "${TMPBASHCONFIG}" ] ; then if [ -e "${TMPBASHCONFIG}" ] ; then
local RCMD="/bin/bash --noprofile --norc -c " local RCMD="/bin/bash --noprofile --norc -c "
local REMOTETMPBASHCONFIG=$(ssh -T ${SSH_OPTS} $@ "mktemp -p \${XDG_RUNTIME_DIR} -t bashrc.XXXXXXXX --suffix=.conf"| tr -d '[:space:]' ) local REMOTETMPBASHCONFIG=$(ssh -T ${SSH_OPTS} $@ "mktemp -p \${XDG_RUNTIME_DIR-~} -t bashrc.XXXXXXXX --suffix=.conf"| tr -d '[:space:]' )
local REMOTETMPVIMCONFIG=$(ssh -T ${SSH_OPTS} $@ "mktemp -p \${XDG_RUNTIME_DIR} -t vimrc.XXXXXXXX --suffix=.conf"| tr -d '[:space:]') local REMOTETMPVIMCONFIG=$(ssh -T ${SSH_OPTS} $@ "mktemp -p \${XDG_RUNTIME_DIR-~} -t vimrc.XXXXXXXX --suffix=.conf"| tr -d '[:space:]')
# Add additional aliases to bashrc for remote-machine # Add additional aliases to bashrc for remote-machine
cat << EOF >> "${TMPBASHCONFIG}" cat << EOF >> "${TMPBASHCONFIG}"
@ -401,7 +403,7 @@ loginfo "This bash runs with temporary config from \$BASHRC"
EOF EOF
ssh -T ${SSH_OPTS} $@ "cat > ${REMOTETMPBASHCONFIG}" < "${TMPBASHCONFIG}" ssh -T ${SSH_OPTS} $@ "cat > ${REMOTETMPBASHCONFIG}" < "${TMPBASHCONFIG}"
ssh -T ${SSH_OPTS} $@ "cat > ${REMOTETMPVIMCONFIG}" < "${MYSHELLCONFIG_BASE}/vimrc" ssh -T ${SSH_OPTS} $@ "cat > ${REMOTETMPVIMCONFIG}" < "${MSC_BASE}/vimrc"
RCMD=" RCMD="
trap \"rm -f ${REMOTETMPBASHCONFIG} ${REMOTETMPVIMCONFIG}\" EXIT " ; trap \"rm -f ${REMOTETMPBASHCONFIG} ${REMOTETMPVIMCONFIG}\" EXIT " ;
ssh -t ${SSH_OPTS} $@ "$RCMD; SSHS=true bash -c \"function bash () { /bin/bash --rcfile ${REMOTETMPBASHCONFIG} -i ; } ; export -f bash; exec bash --rcfile ${REMOTETMPBASHCONFIG}\"" ssh -t ${SSH_OPTS} $@ "$RCMD; SSHS=true bash -c \"function bash () { /bin/bash --rcfile ${REMOTETMPBASHCONFIG} -i ; } ; export -f bash; exec bash --rcfile ${REMOTETMPBASHCONFIG}\""
@ -419,7 +421,7 @@ EOF
} }
VIMRC="${MYSHELLCONFIG_BASE}/vimrc" VIMRC="${MSC_BASE}/vimrc"
svi () { svi () {
ENTRY ENTRY
@ -448,14 +450,14 @@ svi () {
vim-repair-vundle () { vim-repair-vundle () {
ENTRY ENTRY
if [ -z ${MYSHELLCONFIG_BASE+x} ]; then if [ -z ${MSC_BASE+x} ]; then
echo "MYSHELLCONFIG_BASE nicht gesetzt. Eventuell noch einmal ausloggen und wieder einloggen" echo "MSC_BASE nicht gesetzt. Eventuell noch einmal ausloggen und wieder einloggen"
else else
cd $MYSHELLCONFIG_BASE cd $MSC_BASE
cd vim/bundle cd vim/bundle
rm -rf Vundle.vim rm -rf Vundle.vim
echo git clone "${MYSHELLCONFIG_GIT_SUBMODULES_SERVER-$MYSHELLCONFIG_GIT_SUBMODULES_SERVER_DEFAULT}gmarik/Vundle.vim.git" echo git clone "${MSC_GIT_SUBMODULES_SERVER-$MSC_GIT_SUBMODULES_SERVER_DEFAULT}gmarik/Vundle.vim.git"
git clone "${MYSHELLCONFIG_GIT_SUBMODULES_SERVER-$MYSHELLCONFIG_GIT_SUBMODULES_SERVER_DEFAULT}gmarik/Vundle.vim.git" git clone "${MSC_GIT_SUBMODULES_SERVER-$MSC_GIT_SUBMODULES_SERVER_DEFAULT}gmarik/Vundle.vim.git"
cd ~- cd ~-
fi fi
EXIT EXIT
@ -642,7 +644,7 @@ changebeep() {
turnoffconfigsync() { turnoffconfigsync() {
ENTRY ENTRY
local line='MYSHELLCONFIG_GIT_SYNC=' local line='MSC_GIT_SYNC='
local file=~/.bashrc local file=~/.bashrc
if [ -e "${file}" ] ; then if [ -e "${file}" ] ; then
sed -i -e "/${line}/d" "${file}" sed -i -e "/${line}/d" "${file}"
@ -653,7 +655,7 @@ turnoffconfigsync() {
turnonconfigsync() { turnonconfigsync() {
ENTRY ENTRY
local line='MYSHELLCONFIG_GIT_SYNC=' local line='MSC_GIT_SYNC='
local file=~/.bashrc local file=~/.bashrc
if [ -e "${file}" ] ; then if [ -e "${file}" ] ; then
sed -i -e "/${line}/d" "${file}" sed -i -e "/${line}/d" "${file}"
@ -674,6 +676,18 @@ function gnome-shell-extensions-enable-defaults() {
EXIT EXIT
} }
gnome-shell-extensions-make-actual-permanent() {
ENTRY
file="${HOME}/.config/gnome-shell-extensions-default.list"
local EXTENSIONS=$(gsettings get org.gnome.shell enabled-extensions)
line="[org/gnome/shell]"
for line in ${EXTENSIONS[@]}; do
loginfo "add $line to $file"
grep -xqF -- ${line} ${file} || echo $line >> $file
done
EXIT
}
gnome-shell-extensions-make-actual-permanent-systemwide() { gnome-shell-extensions-make-actual-permanent-systemwide() {
ENTRY ENTRY
# https://people.gnome.org/~pmkovar/system-admin-guide/extensions-enable.html # https://people.gnome.org/~pmkovar/system-admin-guide/extensions-enable.html
@ -886,4 +900,14 @@ EOF
rescan_scsi () { rescan_scsi () {
echo "- - -" > /sys/class/scsi_host/host0/scan echo "- - -" > /sys/class/scsi_host/host0/scan
} }
get_crtime() {
for target in "${@}"; do
inode=$(stat -c %i "${target}")
fs=$(df --output=source "${target}" | tail -1)
crtime=$(sudo debugfs -R 'stat <'"${inode}"'>' "${fs}" 2>/dev/null |
grep -oP 'crtime.*--\s*\K.*')
printf "%s\t%s\n" "${target}" "${crtime}"
done
}
#EOF #EOF

View file

@ -8,78 +8,78 @@ if ! $SSHS; then
###################################### ######################################
MYSHELLCONFIG_GIT_PROTOCOL_GIT="git://" MSC_GIT_PROTOCOL_GIT="git://"
MYSHELLCONFIG_GIT_PROTOCOL_HTTP="http://" MSC_GIT_PROTOCOL_HTTP="http://"
MYSHELLCONFIG_GIT_PROTOCOL_SSH="git@" MSC_GIT_PROTOCOL_SSH="git@"
MYSHELLCONFIG_GIT_PROTOCOL_FILE="" MSC_GIT_PROTOCOL_FILE=""
[ -z "${MYSHELLCONFIG_GIT_SERVER+x}" ] && MYSHELLCONFIG_GIT_SERVER="git.schuerz.at" [ -z "${MSC_GIT_SERVER+x}" ] && MSC_GIT_SERVER="git.schuerz.at"
[ -z "${MYSHELLCONFIG_GIT_REPO_NAME+x}" ] && MYSHELLCONFIG_GIT_REPO_NAME="$(basename $MYSHELLCONFIG_BASE).git" [ -z "${MSC_GIT_REPO_NAME+x}" ] && MSC_GIT_REPO_NAME="$(basename $MSC_BASE).git"
[ -z "${MYSHELLCONFIG_GIT_REPO_PATH_HTTP+x}" ] && MYSHELLCONFIG_GIT_REPO_PATH_HTTP="/public/" [ -z "${MSC_GIT_REPO_PATH_HTTP+x}" ] && MSC_GIT_REPO_PATH_HTTP="/public/"
[ -z "${MYSHELLCONFIG_GIT_REPO_PATH_SSH+x}" ] && MYSHELLCONFIG_GIT_REPO_PATH_SSH=":public/" [ -z "${MSC_GIT_REPO_PATH_SSH+x}" ] && MSC_GIT_REPO_PATH_SSH=":public/"
[ -z "${MYSHELLCONFIG_GIT_REPO_PATH_GIT+x}" ] && MYSHELLCONFIG_GIT_REPO_PATH_GIT="/public/" [ -z "${MSC_GIT_REPO_PATH_GIT+x}" ] && MSC_GIT_REPO_PATH_GIT="/public/"
# [ -z "${MYSHELLCONFIG_GIT_REPO_PATH_FILE+x}" ] && MYSHELLCONFIG_GIT_REPO_PATH_FILE="/media/$USER/gitstick/" # [ -z "${MSC_GIT_REPO_PATH_FILE+x}" ] && MSC_GIT_REPO_PATH_FILE="/media/$USER/gitstick/"
[ -z "${MYSHELLCONFIG_GIT_REPO_PATH_FILE+x}" ] && MYSHELLCONFIG_GIT_REPO_PATH_FILE="/srv/git/" [ -z "${MSC_GIT_REPO_PATH_FILE+x}" ] && MSC_GIT_REPO_PATH_FILE="/srv/git/"
MYSHELLCONFIG_GIT_REMOTE_PUBLIC_GIT="${MYSHELLCONFIG_GIT_PROTOCOL_GIT}${MYSHELLCONFIG_GIT_SERVER}${MYSHELLCONFIG_GIT_REPO_PATH_GIT}" MSC_GIT_REMOTE_PUBLIC_GIT="${MSC_GIT_PROTOCOL_GIT}${MSC_GIT_SERVER}${MSC_GIT_REPO_PATH_GIT}"
MYSHELLCONFIG_GIT_REMOTE_PUBLIC_SSH="${MYSHELLCONFIG_GIT_PROTOCOL_SSH}${MYSHELLCONFIG_GIT_SERVER}${MYSHELLCONFIG_GIT_REPO_PATH_SSH}" MSC_GIT_REMOTE_PUBLIC_SSH="${MSC_GIT_PROTOCOL_SSH}${MSC_GIT_SERVER}${MSC_GIT_REPO_PATH_SSH}"
MYSHELLCONFIG_GIT_REMOTE_PUBLIC_HTTP="${MYSHELLCONFIG_GIT_PROTOCOL_HTTP}${MYSHELLCONFIG_GIT_SERVER}${MYSHELLCONFIG_GIT_REPO_PATH_HTTP}" MSC_GIT_REMOTE_PUBLIC_HTTP="${MSC_GIT_PROTOCOL_HTTP}${MSC_GIT_SERVER}${MSC_GIT_REPO_PATH_HTTP}"
MYSHELLCONFIG_GIT_REMOTE_PUBLIC_FILE="${MYSHELLCONFIG_GIT_PROTOCOL_FILE}${MYSHELLCONFIG_GIT_REPO_PATH_FILE}" MSC_GIT_REMOTE_PUBLIC_FILE="${MSC_GIT_PROTOCOL_FILE}${MSC_GIT_REPO_PATH_FILE}"
MYSHELLCONFIG_GIT_REMOTE_PUBLIC_DEFAULT="${MYSHELLCONFIG_GIT_REMOTE_PUBLIC_GIT}" MSC_GIT_REMOTE_PUBLIC_DEFAULT="${MSC_GIT_REMOTE_PUBLIC_GIT}"
MYSHELLCONFIG_GIT_REMOTE_DEFAULT="${MYSHELLCONFIG_GIT_PROTOCOL_GIT}${MYSHELLCONFIG_GIT_SERVER}${MYSHELLCONFIG_GIT_REPO_PATH_GIT}" MSC_GIT_REMOTE_DEFAULT="${MSC_GIT_PROTOCOL_GIT}${MSC_GIT_SERVER}${MSC_GIT_REPO_PATH_GIT}"
# If MYSHELLCONFIG_GIT_REMOTE is set in ~/.bashrc before sourcing this file, take value from ~/.bashrc # If MSC_GIT_REMOTE is set in ~/.bashrc before sourcing this file, take value from ~/.bashrc
# If set MYSHELLCONFIG_GIT_REMOTE_PROTOCOL in ~/.bashrc before sourcing this file, you cange choose one of the above # If set MSC_GIT_REMOTE_PROTOCOL in ~/.bashrc before sourcing this file, you cange choose one of the above
# defined values for a specific host # defined values for a specific host
if [ -z ${MYSHELLCONFIG_GIT_REMOTE+x} ]; then if [ -z ${MSC_GIT_REMOTE+x} ]; then
case $MYSHELLCONFIG_GIT_REMOTE_PROTOCOL in case $MSC_GIT_REMOTE_PROTOCOL in
git) git)
MYSHELLCONFIG_GIT_REMOTE_PUBLIC="${MYSHELLCONFIG_GIT_REMOTE_PUBLIC_GIT}" MSC_GIT_REMOTE_PUBLIC="${MSC_GIT_REMOTE_PUBLIC_GIT}"
;; ;;
ssh) ssh)
MYSHELLCONFIG_GIT_REMOTE_PUBLIC="${MYSHELLCONFIG_GIT_REMOTE_PUBLIC_SSH}" MSC_GIT_REMOTE_PUBLIC="${MSC_GIT_REMOTE_PUBLIC_SSH}"
;; ;;
http) http)
MYSHELLCONFIG_GIT_REMOTE_PUBLIC="${MYSHELLCONFIG_GIT_REMOTE_PUBLIC_HTTP}" MSC_GIT_REMOTE_PUBLIC="${MSC_GIT_REMOTE_PUBLIC_HTTP}"
;; ;;
file) file)
MYSHELLCONFIG_GIT_REMOTE_PUBLIC="${MYSHELLCONFIG_GIT_REMOTE_PUBLIC_FILE}" MSC_GIT_REMOTE_PUBLIC="${MSC_GIT_REMOTE_PUBLIC_FILE}"
MYSHELLCONFIG_GIT_SERVER="${MYSHELLCONFIG_GIT_REPO_PATH_FILE}" MSC_GIT_SERVER="${MSC_GIT_REPO_PATH_FILE}"
;; ;;
*) *)
MYSHELLCONFIG_GIT_REMOTE_PUBLIC="${MYSHELLCONFIG_GIT_REMOTE_DEFAULT}" MSC_GIT_REMOTE_PUBLIC="${MSC_GIT_REMOTE_DEFAULT}"
;; ;;
esac esac
MYSHELLCONFIG_GIT_REMOTE="${MYSHELLCONFIG_GIT_REMOTE_PUBLIC}${MYSHELLCONFIG_GIT_REPO_NAME}" MSC_GIT_REMOTE="${MSC_GIT_REMOTE_PUBLIC}${MSC_GIT_REPO_NAME}"
fi fi
if [ -z ${MYSHELLCONFIG_GIT_REMOTE_PUSH+x} ]; then if [ -z ${MSC_GIT_REMOTE_PUSH+x} ]; then
case $MYSHELLCONFIG_GIT_REMOTE_PUSH_PROTOCOL in case $MSC_GIT_REMOTE_PUSH_PROTOCOL in
git) git)
MYSHELLCONFIG_GIT_REMOTE_PUSH_PUBLIC="${MYSHELLCONFIG_GIT_REMOTE_PUBLIC_GIT}" MSC_GIT_REMOTE_PUSH_PUBLIC="${MSC_GIT_REMOTE_PUBLIC_GIT}"
;; ;;
ssh) ssh)
MYSHELLCONFIG_GIT_REMOTE_PUSH_PUBLIC="${MYSHELLCONFIG_GIT_REMOTE_PUBLIC_SSH}" MSC_GIT_REMOTE_PUSH_PUBLIC="${MSC_GIT_REMOTE_PUBLIC_SSH}"
;; ;;
http) http)
MYSHELLCONFIG_GIT_REMOTE_PUSH_PUBLIC="${MYSHELLCONFIG_GIT_REMOTE_PUBLIC_HTTP}" MSC_GIT_REMOTE_PUSH_PUBLIC="${MSC_GIT_REMOTE_PUBLIC_HTTP}"
;; ;;
file) file)
MYSHELLCONFIG_GIT_REMOTE_PUSH_PUBLIC="${MYSHELLCONFIG_GIT_REMOTE_PUBLIC_FILE}" MSC_GIT_REMOTE_PUSH_PUBLIC="${MSC_GIT_REMOTE_PUBLIC_FILE}"
;; ;;
*) *)
MYSHELLCONFIG_GIT_REMOTE_PUSH_PUBLIC="${MYSHELLCONFIG_GIT_REMOTE_PUBLIC_DEFAULT}" MSC_GIT_REMOTE_PUSH_PUBLIC="${MSC_GIT_REMOTE_PUBLIC_DEFAULT}"
;; ;;
esac esac
MYSHELLCONFIG_GIT_REMOTE_PUSH=${MYSHELLCONFIG_GIT_REMOTE_PUSH_PUBLIC}${MYSHELLCONFIG_GIT_REPO_NAME} MSC_GIT_REMOTE_PUSH=${MSC_GIT_REMOTE_PUSH_PUBLIC}${MSC_GIT_REPO_NAME}
fi fi
[ -z "${MYSHELLCONFIG_GIT_REMOTE_NAME+x}" ] && export MYSHELLCONFIG_GIT_REMOTE_NAME=origin [ -z "${MSC_GIT_REMOTE_NAME+x}" ] && export MSC_GIT_REMOTE_NAME=origin
[ -z "${MYSHELLCONFIG_GIT_BRANCH+x}" ] && export MYSHELLCONFIG_GIT_BRANCH=master [ -z "${MSC_GIT_BRANCH+x}" ] && export MSC_GIT_BRANCH=master
# If TAG is set, checkout is always headless. # If TAG is set, checkout is always headless.
[ -z "${MYSHELLCONFIG_GIT_TAG:+x}" ] || { export MYSHELLCONFIG_GIT_BRANCH=${MYSHELLCONFIG_GIT_TAG}; export MYSHELLCONFIG_GIT_CHECKOUTSCRIPT_OPTIONS="-h"; } [ -z "${MSC_GIT_TAG:+x}" ] || { export MSC_GIT_BRANCH=${MSC_GIT_TAG}; export MSC_GIT_CHECKOUTSCRIPT_OPTIONS="-h"; }
#GIT_SSH_PATH="/srv/repos" #GIT_SSH_PATH="/srv/repos"
@ -88,10 +88,10 @@ if ! $SSHS; then
#*term*|*linux*) #*term*|*linux*)
*term*) *term*)
if [ -d "${MYSHELLCONFIG_BASE}" -a $($SGIT status 1>/dev/null 2>&1; echo $?) -eq 0 ]; then if [ -d "${MSC_BASE}" -a $($SGIT status 1>/dev/null 2>&1; echo $?) -eq 0 ]; then
[ -d "${MYSHELLCONFIG_LOGDIR}" ] || mkdir -p "${MYSHELLCONFIG_LOGDIR}" [ -d "${MSC_LOGDIR}" ] || mkdir -p "${MSC_LOGDIR}"
if ! $SGIT rev-parse --git-dir > /dev/null 2>&1 ; then if ! $SGIT rev-parse --git-dir > /dev/null 2>&1 ; then
loginfo "Init ${MYSHELLCONFIG_BASE} as git-repo" >&2 loginfo "Init ${MSC_BASE} as git-repo" >&2
$SGIT init $SGIT init
fi fi
@ -100,35 +100,35 @@ if ! $SSHS; then
$SGIT config user.name "${FULLNAME}" $SGIT config user.name "${FULLNAME}"
# set upstream only if not detached # set upstream only if not detached
[ $($SGIT rev-parse --abbrev-ref HEAD) != "HEAD" ] && $SGIT branch --set-upstream-to=${MYSHELLCONFIG_GIT_REMOTE_NAME}/$($SGIT rev-parse --abbrev-ref HEAD) [ $($SGIT rev-parse --abbrev-ref HEAD) != "HEAD" ] && $SGIT branch --set-upstream-to=${MSC_GIT_REMOTE_NAME}/$($SGIT rev-parse --abbrev-ref HEAD)
# sync repo with origin if git is reachable # sync repo with origin if git is reachable
if ckrepo ; then if ckrepo ; then
loginfo "git checkout" >&2 loginfo "git checkout" >&2
sync_config sync_config
. ${MYSHELLCONFIG_BASE}/functions.sh . ${MSC_BASE}/functions.sh
create_symlinks "$MYSHELLCONFIG_BASE" create_symlinks "$MSC_BASE"
else else
loginfo "${MYSHELLCONFIG_GIT_SERVER}" not reachable >&2; loginfo "${MSC_GIT_SERVER}" not reachable >&2;
loginfo "profile not syncing" >&2; loginfo "profile not syncing" >&2;
fi fi
else else
loginfo "Clone ${MYSHELLCONFIG_GIT_REMOTE} and configure git" >&2 loginfo "Clone ${MSC_GIT_REMOTE} and configure git" >&2
if $( timeout --foreground "${MYSHELLCONFIG_GIT_CHECKOUT_TIMEOUT}" \ if $( timeout --foreground "${MSC_GIT_CHECKOUT_TIMEOUT}" \
git -C ${HOME} clone --recurse-submodules "${MYSHELLCONFIG_GIT_REMOTE}" "${MYSHELLCONFIG_BASE}" ); then git -C ${HOME} clone --recurse-submodules "${MSC_GIT_REMOTE}" "${MSC_BASE}" ); then
: :
else else
MYSHELLCONFIG_GIT_REMOTE="${MYSHELLCONFIG_GIT_REMOTE_PUBLIC_HTTP}${MYSHELLCONFIG_GIT_REPO_NAME}" MSC_GIT_REMOTE="${MSC_GIT_REMOTE_PUBLIC_HTTP}${MSC_GIT_REPO_NAME}"
loginfo "Clone ${MYSHELLCONFIG_GIT_REMOTE} (http, because other protocol is not reachable) and configure git" >&2 loginfo "Clone ${MSC_GIT_REMOTE} (http, because other protocol is not reachable) and configure git" >&2
timeout --foreground "${MYSHELLCONFIG_GIT_CHECKOUT_TIMEOUT}" \ timeout --foreground "${MSC_GIT_CHECKOUT_TIMEOUT}" \
git -C ${HOME} clone --recurse-submodules "${MYSHELLCONFIG_GIT_REMOTE}" "${MYSHELLCONFIG_BASE}" || return 1 2>/dev/null || exit 1 git -C ${HOME} clone --recurse-submodules "${MSC_GIT_REMOTE}" "${MSC_BASE}" || return 1 2>/dev/null || exit 1
fi fi
[ -d "${MYSHELLCONFIG_BASE}" ] && { loginfo create ${MYSHELLCONFIG_LOGDIR} >&2; mkdir -p "${MYSHELLCONFIG_LOGDIR}"; } [ -d "${MSC_BASE}" ] && { loginfo create ${MSC_LOGDIR} >&2; mkdir -p "${MSC_LOGDIR}"; }
$SGIT config user.email "${USERNAME}" $SGIT config user.email "${USERNAME}"
$SGIT config user.name "${FULLNAME}" $SGIT config user.name "${FULLNAME}"
@ -139,16 +139,16 @@ if ! $SSHS; then
loginfo "sync config" >&2 loginfo "sync config" >&2
sync_config sync_config
. ${MYSHELLCONFIG_BASE}/functions.sh . ${MSC_BASE}/functions.sh
loginfo "config synced, functions.sh sourced" >&2 loginfo "config synced, functions.sh sourced" >&2
create_symlinks "$MYSHELLCONFIG_BASE" create_symlinks "$MSC_BASE"
# Install vim Plugins # Install vim Plugins
# echo "Run Vim, and in Vim run :PluginInstall to install all Plugins" # echo "Run Vim, and in Vim run :PluginInstall to install all Plugins"
# not necessary any more. Vim plugins are updated through git submodules # not necessary any more. Vim plugins are updated through git submodules
#vim -c "PluginInstall" -c ":qa!" #vim -c "PluginInstall" -c ":qa!"
fi fi
[ -z ${MYSHELLCONFIG_GIT_REMOTE_PUSH+x} ] || $SGIT remote set-url --push ${MYSHELLCONFIG_GIT_REMOTE_NAME} "${MYSHELLCONFIG_GIT_REMOTE_PUSH}" [ -z ${MSC_GIT_REMOTE_PUSH+x} ] || $SGIT remote set-url --push ${MSC_GIT_REMOTE_NAME} "${MSC_GIT_REMOTE_PUSH}"
;; ;;
*screen*) *screen*)
loginfo "I'm in sceen/tmux now - no profily syncing" >&2 loginfo "I'm in sceen/tmux now - no profily syncing" >&2

View file

@ -5,10 +5,10 @@ case $(tty) in
/dev/tty[0-9]*) /dev/tty[0-9]*)
case $(id -u) in case $(id -u) in
0) 0)
TMOUT=${MYSHELLCONFIG_ROOT_TMOUT:-500} TMOUT=${MSC_ROOT_TMOUT:-500}
;; ;;
*) *)
TMOUT=${MYSHELLCONFIG_USER_TMOUT:-1000} TMOUT=${MSC_USER_TMOUT:-1000}
;; ;;
esac esac
loginfo "Run in TTY -> set autologout \$TMOUT=$TMOUT" >&2 loginfo "Run in TTY -> set autologout \$TMOUT=$TMOUT" >&2
@ -21,8 +21,8 @@ esac
# Load default values, functions, aliases for myshellconfig # Load default values, functions, aliases for myshellconfig
if ! $SSHS; then if ! $SSHS; then
if [ -e ${MYSHELLCONFIG_BASE}/functions.sh ]; then if [ -e ${MSC_BASE}/functions.sh ]; then
. ${MYSHELLCONFIG_BASE}/functions.sh . ${MSC_BASE}/functions.sh
else else
return return
fi fi
@ -38,29 +38,29 @@ if ! $SSHS; then
# User specific aliases and function # User specific aliases and function
if [ -d "${MYSHELLCONFIG_BASE}/bin" ] ; then if [ -d "${MSC_BASE}/bin" ] ; then
pathmunge "${MYSHELLCONFIG_BASE}/bin" pathmunge "${MSC_BASE}/bin"
export PATH export PATH
fi fi
if [ -d "${MYSHELLCONFIG_BASE}/git-credential-pass" ] ; then if [ -d "${MSC_BASE}/git-credential-pass" ] ; then
pathmunge "${MYSHELLCONFIG_BASE}/git-credential-pass" pathmunge "${MSC_BASE}/git-credential-pass"
export PATH export PATH
fi fi
if [ -f "${MYSHELLCONFIG_BASE}/aliases" ]; then if [ -f "${MSC_BASE}/aliases" ]; then
. "${MYSHELLCONFIG_BASE}/aliases" . "${MSC_BASE}/aliases"
fi fi
if [ -f "${MYSHELLCONFIG_BASE}/PS1" ]; then if [ -f "${MSC_BASE}/PS1" ]; then
. "${MYSHELLCONFIG_BASE}/PS1" . "${MSC_BASE}/PS1"
fi fi
# Fehler anfang # Fehler anfang
#set -x #set -x
if [ -e "${MYSHELLCONFIG_BASH_COMPLETION}" ]; then if [ -e "${MSC_BASH_COMPLETION}" ]; then
for i in $( ls "${MYSHELLCONFIG_BASH_COMPLETION}" ); do for i in $( ls "${MSC_BASH_COMPLETION}" ); do
. "${MYSHELLCONFIG_BASH_COMPLETION}/${i}" . "${MSC_BASH_COMPLETION}/${i}"
done done
unset i unset i
fi fi
@ -68,8 +68,8 @@ if ! $SSHS; then
#set +x #set +x
# Fehler ende # Fehler ende
if [ -f "${MYSHELLCONFIG_BASE}/myshell_load_fortmpconfig" ]; then if [ -f "${MSC_BASE}/myshell_load_fortmpconfig" ]; then
. "${MYSHELLCONFIG_BASE}/myshell_load_fortmpconfig" . "${MSC_BASE}/myshell_load_fortmpconfig"
fi fi
@ -116,7 +116,7 @@ export HISTIGNORE="ls:l:cd:exit:pwd:date:mencfs:"
export HISTTIMEFORMAT='%F %T ' export HISTTIMEFORMAT='%F %T '
export HISTSIZE=999999 export HISTSIZE=999999
loginfo "bashrc_add sourced" 2>&1 |tee -a ${MYSHELLCONFIG_LOGFILE} >&2 loginfo "bashrc_add sourced" 2>&1 |tee -a ${MSC_LOGFILE} >&2
#echo "bashrc_add sourced" >&2 #echo "bashrc_add sourced" >&2
# Export several functions for being usable in subshells # Export several functions for being usable in subshells

@ -1 +1 @@
Subproject commit 298342677107f19f2ef7035afcf5302fdf26aa51 Subproject commit 00f4551a7b9edda202f15f43e694f949f04927de

@ -1 +1 @@
Subproject commit cabfd44a8b1666e9b0c1b18f55646dd8ec25d0d9 Subproject commit 65b6cdb0f28de2629b6266b51d307d75d8c5c68c

@ -1 +1 @@
Subproject commit 6b843d3742d01b98a229ed2e6d3782f6d3f21651 Subproject commit 5fa0e3e1487b17f8a23fc2674ebde5f55ce6a816

@ -1 +1 @@
Subproject commit 06117a61e1218b2a866451d2ac4d8ddcd82c8543 Subproject commit f39208f1a074fb525270312a20c87521a50c74ef

@ -1 +1 @@
Subproject commit 7bcfe539beee5fe8c542092732b6fd3786c6080e Subproject commit 7afa1cfaa62e7fc6f891d0d59f4b10d046b5fd8e

@ -1 +1 @@
Subproject commit dfe55e2b924b86c654b63edb9bedc42aa4e08048 Subproject commit 512e2999ed7ff367580e0d6bc4d2daa81663221f

6
vimrc
View file

@ -10,8 +10,8 @@ set nocompatible " required
filetype off " required filetype off " required
"if !empty($MYSHELLCONFIG_VIM_PLUGINS) "if !empty($MSC_VIM_PLUGINS)
" let pluginrepopath=$MYSHELLCONFIG_VIM_PLUGINS . '/' " let pluginrepopath=$MSC_VIM_PLUGINS . '/'
" let pluginextension='.git' " let pluginextension='.git'
"else "else
" let pluginrepopath='' " let pluginrepopath=''
@ -365,7 +365,7 @@ au BufRead,BufNewFile *.py,*.pyw,*.c,*.h match BadWhitespace /\s\+$/
" yaml syntax " yaml syntax
" https://www.vim.org/scripts/script.php?script_id=739 " https://www.vim.org/scripts/script.php?script_id=739
" wget https://www.vim.org/scripts/download_script.php?src_id=2249 -O ~/.vim/yaml.vim " wget https://www.vim.org/scripts/download_script.php?src_id=2249 -O ~/.vim/yaml.vim
"au BufNewFile,BufRead *.yaml,*.yml so $MYSHELLCONFIG_BASE/.vim/yaml.vim "au BufNewFile,BufRead *.yaml,*.yml so $MSC_BASE/.vim/yaml.vim
autocmd BufRead,BufNewFile /etc/exim* set filetype=exim autocmd BufRead,BufNewFile /etc/exim* set filetype=exim
autocmd BufRead,BufNewFile *.yaml,*.yml set filetype=yaml autocmd BufRead,BufNewFile *.yaml,*.yml set filetype=yaml