diff --git a/install.sh b/install.sh index 08f41db..111a94a 100755 --- a/install.sh +++ b/install.sh @@ -1,6 +1,9 @@ #!/bin/sh + +#locate the dir where this script is stored +export scmbDir="$(dirname "$0")" # This loads SCM Breeze into the shell session. -exec_string='[ -s "$HOME/.scm_breeze/scm_breeze.sh" ] && . "$HOME/.scm_breeze/scm_breeze.sh"' +exec_string="[ -s \"$scmbDir/scm_breeze.sh\" ]] && . \"$scmbDir/scm_breeze.sh\"" # Add line to bashrc and zshrc if not already present. for rc in bashrc zshrc; do @@ -11,7 +14,7 @@ for rc in bashrc zshrc; do done # Load SCM Breeze update scripts -. "$HOME/.scm_breeze/lib/scm_breeze.sh" +. "$scmbDir/lib/scm_breeze.sh" # Create '~/.*.scmbrc' files from example files _create_or_patch_scmbrc diff --git a/lib/git/aliases_and_bindings.sh b/lib/git/aliases_and_bindings.sh index abd7401..4b78d73 100644 --- a/lib/git/aliases_and_bindings.sh +++ b/lib/git/aliases_and_bindings.sh @@ -7,7 +7,7 @@ _alias $git_alias='git' # SCM Breeze functions _alias $git_status_shortcuts_alias="git_status_shortcuts" -_alias $git_add_shortcuts_alias="git_add_shorcuts" +_alias $git_add_shortcuts_alias="git_add_shortcuts" _alias $exec_git_expand_args_alias="exec_git_expand_args" _alias $git_show_files_alias="git_show_affected_files" _alias $git_commit_all_alias='git_commit_all' diff --git a/lib/git/status_shortcuts.sh b/lib/git/status_shortcuts.sh index 8a528f1..64a68f8 100644 --- a/lib/git/status_shortcuts.sh +++ b/lib/git/status_shortcuts.sh @@ -44,7 +44,7 @@ git_status_shortcuts() { # Should be used in conjunction with the git_status_shortcuts() function for 'git status'. # - 'auto git rm' behaviour can be turned off # ------------------------------------------------------------------------------- -git_add_shorcuts() { +git_add_shortcuts() { if [ -z "$1" ]; then echo "Usage: ga => git add " echo " ga 1 => git add \$e1" @@ -55,13 +55,13 @@ git_add_shorcuts() { echo " To turn off this behaviour, change the 'auto_remove' option." fi else - git_silent_add_shorcuts "$@" + git_silent_add_shortcuts "$@" # Makes sense to run 'git status' after this command. git_status_shortcuts fi } # Does nothing if no args are given. -git_silent_add_shorcuts() { +git_silent_add_shortcuts() { if [ -n "$1" ]; then # Expand args and process resulting set of files. for file in $(git_expand_args "$@"); do @@ -103,9 +103,7 @@ git_expand_args() { if [[ "$arg" =~ ^[0-9]+$ ]] ; then # Substitute $e{*} variables for any integers files="$files $(eval echo \$$git_env_char$arg)" elif [[ $arg =~ ^[0-9]+\.\.[0-9]+$ ]]; then # Expand ranges into $e{*} variables - for i in $(seq $(echo $arg | tr ".." " ")); do - files="$files $(eval echo \$$git_env_char$i)" - done + files="$files $(eval echo \$$git_env_char{$arg})" else # Otherwise, treat $arg as a normal string. # If arg contains any spaces, (re)wrap it in double quotes if echo $arg | grep -q " "; then arg="\"$arg\""; fi @@ -180,7 +178,7 @@ git_commit_all() { # Add paths or expanded args if any given, then commit all staged changes. git_add_and_commit() { - git_silent_add_shorcuts "$@" + git_silent_add_shortcuts "$@" changes=$(git diff --cached --numstat | wc -l) if [ "$changes" -gt 0 ]; then git_status_shortcuts 1 # only show staged changes diff --git a/lib/scm_breeze.sh b/lib/scm_breeze.sh index 2133003..f669309 100644 --- a/lib/scm_breeze.sh +++ b/lib/scm_breeze.sh @@ -30,7 +30,7 @@ _create_or_patch_scmbrc() { for scm in git; do # Create file from example if it doesn't already exist if ! [ -e "$HOME/.$scm.scmbrc" ]; then - cp "$HOME/.scm_breeze/$scm.scmbrc.example" "$HOME/.$scm.scmbrc" + cp "$scmbDir/$scm.scmbrc.example" "$HOME/.$scm.scmbrc" printf "== '~/.$scm.scmbrc' has been created. Please edit this file to change SCM Breeze settings for '$scm'.\n" # If file exists, attempt to update it with any new settings elif [ -n "$1" ]; then diff --git a/test/lib/git/status_shortcuts_test.sh b/test/lib/git/status_shortcuts_test.sh index ac8b819..1776a17 100755 --- a/test/lib/git/status_shortcuts_test.sh +++ b/test/lib/git/status_shortcuts_test.sh @@ -199,7 +199,7 @@ test_git_status_shortcuts_max_changes() { # Add 5 untracked files touch a b c d e git_status=$(git_status_shortcuts | strip_colors) - for i in $(seq 1 5); do + for i in {1..5}; do assertIncludes "$git_status" "\[$i\]" || return done @@ -212,13 +212,13 @@ test_git_status_shortcuts_max_changes() { } -test_git_add_shorcuts() { +test_git_add_shortcuts() { setupTestRepo touch a b c d e f g h i j # Show git status, which sets up env variables git_status_shortcuts > /dev/null - git_add_shorcuts 2..4 7 8 > /dev/null + git_add_shortcuts 2..4 7 8 > /dev/null git_status=$(git_status_shortcuts 1 | strip_colors) for c in b c d g h; do