#!/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 an URL shortener ## Print the short url to stdout ## Or put it in the clipboard if no argument was given # Vars [[[ debug=false flag_clipboard=false flag_inline=false null_service_url="https://null.101010.fr" ## Colors [[[ c_redb='\033[1;31m' c_magentab='\033[1;35m' c_reset='\033[0m' ## ]]] # ]]] # Function to print a debug message [[[ debug_message() { _message="${1}" [ "${debug}" = "true" ] && printf "${c_magentab}%-6b${c_reset}\n" "DEBUG ${_message}" } # ]]] # 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 URL to be shortened [[[ # Try to get URL from first argument if [ "${flag_inline}" = "true" ]; then url_to_short="${1}" fi # Try to get URL from clipboard if [ "${flag_clipboard}" = "true" ]; then url_to_short=$(xclip -out -selection clipboard) fi debug_message "− Get URL : URL to be shortened : ${url_to_short}" # ]]] # Ensure the URL wasn't already shortened [[[ if printf -- '%s' "${url_to_short}" | grep -q -E -- "${null_service_url}" then printf "${c_redb}%b${c_reset}\n" "Error : The url to be shortened (${url_to_short}) already seems to comes from the 0x0 service (${null_service_url})." exit 1 fi # ]]] # shorten URL result=$(curl -sF"shorten=${url_to_short}" "${null_service_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" "${result}" 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 "${result}" | xclip -rmlastnl -selection clipboard fi # ]]] exit 0