#compdef _repo repo

# Copyright (C) 2026 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

_repo() {
  local context state line
  typeset -A opt_args

  local -a subcommands
  subcommands=(
    'abandon:Abandon a development branch'
    'branches:View current topic branches'
    'checkout:Checkout a branch'
    'cherry-pick:Cherry-pick a change'
    'diff:Show changes between commit and working tree'
    'diffmanifests:Show differences between two manifests'
    'download:Download and find a change'
    'forall:Run a shell command in each project'
    'gc:Garbage collect'
    'grep:Print lines matching a pattern'
    'help:Display help about a command'
    'info:Get info about the manifest'
    'init:Initialize a repo client'
    'list:List projects and their names'
    'manifest:Manifest management'
    'overview:Display overview of topic branches'
    'prune:Prune topic branches'
    'rebase:Rebase local branches'
    'selfupdate:Update repo'
    'smartsync:Update working tree to latest known good revision'
    'stage:Stage file(s) for commit'
    'start:Start a new branch for development'
    'status:Show the working tree status'
    'sync:Update working tree'
    'upload:Upload changes to the review server'
    'version:Display version'
    'wipe:Wipe uncommitted changes'
  )

  local -a global_opts
  global_opts=(
    '(-h --help)'{-h,--help}'[Show help message]'
    '--help-all[Show help message for all commands]'
    '(-p --paginate)'{-p,--paginate}'[Pipe all output into less]'
    '--no-pager[Do not pipe output into a pager]'
    '--color=[Control color output]:color:(always never auto)'
    '--trace[Trace git command execution]'
    '--trace-to-stderr[Trace git command execution to stderr]'
    '--trace-python[Trace python execution]'
    '--time[Time execute of command]'
    '--version[Show version]'
    '--show-toplevel[Show top level of workspace]'
    '--event-log=[File to log events to]:file:_files'
    '--git-trace2-event-log=[File to log git trace2 events to]:file:_files'
    '--submanifest-path=[Path to submanifest]:path:_files'
  )

  _arguments -C \
    ${global_opts} \
    '1: :->cmds' \
    '*:: :->subcmds'

  case ${state} in
  cmds)
    _describe -t commands 'repo command' subcommands
    ;;
  subcmds)
    local cmd=${words[1]}
    curcontext="${curcontext%:*}-${cmd}:"

    local -a common_opts
    common_opts=(
      '(-h --help)'{-h,--help}'[Show help message]'
      '(-v --verbose)'{-v,--verbose}'[Show verbose messages]'
      '(-q --quiet)'{-q,--quiet}'[Show only errors]'
      '(-j --jobs)'{-j,--jobs=}'[Number of jobs to run in parallel]:jobs:'
      '--outer-manifest[Use outer manifest]'
      '--no-outer-manifest[Do not use outer manifest]'
      '--this-manifest-only[Only use this manifest]'
      '--no-this-manifest-only[Do not only use this manifest]'
      '--all-manifests[Use all manifests]'
    )

    case ${cmd} in
    abandon)
      _arguments \
        ${common_opts} \
        '--all[Abandon all branches]' \
        '1: :->branch' \
        '*: :->project'
      ;;
    branches)
      _arguments \
        ${common_opts} \
        '*: :->project'
      ;;
    checkout)
      _arguments \
        ${common_opts} \
        '1: :->branch' \
        '*: :->project'
      ;;
    cherry-pick)
      _arguments \
        ${common_opts} \
        '1: :_message "sha1"'
      ;;
    diff)
      _arguments \
        ${common_opts} \
        '(-u --absolute)'{-u,--absolute}'[Show absolute paths]' \
        '*: :->project'
      ;;
    diffmanifests)
      _arguments \
        '--raw[Show raw diff]' \
        '--no-color[Do not show color]' \
        '--pretty-format=[Pretty format]:format:' \
        '1: :_files -g "*.xml"' \
        '2: :_files -g "*.xml"'
      ;;
    download)
      _arguments \
        ${common_opts} \
        '(-b --branch)'{-b,--branch=}'[One or more branches to check]:branch:' \
        '(-c --cherry-pick)'{-c,--cherry-pick}'[Cherry-pick the change]' \
        '(-x --record-origin)'{-x,--record-origin}'[Record origin of cherry-pick]' \
        '(-r --revert)'{-r,--revert}'[Revert the change]' \
        '(-f --ff-only)'{-f,--ff-only}'[Force fast-forward]' \
        '*: :_message "change[/patchset]"'
      ;;
    forall)
      _arguments \
        ${common_opts} \
        '(-r --regex)'{-r,--regex}'[Execute command only on projects matching regex]' \
        '(-i --inverse-regex)'{-i,--inverse-regex}'[Execute command only on projects not matching regex]' \
        '(-g --groups)'{-g,--groups=}'[Execute command only on projects matching groups]:groups:' \
        '(-c --command)'{-c,--command}'[Command to execute]' \
        '(-e --abort-on-errors)'{-e,--abort-on-errors}'[Abort on errors]' \
        '--ignore-missing[Ignore missing projects]' \
        '--interactive[Run interactively]' \
        '-p[Show project headers]' \
        '*: :->project'
      ;;
    gc)
      _arguments \
        ${common_opts} \
        '(-n --dry-run)'{-n,--dry-run}'[Dry run]' \
        '(-y --yes)'{-y,--yes}'[Answer yes to all prompts]' \
        '--repack[Repack objects]'
      ;;
    grep)
      _arguments \
        ${common_opts} \
        '--cached[Search cached files]' \
        '(-r --revision)'{-r,--revision=}'[Search in revision]:revision:' \
        '-e[Pattern]' \
        '(-i --ignore-case)'{-i,--ignore-case}'[Ignore case]' \
        '(-a --text)'{-a,--text}'[Treat all files as text]' \
        '-I[Do not match binary files]' \
        '(-w --word-regexp)'{-w,--word-regexp}'[Match word boundaries]' \
        '(-v --invert-match)'{-v,--invert-match}'[Invert match]' \
        '(-G --basic-regexp)'{-G,--basic-regexp}'[Basic regexp]' \
        '(-E --extended-regexp)'{-E,--extended-regexp}'[Extended regexp]' \
        '(-F --fixed-strings)'{-F,--fixed-strings}'[Fixed strings]' \
        '--all-match[All match]' \
        '--and[And]' \
        '--or[Or]' \
        '--not[Not]' \
        '-([Open paren]' \
        '-)[Close paren]' \
        '-n[Line number]' \
        '-C[Context]:lines:' \
        '-B[Before context]:lines:' \
        '-A[After context]:lines:' \
        '-l[Name only]' \
        '--name-only[Name only]' \
        '--files-with-matches[Files with matches]' \
        '-L[Files without match]' \
        '--files-without-match[Files without match]' \
        '1: :->pattern' \
        '*: :->project'
      ;;
    help)
      _arguments \
        '(-a --all)'{-a,--all}'[Show all commands]' \
        '--help-all[Show help message for all commands]' \
        '1: :->help_cmds'
      ;;
    info)
      _arguments \
        ${common_opts} \
        '(-d --diff)'{-d,--diff}'[Show diff]' \
        '(-o --overview)'{-o,--overview}'[Show overview]' \
        '(-c --current-branch)'{-c,--current-branch}'[Show current branch]' \
        '--no-current-branch[Do not show current branch]' \
        '(-l --local-only)'{-l,--local-only}'[Local only]' \
        '*: :->project'
      ;;
    init)
      _arguments \
        '(-u --manifest-url)'{-u,--manifest-url=}'[Manifest URL]:url:' \
        '(-b --manifest-branch)'{-b,--manifest-branch=}'[Manifest branch]:branch:' \
        '--manifest-upstream-branch=[Manifest upstream branch]:branch:' \
        '(-m --manifest-name)'{-m,--manifest-name=}'[Manifest name]:file:_files -g "*.xml"' \
        '(-g --groups)'{-g,--groups=}'[Restrict manifest projects to groups]:groups:' \
        '(-p --platform)'{-p,--platform=}'[Restrict manifest projects to platform]:platform:' \
        '--submodules[Sync submodules]' \
        '--standalone-manifest[Standalone manifest]' \
        '--manifest-depth=[Manifest depth]:depth:' \
        '(-c --current-branch)'{-c,--current-branch}'[Sync current branch only]' \
        '--no-current-branch[Do not sync current branch only]' \
        '--tags[Sync tags]' \
        '--no-tags[Do not sync tags]' \
        '--mirror[Mirror]' \
        '--archive[Archive]' \
        '--worktree[Worktree]' \
        '--reference=[Reference repository]:repository:_files -/' \
        '--dissociate[Dissociate from reference]' \
        '--depth=[Depth]:depth:' \
        '--partial-clone[Partial clone]' \
        '--no-partial-clone[Do not partial clone]' \
        '--partial-clone-exclude=[Exclude from partial clone]:projects:' \
        '--clone-filter=[Clone filter]:filter:' \
        '--use-superproject[Use superproject]' \
        '--no-use-superproject[Do not use superproject]' \
        '--clone-bundle[Use clone bundle]' \
        '--no-clone-bundle[Do not use clone bundle]' \
        '--git-lfs[Use git lfs]' \
        '--no-git-lfs[Do not use git lfs]' \
        '--repo-url=[Repo URL]:url:' \
        '--repo-rev=[Repo revision]:revision:' \
        '--no-repo-verify[Do not verify repo]' \
        '--config-name[Use config name]'
      ;;
    list)
      _arguments \
        ${common_opts} \
        '(-r --regex)'{-r,--regex}'[Filter by regex]' \
        '(-g --groups)'{-g,--groups=}'[Filter by groups]:groups:' \
        '(-a --all)'{-a,--all}'[Show all projects]' \
        '(-n --name-only)'{-n,--name-only}'[Show only names]' \
        '(-p --path-only)'{-p,--path-only}'[Show only paths]' \
        '(-f --fullpath)'{-f,--fullpath}'[Show full paths]' \
        '--relative-to=[Show paths relative to]:path:_files -/' \
        '*: :->project'
      ;;
    manifest)
      _arguments \
        '(-r --revision-as-HEAD)'{-r,--revision-as-HEAD}'[Save revisions as current HEAD]' \
        '(-m --manifest-name)'{-m,--manifest-name=}'[Manifest name]:file:_files -g "*.xml"' \
        '--suppress-upstream-revision[Suppress upstream revision]' \
        '--suppress-dest-branch[Suppress dest branch]' \
        '--format=[Output format]:format:(xml json)' \
        '--pretty[Pretty print]' \
        '--no-local-manifests[Ignore local manifests]' \
        '(-o --output-file)'{-o,--output-file=}'[Output file]:file:_files'
      ;;
    overview)
      _arguments \
        ${common_opts} \
        '(-c --current-branch)'{-c,--current-branch}'[Show current branch]' \
        '--no-current-branch[Do not show current branch]' \
        '*: :->project'
      ;;
    prune)
      _arguments \
        ${common_opts} \
        '*: :->project'
      ;;
    rebase)
      _arguments \
        ${common_opts} \
        '--fail-fast[Fail fast]' \
        '(-f --force-rebase)'{-f,--force-rebase}'[Force rebase]' \
        '--no-ff[No fast forward]' \
        '--autosquash[Autosquash]' \
        '--whitespace=[Whitespace option]:option:' \
        '--auto-stash[Auto stash]' \
        '(-m --onto-manifest)'{-m,--onto-manifest}'[Rebase onto manifest]' \
        '(-i --interactive)'{-i,--interactive}'[Interactive rebase]' \
        '*: :->project'
      ;;
    selfupdate)
      _arguments \
        '--no-repo-verify[Do not verify repo]'
      ;;
    smartsync | sync)
      _arguments \
        ${common_opts} \
        '--jobs-network=[Number of network jobs]:jobs:' \
        '--jobs-checkout=[Number of checkout jobs]:jobs:' \
        '(-f --force-broken)'{-f,--force-broken}'[Continue sync even if a project fails]' \
        '--fail-fast[Fail fast]' \
        '--force-sync[Overwrite existing git directories]' \
        '--force-checkout[Force checkout]' \
        '--force-remove-dirty[Force remove dirty]' \
        '--rebase[Rebase local branches]' \
        '(-l --local-only)'{-l,--local-only}'[Only use local files]' \
        '--no-manifest-update[Do not update manifest]' \
        '--nmu[Do not update manifest]' \
        '--interleaved[Interleave output]' \
        '--no-interleaved[Do not interleave output]' \
        '(-n --network-only)'{-n,--network-only}'[Only fetch]' \
        '(-d --detach)'{-d,--detach}'[Detach HEAD]' \
        '(-c --current-branch)'{-c,--current-branch}'[Fetch only current branch]' \
        '--no-current-branch[Do not fetch only current branch]' \
        '(-m --manifest-name)'{-m,--manifest-name=}'[Manifest name]:file:_files -g "*.xml"' \
        '--clone-bundle[Use clone bundle]' \
        '--no-clone-bundle[Do not use clone bundle]' \
        '(-u --manifest-server-username)'{-u,--manifest-server-username=}'[Username for manifest server]:username:' \
        '(-p --manifest-server-password)'{-p,--manifest-server-password=}'[Password for manifest server]:password:' \
        '--recurse-submodules[Sync submodules]' \
        '--no-recurse-submodules[Do not sync submodules]' \
        '--fetch-submodules[Deprecated alias for --recurse-submodules]' \
        '--no-fetch-submodules[Deprecated alias for --no-recurse-submodules]' \
        '--use-superproject[Use superproject]' \
        '--no-use-superproject[Do not use superproject]' \
        '--tags[Sync tags]' \
        '--no-tags[Do not sync tags]' \
        '--optimized-fetch[Optimized fetch]' \
        '--retry-fetches=[Retry fetches]:count:' \
        '--prune[Prune]' \
        '--no-prune[Do not prune]' \
        '--auto-gc[Run auto gc]' \
        '--no-auto-gc[Do not run auto gc]' \
        '(-s --smart-sync)'{-s,--smart-sync}'[Smart sync]' \
        '(-t --smart-tag)'{-t,--smart-tag=}'[Smart tag]:tag:' \
        '--no-repo-verify[Do not verify repo]' \
        '--no-verify[Do not verify]' \
        '--verify[Verify]' \
        '--ignore-hooks[Ignore hooks]' \
        '*: :->project'
      ;;
    stage)
      _arguments \
        ${common_opts} \
        '(-i --interactive)'{-i,--interactive}'[Interactive staging]' \
        '*: :->project'
      ;;
    start)
      _arguments \
        ${common_opts} \
        '--all[Start branch in all projects]' \
        '(-r --rev --revision)'{-r,--rev=,--revision=}'[Revision]:revision:' \
        '--head[Head]' \
        '--HEAD[Head]' \
        '1: :->newbranch' \
        '*: :->project'
      ;;
    status)
      _arguments \
        ${common_opts} \
        '(-o --orphans)'{-o,--orphans}'[Show orphans]' \
        '*: :->project'
      ;;
    upload)
      _arguments \
        ${common_opts} \
        '(-t --topic-branch)'{-t,--topic-branch}'[Topic branch]' \
        '--topic=[Topic]:topic:' \
        '--hashtag=[Hashtag]:hashtag:' \
        '--ht=[Hashtag]:hashtag:' \
        '--hashtag-branch[Hashtag branch]' \
        '--htb[Hashtag branch]' \
        '(-l --label)'{-l,--label=}'[Label]:label:' \
        '--pd=[Patchset description]:description:' \
        '--patchset-description=[Patchset description]:description:' \
        '--re=[Reviewers]:reviewers:' \
        '--reviewers=[Reviewers]:reviewers:' \
        '--cc=[CC]:cc:' \
        '--br=[Branch]:branch:' \
        '--branch=[Branch]:branch:' \
        '(-c --current-branch)'{-c,--current-branch}'[Upload current branch]' \
        '--no-current-branch[Do not upload current branch]' \
        '--ne[No emails]' \
        '--no-emails[No emails]' \
        '(-p --private)'{-p,--private}'[Private]' \
        '(-w --wip)'{-w,--wip}'[Work in progress]' \
        '(-r --ready)'{-r,--ready}'[Ready]' \
        '(-o --push-option)'{-o,--push-option=}'[Push option]:option:' \
        '(-D --destination --dest)'{-D,--destination=,--dest=}'[Destination]:destination:' \
        '(-n --dry-run)'{-n,--dry-run}'[Dry run]' \
        '(-y --yes)'{-y,--yes}'[Answer yes to all prompts]' \
        '--ignore-untracked-files[Ignore untracked files]' \
        '--no-ignore-untracked-files[Do not ignore untracked files]' \
        '--no-cert-checks[Do not check certificates]' \
        '--no-verify[Do not verify]' \
        '--verify[Verify]' \
        '--ignore-hooks[Ignore hooks]' \
        '*: :->project'
      ;;
    version)
      _arguments ${common_opts}
      ;;
    wipe)
      _arguments \
        ${common_opts} \
        '(-f --force)'{-f,--force}'[Force wipe]' \
        '--force-uncommitted[Force uncommitted]' \
        '--force-shared[Force shared]' \
        '*: :->project'
      ;;
    esac

    # Handle states for positional arguments.
    case ${state} in
    branch)
      [[ ${PREFIX} != -* ]] && _repo_branches
      ;;
    project)
      [[ ${PREFIX} != -* ]] && _repo_projects
      ;;
    pattern)
      _message 'pattern'
      ;;
    newbranch)
      _message 'new branch name'
      ;;
    help_cmds)
      _describe -t commands 'repo command' subcommands
      ;;
    esac
    ;;
  esac
}

_repo_branches() {
  local -a branches
  branches=(${(f)"$(_call_program branches repo branches 2>/dev/null | sed -E 's/^.*[[:space:]]([^[:space:]]+)[[:space:]]+\|.*$/\1/' | awk '{print $1}')"})
  _describe -t branches 'branch' branches
}

_repo_projects() {
  local -a projects
  projects=(${(f)"$(_call_program projects repo list -n 2>/dev/null)"})
  _describe -t projects 'project' projects
}

_repo "$@"
