Merge branch 'master' of /srv/git/myshellconfig
This commit is contained in:
commit
08532e2c69
18 changed files with 513 additions and 249 deletions
32
README.md
32
README.md
|
@ -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/"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
6
aliases
6
aliases
|
@ -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
|
||||||
|
|
118
bashrc_add
118
bashrc_add
|
@ -9,8 +9,9 @@
|
||||||
#trap 'failure ${LINENO} "$BASH_COMMAND"' ERR
|
#trap 'failure ${LINENO} "$BASH_COMMAND"' ERR
|
||||||
|
|
||||||
|
|
||||||
# set SSHS to false, if not set
|
# set some variables to defaults, if not set in .bashrc
|
||||||
[ -z ${SSHS+x} ] && export SSHS=false
|
[ -z ${SSHS+x} ] && export SSHS=false
|
||||||
|
[ -z ${STARTTMUX+x} ] && export STARTTMUX=false
|
||||||
|
|
||||||
# check if we are a interactive shell
|
# check if we are a interactive shell
|
||||||
# https://guide.bash.academy/expansions/
|
# https://guide.bash.academy/expansions/
|
||||||
|
@ -20,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"
|
||||||
|
@ -36,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}')
|
||||||
|
@ -72,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
|
||||||
|
@ -94,21 +103,26 @@ EOF
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
lastupdatesubmodules () {
|
||||||
|
date "+%s" > ${MSC_BASE%/}${MSC_BASE:+/}.last_update_submodules
|
||||||
|
}
|
||||||
|
export -f lastupdatesubmodules
|
||||||
|
|
||||||
|
lastupdaterepo () {
|
||||||
|
date "+%s" > ${MSC_BASE%/}${MSC_BASE:+/}.last_update_repo
|
||||||
|
}
|
||||||
|
export -f lastupdaterepo
|
||||||
|
|
||||||
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
|
||||||
|
@ -134,8 +148,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
|
||||||
|
|
||||||
|
@ -162,20 +176,42 @@ 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 "_umask_hook"
|
||||||
|
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
|
||||||
#else
|
#else
|
||||||
# echo "non-interactive shell" >&2
|
# echo "non-interactive shell" >&2
|
||||||
SCRIPTEXIT
|
SCRIPTEXIT
|
||||||
|
|
||||||
|
# Start tmux if not defined as STARTTMUX in bashrc
|
||||||
|
logdebug "start tmux ${STARTTMUXDEFAULT} - ${STARTTMUXDEFAULT-$STARTTMUX}"
|
||||||
|
if ${STARTTMUXDEFAULT-$STARTTMUX} ; then
|
||||||
|
cat << EOF
|
||||||
|
|
||||||
|
"User: $USER - $UID"
|
||||||
|
|
||||||
|
Starting or resuming screen session
|
||||||
|
Press CTRL+C to cancel screen startup
|
||||||
|
|
||||||
|
EOF
|
||||||
|
sleep 1
|
||||||
|
#screen -UxR
|
||||||
|
tmux attach-session
|
||||||
|
logdebug "started tmux"
|
||||||
|
fi
|
||||||
|
logdebug "after"
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -1,9 +1,14 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
export SCRIPT_LOG=./$(basename $0).log
|
export SCRIPT_LOG=./$(basename $0).log
|
||||||
|
export LOGFILE=./$(basename $0).move.log
|
||||||
[ -z "${move+x}" ] && move=false
|
[ -z "${move+x}" ] && move=false
|
||||||
[ -z "${forcedate+x}" ] && forcedate=false
|
[ -z "${forcedate+x}" ] && forcedate=false
|
||||||
[ -z "${setdate+x}" ] && setdate=true
|
[ -z "${setdate+x}" ] && setdate=true
|
||||||
|
[ -z "${setoriginalfilename+x}" ] && setoriginalfilename=false
|
||||||
|
[ -z "${movecreatedate+x}" ] && movecreatedate=false
|
||||||
|
[ -z "${setartist+x}" ] && setartist=false
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Pathdefinitions Default
|
# Pathdefinitions Default
|
||||||
|
@ -21,14 +26,22 @@ export SCRIPT_LOG=./$(basename $0).log
|
||||||
|
|
||||||
help () {
|
help () {
|
||||||
cat << EOF
|
cat << EOF
|
||||||
Usage: $(basename $0) [move=[true|copy]] [setdate=[true|false]] [forcedate=[true|false]] [<file>]
|
Usage: $(basename $0) [move=[true|copy]] [setdate=[true|false]] [forcedate=[true|false]] [setoriginalfilename=[false|true|force]] [<file>]
|
||||||
|
|
||||||
|
|
||||||
Defaults:
|
Defaults:
|
||||||
# commands
|
# commands
|
||||||
move=$move [false|true|copy] false: file is not moved to destination; true: file is moved; copy: copy file to destination
|
move=$move [false|true|copy|rename|renameinplace|copyrename]
|
||||||
|
false: file is not moved to destination;
|
||||||
|
true: file is moved; copy: copy file to destination
|
||||||
|
copy: copy file to final destinateion
|
||||||
|
renameinplace: rename file to YYYYMMDD_HHmmss-c.ext in place (just rename file)
|
||||||
|
rename: move like true, but rename ist like renameinplace
|
||||||
|
copyrename: rename file in place and copy it to final destination with new name
|
||||||
forcedate=$forcedate [fase|true] false: datetimeoriginal and createdate is only updated from filename, if not set; true: tags are always updated
|
forcedate=$forcedate [fase|true] false: datetimeoriginal and createdate is only updated from filename, if not set; true: tags are always updated
|
||||||
setdate=$setdate [false|true] false: do not set date-tags, only if you are sure, tags are ok, and you want move or copy files;
|
setdate=$setdate [false|true] false: do not set date-tags, only if you are sure, tags are ok, and you want move or copy files;
|
||||||
|
setoriginalfilenamee=$setoriginalfilename [false|true|force] false: do not set originalfilename from filname (default); true: set it, if not set; force: set it, also if exists;
|
||||||
|
setartist=$setartist [false|true|<User Name>] true: set USERNAME from user, running the script; <User Name> set this User Name
|
||||||
|
|
||||||
# destination
|
# destination
|
||||||
dest=$dest
|
dest=$dest
|
||||||
|
@ -42,7 +55,7 @@ help () {
|
||||||
${dest}/${mimedestvid}/${subdestvid}/%Y/%Y_%m"
|
${dest}/${mimedestvid}/${subdestvid}/%Y/%Y_%m"
|
||||||
|
|
||||||
Supported Filet-extensions
|
Supported Filet-extensions
|
||||||
*.jpg, *.jpeg, *.png, *.mp4
|
*.jpg, *.jpeg, *.png, *.mp4, *.3gp, *.gif
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
|
|
||||||
|
@ -86,6 +99,13 @@ parsedatetime() {
|
||||||
result="$(printf "%04d:%02d:%02d %02d:%02d:%02d" "${BASH_REMATCH[1]#0}" "${BASH_REMATCH[3]#0}" "${BASH_REMATCH[5]#0}" "${BASH_REMATCH[7]#0}" "${BASH_REMATCH[9]#0}" "${BASH_REMATCH[11]#0}")"
|
result="$(printf "%04d:%02d:%02d %02d:%02d:%02d" "${BASH_REMATCH[1]#0}" "${BASH_REMATCH[3]#0}" "${BASH_REMATCH[5]#0}" "${BASH_REMATCH[7]#0}" "${BASH_REMATCH[9]#0}" "${BASH_REMATCH[11]#0}")"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ -z "${result}" ]; then
|
||||||
|
# signal-2020-08-09-171936.jpg
|
||||||
|
if [[ $filename =~ ^.*([0-9]{4})(\.|-)([0-9]{2})(\.|-)([0-9]{2})( |_|-|" at ")([0-9]{2})([0-9]{2})([0-9]{2})(\.|-|\+|\(| ).*$ ]]; then
|
||||||
|
result="$(printf "%04d:%02d:%02d %02d:%02d:%02d" "${BASH_REMATCH[1]#0}" "${BASH_REMATCH[3]#0}" "${BASH_REMATCH[5]#0}" "${BASH_REMATCH[7]#0}" "${BASH_REMATCH[8]#0}" "${BASH_REMATCH[9]#0}")"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -z "${result}" ]; then
|
if [ -z "${result}" ]; then
|
||||||
if [[ $filename =~ ^.*([0-9]{4})([0-9]{2})([0-9]{2})(_|-)([0-9]{2})([0-9]{2})([0-9]{2}).*$ ]]; then
|
if [[ $filename =~ ^.*([0-9]{4})([0-9]{2})([0-9]{2})(_|-)([0-9]{2})([0-9]{2})([0-9]{2}).*$ ]]; then
|
||||||
result="$(printf "%04d:%02d:%02d %02d:%02d:%02d" "${BASH_REMATCH[1]#0}" "${BASH_REMATCH[2]#0}" "${BASH_REMATCH[3]#0}" "${BASH_REMATCH[5]#0}" "${BASH_REMATCH[6]#0}" "${BASH_REMATCH[7]#0}")"
|
result="$(printf "%04d:%02d:%02d %02d:%02d:%02d" "${BASH_REMATCH[1]#0}" "${BASH_REMATCH[2]#0}" "${BASH_REMATCH[3]#0}" "${BASH_REMATCH[5]#0}" "${BASH_REMATCH[6]#0}" "${BASH_REMATCH[7]#0}")"
|
||||||
|
@ -115,6 +135,7 @@ parsedatetime() {
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
echo "$result"
|
echo "$result"
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
@ -133,7 +154,10 @@ run_fix () {
|
||||||
image/jpeg)
|
image/jpeg)
|
||||||
MIMEDEST="${mimedestpic}/${subdestpic}"
|
MIMEDEST="${mimedestpic}/${subdestpic}"
|
||||||
;;
|
;;
|
||||||
video/mp4|video/m4a)
|
image/gif)
|
||||||
|
MIMEDEST="${mimedestpic}/${subdestpic}"
|
||||||
|
;;
|
||||||
|
video/mp4|video/m4a|video/3gpp)
|
||||||
MIMEDEST="${mimedestvid}/${subdestvid}"
|
MIMEDEST="${mimedestvid}/${subdestvid}"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
@ -142,28 +166,110 @@ run_fix () {
|
||||||
esac
|
esac
|
||||||
if [ -n "${MIMEDEST+x}" ] ; then
|
if [ -n "${MIMEDEST+x}" ] ; then
|
||||||
|
|
||||||
if $forcedate; then
|
case $setoriginalfilename in
|
||||||
[ -n "$newDateTimeOriginal" ] && exiftool "-DateTimeOriginal=$newDateTimeOriginal" "$file"
|
true)
|
||||||
exiftool '-createdate<datetimeoriginal' -if '($datetimeoriginal)' "$file"
|
loginfo "set original filename: "
|
||||||
exiftool '-datetimeoriginal<createdate' -if '(not $datetimeoriginal and $createdate)' "$file"
|
$setoriginalfilename && exiftool -overwrite_original "-originalfilename<filename" -if '(not $originalfilename)' "$file"
|
||||||
else
|
;;
|
||||||
[ -n "$newDateTimeOriginal" ] && exiftool "-DateTimeOriginal=$newDateTimeOriginal" -if '(not $datetimeoriginal)' "$file"
|
force)
|
||||||
exiftool '-createdate<datetimeoriginal' -if '(not $createdate and $datetimeoriginal)' "$file"
|
loginfo "set original filename: "
|
||||||
exiftool '-datetimeoriginal<createdate' -if '(not $datetimeoriginal and $createdate)' "$file"
|
$setoriginalfilename && exiftool -overwrite_original "-originalfilename<filename" "$file"
|
||||||
fi
|
;;
|
||||||
|
*)
|
||||||
|
logwarn "do not set original filname in case of setoriginalfilename=$setoriginalfilename"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
loginfo "$(exiftool -filename -createdate -datetimeoriginal "$file")"
|
case ${setartist:-false} in
|
||||||
|
false)
|
||||||
|
unset ARTIST
|
||||||
|
;;
|
||||||
|
true)
|
||||||
|
ARTIST="${FULLNAME:-$(getent passwd $USER|awk -F ":" '{print $5}'|awk -F "," '{print $1}')}"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
ARTIST="$setartist"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
[ -z "${ARTIST-x}" ] || exiftool -overwrite_original "-artist=$ARTIST" -if '(not $artist)' "$file"
|
||||||
|
|
||||||
|
case $forcedate in
|
||||||
|
true)
|
||||||
|
loginfo -n "set datetimeoriginal to $newDateTimeOriginal"
|
||||||
|
$setdate && [ -n "$newDateTimeOriginal" ] && exiftool -overwrite_original "-DateTimeOriginal=$newDateTimeOriginal" "$file"
|
||||||
|
loginfo -n "set createdate to datetimeoriginal: "
|
||||||
|
$setdate && exiftool -overwrite_original '-createdate<datetimeoriginal' -if '($datetimeoriginal)' "$file"
|
||||||
|
loginfo -n "set datetimeoriginal to createdate: "
|
||||||
|
$setdate && exiftool -overwrite_original '-datetimeoriginal<createdate' -if '(not $datetimeoriginal and $createdate)' "$file"
|
||||||
|
;;
|
||||||
|
sensitive)
|
||||||
|
if [[ $newDateTimeOriginal =~ ^([0-9]{4})(:)([0-9]{2})(:)([0-9]{2})( )([0-9]{2})(:)([0-9]{2})(:)([0-9]{2}).*$ ]]; then
|
||||||
|
YYYYMM="$(printf "%04d:%02d:*" "${BASH_REMATCH[1]#0}" "${BASH_REMATCH[3]#0}")"
|
||||||
|
loginfo "YYYYMM: $YYYYMM"
|
||||||
|
fi
|
||||||
|
loginfo -n "set datetimeoriginal to $newDateTimeOriginal if not start with $YYYYMM"
|
||||||
|
$setdate && [ -n "$newDateTimeOriginal" ] && exiftool -overwrite_original "-DateTimeOriginal=$newDateTimeOriginal" -if '(not $DateTimeOriginal =~ "'$YYYYMM'" )' "$file"
|
||||||
|
loginfo -n "set createdate to datetimeoriginal: "
|
||||||
|
$setdate && exiftool -overwrite_original '-createdate<datetimeoriginal' -if '($datetimeoriginal)' "$file"
|
||||||
|
loginfo -n "set datetimeoriginal to createdate: "
|
||||||
|
$setdate && exiftool -overwrite_original '-datetimeoriginal<createdate' -if '(not $datetimeoriginal and $createdate)' "$file"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
loginfo -n "set datetimeoriginal to $newDateTimeOriginal"
|
||||||
|
$setdate && [ -n "$newDateTimeOriginal" ] && exiftool -overwrite_original "-DateTimeOriginal=$newDateTimeOriginal" -if '(not $datetimeoriginal)' "$file"
|
||||||
|
loginfo -n "set createdate to datetimeoriginal: "
|
||||||
|
$setdate && exiftool -overwrite_original '-createdate<datetimeoriginal' -if '(($createdate =~ "0000:00:00*" or not $createdate) and $datetimeoriginal)' "$file"
|
||||||
|
loginfo -n "set datetimeoriginal to createdate: "
|
||||||
|
$setdate && exiftool -overwrite_original '-datetimeoriginal<createdate' -if '(not $datetimeoriginal and $createdate)' "$file"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
loginfo "fileinfos from modified file: $(exiftool -filename -createdate -datetimeoriginal -originalfilename "$file")"
|
||||||
|
|
||||||
|
|
||||||
case $move in
|
case $move in
|
||||||
true)
|
true)
|
||||||
echo move to ${dest}/${MIMEDEST}/%Y/%Y_%m
|
echo move to ${dest}/${MIMEDEST}/%Y/%Y_%m
|
||||||
loginfo "$(exiftool '-Directory<DateTimeOriginal' -d ${dest}/${MIMEDEST}/%Y/%Y_%m -if '($datetimeoriginal)' "$file" 2>&1 |tee -a dest_exists)"
|
if $movecreatedate ; then
|
||||||
|
loginfo "$(exiftool '-Directory<CreateDate' -d ${dest}/${MIMEDEST}/%Y/%Y_%m -if '($CreateDate)' "$file" 2>&1 |tee -a ${LOGFILE})"
|
||||||
|
else
|
||||||
|
loginfo "$(exiftool '-Directory<DateTimeOriginal' -d ${dest}/${MIMEDEST}/%Y/%Y_%m -if '($datetimeoriginal)' "$file" 2>&1 |tee -a ${LOGFILE})"
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
copy)
|
copy)
|
||||||
echo copy to ${dest}/${MIMEDEST}/%Y/%Y_%m
|
echo copy to ${dest}/${MIMEDEST}/%Y/%Y_%m
|
||||||
loginfo "$(exiftool -o . '-Directory<DateTimeOriginal' -d ${dest}/${MIMEDEST}/%Y/%Y_%m -filename -createdate -datetimeoriginal -if '($datetimeoriginal)' "$file")"
|
if $movecreatedate ; then
|
||||||
|
loginfo "$(exiftool -o . '-Directory<DateTimeOriginal' -d ${dest}/${MIMEDEST}/%Y/%Y_%m -if '($datetimeoriginal)' "$file" 2>&1 |tee -a ${LOGFILE})"
|
||||||
logwarn "$(readlink -f "$file"): $(exiftool -filename -if '(not ($datetimeoriginal or $createdate))' "$file")"
|
logwarn "$(readlink -f "$file"): $(exiftool -filename -if '(not ($datetimeoriginal or $createdate))' "$file")"
|
||||||
|
else
|
||||||
|
loginfo "$(exiftool -o . '-Directory<DateTimeOriginal' -d ${dest}/${MIMEDEST}/%Y/%Y_%m -if '($datetimeoriginal)' "$file" 2>&1 |tee -a ${LOGFILE})"
|
||||||
|
logwarn "$(readlink -f "$file"): $(exiftool -filename -if '(not ($datetimeoriginal or $createdate))' "$file")"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
renameinplace)
|
||||||
|
echo rename inplace
|
||||||
|
if $movecreatedate ; then
|
||||||
|
loginfo "$(exiftool '-FileName<CreateDate' -d %Y%m%d_%H%M%S%%-c.%%e -if '($CreateDate)' "$file" 2>&1 | tee -a ${LOGFILE})"
|
||||||
|
else
|
||||||
|
loginfo "$(exiftool '-FileName<DateTimeOriginal' -d %Y%m%d_%H%M%S%%-c.%%e -if '($DateTimeOriginal)' "$file" 2>&1 | tee -a ${LOGFILE})"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
rename)
|
||||||
|
echo move to ${dest}/${MIMEDEST}/%Y/%Y_%m
|
||||||
|
if $movecreatedate ; then
|
||||||
|
loginfo "$(exiftool -v '-FileName<CreateDate' -d ${dest}/${MIMEDEST}/%Y/%Y_%m/%Y%m%d_%H%M%S%%-c.%%e -if '($CreateDate)' "$file" 2>&1 | tee -a ${LOGFILE})"
|
||||||
|
else
|
||||||
|
loginfo "$(exiftool -v '-FileName<DateTimeOriginal' -d ${dest}/${MIMEDEST}/%Y/%Y_%m/%Y%m%d_%H%M%S%%-c.%%e -if '($DateTimeOriginal)' "$file" 2>&1 | tee -a ${LOGFILE})"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
copyrename)
|
||||||
|
echo move to ${dest}/${MIMEDEST}/%Y/%Y_%m
|
||||||
|
if $movecreatedate ; then
|
||||||
|
loginfo "$(exiftool -o . '-FileName<CreateDate' -d ${dest}/${MIMEDEST}/%Y/%Y_%m/%Y%m%d_%H%M%S%%-c.%%e -if '($CreateDate)' "$file" 2>&1 | tee -a ${LOGFILE})"
|
||||||
|
else
|
||||||
|
loginfo "$(exiftool -o . '-FileName<DateTimeOriginal' -d ${dest}/${MIMEDEST}/%Y/%Y_%m/%Y%m%d_%H%M%S%%-c.%%e -if '($DateTimeOriginal)' "$file" 2>&1 | tee -a ${LOGFILE})"
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
logwarn "value for move is neither »true« nor »copy«"
|
logwarn "value for move is neither »true« nor »copy«"
|
||||||
|
@ -175,11 +281,35 @@ run_fix () {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
run_check () {
|
||||||
|
file="${@}"
|
||||||
|
mime="$(file --mime-type "$file" | awk '{print $NF}')"
|
||||||
|
loginfo "file: $file : mime-type: $mime"
|
||||||
|
|
||||||
|
newDateTimeOriginal="$(parsedatetime "$file")"
|
||||||
|
loginfo "search for DateTime-File: $newDateTimeOriginal"
|
||||||
|
#echo $newDateTimeOriginal|sed -e 's/://g;s/ /_/'
|
||||||
|
if [ $(find ${dest} -name "$(echo $newDateTimeOriginal|sed -e 's/://g;s/ /_/')*"|wc -l) -eq 0 ]; then
|
||||||
|
loginfo " not found"
|
||||||
|
echo "$@" |tee -a holdfiles
|
||||||
|
else
|
||||||
|
loginfo " found"
|
||||||
|
echo "$@" |tee -a rmfiles
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
if [ $# -gt 0 ]; then
|
if [ $# -gt 0 ]; then
|
||||||
case $1 in
|
case $1 in
|
||||||
-h|help|--help)
|
-h|help|--help)
|
||||||
help
|
help
|
||||||
;;
|
;;
|
||||||
|
-c)
|
||||||
|
shift
|
||||||
|
loginfo "Check if createdate-file already exists"
|
||||||
|
run_check "${@}"
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
loginfo "Progress only one file from cmdline ${@}"
|
loginfo "Progress only one file from cmdline ${@}"
|
||||||
run_fix "${@}"
|
run_fix "${@}"
|
||||||
|
@ -187,9 +317,9 @@ if [ $# -gt 0 ]; then
|
||||||
esac
|
esac
|
||||||
|
|
||||||
else
|
else
|
||||||
loginfo "Progress all *.jpg, *.jpeg, *.png and mp4 files in pwd $(pwd)"
|
loginfo "Progress all *.jpg, *.jpeg, *.png and mp4, *.3gp, *.gif files in pwd $(pwd)"
|
||||||
all=$(find ${maxdepth:+-maxdepth} ${maxdepth:+$maxdepth} -type f |grep -i ".jpg$\|.jpeg$\|.mp4$\|.png$"|wc -l)
|
all=$(find ${maxdepth:+-maxdepth} ${maxdepth:+$maxdepth} -type f |grep -i ".jpg$\|.jpeg$\|.mp4$\|.png$\|.3gp$\|.gif$"|wc -l)
|
||||||
find ${maxdepth:+-maxdepth} ${maxdepth:+$maxdepth} -type f |grep -i ".jpg$\|.jpeg$\|.mp4$\|.png$"|while read file; do
|
find ${maxdepth:+-maxdepth} ${maxdepth:+$maxdepth} -type f |grep -i ".jpg$\|.jpeg$\|.mp4$\|.png$\|.3gp$\|.gif$"|while read file; do
|
||||||
let "i=i+1"
|
let "i=i+1"
|
||||||
loginfo "$i/$all"
|
loginfo "$i/$all"
|
||||||
run_fix "$file"
|
run_fix "$file"
|
||||||
|
|
|
@ -12,16 +12,18 @@
|
||||||
#################################################################################################
|
#################################################################################################
|
||||||
|
|
||||||
[ -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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
gitupdateend() {
|
gitupdateend() {
|
||||||
cat << EOF >> "${MYSHELLCONFIG_LOGFILE}"
|
cat << EOF >> "${MSC_LOGFILE}"
|
||||||
|
|
||||||
+-----ENDE git update repo $(date) ---------------------------------+
|
+-----ENDE git update repo $(date) ---------------------------------+
|
||||||
|
|
||||||
|
@ -29,7 +31,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 +41,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 +55,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 "${dosrepoupdate+x}" ] && dorepoupdate="true"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $(cat ${MSC_BASE%/}${MSC_BASE:+/}.last_update_submodules 2>/dev/null || echo 0 ) \
|
||||||
|
-lt $(date --date="${MSC_GIT_SUBMODULES_UPDATE_INTERVALL} hours ago" "+%s") \
|
||||||
|
-a ${MSC_GIT_SUBMODULES_UPDATE-${MSC_GIT_SUBMODULES_UPDATE_DEFAULT-true}} ]; then
|
||||||
[ -z "${dosubmodupdate+x}" ] && dosubmodupdate="true"
|
[ -z "${dosubmodupdate+x}" ] && dosubmodupdate="true"
|
||||||
fi
|
fi
|
||||||
logtrace "dosubmodupdate after: $dosubmodupdate"
|
|
||||||
|
|
||||||
#echo $SGIT fetch ${MYSHELLCONFIG_GIT_REMOTE_NAME} -p 1>&2
|
#echo $SGIT fetch ${MSC_GIT_REMOTE_NAME} -p 1>&2
|
||||||
loginfo "fetch repo${dosubmodupdate:+ and submodules}"
|
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; }
|
$SGIT fetch ${dosubmodupdate:+--recurse-submodules} ${MSC_GIT_REMOTE_NAME} -p 2>>"${MSC_LOGFILE}"|| { logwarn fetch failed; gitupdateend; exit 1; }
|
||||||
if ${dosubmodupdate:-false}; then
|
if ${dosubmodupdate:-false}; then
|
||||||
date "+%s" > ${MYSHELLCONFIG_BASE%/}${MYSHELLCONFIG_BASE:+/}.last_update_submodules
|
lastupdatesubmodules
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Check for local changes:" >> "${MYSHELLCONFIG_LOGFILE}"
|
echo "Check for local changes:" >> "${MSC_LOGFILE}"
|
||||||
if $SGIT diff-index --ignore-submodules --exit-code HEAD -- >> "${MYSHELLCONFIG_LOGFILE}" ; then
|
if $SGIT diff-index --ignore-submodules --exit-code HEAD -- >> "${MSC_LOGFILE}" ; then
|
||||||
cat << EOF >> "${MYSHELLCONFIG_LOGFILE}"
|
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 +114,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
|
||||||
|
|
|
@ -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
8
defaults.conf
Normal 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}"
|
165
functions.sh
165
functions.sh
|
@ -6,9 +6,23 @@
|
||||||
|
|
||||||
export TMUX_SESSION_DIRS SETPROXY_CREDS_DIRS KERBEROS_CONFIG_DIRS
|
export TMUX_SESSION_DIRS SETPROXY_CREDS_DIRS KERBEROS_CONFIG_DIRS
|
||||||
|
|
||||||
|
promptcommandmunge () {
|
||||||
|
ENTRY
|
||||||
|
case ";${PROMPT_COMMAND};" in
|
||||||
|
"*;$1;*")
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
if [ "$2" = "after" ] ; then
|
||||||
|
PROMPT_COMMAND="${PROMPT_COMMAND};$1"
|
||||||
|
else
|
||||||
|
PROMPT_COMMAND="$1;${PROMPT_COMMAND}"
|
||||||
|
fi
|
||||||
|
esac
|
||||||
|
EXIT
|
||||||
|
}
|
||||||
## this function updates in combination with PROMPT_COMMAND the shell-environment-variables in tmus-sessions,
|
## this function updates in combination with PROMPT_COMMAND the shell-environment-variables in tmus-sessions,
|
||||||
# every time prompt is called. It does it only, when called from tmux (Environment TMUX is set)
|
# every time prompt is called. It does it only, when called from tmux (Environment TMUX is set)
|
||||||
function prompt_command() {
|
function _tmux_hook() {
|
||||||
# [ -z "${TMUX+x}" ] || eval "$(tmux show-environment -s)"
|
# [ -z "${TMUX+x}" ] || eval "$(tmux show-environment -s)"
|
||||||
|
|
||||||
if [ -n "${TMUX}" ]; then
|
if [ -n "${TMUX}" ]; then
|
||||||
|
@ -16,8 +30,25 @@ function prompt_command() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
}
|
}
|
||||||
PROMPT_COMMAND=prompt_command
|
|
||||||
|
|
||||||
|
# Append `;` if PROMPT_COMMAND is not empty
|
||||||
|
#PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND;}_tmux_hook"
|
||||||
|
|
||||||
|
|
||||||
|
# To make the code more reliable on detecting the default umask
|
||||||
|
function _umask_hook {
|
||||||
|
# Record the default umask value on the 1st run
|
||||||
|
[[ -z $DEFAULT_UMASK ]] && export DEFAULT_UMASK="$(builtin umask)"
|
||||||
|
|
||||||
|
if [[ -n $UMASK ]]; then
|
||||||
|
umask "$UMASK"
|
||||||
|
else
|
||||||
|
umask "$DEFAULT_UMASK"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Append `;` if PROMPT_COMMAND is not empty
|
||||||
|
#PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND;}_umask_hook"
|
||||||
|
|
||||||
cpb() {
|
cpb() {
|
||||||
scp "$1" ${SSH_CLIENT%% *}:~/Work
|
scp "$1" ${SSH_CLIENT%% *}:~/Work
|
||||||
|
@ -40,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
|
||||||
|
@ -127,9 +158,13 @@ mencfs () {
|
||||||
return 2
|
return 2
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
logdebug "ENCDIR: $ENCDIR"
|
||||||
[ -z ${PKEY+x} ] && { EXIT; return 3; }
|
[ -z ${PKEY+x} ] && { EXIT; return 3; }
|
||||||
[ -z ${ENCDIR+x} ] && { EXIT; return 4; }
|
[ -z ${ENCDIR+x} ] && { EXIT; return 4; }
|
||||||
|
[ -z "${DESTDIR+x}" ] && [ -n "${XDG_RUNTIME_DIR}" ] && DESTDIR="${XDG_RUNTIME_DIR}/decrypted/$(basename $ENCDIR| tr '[:lower:]' '[:upper:]'| sed -e 's/^\.//')"
|
||||||
[ -z ${DESTDIR+x} ] && DESTDIR="$(dirname $ENCDIR)/$(basename $ENCDIR| tr '[:lower:]' '[:upper:]'| sed -e 's/^\.//')"
|
[ -z ${DESTDIR+x} ] && DESTDIR="$(dirname $ENCDIR)/$(basename $ENCDIR| tr '[:lower:]' '[:upper:]'| sed -e 's/^\.//')"
|
||||||
|
logdebug "DESTDIR: $DESTDIR"
|
||||||
|
[ -d "$DESTDIR" ] || mkdir -p "$DESTDIR"
|
||||||
$PASS "${PKEY}" 1>/dev/null 2>&1 || { logerror "entry $PKEY does not exist in passwordsotre"; return 5; }
|
$PASS "${PKEY}" 1>/dev/null 2>&1 || { logerror "entry $PKEY does not exist in passwordsotre"; return 5; }
|
||||||
local ENCFS_PASSWORD=$($PASS "${PKEY}" | head -n1)
|
local ENCFS_PASSWORD=$($PASS "${PKEY}" | head -n1)
|
||||||
|
|
||||||
|
@ -164,14 +199,14 @@ uencfs () {
|
||||||
else
|
else
|
||||||
loginfo "umount encrypted directory" $1 >&2
|
loginfo "umount encrypted directory" $1 >&2
|
||||||
sync
|
sync
|
||||||
$FUSERMOUNT -u "$1"
|
$FUSERMOUNT -z -u "$1"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
loginfo "no arguments given. Umount all mounted encfs-dirs" >&2
|
loginfo "no arguments given. Umount all mounted encfs-dirs" >&2
|
||||||
for i in $(mount|grep encfs|sed -e 's/^encfs on \(.*\)\ type.*$/\1/');do
|
for i in $(mount|grep encfs|sed -e 's/^encfs on \(.*\)\ type.*$/\1/');do
|
||||||
loginfo "$FUSERMOUNT -u $i"
|
loginfo "$FUSERMOUNT -u $i"
|
||||||
sync
|
sync
|
||||||
$FUSERMOUNT -u "$i"
|
$FUSERMOUNT -z -u "$i"
|
||||||
done
|
done
|
||||||
EXIT
|
EXIT
|
||||||
return 1
|
return 1
|
||||||
|
@ -274,29 +309,33 @@ 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
|
||||||
[ -e /etc/bashrc ] && . /etc/bashrc
|
[ -e /etc/bashrc ] && . /etc/bashrc
|
||||||
[ -e /etc/bash.bashrc ] && . /etc/bash.bashrc
|
[ -e /etc/bash.bashrc ] && . /etc/bash.bashrc
|
||||||
loginfo "modify ~/.bashrc"
|
echo "modify ~/.bashrc"
|
||||||
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
|
echo cleanup from old config
|
||||||
rm -rf ~/server-config && echo rm -rf ~/server-config
|
rm -rf ~/server-config && echo rm -rf ~/server-config
|
||||||
|
echo git clone
|
||||||
|
git clone --recurse-submodules $MSC_GIT_REMOTE \${HOME}/${MSC_SUBPATH}
|
||||||
|
date "+%s" > \${HOME}/${MSC_SUBPATH}/.last_update_submodules
|
||||||
|
date "+%s" > \${HOME}/${MSC_SUBPATH}/.last_update_repo
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
EXIT
|
EXIT
|
||||||
|
@ -312,8 +351,13 @@ 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/*" )
|
||||||
|
|
||||||
|
if [ -e "${HOME}/.config/myshellconfig/sshs_addfiles.conf" ] ; then
|
||||||
|
cat "${HOME}/.config/myshellconfig/sshs_addfiles.conf"|while read i;do
|
||||||
|
FILELIST+=("$i")
|
||||||
|
done
|
||||||
|
fi
|
||||||
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
|
||||||
cat << EOF >> "${TMPBASHCONFIG}"
|
cat << EOF >> "${TMPBASHCONFIG}"
|
||||||
|
@ -350,8 +394,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}"
|
||||||
|
@ -366,7 +410,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}\""
|
||||||
|
@ -384,7 +428,7 @@ EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
VIMRC="${MYSHELLCONFIG_BASE}/vimrc"
|
VIMRC="${MSC_BASE}/vimrc"
|
||||||
|
|
||||||
svi () {
|
svi () {
|
||||||
ENTRY
|
ENTRY
|
||||||
|
@ -413,14 +457,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
|
||||||
|
@ -607,7 +651,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}"
|
||||||
|
@ -618,7 +662,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}"
|
||||||
|
@ -639,6 +683,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
|
||||||
|
@ -851,4 +907,39 @@ 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
|
||||||
|
}
|
||||||
|
|
||||||
|
# jira-confluence-specific is temporary in here
|
||||||
|
function getdbcreds_jira () {
|
||||||
|
[ $# -eq 0 ] return 1
|
||||||
|
|
||||||
|
DB_FILE=$1
|
||||||
|
|
||||||
|
DB_URL="$(grep -oPm1 "(?<=<url>)[^<]+" ${DB_FILE})"
|
||||||
|
DB_USER="$(grep -oPm1 "(?<=<username>)[^<]+" ${DB_FILE})"
|
||||||
|
DB_PWD="$(grep -oPm1 "(?<=<password>)[^<]+" ${DB_FILE})"
|
||||||
|
DB_HOST="$(echo $DB_URL|sed 's@^.*//@@;s@\(^.*):\(.*\)/\(.*\)$@\1@')"
|
||||||
|
DB_PORT="$(echo $DB_URL|sed 's@^.*//@@;s@\(^.*):\(.*\)/\(.*\)$@\2@')"
|
||||||
|
DB_NAME="$(echo $DB_URL|sed 's@^.*//@@;s@\(^.*):\(.*\)/\(.*\)$@\3@')"
|
||||||
|
|
||||||
|
cat << \
|
||||||
|
EOF
|
||||||
|
DB_HOST: ${DB_HOST}
|
||||||
|
DB_PORT: ${DB_PORT}
|
||||||
|
DB_NAME: ${DB_NAME}
|
||||||
|
DB_USER: ${DB_USER}
|
||||||
|
DB_PWD: ${DB_PWD}
|
||||||
|
EOF
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
#EOF
|
#EOF
|
||||||
|
|
114
myshell_git_sync
114
myshell_git_sync
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
||||||
|
@ -79,18 +79,9 @@ if ! $SSHS; then
|
||||||
# Go HOME
|
# Go HOME
|
||||||
#cd ${HOME}
|
#cd ${HOME}
|
||||||
|
|
||||||
|
# Start tmux if not defined as STARTTMUX in bashrc
|
||||||
if test ! $TMUX && test $SSH_TTY && test $TERM != screen && test $(systemctl status tmux@${USER}.service 1>/dev/null 2>&1; echo $? ) -eq 0; then
|
if test ! $TMUX && test $SSH_TTY && test $TERM != screen && test $(systemctl status tmux@${USER}.service 1>/dev/null 2>&1; echo $? ) -eq 0; then
|
||||||
cat << EOF
|
STARTTMUXDEFAULT=true
|
||||||
|
|
||||||
"User: $USER - $UID"
|
|
||||||
|
|
||||||
Starting or resuming screen session
|
|
||||||
Press CTRL+C to cancel screen startup
|
|
||||||
|
|
||||||
EOF
|
|
||||||
sleep 1
|
|
||||||
#screen -UxR
|
|
||||||
tmux attach-session
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
unset -f pathmunge
|
unset -f pathmunge
|
||||||
|
@ -125,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
|
||||||
|
@ -146,6 +137,7 @@ export -f reachable-default
|
||||||
|
|
||||||
[ -z "${SSH_AGENTS_DEFAULT_DIR+x}" ] || mkdir -p "${SSH_AGENTS_DEFAULT_DIR}"
|
[ -z "${SSH_AGENTS_DEFAULT_DIR+x}" ] || mkdir -p "${SSH_AGENTS_DEFAULT_DIR}"
|
||||||
|
|
||||||
|
|
||||||
#cat << EOF > "${SSH_AGENTS_DEFAULT_DIR}/agent-default-$(hostname)"
|
#cat << EOF > "${SSH_AGENTS_DEFAULT_DIR}/agent-default-$(hostname)"
|
||||||
#SSH_AUTH_SOCK=${SSH_AUTH_SOCK}; export SSH_AUTH_SOCK;
|
#SSH_AUTH_SOCK=${SSH_AUTH_SOCK}; export SSH_AUTH_SOCK;
|
||||||
#SSH_AGENT_PID=${SSH_AGENT_PID}; export SSH_AGENT_PID;
|
#SSH_AGENT_PID=${SSH_AGENT_PID}; export SSH_AGENT_PID;
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit 1ed25d76ba51f9b3ab66f75b73734be43d41b8c3
|
Subproject commit 00f4551a7b9edda202f15f43e694f949f04927de
|
|
@ -1 +1 @@
|
||||||
Subproject commit 53b3aea0da5e3581e224c958dbc13558cbe5daee
|
Subproject commit e9d62b4c873f5f207202b4ba5bbd63de7003a0d3
|
|
@ -1 +1 @@
|
||||||
Subproject commit 9e33a3fe8aa90f5ece2439f3b1b3a98fe7e35f85
|
Subproject commit 5fa0e3e1487b17f8a23fc2674ebde5f55ce6a816
|
|
@ -1 +1 @@
|
||||||
Subproject commit 536667191d5bdc0afa3a18d7df229731e778815e
|
Subproject commit f39208f1a074fb525270312a20c87521a50c74ef
|
|
@ -1 +1 @@
|
||||||
Subproject commit cd6f16978d5af4b9fb861be9d728732d72789df3
|
Subproject commit 5cf03c355b64836ebcb681136539f48ada34f363
|
|
@ -1 +1 @@
|
||||||
Subproject commit 1a77f1c00e12e8460f39098ec3289c5433d32512
|
Subproject commit 7afa1cfaa62e7fc6f891d0d59f4b10d046b5fd8e
|
|
@ -1 +1 @@
|
||||||
Subproject commit 987a33355ef424161fdbc4e5d625b5b5aed9704c
|
Subproject commit 512e2999ed7ff367580e0d6bc4d2daa81663221f
|
6
vimrc
6
vimrc
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue