# 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_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\(.*\)\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)"
}

Use cached variable for git cl completion
Use cached variable for git cl completion

__git_cl_all_commands is used to cache the result of
__git_cl_commands(), but the actual code wasn't using it and was calling
the function everytime instead.

Change-Id: Ia2ce32b7de2812349808ec9aceeacf5adf463700
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/2190337
Reviewed-by: Andrii Shyshkalov <a30c74fa30536fe7ea81ed6dec202e35e149e1fd@google.com>
Reviewed-by: Aaron Gable <bbed39beedae4cdb499af742d2fcd6c63934d93b@chromium.org>
Commit-Queue: Henrique Ferreiro <da177ab24dff8a8c938f5215e3f94826d48bac0e@igalia.com>
