Skip to content

Commit

Permalink
Merge branch 'sg/completion-config'
Browse files Browse the repository at this point in the history
Code clean-up for completion script (in contrib/).

* sg/completion-config:
  completion: simplify query for config variables
  completion: add a helper function to get config variables
  • Loading branch information
Junio C Hamano committed May 22, 2015
2 parents faa4b2e + 12bdc88 commit 935d937
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 24 deletions.
38 changes: 14 additions & 24 deletions contrib/completion/git-completion.bash
Original file line number Diff line number Diff line change
Expand Up @@ -739,30 +739,25 @@ __git_compute_porcelain_commands ()
__git_porcelain_commands=$(__git_list_porcelain_commands)
}

# Lists all set config variables starting with the given section prefix,
# with the prefix removed.
__git_get_config_variables ()
{
local section="$1" i IFS=$'\n'
for i in $(git --git-dir="$(__gitdir)" config --get-regexp "^$section\..*" 2>/dev/null); do
i="${i#$section.}"
echo "${i/ */}"
done
}

__git_pretty_aliases ()
{
local i IFS=$'\n'
for i in $(git --git-dir="$(__gitdir)" config --get-regexp "pretty\..*" 2>/dev/null); do
case "$i" in
pretty.*)
i="${i#pretty.}"
echo "${i/ */}"
;;
esac
done
__git_get_config_variables "pretty"
}

__git_aliases ()
{
local i IFS=$'\n'
for i in $(git --git-dir="$(__gitdir)" config --get-regexp "alias\..*" 2>/dev/null); do
case "$i" in
alias.*)
i="${i#alias.}"
echo "${i/ */}"
;;
esac
done
__git_get_config_variables "alias"
}

# __git_aliased_command requires 1 argument
Expand Down Expand Up @@ -2260,12 +2255,7 @@ _git_remote ()
__git_complete_remote_or_refspec
;;
update)
local i c='' IFS=$'\n'
for i in $(git --git-dir="$(__gitdir)" config --get-regexp "remotes\..*" 2>/dev/null); do
i="${i#remotes.}"
c="$c ${i/ */}"
done
__gitcomp "$c"
__gitcomp "$(__git_get_config_variables "remotes")"
;;
*)
;;
Expand Down
34 changes: 34 additions & 0 deletions t/t9902-completion.sh
Original file line number Diff line number Diff line change
Expand Up @@ -370,6 +370,40 @@ test_expect_success '__git_remotes - list remotes from $GIT_DIR/remotes and from
test_cmp expect actual
'

test_expect_success '__git_get_config_variables' '
cat >expect <<-EOF &&
name-1
name-2
EOF
test_config interesting.name-1 good &&
test_config interesting.name-2 good &&
test_config subsection.interesting.name-3 bad &&
__git_get_config_variables interesting >actual &&
test_cmp expect actual
'

test_expect_success '__git_pretty_aliases' '
cat >expect <<-EOF &&
author
hash
EOF
test_config pretty.author "%an %ae" &&
test_config pretty.hash %H &&
__git_pretty_aliases >actual &&
test_cmp expect actual
'

test_expect_success '__git_aliases' '
cat >expect <<-EOF &&
ci
co
EOF
test_config alias.ci commit &&
test_config alias.co checkout &&
__git_aliases >actual &&
test_cmp expect actual
'

test_expect_success 'basic' '
run_completion "git " &&
# built-in
Expand Down

0 comments on commit 935d937

Please sign in to comment.