From adba4c439cabec89fd06ef7b30910d763b0675e7 Mon Sep 17 00:00:00 2001 From: Ville Rantanen Date: Tue, 28 Jan 2020 10:37:03 +0200 Subject: [PATCH] rename commands to more generally accepted --- files/cclip | 87 +++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 71 insertions(+), 16 deletions(-) diff --git a/files/cclip b/files/cclip index 0353eeb..7bd47ec 100755 --- a/files/cclip +++ b/files/cclip @@ -7,14 +7,16 @@ _help() { Usage: $SELF [command] [name] [filename] - Commands: - (r)ead Display on screen / copies to file - (w)rite Save from stdin / from file - (d)elete Delete an entry - (D)elete Clear the whole clibboard - (e)dit Edit contents, with \$EDITOR - (l)ist [default] List names of clipboards - rmenu/readmenu Read a file/folder using a simple menu (for MC ex.) + Short Command Description + p paste Display on screen / copies to file + c copy Save from stdin / from file + x cut Move file to clipboard + d delete Delete an entry + D Delete Clear the whole clibboard + e edit Edit contents, with \$EDITOR + l list [default] List names of clipboards + pmenu pastemenu Paste a file/folder using a simple menu (ex. for MC) + autocomplete Get Bash autocompletion script Name: Any string for the clipboard name. default: 0 Filename: @@ -63,6 +65,11 @@ _list() { done } +_simple_list() { + ls "$STORAGE" +} + + _write() { # no file mentioned, use stdin [[ -z "$FILE" ]] && stream_in=1 @@ -95,10 +102,16 @@ _write() { } _write_files() { # name, file - echo Storing "$2" to "$1" - cp -aT "$2" "$STORAGE/$1" + if [[ $MOVE = true ]]; then + echo Cutting "$2" to "$1" + mv "$2" "$STORAGE/$1" + else + echo Copying "$2" to "$1" + cp -aT "$2" "$STORAGE/$1" + fi touch "$STORAGE/$1" } + _write_stdin() { # name cat - > "$STORAGE/$1" } @@ -118,7 +131,7 @@ _read_menu() { _read() { [[ -e "$STORAGE/$NAME" ]] || { - _msg "No such clipboard" + _msg "No such clipboard: '$NAME'" return } [[ "$FILE" = "-" ]] && stream_out=1 @@ -142,7 +155,7 @@ _read() { _read_files() { # name, file - echo Reading "$1" to "$2" + echo Pasting "$1" to "$2" cp -aT "$STORAGE/$1" "$2" } @@ -205,6 +218,38 @@ _edit() { } $EDITOR "$STORAGE/$NAME" } + +_get_completer() { + self=$( basename $( readlink -f "$0" ) ) + echo '_CCLIP_EXEC_complete() { +local curr_arg +curr_arg=${COMP_WORDS[COMP_CWORD]} +if [[ $COMP_CWORD -eq 1 ]]; then + COMPREPLY=( $(compgen -W "help autocomplete l list c copy x cut p paste delete Delete pmenu" -- $curr_arg ) ); +fi +if [[ $COMP_CWORD -eq 2 ]]; then + case ${COMP_WORDS[$(( $COMP_CWORD - 1 ))]} in + p|paste|d*) + local remotelist=$( eval CCLIP_EXEC simplelist ) + COMPREPLY=( $(compgen -W "$remotelist" -- $curr_arg ) ); + ;; + x|c*) + COMPREPLY=( $(compgen -f -d -- $curr_arg ) ); + ;; + esac +fi +if [[ $COMP_CWORD -eq 3 ]]; then + COMPREPLY=( $(compgen -f -d -- $curr_arg ) ); +fi +} +complete -F _CCLIP_EXEC_complete CCLIP_EXEC +# Run me as: source <( CCLIP_EXEC autocomplete ) +' | sed "s,CCLIP_EXEC,$self,g" + exit 0 +} + + + for (( i=1; i<=$#; i++ )); do [[ "${!i}" = "-h" ]] && _help [[ "${!i}" = "--help" ]] && _help @@ -213,21 +258,31 @@ _load_config ARG1="$1" ARG2="$2" ARG3="$3" -CMD=list -[[ "$1" = "r" || "$1" = "read" ]] && { CMD=read; ARG1=$CMD; } -[[ "$1" = "rmenu" || "$1" = "readmenu" ]] && { CMD=read_menu; ARG1=$CMD; } -[[ "$1" = "w" || "$1" = "write" ]] && { CMD=write; ARG1=$CMD; } +MOVE=false +CMD=help +if [[ -z "$1" ]]; then CMD=list; fi +[[ "$1" = "p" || "$1" = "paste" ]] && { CMD=read; ARG1=$CMD; } +[[ "$1" = "pmenu" || "$1" = "pastemenu" ]] && { CMD=read_menu; ARG1=$CMD; } +[[ "$1" = "c" || "$1" = "copy" ]] && { CMD=write; ARG1=$CMD; } +[[ "$1" = "x" || "$1" = "cut" ]] && { CMD=write; ARG1=$CMD; MOVE=true; } [[ "$1" = "d" || "$1" = "delete" || "$1" = "del" ]] && { CMD=delete; ARG1=$CMD; } [[ "$1" = "D" || "$1" = "Delete" || "$1" = "Del" ]] && { CMD=delete_all; ARG1=$CMD; } [[ "$1" = "l" || "$1" = "list" ]] && { CMD=list; ARG1=$CMD; } [[ "$1" = "e" || "$1" = "edit" ]] && { CMD=edit; ARG1=$CMD; } [[ "$1" = "h" || "$1" = "help" ]] && _help +[[ "$1" = "autocomplete" ]] && { _get_completer; exit; } +[[ "$1" = "simplelist" ]] && { _simple_list; exit; } + [[ -n "$1" ]] && [[ -e "$STORAGE"/"$1" ]] && CMD=read # if stdout redirected, default to read [ -t 1 ] || CMD=read # if stdin comes from stream, default to write [ -t 0 ] || CMD=write +[[ "$CMD" = help ]] && { + _help + exit $? +} [[ "$CMD" = list ]] && { _list exit $?