File: completion.bash

package info (click to toggle)
btrbk 0.32.6-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 596 kB
  • sloc: perl: 6,077; sh: 722; python: 201; makefile: 142
file content (133 lines) | stat: -rw-r--r-- 2,884 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
_btrbk_init_cmds()
{
  # set $cmds to an array of the commands so far
  #
  # for example, for this command:
  #
  #     btrbk -v --override warn_unknown_targets=yes list config --long
  #
  # then $cmds is:
  #
  #     cmds=(list config)
  #
  cmds=()

  local i
  for ((i = 1; i < cword; i++)); do
    case "${words[i-1]}" in
      '-c' | '--config' | '--exclude' | '-l' | '--loglevel' | '--format' | '--lockfile' | '--override')
        continue
        ;;
    esac
    [[ ${words[i]} != -* ]] && cmds+=(${words[i]})
  done

  return 0
}

_btrbk()
{
  local cur prev words cword split cmds
  _init_completion -s || return
  _btrbk_init_cmds || return

  case "$prev" in
    '-c' | '--config')
      _filedir
      return
      ;;
    '--exclude')
      return
      ;;
    '-l' | '--loglevel')
      COMPREPLY=($(compgen -W 'error warn info debug trace' -- "$cur"))
      return
      ;;
    '--format')
      COMPREPLY=($(compgen -W 'table long raw' -- "$cur"))
      return
      ;;
    '--lockfile')
      _filedir
      return
      ;;
    '--override')
      return
      ;;
  esac

  $split && return

  if [[ $cur == -* ]]; then
    COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur"))
    [[ $COMPREPLY == *= ]] && compopt -o nospace
  else
    if [[ ! -v 'cmds[0]' ]]; then
      COMPREPLY=($(compgen -W 'run dryrun snapshot resume prune archive clean stats list usage origin diff extents ls' -- "$cur"))
    fi
  fi

  case "${cmds[0]}" in
    'archive')
      # <source>
      if [[ ! -v 'cmds[1]' ]]; then
        _filedir -d
      # <target>
      elif [[ ! -v 'cmds[2]' ]]; then
        _filedir -d
      # [--raw]
      elif [[ $cur == -* ]]; then
        COMPREPLY+=($(compgen -W '--raw' -- "$cur"))
      fi
      ;;
    'list')
      if [[ ! -v 'cmds[1]' ]]; then
        COMPREPLY=($(compgen -W 'all snapshots backups latest config source volume target' -- "$cur"))
      fi
      ;;
    'origin')
      # <subvolume>
      if [[ ! -v 'cmds[1]' ]]; then
        _filedir -d
      fi
      ;;
    'ls')
      # <path>|<url>...
      _filedir -d
      ;;
    'extents')
      # [diff] <path>... [exclusive] <path>...
      if [[ ! -v 'cmds[1]' ]]; then
          COMPREPLY+=($(compgen -W 'diff' -- "$cur"))
      elif [[ ! ${cmds[*]} =~ (^|[[:space:]])"exclusive"($|[[:space:]]) ]]; then
          COMPREPLY+=($(compgen -W 'exclusive' -- "$cur"))
      fi
      _filedir -d
      ;;
  esac
} && complete -F _btrbk btrbk

_lsbtr()
{
  local cur prev words cword split
  _init_completion -s || return

  case "$prev" in
    '-c' | '--config')
      _filedir
      ;;
    '--override')
      ;;
  esac
  $split && return

  if [[ $cur == -* ]]; then
    COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur"))
    [[ $COMPREPLY == *= ]] && compopt -o nospace
  else
    # <path>|<url>...
    _filedir -d
  fi
} && complete -F _lsbtr lsbtr

# ex: filetype=bash