_dnote 814 Bytes
Newer Older
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
#compdef dnote

local -a _1st_arguments

_1st_arguments=(
  'add:add a new note'
  'view:list books, notes, or view a content'
  'edit:edit a note or a book'
  'remove:remove a note or a book'
  'find:find notes by keywords'
  'sync:sync data with the server'
  'login:login to the dnote server'
  'logout:logout from the dnote server'
  'version:print the current version'
  'help:get help about any command'
)

get_booknames() {
  local names=$(dnote view --name-only)
  local -a ret

  while read -r line; do
    ret+=("${line}")
  done <<< "$names"

  echo "$ret"
}

if (( CURRENT == 2 )); then
  _describe -t commands "dnote subcommand" _1st_arguments
  return
elif (( CURRENT == 3 )); then
  case "$words[2]" in
    v|view|a|add)
      _alternative \
        "names:book names:($(get_booknames))"
  esac
fi