diff --git a/shrc b/shrc index 8d8f727..4adbd47 100755 --- a/shrc +++ b/shrc @@ -52,8 +52,8 @@ __safe_add_path_l \ test -f "${__dotdir}/rc.py" && export PYTHONSTARTUP="${__dotdir}/rc.py" -install -d "$HOME/.local/lib/python/site-packages" -export PYTHONPATH="${PYTHONPATH}:${HOME}/.local/lib/python/site-packages" +test -d "$HOME/.local/lib/python/site-packages" && \ + export PYTHONPATH="${PYTHONPATH}:${HOME}/.local/lib/python/site-packages" export GEM_HOME="$HOME/.local/lib/gems" export RUBYLIB="$RUBYLIB:$HOME/.local/lib/gems/lib" @@ -127,8 +127,8 @@ fi __dotdir="`dirname "$__shrc"`" __homelocal="$HOME/.local" __homevar="$HOME/.var" -install -d "$__homelocal" -install -d "$__homevar" +test -d "$__homelocal" || install -d "$__homelocal" +test -d "$__homevar" || install -d "$__homevar" ################################## @@ -200,7 +200,7 @@ then fi __match "$TMP" "${USER}-tmp" >/dev/null || export TMP="${TMP}/${USER}-tmp" export TEMP="$TMP" -mkdir -p "$TMP" +test -d "$TMP" || install -d "$TMP" ! iswindows && null type stty && { stty stop undef # unbind C-s to stop displaying output @@ -216,10 +216,133 @@ then export CHIT_PATH="$HOME/dbx/.chit" fi +########################## +# Setups + +__download(){ + # download + if type wget >/dev/null 2>&1 + then + wget "$1" -O "$2" + elif type curl >/dev/null 2>&1 + then + curl --url "$1" --output "$2" + fi +} + +__mysetup_fetch_script(){ + url="$1" + name="$2" + type "$name" >/dev/null 2>&1 || { + __download "$url" "$HOME/.local/bin/$name" && + chmod u+x "$HOME/.local/bin/$name" + } +} + +__mysetup_darwin_set_defaults(){ + isdarwin || return 1 + + # http://appdrill.net/60641/mac-boot-mute.html + #sudo nvram SystemAudioVolume=%80 + + # add quit entry in menu + defaults write com.apple.finder QuitMenuItem -bool YES + # show full path on titlebar + defaults write com.apple.finder _FXShowPosixPathInTitle -bool YES + # do not show desktop icons + defaults write com.apple.finder CreateDesktop -boolean false + + killall Finder + + # disable dashboard + #defaults write com.apple.dashboard mcx-disabled -bool YES +} + +__mysetup_darwin_start_daemon(){ + isdarwin || return 1 + + test "`launchctl getenv LC_ALL`" = C || sudo launchctl setenv LC_ALL C + if ! (launchctl list | grep com.apple.locate) >/dev/null + then + sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist + fi +} + +__mysetup_git_config(){ + if ! null type git + then + echo "git not found" + return 1 + fi + + _gitconfig="git config --global" + + $_gitconfig user.name '10sr' + $_gitconfig user.email '8slashes+git@gmail.com' + $_gitconfig core.autocrlf false + $_gitconfig core.excludesfile '~/.gitignore' + $_gitconfig color.ui auto + $_gitconfig status.relativePaths false + $_gitconfig status.showUntrackedFiles normal + $_gitconfig log.date iso + null type xz && \ + $_gitconfig tar.txz.command "xz -c" + $_gitconfig push.default current + + $_gitconfig alias.graph "log --graph --date-order -C -M --pretty=tformat:\"%C(green)%h%C(reset) %C(white)%ad%C(reset) %C(red)%an%C(reset)%C(yellow)%d%C(reset) %C(white bold)%s%C(reset)\" --all --date=iso -n 499" + $_gitconfig alias.st "status -s -b" + $_gitconfig alias.b "branch" + $_gitconfig alias.sb "show-branch" + $_gitconfig alias.ci "commit --verbose" + $_gitconfig alias.co "checkout" + $_gitconfig alias.cim "commit --verbose -m" + $_gitconfig alias.di "diff --color" + $_gitconfig alias.me "merge --no-ff --stat -v" + $_gitconfig alias.gr "grep -n" + $_gitconfig alias.ls "ls-files" + # $_gitconfig alias.ls "ls-files -v --full-name" + # $_gitconfig alias.ls "status -u -s ." + $_gitconfig alias.sl "!sl" + # $_gitconfig alias.my-ls "ls-files | xargs ls" + # $_gitconfig alias.ll "!git ls-files | xargs ls -l -CFG --color=auto --time-style=long-iso" + $_gitconfig alias.addi "add -i" + $_gitconfig alias.clean-p "!test -z \"\$(git status -s -uno)\"" + $_gitconfig alias.newb "checkout -b" + $_gitconfig alias.endb \ + "!sh -cx 'git stash && git checkout master && git merge --no-ff -'" + #$_gitconfig alias.wc "!git ls-files -z | xargs -0 wc" + # $_gitconfig push.default "simple" + if iswindows; then + $_gitconfig core.fileMode false + fi +} + +__mysetup_mkdirs(){ + install -d "$HOME/.local/bin" +} + +__mysetup(){ + __mysetup_mkdirs + __mysetup_fetch_script \ + https://gist.github.com/10sr/6852317/raw/colortable16.sh colortable16.sh + __mysetup_fetch_script \ + https://gist.github.com/10sr/6852331/raw/256colors2.pl 256colors2.pl + if isdarwin + then + __mysetup_darwin_set_defaults + __mysetup_darwin_start_daemon + fi +} + ####################### -# If not running interactively, don't do anything -# issourced || exit -isinteractive || return +if ! isinteractive +then + if test "$1" = setup + then + __mysetup + fi + exit 0 +fi ###################### # Print welcome messages @@ -776,12 +899,12 @@ di(){ } tb(){ - local datenum=`date +%Y%m%d-%H%M%S` - local tb="$HOME/.var/tb/$datenum" - mkdir -p "$tb" + __datenum=`date +%Y%m%d-%H%M%S` + __tb="$HOME/.var/tb/$__datenum" + install -d "$__tb" for file in "$@" do - mv -t "$tb" "$file" + mv -t "$__tb" "$file" done } @@ -794,7 +917,7 @@ mkcd(){ then echo "Dir \"$1\" already exists." else - mkdir -p "$1" + install -d "$1" echo "Dir \"$1\" created." fi cd "$1"