# Copyright (c) 2016 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.


# This adds completion to bash shells for git cl commands. It is
# meant for developers and not needed for inclusion by any automated
# processes that will, of course, specify the full command, not rely
# on or benefit from tab-completion.
#
# Requires:
#   Installed git bash completion.
#
# Usage:
#   Put something like the following in your .bashrc:
#   . $PATH_TO_DEPOT_TOOLS/git cl_completion.sh
#


# Parses commands from git cl -h.
__git_cl_commands () {
  git cl -h 2> /dev/null | sed -n 's/^\s*\x1b\[32m\(.*\)\x1b\[39m.*$/\1/p'
}

# Caches variables in __git_cl_all_commands.
__git_cl_compute_all_commands () {
  test -n "$__git_cl_all_commands" ||
  __git_cl_all_commands="$(__git_cl_commands)"
}

_git_cl () {
  __git_cl_compute_all_commands
  __gitcomp_nl "${__git_cl_all_commands}"
}

# Copyright (c) 2016 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.


# This adds completion to bash shells for git cl commands. It is
# meant for developers and not needed for inclusion by any automated
# processes that will, of course, specify the full command, not rely
# on or benefit from tab-completion.
#
# Requires:
#   Installed git bash completion.
#
# Usage:
#   Put something like the following in your .bashrc:
#   . $PATH_TO_DEPOT_TOOLS/git cl_completion.sh
#


# Parses commands from git cl -h.
__git_cl_commands () {
  git cl -h 2> /dev/null | sed -n 's/^\s*\x1b\[32m\(\S\+\)\s*\x1b\[39m.*$/\1/p'
}

# Caches variables in __git_cl_all_commands.
__git_cl_compute_all_commands () {
  test -n "$__git_cl_all_commands" ||
  __git_cl_all_commands="$(__git_cl_commands)"
}

_git_cl () {
  __git_cl_compute_all_commands
  __gitcomp_nl "${__git_cl_all_commands}"
}

Fix extra spaces in git cl completion
Fix extra spaces in git cl completion

The commands come from the output of git cl -h, which then goes through
an sed filter, matching on the ANSI escape sequence for green and reset.
This ends up having extra spaces, since the output aligns the
subcommands based on the longest subcommand. For shorter commands like
archive, it becomes "archive   ". So, tweak the sed regex to only
capture the part without the whitespaces.

Change-Id: I80a84f142520478547895f85def68331575fdd72
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/2209582
Reviewed-by: Edward Lesmes <d05609f027dc667cc37492b1dc1bdea5d60fa82a@chromium.org>
Commit-Queue: Zhi An Ng <67792871e9494a9fc86946b9fceac1cd676eefa3@chromium.org>
