File: pidcat

package info (click to toggle)
pidcat 2.1.0-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 864 kB
  • ctags: 73
  • sloc: python: 284; makefile: 13
file content (73 lines) | stat: -rw-r--r-- 2,019 bytes parent folder | download | duplicates (6)
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

function _pidcat()
{
  local cur prev opts cmds c subcommand device_selected
  COMPREPLY=()
  cur="${COMP_WORDS[COMP_CWORD]}"
  prev="${COMP_WORDS[COMP_CWORD-1]}"
  prevprev="${COMP_WORDS[COMP_CWORD-2]}"
  opts="-d -e -h -l -s -w
        --always-display-tags --color-gc --device --emulator --help --min-level
        --serial --tag-width"
  device_selected=""

  # if there are multiple devices plugged in, prompt the user to specify which
  # so that the list of installed packaged can be fetched from the device

  case "${prev}" in
      -d|-e|--device|--emulator)
          device_selected="${prev}"
          ;;
  esac

  # use device set by serial number
  case "${prevprev}" in
      -s|--serial)
          device_selected="-s ${prev}"
          ;;
  esac

  if [ -z "$device_selected" ]; then
      local num_devices=$(( $(adb devices 2>/dev/null|wc -l) - 2 ))
      if [ "$num_devices" -gt "1" ]; then
          # With multiple devices, you must choose a device first.
          COMPREPLY=( $(compgen -W "-d -e -s --device --emulator --serial" -- ${cur}) )
          return 0
      fi
  fi

  case "${cur}" in
      -*)
          COMPREPLY=( $(compgen -W "$opts" -- ${cur}) )
          return 0
          ;;
  esac

  case "${prev}" in
      -l|--min-level)
          COMPREPLY=( $(compgen -W "V D I W E F" -- ${cur}) )
          return 0;
          ;;
      -s|--serial)
          if [ -z "$device_selected" ]; then
              # Use 'adb devices' to list serial numbers.
              COMPREPLY=( $(compgen -W "$(adb devices|grep 'device$'|cut -f1)" -- ${cur} ) )
              return 0
          fi
          ;;
  esac

  # if we can get the package names, then use those
  local apks=$(adb $device_selected shell ls /data/data 2>/dev/null | tr '\n' ' ' | tr -d '\r')
  COMPREPLY=( $(compgen -W "$apks" -- ${cur}) )
  return 0
}
complete -F _pidcat pidcat

# Local variables:
# mode: shell-script
# sh-basic-offset: 4
# sh-indent-comment: t
# indent-tabs-mode: nil
# End:
# ex: ts=4 sw=4 et filetype=sh