Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- _fbcmd() {
- __msgbox() {
- text=`cat`
- NL="
- "
- w=`echo -ne "$text" | wc -L`
- h=`echo -ne "$text" | wc -l`
- x=$[ ( $COLUMNS - $w ) / 2 - 4 ]
- y=$[ ( $LINES - $h ) / 2 - 2 ]
- roof=`printf %${w}s " "`
- text=$roof$NL${roof// /=}$NL$text$NL${roof// /=}$NL$roof
- local IFS=$NL
- for line in $text; do
- if [ "$line" != "$roof" ]; then
- pre=" |"
- suf=`printf %$(( $w - ${#line} ))s ""`"| "
- else
- pre=" "
- suf=" "
- fi
- echo -ne "[s[${y};${x}H$pre$line$suf[u" >&2
- let y++
- done
- }
- local prevw curw gen flist
- local prev cur
- local prefix suffix
- local NL=$'\n'
- COMPREPLY=()
- prevw=${COMP_WORDS[COMP_CWORD-1]}
- curw=${COMP_WORDS[COMP_CWORD]}
- gen=
- flist=0
- if [ $COMP_CWORD = 1 ]; then
- curw=${curw^^*}
- gen="ADDALBUM ADDPERM ADDPIC ADDPICD ALBUMS ALLINFO APICS AUTH COMMENT DELPOST DISPLAY EVENTS FEED1 FEED2 FEEDLINK FEEDNOTE FEVENTS FGROUPS FINBOX FINFO FLAST FONLINE FPICS FQL FRIENDS FSTATUS FSTREAM FULLPOST GO HELP HOME INBOX LIKE LIMITS LOADDISP LOADINFO LOADNOTE MSG MUTUAL MYWALL NOTICES NOTIFY NSEND OPICS PINBOX POST PPICS PPOST RECENT RESET RESTATUS RSVP SAVEDISP SAVEINFO SAVEPREF SENTMAIL SFILTERS SHOWPERM SHOWPREF STATUS STREAM TAGPIC UFIELDS UPDATE USAGE VERSION WALLPOST WHOAMI"
- else
- case "${COMP_WORDS[1]}" in
- ADDPIC|ADDPICD)
- case $COMP_CWORD in
- 2)
- _get_comp_words_by_ref cur prev
- if [ "${COMP_WORDS[1]}" = "ADDPICD" ]; then
- _filedir -d
- else
- _filedir '@([jJ][pP]?([eE])[gG])'
- fi
- ;;
- 3)
- fbcmd ALBUMS | __msgbox
- ;;
- esac
- ;;
- ALBUMS|ALLINFO|FEVENTS|FGROUPS|FINBOX|FLAST|FONLINE|FPICS|FRIENDS|FSTATUS|FSTREAM|MUTUAL|NSEND|OPICS|PPICS|RECENT|WALLPOST)
- flist=1
- case "${COMP_WORDS[1]}" in
- FPICS|OPICS|PPICS)
- if [ $COMP_CWORD -eq 3 ]; then
- _get_comp_words_by_ref cur prev
- _filedir -d
- flist=0
- fi;;
- FSTREAM)
- if [ $COMP_CWORD -eq 3 ]; then
- gen="count new"
- flist=0
- fi;;
- RECENT)
- if [ $COMP_CWORD -eq 3 ]; then
- gen="count"
- flist=0
- fi;;
- esac
- ;;
- APICS)
- case $COMP_CWORD in
- 2)
- fbcmd ALBUMS | __msgbox
- ;;
- 3)
- _get_comp_words_by_ref cur prev
- _filedir -d
- ;;
- esac;;
- FINFO)
- case $COMP_CWORD in
- 2)
- gen="$(fbcmd UFIELDS | sed -ne '2,$p')"
- if expr "$curw" : ".*," 2>/dev/null >&2; then
- prefix="${curw%,*},"
- curw=${curw##*,}
- else
- prefix=
- fi
- #suffix=,
- COMPREPLY=($(compgen -P "$prefix" -S "$suffix" -W "$gen" -- $curw))
- ;;
- 3)
- flist=1
- ;;
- esac
- ;;
- FQL)
- # FIXME
- ;;
- GO)
- gen="access album app auth contribute editapps event faq github group help home inbox install link msg notice post stream update wall wiki"
- ;;
- INBOX|PINBOX|SENTMAIL)
- gen="count unread new"
- ;;
- MYWALL)
- gen="count new"
- ;;
- NOTICES)
- gen="unread markread"
- ;;
- LIMITS|NOTIFY|RESET|SFILTERS|SHOWPERM|UFIELDS|WHOAMI)
- # no parameter
- ;;
- POST)
- case $COMP_CWORD in
- 2)
- gen="IMG MP3 FLASH _message_";;
- *)
- case "${COMP_WORDS[2]}" in
- IMG)
- case $COMP_CWORD in
- 3) gen="_message_";;
- 4) gen="_img_src_";;
- 5) gen="_img_link_";;
- 6) gen="_name_";;
- 7) gen="_link_";;
- 8) gen="_caption_";;
- 9) gen="_description_";;
- esac;;
- MP3)
- case $COMP_CWORD in
- 3) gen="_message_";;
- 4) gen="_mp3_src_";;
- 5) gen="_title_";;
- 6) gen="_artist_";;
- 7) gen="_album_";;
- 8) gen="_name_";;
- 9) gen="_link_";;
- 10) gen="_caption_";;
- 11) gen="_description_";;
- esac;;
- FLASH)
- case $COMP_CWORD in
- 3) gen="_message_";;
- 4) gen="_swf_src_";;
- 5) gen="_img_src_";;
- 6) gen="_name_";;
- 7) gen="_link_";;
- 8) gen="_caption_";;
- 9) gen="_description_";;
- esac;;
- *)
- case $COMP_CWORD in
- 3) gen="_name_";;
- 4) gen="_link_";;
- 5) gen="_caption_";;
- 6) gen="_description_";;
- esac;;
- esac;;
- esac;;
- RSVP)
- case $COMP_CWORD in
- 2)
- fbcmd EVENTS | __msgbox
- ;;
- 3)
- gen="yes maybe no";;
- esac
- ;;
- STREAM)
- case $COMP_CWORD in
- 2)
- oldIFS="$IFS"
- IFS=$NL
- gen="$(fbcmd SFILTERS -csv | cut -f3 -d, | sed -ne 's/[ ]/\\\\&/g; 2,$s/^/\\\\#/p')" # FIXME: escape `#'
- COMPREPLY=($(compgen -W "$gen" -- ${curw//\\/\\\\}))
- IFS="$oldIFS"
- ;;
- 3)
- gen="count new";;
- esac
- ;;
- *)
- fbcmd | awk "/^[ ]*${COMP_WORDS[1]}/,/^$/" | __msgbox
- ;;
- esac
- if [ ."${curw::1}" = .- ]; then
- gen="-afile -asave -af -csvf -cfail -efile -edf -esave -emask -debug -fmask -gid -ch -fbr -fdf -fd -snip -tid -ff -key -msave -mfile \
- -mbr -mdf -md -nfile -nbr -ndf -nsave -nd -nid -idle -of -pdf -pr -prd -paid -pd -plink -psrc -psize -pskip -pfile -ppsize -pf \
- -bl -clean -pad -csv -hdr -wrap -cut -cols -q -cnew -id -stdf -std -tag -sbr -sdf -ssave -sap -satt -scom -sd -slikes -sid -t"
- fi
- fi
- if [ $flist -eq 1 ]; then
- if expr "$curw" : ".*," 2>/dev/null >&2; then
- prefix="${curw%,*},"
- curw=${curw##*,}
- else
- prefix=
- fi
- #suffix=,
- case "${curw:0:1}" in
- '=') gen="\=all \=me \=bday \=online \=pages"; gen="${gen// /$NL}";;
- '_') gen="$(fbcmd SFILTERS -csv | sed -ne '2,$p' | awk -F, '{if($4=="friendlist"){print $3}}' | sed -e 's/[ ]/\\\\&/g; s/^/_/')$";;
- '~') gen="$(fbcmd FGROUPS =me -csv | awk -F, '{print $NF}' | sed -e '1d; s/[ ]/\\\\&/g; s/^/~/')";;
- *) gen="$(fbcmd FRIENDS -csv | cut -d, -f2 | sed -e '1d; s/[ ]/\\\\&/g')"$'\n=\n_\n\~';;
- esac
- oldIFS="$IFS"
- IFS=$NL
- COMPREPLY=($(compgen -P "$prefix" -S "$suffix" -W "$gen" -- ${curw//\\/\\\\}))
- IFS="$oldIFS"
- elif [ -z "$COMPREPLY" ]; then
- COMPREPLY=($(IFS=' ' compgen -W "$gen" -- $curw))
- fi
- return 0
- }
- complete -F _fbcmd fbcmd
Add Comment
Please, Sign In to add comment