minor fixes, zsh start daemon silently

pull/8/head
Simon Let 7 years ago
parent fb6bb3a8ab
commit afbae64671
  1. 46
      shellrc.sh

@ -4,11 +4,11 @@ PATH=$PATH:~/.resh/bin
# zmodload zsh/datetime # zmodload zsh/datetime
# fi # fi
get_uuid() { __resh_get_uuid() {
cat /proc/sys/kernel/random/uuid 2>/dev/null || resh-uuid cat /proc/sys/kernel/random/uuid 2>/dev/null || resh-uuid
} }
get_epochrealtime() { __resh_get_epochrealtime() {
if date +%s.%N | grep -vq 'N'; then if date +%s.%N | grep -vq 'N'; then
# GNU date # GNU date
date +%s.%N date +%s.%N
@ -21,7 +21,7 @@ get_epochrealtime() {
zmodload zsh/datetime zmodload zsh/datetime
__RESH_ZSH_LOADED_DATETIME=1 __RESH_ZSH_LOADED_DATETIME=1
fi fi
echo $EPOCHREALTIME echo "$EPOCHREALTIME"
else else
# dumb date # dumb date
# XXX: we lost precison beyond seconds # XXX: we lost precison beyond seconds
@ -33,13 +33,20 @@ get_epochrealtime() {
fi fi
} }
__resh_run_daemon() {
if [ -n "$ZSH_VERSION" ]; then
setopt LOCAL_OPTIONS NO_NOTIFY NO_MONITOR
fi
nohup resh-daemon &>/dev/null & disown
}
__RESH_MACOS=0 __RESH_MACOS=0
__RESH_LINUX=0 __RESH_LINUX=0
__RESH_UNAME=$(uname) __RESH_UNAME=$(uname)
if [ $__RESH_UNAME = "Darwin" ]; then if [ "$__RESH_UNAME" = "Darwin" ]; then
__RESH_MACOS=1 __RESH_MACOS=1
elif [ $__RESH_UNAME = "Linux" ]; then elif [ "$__RESH_UNAME" = "Linux" ]; then
__RESH_LINUX=1 __RESH_LINUX=1
else else
echo "resh PANIC unrecognized OS" echo "resh PANIC unrecognized OS"
@ -58,7 +65,7 @@ else
fi fi
if [ -z "${__RESH_SESSION_ID+x}" ]; then if [ -z "${__RESH_SESSION_ID+x}" ]; then
export __RESH_SESSION_ID=$(get_uuid) export __RESH_SESSION_ID=$(__resh_get_uuid)
export __RESH_SESSION_PID="$$" export __RESH_SESSION_PID="$$"
# TODO add sesson time # TODO add sesson time
fi fi
@ -70,17 +77,17 @@ __RESH_SHELL_ENV="$SHELL"
__RESH_TERM="$TERM" __RESH_TERM="$TERM"
# non-posix # non-posix
__RESH_RT_SESSION=$(get_epochrealtime) __RESH_RT_SESSION=$(__resh_get_epochrealtime)
__RESH_OSTYPE="$OSTYPE" __RESH_OSTYPE="$OSTYPE"
__RESH_MACHTYPE="$MACHTYPE" __RESH_MACHTYPE="$MACHTYPE"
if [ $__RESH_LINUX -eq 1 ]; then if [ $__RESH_LINUX -eq 1 ]; then
__RESH_OS_RELEASE_ID=$(source /etc/os-release; echo $ID) __RESH_OS_RELEASE_ID=$(. /etc/os-release; echo "$ID")
__RESH_OS_RELEASE_VERSION_ID=$(source /etc/os-release; echo $VERSION_ID) __RESH_OS_RELEASE_VERSION_ID=$(. /etc/os-release; echo "$VERSION_ID")
__RESH_OS_RELEASE_ID_LIKE=$(source /etc/os-release; echo $ID_LIKE) __RESH_OS_RELEASE_ID_LIKE=$(. /etc/os-release; echo "$ID_LIKE")
__RESH_OS_RELEASE_NAME=$(source /etc/os-release; echo $NAME) __RESH_OS_RELEASE_NAME=$(. /etc/os-release; echo "$NAME")
__RESH_OS_RELEASE_PRETTY_NAME=$(source /etc/os-release; echo $PRETTY_NAME) __RESH_OS_RELEASE_PRETTY_NAME=$(. /etc/os-release; echo "$PRETTY_NAME")
__RESH_RT_SESS_SINCE_BOOT=$(cat /proc/uptime | cut -d' ' -f1) __RESH_RT_SESS_SINCE_BOOT=$(cut -d' ' -f1 /proc/uptime)
elif [ $__RESH_MACOS -eq 1 ]; then elif [ $__RESH_MACOS -eq 1 ]; then
__RESH_OS_RELEASE_ID="macos" __RESH_OS_RELEASE_ID="macos"
__RESH_OS_RELEASE_VERSION_ID=$(sw_vers -productVersion 2>/dev/null) __RESH_OS_RELEASE_VERSION_ID=$(sw_vers -productVersion 2>/dev/null)
@ -89,8 +96,7 @@ elif [ $__RESH_MACOS -eq 1 ]; then
__RESH_RT_SESS_SINCE_BOOT=$(sysctl -n kern.boottime | awk '{print $4}' | sed 's/,//g') __RESH_RT_SESS_SINCE_BOOT=$(sysctl -n kern.boottime | awk '{print $4}' | sed 's/,//g')
fi fi
__resh_run_daemon
nohup resh-daemon &>/dev/null & disown
__resh_preexec() { __resh_preexec() {
# core # core
@ -125,7 +131,7 @@ __resh_preexec() {
# time # time
__RESH_TZ_BEFORE=$(date +%z) __RESH_TZ_BEFORE=$(date +%z)
# __RESH_RT_BEFORE="$EPOCHREALTIME" # __RESH_RT_BEFORE="$EPOCHREALTIME"
__RESH_RT_BEFORE=$(get_epochrealtime) __RESH_RT_BEFORE=$(__resh_get_epochrealtime)
# TODO: we should evaluate symlinks in preexec # TODO: we should evaluate symlinks in preexec
# -> maybe create resh-precollect that could handle most of preexec # -> maybe create resh-precollect that could handle most of preexec
@ -139,11 +145,12 @@ __resh_preexec() {
__resh_precmd() { __resh_precmd() {
__RESH_EXIT_CODE=$? __RESH_EXIT_CODE=$?
__RESH_RT_AFTER=$(get_epochrealtime) __RESH_RT_AFTER=$(__resh_get_epochrealtime)
__RESH_TZ_AFTER=$(date +%z) __RESH_TZ_AFTER=$(date +%z)
__RESH_PWD_AFTER="$PWD" __RESH_PWD_AFTER="$PWD"
if [ -n "${__RESH_COLLECT}" ]; then if [ -n "${__RESH_COLLECT}" ]; then
resh-collect -cmdLine "$__RESH_CMDLINE" -exitCode "$__RESH_EXIT_CODE" \ resh-collect -cmdLine "$__RESH_CMDLINE" \
-exitCode "$__RESH_EXIT_CODE" \
-shell "$__RESH_SHELL" \ -shell "$__RESH_SHELL" \
-uname "$__RESH_UNAME" \ -uname "$__RESH_UNAME" \
-sessionId "$__RESH_SESSION_ID" \ -sessionId "$__RESH_SESSION_ID" \
@ -179,7 +186,8 @@ __resh_precmd() {
-osReleaseVersionId "$__RESH_OS_RELEASE_VERSION_ID" \ -osReleaseVersionId "$__RESH_OS_RELEASE_VERSION_ID" \
-osReleaseIdLike "$__RESH_OS_RELEASE_ID_LIKE" \ -osReleaseIdLike "$__RESH_OS_RELEASE_ID_LIKE" \
-osReleaseName "$__RESH_OS_RELEASE_NAME" \ -osReleaseName "$__RESH_OS_RELEASE_NAME" \
-osReleasePrettyName "$__RESH_OS_RELEASE_PRETTY_NAME" -osReleasePrettyName "$__RESH_OS_RELEASE_PRETTY_NAME" \
&>~/.resh/client_last_run_out.txt || echo "resh ERROR: $(head -n 1 ~/.resh/client_last_run_out.txt)"
fi fi
unset __RESH_COLLECT unset __RESH_COLLECT
} }

Loading…
Cancel
Save