diff --git a/lib/git/aliases.sh b/lib/git/aliases.sh index 6003a48..c0bbf3d 100644 --- a/lib/git/aliases.sh +++ b/lib/git/aliases.sh @@ -37,7 +37,7 @@ function git(){ esac } -_alias $git_alias='git' +_alias "$git_alias" "git" # -------------------------------------------------------------------- @@ -75,80 +75,82 @@ __git_alias () { # -------------------------------------------------------------------- # SCM Breeze functions -_alias $git_status_shortcuts_alias="git_status_shortcuts" -_alias $git_add_shortcuts_alias="git_add_shortcuts" -_alias $exec_scmb_expand_args_alias="exec_scmb_expand_args" -_alias $git_show_files_alias="git_show_affected_files" -_alias $git_commit_all_alias='git_commit_all' +_alias "$git_status_shortcuts_alias" 'git_status_shortcuts' +_alias "$git_add_shortcuts_alias" 'git_add_shortcuts' +_alias "$exec_scmb_expand_args_alias" 'exec_scmb_expand_args' +_alias "$git_show_files_alias" 'git_show_affected_files' +_alias "$git_commit_all_alias" 'git_commit_all' # Git Index alias -_alias $git_index_alias="git_index" +_alias "$git_index_alias" 'git_index' # Only set up the following aliases if 'git_setup_aliases' is 'yes' if [ "$git_setup_aliases" = "yes" ]; then # Commands that deal with paths - __git_alias "$git_checkout_alias" "git" "checkout" - __git_alias "$git_commit_alias" "git" "commit" - __git_alias "$git_commit_verbose_alias" "git" "commit" "--verbose" - __git_alias "$git_reset_alias" "git" "reset" "--" - __git_alias "$git_reset_hard_alias" "git" "reset" "--hard" - __git_alias "$git_rm_alias" "git" "rm" - __git_alias "$git_blame_alias" "git" "blame" - __git_alias "$git_diff_alias" "git" "diff" "--" - __git_alias "$git_diff_word_alias" "git" "diff" "--word-diff" - __git_alias "$git_diff_cached_alias" "git" "diff" "--cached --" - __git_alias "$git_add_patch_alias" "git" "add" "-p" - __git_alias "$git_add_updated_alias" "git" "add" "-u" - __git_alias "$git_difftool_alias" "git" "difftool" + __git_alias "$git_checkout_alias" 'git' 'checkout' + __git_alias "$git_commit_alias" 'git' 'commit' + __git_alias "$git_commit_verbose_alias" 'git' 'commit' '--verbose' + __git_alias "$git_reset_alias" 'git' 'reset' '--' + __git_alias "$git_reset_hard_alias" 'git' 'reset' '--hard' + __git_alias "$git_rm_alias" 'git' 'rm' + __git_alias "$git_blame_alias" 'git' 'blame' + __git_alias "$git_diff_alias" 'git' 'diff' '--' + __git_alias "$git_diff_word_alias" 'git' 'diff' '--word-diff' + __git_alias "$git_diff_cached_alias" 'git' 'diff' '--cached --' + __git_alias "$git_add_patch_alias" 'git' 'add' '-p' + __git_alias "$git_add_updated_alias" 'git' 'add' '-u' + __git_alias "$git_difftool_alias" 'git' 'difftool' + # Custom default format for git log git_log_command="log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit" - __git_alias "$git_log_alias" "git" "$git_log_command" + __git_alias "$git_log_alias" 'git' "$git_log_command" # Same as the above, but displays all the branches and remotes - __git_alias "$git_log_all_alias" "git" "$git_log_command" "--branches" "--remotes" + __git_alias "$git_log_all_alias" 'git' "$git_log_command" '--branches' '--remotes' # Standard commands - __git_alias "$git_clone_alias" "git" 'clone' - __git_alias "$git_fetch_alias" "git" 'fetch' - __git_alias "$git_checkout_branch_alias" "git" 'checkout' "-b" - __git_alias "$git_pull_alias" "git" 'pull' - __git_alias "$git_push_alias" "git" 'push' - __git_alias "$git_push_force_alias" "git" 'push' '-f' - __git_alias "$git_status_original_alias" "git" 'status' # (Standard git status) - __git_alias "$git_status_short_alias" "git" 'status' '-s' - __git_alias "$git_clean_alias" "git" "clean" - __git_alias "$git_clean_force_alias" "git" "clean" "-fd" - __git_alias "$git_remote_alias" "git" 'remote' '-v' - __git_alias "$git_rebase_alias" "git" 'rebase' - __git_alias "$git_rebase_interactive_alias" "git" 'rebase' "-i" - __git_alias "$git_rebase_alias_continue" "git" 'rebase' "--continue" - __git_alias "$git_rebase_alias_abort" "git" 'rebase' "--abort" - __git_alias "$git_reset_last_commit" "git" "reset HEAD~" - __git_alias "$git_merge_alias" "git" 'merge' - __git_alias "$git_merge_no_fast_forward_alias" "git" "merge" "--no-ff" - __git_alias "$git_merge_only_fast_forward_alias" "git" "merge" "--ff" - __git_alias "$git_cherry_pick_alias" "git" 'cherry-pick' - __git_alias "$git_show_alias" "git" 'show' - __git_alias "$git_show_summary" "git" 'show' '--summary' - __git_alias "$git_stash_alias" "git" 'stash' - __git_alias "$git_stash_apply_alias" "git" 'stash' 'apply' - __git_alias "$git_stash_pop_alias" "git" 'stash' 'pop' - __git_alias "$git_stash_list_alias" "git" 'stash' 'list' - __git_alias "$git_tag_alias" "git" 'tag' + __git_alias "$git_clone_alias" 'git' 'clone' + __git_alias "$git_fetch_alias" 'git' 'fetch' + __git_alias "$git_checkout_branch_alias" 'git' 'checkout' '-b' + __git_alias "$git_pull_alias" 'git' 'pull' + __git_alias "$git_push_alias" 'git' 'push' + __git_alias "$git_push_force_alias" 'git' 'push' '-f' + __git_alias "$git_status_original_alias" 'git' 'status' # (Standard git status) + __git_alias "$git_status_short_alias" 'git' 'status' '-s' + __git_alias "$git_clean_alias" 'git' 'clean' + __git_alias "$git_clean_force_alias" 'git' 'clean' '-fd' + __git_alias "$git_remote_alias" 'git' 'remote' '-v' + __git_alias "$git_rebase_alias" 'git' 'rebase' + __git_alias "$git_rebase_interactive_alias" 'git' 'rebase' '-i' + __git_alias "$git_rebase_alias_continue" 'git' 'rebase' '--continue' + __git_alias "$git_rebase_alias_abort" 'git' 'rebase' '--abort' + __git_alias "$git_reset_last_commit" 'git' 'reset HEAD~' + __git_alias "$git_merge_alias" 'git' 'merge' + __git_alias "$git_merge_no_fast_forward_alias" 'git' 'merge' '--no-ff' + __git_alias "$git_merge_only_fast_forward_alias" 'git' 'merge' '--ff' + __git_alias "$git_cherry_pick_alias" 'git' 'cherry-pick' + __git_alias "$git_show_alias" 'git' 'show' + __git_alias "$git_show_summary" 'git' 'show' '--summary' + __git_alias "$git_stash_alias" 'git' 'stash' + __git_alias "$git_stash_apply_alias" 'git' 'stash' 'apply' + __git_alias "$git_stash_pop_alias" 'git' 'stash' 'pop' + __git_alias "$git_stash_list_alias" 'git' 'stash' 'list' + __git_alias "$git_tag_alias" 'git' 'tag' # Compound/complex commands - _alias $git_fetch_all_alias="git fetch --all" - _alias $git_pull_then_push_alias="git pull && git push" - _alias $git_fetch_and_rebase_alias='git fetch && git rebase' - _alias $git_commit_amend_alias='git commit --amend' + _alias "$git_fetch_all_alias" 'git fetch --all' + _alias "$git_pull_then_push_alias" 'git pull && git push' + _alias "$git_fetch_and_rebase_alias" 'git fetch && git rebase' + _alias "$git_commit_amend_alias" 'git commit --amend' + # Add staged changes to latest commit without prompting for message - _alias $git_commit_amend_no_msg_alias='git commit --amend -C HEAD' - _alias $git_commit_no_msg_alias='git commit -C HEAD' - _alias $git_log_stat_alias='git log --stat --max-count=5' - _alias $git_log_graph_alias='git log --graph --max-count=5' - _alias $git_add_all_alias='git add --all .' + _alias "$git_commit_amend_no_msg_alias" 'git commit --amend -C HEAD' + _alias "$git_commit_no_msg_alias" 'git commit -C HEAD' + _alias "$git_log_stat_alias" 'git log --stat --max-count=5' + _alias "$git_log_graph_alias" 'git log --graph --max-count=5' + _alias "$git_add_all_alias" 'git add --all .' fi @@ -168,4 +170,3 @@ if [ $shell = "bash" ]; then else compdef _git_index_tab_completion git_index $git_index_alias fi - diff --git a/lib/scm_breeze.sh b/lib/scm_breeze.sh index 59e4548..2c692bb 100644 --- a/lib/scm_breeze.sh +++ b/lib/scm_breeze.sh @@ -10,7 +10,13 @@ enable_nullglob() { if [ $shell = "zsh" ]; then setopt NULL_GLOB; else shopt disable_nullglob() { if [ $shell = "zsh" ]; then unsetopt NULL_GLOB; else shopt -u nullglob; fi; } # Alias wrapper that ignores errors if alias is not defined. -_alias(){ alias "$@" 2> /dev/null; } +_safe_alias(){ alias "$@" 2> /dev/null; } +_alias() { + if [ -n "$1" ]; then + local alias_str="$1"; local cmd="$2" + _safe_alias $alias_str="$cmd" + fi +} find_binary(){ if [ $shell = "zsh" ]; then