new pasteboard idea
This commit is contained in:
180
code/templates/flip
Executable file
180
code/templates/flip
Executable file
@@ -0,0 +1,180 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
_help() {
|
||||
SELF=$( basename "$0" )
|
||||
echo "Fleese Clipboard v. {{ version }}
|
||||
|
||||
Usage: $SELF [command] [name] [filename]
|
||||
|
||||
Commands:
|
||||
(r)ead Display on screen / copies to file
|
||||
(w)rite Save from stdin / from file / folder
|
||||
(d)elete Delete an entry
|
||||
(l)ist [default] List names of clipboards
|
||||
|
||||
Name: Any string for the clipboard name. default: 0
|
||||
Filename:
|
||||
When reading from clipboard:
|
||||
File or folder to write the clipboard contents. If omitted: stdout
|
||||
When writing to clipboard:
|
||||
File or folder to read from. If omitted: stdin
|
||||
|
||||
Shorthand:
|
||||
echo my data | $SELF 1 # writes data with name: 1
|
||||
$SELF 1 | cat - # prints the contents of file: 1
|
||||
|
||||
Config:
|
||||
set: FLEES_ROOTURL, FLEES_SHARE, FLEES_TOKEN
|
||||
"
|
||||
exit
|
||||
}
|
||||
|
||||
|
||||
_load_config() {
|
||||
FLEES_SHARE="${FLEES_SHARE:-{{ name }}}"
|
||||
FLEES_TOKEN="${FLEES_TOKEN:-{{ token }}}"
|
||||
FLEES_ROOTURL="${FLEES_ROOTURL:-{{ rooturl }}}"
|
||||
}
|
||||
|
||||
_update_client() {
|
||||
[[ -n "$FLEES_TOKEN" ]] && [[ -n "$FLEES_SHARE" ]] && {
|
||||
sharetoken="/$FLEES_SHARE/$FLEES_TOKEN"
|
||||
}
|
||||
curl -o "$0" "$FLEES_ROOTURL/script/flip$sharetoken"
|
||||
err=$?
|
||||
chmod +x "$0"
|
||||
exit $err
|
||||
}
|
||||
|
||||
_list() {
|
||||
printf "%-16s %8s %s\n" Date Size Name
|
||||
curl -s "$FLEES_ROOTURL/file/ls/$FLEES_SHARE/$FLEES_TOKEN"
|
||||
printf "\n"
|
||||
}
|
||||
|
||||
_write() {
|
||||
# no file mentioned, use stdin
|
||||
[[ -z "$FILE" ]] && stream_in=1
|
||||
# stdin is open, use stdin
|
||||
[ -t 0 ] || stream_in=1
|
||||
|
||||
[ -t 0 ] && [[ -z "$FILE" ]] && {
|
||||
_msg File to read needed, or use stdin
|
||||
exit 1
|
||||
}
|
||||
|
||||
[[ "$stream_in" -eq 1 ]] && {
|
||||
_write_stdin "$NAME"
|
||||
} || {
|
||||
[[ -d "$FILE" ]] && {
|
||||
_write_folder "$NAME" "$FILE"
|
||||
} || {
|
||||
_write_file "$NAME" "$FILE"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
_write_folder() { # name, file
|
||||
tar c "$2" | curl -F "file=@-;filename=$1" --progress-bar "${FLEES_ROOTURL}upload/${FLEES_SHARE}/${FLEES_TOKEN}" | cat -
|
||||
}
|
||||
_write_file() { # name, file
|
||||
curl -F "file=@$2;filename=$1" --progress-bar "${FLEES_ROOTURL}upload/${FLEES_SHARE}/${FLEES_TOKEN}" | cat -
|
||||
}
|
||||
_write_stdin() { # name
|
||||
cat - | curl -F "file=@-;filename=$1" "${FLEES_ROOTURL}upload/${FLEES_SHARE}/${FLEES_TOKEN}"
|
||||
}
|
||||
|
||||
_read() {
|
||||
[[ -z "$FILE" ]] && stream_out=1
|
||||
[ -t 1 ] || stream_out=1
|
||||
|
||||
[[ "$stream_out" -eq 1 ]] && {
|
||||
_read_stdout "$NAME"
|
||||
} || {
|
||||
_read_file "$NAME" "$FILE"
|
||||
}
|
||||
}
|
||||
|
||||
_read_file() { # name, file
|
||||
curl --progress "$FLEES_ROOTURL/download/$FLEES_SHARE/$FLEES_TOKEN/$1" > "$2"
|
||||
}
|
||||
_read_stdout() { # name
|
||||
curl -s "$FLEES_ROOTURL/download/$FLEES_SHARE/$FLEES_TOKEN/$1"
|
||||
}
|
||||
|
||||
_delete() { # name
|
||||
read -p "Sure to delete: $1 ? Break to exit " foo
|
||||
curl -s "$FLEES_ROOTURL/file/delete/$FLEES_SHARE/$FLEES_TOKEN/$1"
|
||||
}
|
||||
|
||||
_msg() {
|
||||
echo "$@" >&2
|
||||
}
|
||||
|
||||
_get_name() {
|
||||
[[ "$ARG1" = "$CMD" ]] && {
|
||||
NAME="$ARG2"
|
||||
} || {
|
||||
NAME="$ARG1"
|
||||
}
|
||||
[[ -z "$NAME" ]] && [[ ! "$CMD" = delete ]] && NAME=0
|
||||
return 0
|
||||
}
|
||||
|
||||
_get_file() {
|
||||
[[ "$ARG1" = "$NAME" ]] && {
|
||||
FILE="$ARG2"
|
||||
}
|
||||
[[ "$ARG2" = "$NAME" ]] && {
|
||||
FILE="$ARG3"
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
_load_config
|
||||
for (( i=1; i<=$#; i++ )); do
|
||||
[[ "${!i}" = "-h" ]] && _help
|
||||
[[ "${!i}" = "--help" ]] && _help
|
||||
done
|
||||
|
||||
ARG1="$1"
|
||||
ARG2="$2"
|
||||
ARG3="$3"
|
||||
CMD=list
|
||||
[[ "$1" = "r" || "$1" = "read" ]] && { CMD=read; ARG1=$CMD; }
|
||||
[[ "$1" = "w" || "$1" = "write" ]] && { CMD=write; ARG1=$CMD; }
|
||||
[[ "$1" = "d" || "$1" = "delete" || "$1" = "del" ]] && { CMD=delete; ARG1=$CMD; }
|
||||
[[ "$1" = "l" || "$1" = "list" ]] && { CMD=list; ARG1=$CMD; }
|
||||
[[ "$1" = "update" ]] && { _update_client; }
|
||||
[[ "$1" = "h" || "$1" = "help" ]] && _help
|
||||
[[ -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" = list ]] && {
|
||||
_list
|
||||
exit $?
|
||||
}
|
||||
|
||||
_get_name
|
||||
_get_file
|
||||
[[ "$CMD" = read ]] && {
|
||||
_read
|
||||
exit $?
|
||||
}
|
||||
[[ "$CMD" = delete ]] && {
|
||||
_delete "$NAME"
|
||||
exit $?
|
||||
}
|
||||
[[ "$CMD" = write ]] && {
|
||||
_write
|
||||
exit $?
|
||||
}
|
||||
[[ "$CMD" = edit ]] && {
|
||||
_edit
|
||||
exit $?
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user