summaryrefslogtreecommitdiffstats
path: root/debian/completions/_0xFFFF
diff options
context:
space:
mode:
Diffstat (limited to 'debian/completions/_0xFFFF')
-rw-r--r--debian/completions/_0xFFFF163
1 files changed, 163 insertions, 0 deletions
diff --git a/debian/completions/_0xFFFF b/debian/completions/_0xFFFF
new file mode 100644
index 0000000..ee3d2a8
--- /dev/null
+++ b/debian/completions/_0xFFFF
@@ -0,0 +1,163 @@
+#compdef 0xFFFF
+
+flaglist=(
+ 'no-omap-wd[disable auto reboot by OMAP watchdog]'
+ 'no-ext-wd[disable auto reboot by external watchdog]'
+ 'no-lifeguard-reset[disable auto reboot by software lifeguard]'
+ 'serial-console[enable serial console]'
+ 'no-usb-timeout[disable usb timeout for flashing]'
+ 'sti-console[enable sti console]'
+ 'no-charging[disable battery charging]'
+ 'force-power-key[force omap boot reason to power key]'
+)
+
+typelist=(
+ 'xloader'
+ '2nd'
+ 'secondary'
+ 'kernel'
+ 'initfs'
+ 'rootfs'
+ 'mmc'
+ 'cmt-2nd'
+ 'cmt-algo'
+ 'cmt-mcusw'
+)
+
+devlist=(
+ 'SU-18'
+ 'RX-34'
+ 'RX-44'
+ 'RX-48'
+ 'RX-51'
+)
+
+_dev() {
+ _wanted devices expl 'device' \
+ compadd -S: "$@" $devlist
+}
+
+_hw() {
+ # cannot auto-complete hardware
+}
+
+_ver() {
+ # cannot auto-complete version
+}
+
+_type() {
+ compset -P "*:"
+ compset -P "*,"
+ _wanted types expl 'types' \
+ compadd -q -S: "$@" $typelist
+}
+
+_img() {
+ compset -P "*:"
+ compset -P "*%"
+ _files -q -S%
+}
+
+_0xFFFF() {
+ local context curcontext="$curcontext" state line state_descr val_args opt_args
+ typeset -A flags types
+
+ _arguments -C \
+ '-b[boot default or loaded kernel (default: no cmdline)]::' \
+ '-r[reboot device]' \
+ '-l[load kernel and initfs images to RAM]' \
+ '-f[flash all specified images]' \
+ '-c[cold flash 2nd and secondary image]' \
+ '-x[check for bad blocks on mtd device (default: all)]::' \
+ '-E[dump all device images to one fiasco image, see -t]:' \
+ '-e[dump all device images to directory, see -t (default: current)]:directory:' \
+ '-I[identify, show all information about device]' \
+ '-D[change root device]:device:((0\:flash 1\:mmc 2\:usb))' \
+ '-U[enable/disable USB host mode]:bool:((0\:disable 1\:enable))' \
+ '-R[enable/disable R&D mode]:bool:((0\:disable 1\:enable))' \
+ '-F[change R&D flags, flags are comma separated list]::flags:->flags' \
+ '-H[change HW revision]:revision' \
+ '-N[change NOLO version string]:version' \
+ '-K[change kernel version string]:version' \
+ '-T[change initfs version string]:version' \
+ '-S[change SW release version string]:version' \
+ '-C[change content eMMC version string]:version' \
+ '-M[specify fiasco image]:file' \
+ '*-m[specify normal image]:argument:->image' \
+ '-t[filter images by type]:types:->types' \
+ '-d[filter images by device]:device' \
+ '-w[filter images by HW revision]:hardware' \
+ '-u[unpack fiasco image to directory (default: current)]::directory:_files -/' \
+ '-g[generate fiasco image with SW rel version (default: no version)]:file:_files' \
+ '-i[identify images]' \
+ '-s[simulate, do not flash or write on disk]' \
+ '-n[disable hash, checksum and image type checking]' \
+ '-v[be verbose and noisy]' \
+ '-h[show this help message]'
+
+ case "$state" in
+ flags)
+ _values -s , "R&D flags" ${flaglist}
+ ;;
+ types)
+ _values -s , "Types" ${typelist}
+ ;;
+ image)
+ #arg is [[[dev:[hw:]]ver:]type:]file[%lay]
+ local hasdev=false hastype=false
+
+ PARTS=`echo $PREFIX | grep -o : | wc -l`
+ if [[ "$PARTS" != "0" ]] ; then
+ for p in `seq $PARTS` ; do
+ part=`echo $PREFIX | cut -d : -f $p`
+ IFS=" "
+ for d in $devlist ; do
+ if [[ "$part" == "$d" ]] ; then
+ hasdev=true;
+ fi
+ done
+ for t in $typelist ; do
+ # comma separated list
+ echo "$part" | grep -q "$t"
+ if [ $? -eq 0 ] ; then
+ hastype=true;
+ fi
+ done
+ done
+ fi
+
+ if [[ "$PARTS" == "0" ]] ; then
+ _alternative \
+ 'devices:device:_dev' \
+ 'version:ver:_ver' \
+ 'types:type:_type' \
+ 'files:file:_img'
+ elif [[ "$hastype" == "true" ]] ; then
+ _alternative \
+ 'files:file:_img'
+ elif [[ "$PARTS" == "1" && "$hasdev" == "true" ]] ; then
+ _alternative \
+ 'hardware:hw:_hw' \
+ 'version:ver:_ver' \
+ 'types:type:_type' \
+ 'files:file:_img'
+ elif [[ "$PARTS" == "1" ]] ; then
+ _alternative \
+ 'types:type:_type' \
+ 'files:file:_img'
+ elif [[ "$PARTS" == "2" && "$hasdev" == "true" ]] ; then
+ _alternative \
+ 'version:ver:_ver' \
+ 'types:type:_type' \
+ 'files:file:_img'
+ elif [[ "$PARTS" == "3" ]] ; then
+ _alternative \
+ 'types:type:_type' \
+ 'files:file:_img'
+ fi
+ ;;
+ esac
+
+}
+
+_0xFFFF "$@"