all repos — dotfiles @ eb7e404baf1096f278c450362686d39cdf9bfb5c

my *nix dotfiles

bin/oxo.sh (view raw)

 1#!/bin/bash
 2# 0x0 - client for 0x0.st
 3
 4me=${0##*/}
 5host=https://0x0.st
 6
 7if [[ ! -t 1 ]];then
 8    quiet=true
 9fi
10
11help() {
12    cat >&2 <<EOF
13Usage: ${me} [-f <file>] [-s <url>] [-u <url>] [file]
14Client for interacting with 0x0.st.
15If no file is given, upload stdin.
16    -f <file>       - upload <file>
17    -s <url>        - shorten <url>
18    -u <url>        - upload content of <url>
19EOF
20}
21
22clip() {
23    if command -v xsel >/dev/null 2>&1;then
24        printf '%s' "$@" | xsel -b
25    fi
26}
27
28file_upload() {
29    local curl_opts="-s" file="$1" type
30    [[ "${quiet}" ]] || curl_opts="-#"
31    [[ "${quiet}" ]] || echo "uploading \"${file}\"..." >&2
32    [[ "$#" -gt 1 ]] && echo -n "${file} ... "
33    url=$(curl ${curl_opts} -F "file=@${file}" "${host}")
34    echo "${url}"
35    clip "${url}"
36}
37
38shorten_url() {
39    local curl_opts="-s" url="$1" shortened
40    [[ "${quiet}" ]] || curl_opts="-#"
41    [[ "${quiet}" ]] || echo "shortening \"${url}\"..." >&2
42    [[ "$#" -gt 1 ]] && echo -n "${url} ... "
43    shortened=$(curl ${curl_opts} -F "shorten=${url}" "${host}")
44    echo "${shortened}"
45    clip "${shortened}"
46}
47
48upload_url() {
49    local curl_opts="-s" url="$1" uploaded
50    [[ "${quiet}" ]] || curl_opts="-#"
51    [[ "${quiet}" ]] || echo "uploading \"${url}\"..." >&2
52    [[ "$#" -gt 1 ]] && echo -n "${url} ... "
53    uploaded=$(curl ${curl_opts} -F "url=${url}" "${host}")
54    echo "${uploaded}"
55    clip "${uploaded}"
56}
57
58# 1KiB = 1024 bytes
59# 1MiB = 1024 KiB
60# max size - 256MiB
61
62max_size=$(( (1024*1024) * 256 ))
63
64if [[ -f "$1" || "$#" -lt 1 ]];then
65    mode="default"
66else
67    mode="$1"
68    shift
69fi
70
71case "$mode" in
72    default)
73        if [[ "$#" -gt 0 ]];then
74            file_upload "${@}"
75        else
76            quiet=true file_upload "-"
77        fi
78    ;;
79    -f)
80        file_upload "${@}"
81    ;;
82    -u)
83        upload_url "${@}"
84    ;;
85    -s)
86        shorten_url "${@}"
87    ;;
88    -h|--help)
89        help
90    ;;
91esac
92