scripts/send.to.0x0.sh

112 lines
2.7 KiB
Bash
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/sh
# .. vim: foldmarker=[[[,]]]:foldmethod=marker
# This script will try to:
## Get first argument
## Or get clipboard content if no argument
## Send this data to a file hosting service
## Print the generate url that hosting the content to stdout
## Or put it in the clipboard if no argument was given
# Vars [[[
debug=true
flag_clipboard=false
flag_inline=false
flag_file=false
null_service_url="https://null.101010.fr"
## Colors [[[
c_redb='\033[1;31m'
c_magentab='\033[1;35m'
c_reset='\033[0m'
## ]]]
# ]]]
# Functions
# Function to print a debug message [[[
debug_message() {
_message="${1}"
[ "${debug}" = "true" ] && printf "${c_magentab}%-6b${c_reset}\n" "DEBUG ${_message}"
}
# ]]]
# Function to check if the argument is a existent file [[[
is_file_exist() {
_file="${1}"
## If it's a non-empty file
if [ -s "${_file}" ]; then
flag_file=true
debug_message " Func is_file_exist: ${_file} seems to be a file and it's non-empty."
fi
}
# ]]]
# Function to get content type [[[
determine_content_type() {
_content="${1}"
_content_nb_line=$(printf -- '%s\n' "${_content}" | wc -l)
debug_message " Determine type: Content has ${_content_nb_line} line(s) to send."
## If it's a one line content
if [ "${_content_nb_line}" -eq "1" ]; then
### Verify if it's a path to a existent file
is_file_exist "${_content}"
### Verify it it's a remote URL
flag_url=""
fi
}
# ]]]
# Verify argument [[[
case "$#" in
0 )
flag_clipboard=true
debug_message " Verify arg: No argument was given, try to use clipboard."
;;
1 )
flag_inline=true
debug_message " Verify arg: One argument was given, use it."
;;
* )
printf "${c_redb}%b${c_reset}\n" "Error: Expect one argument or a content in clipboard."
exit 1
;;
esac
# ]]]
# Get the content to be sended [[[
# Try to get content from first argument
if [ "${flag_inline}" = "true" ]; then
content_to_send="${1}"
fi
# Try to get content from clipboard
if [ "${flag_clipboard}" = "true" ]; then
content_to_send=$(xclip -out -selection clipboard)
fi
debug_message " Get Content: content to be sended: ${content_to_send}"
# ]]]
# Try to determine the type of the content (file, remote URL or text)
determine_content_type "${content_to_send}"
content_url=""
# Manage the result [[[
## If the URL should simply be printed to stdout
if [ "${flag_inline}" = "true" ]; then
debug_message " Manage result: Print the result on stdout:"
printf "%b\n" "${content_url}"
fi
# If the URL should remplace the previous content of the clipboard
if [ "${flag_clipboard}" = "true" ]; then
debug_message " Manage result: Put the result in clipboard."
echo "${content_url}" | xclip -rmlastnl -selection clipboard
fi
# ]]]
exit 0