| __fx_cp_remote_files() { | |
| local -a dirs files | |
| local -a remote_matches | |
| # ask dash on the device to glob the prefix | |
| remote_matches=($(fx shell echo "$PREFIX*/" "$PREFIX*")) | |
| # remove the unmatched globs | |
| remote_matches=(${remote_matches:#*\**}) | |
| # files don't have a trailing / | |
| files=(${remote_matches:#*/}) | |
| # directories have a trailing slash filter those and remove the slash | |
| dirs=(${${(M)remote_matches:#*/}%/}) | |
| # remove directory names from the files list | |
| files=(${files:|dirs}) | |
| # we want to complete the next path component not the whole path | |
| compset -P '*/' | |
| compset -S '/*' | |
| # add directories to completion | |
| compadd -S/ -d dirs -- ${dirs##*/} | |
| # add files to completion | |
| compadd -- ${files##*/} | |
| } | |
| __fx_cp_src() { | |
| if [ -n "${words[(r)--to-host]}" ]; then | |
| __fx_cp_remote_files | |
| else | |
| _files | |
| fi | |
| } | |
| __fx_cp_dest() { | |
| if [ -n "${words[(r)--to-host]}" ]; then | |
| _files | |
| else | |
| __fx_cp_remote_files | |
| fi | |
| } | |
| _arguments \ | |
| '(--to-host)--to-target[Copy a file from the host to the target.]' \ | |
| '(--to-target)--to-host[Copy a file from the target to the host.]' \ | |
| '1:src:__fx_cp_src' \ | |
| '2:dest:__fx_cp_dest' \ | |