From 528e39fd846b9d2a3b83b8fe5caf9a8d84b2fb59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Lebleu?= Date: Tue, 19 Apr 2016 16:08:36 +0200 Subject: [PATCH] [enh] Add a yunopaste script to paste data to YunoHost Haste server --- bin/yunopaste | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100755 bin/yunopaste diff --git a/bin/yunopaste b/bin/yunopaste new file mode 100755 index 000000000..d52199eba --- /dev/null +++ b/bin/yunopaste @@ -0,0 +1,77 @@ +#!/bin/bash + +set -e +set -u + +PASTE_URL="https://paste.yunohost.org" + +_die() { + printf "Error: %s\n" "$*" + exit 1 +} + +check_dependencies() { + curl -V > /dev/null 2>&1 || _die "This script requires curl." +} + +paste_data() { + json=$(curl -X POST -s -d "$1" "${PASTE_URL}/documents") + [[ -z "$json" ]] && _die "Unable to post the data to the server." + + key=$(echo "$json" \ + | python -c 'import json,sys;o=json.load(sys.stdin);print o["key"]' \ + 2>/dev/null) + [[ -z "$key" ]] && _die "Unable to parse the server response." + + echo "${PASTE_URL}/${key}" +} + +usage() { + printf "Usage: ${0} [OPTION]... + +Read from input stream and paste the data to the YunoHost +Haste server. + +For example, to paste the output of the YunoHost diagnosis, you +can simply execute the following: + yunohost tools diagnosis | ${0} + +It will return the URL where you can access the pasted data. + +Options: + -h, --help show this help message and exit +" +} + +main() { + # parse options + while (( ${#} )); do + case "${1}" in + --help|-h) + usage + exit 0 + ;; + *) + echo "Unknown parameter detected: ${1}" >&2 + echo >&2 + usage >&2 + exit 1 + ;; + esac + + shift 1 + done + + # check input stream + read -t 0 || { + echo -e "Invalid usage: No input is provided.\n" >&2 + usage + exit 1 + } + + paste_data "$(cat)" +} + +check_dependencies + +main "${@}"