From bb1d149e2c2517095cbd74b84fb4c9cc008d465c Mon Sep 17 00:00:00 2001 From: Roman Inflianskas Date: Wed, 26 Nov 2014 01:57:14 +0300 Subject: [PATCH] [dpaste] Add time options: 1, onetime, 2, twotimes --- plugins/dpaste/dpaste.fish | 28 ++++++++++++++++++--------- plugins/dpaste/tests/test_dpaste.fish | 25 +++++++++++++++--------- 2 files changed, 35 insertions(+), 18 deletions(-) diff --git a/plugins/dpaste/dpaste.fish b/plugins/dpaste/dpaste.fish index 7163f47..3ca64a3 100644 --- a/plugins/dpaste/dpaste.fish +++ b/plugins/dpaste/dpaste.fish @@ -1,3 +1,7 @@ +#!/usr/bin/env fish +# vim: ai ts=2 sw=2 et sts=2 + + # Just a dpaste (https://github.com/bartTC/dpaste) wrapper for fish-shell # Roman Inflianskas (rominf) # Based on fish-sprunge plugin: @@ -6,27 +10,33 @@ # Based on oh-my-zsh's sprunge plugin -set __dpaste_expires_choises '(onetime|never|hour|week|month)' +set __dpaste_expires_choises '(onetime|1|twotimes|2|hour|week|month|never)' function __dpaste_set_defaults - if [ -z $dpaste_keyword ] - set -g dpaste_keyword 'content' - end - if [ -z $dpaste_url ] - set -g dpaste_url 'https://dpaste.de/api/?format=url' - end + set -g __dpaste_url_dpaste_de 'https://dpaste.de/api/?format=url' + set -q dpaste_keyword; or set -g dpaste_keyword 'content' + set -q dpaste_url; or set -g dpaste_url $__dpaste_url_dpaste_de set -g __dpaste_send_url $dpaste_url end function __dpaste_send - curl -F "$dpaste_keyword=<-" $__dpaste_send_url + function curl + command curl --silent $argv + end + + curl -F "$dpaste_keyword=<-" $__dpaste_send_url | read -l url + if [ $__dpaste_eat_once = 1 ] + curl $url >/dev/null + end + echo $url end function __dpaste_parse_expires set expires_spec "-t $__dpaste_expires_choises" set expires (echo $argv | sed -E "s/.*$expires_spec.*/\1/") if [ -z (echo $expires | sed -E "s/$__dpaste_expires_choises//") ] - set expires (echo $expires | sed 's/hour/3600/' | sed 's/week/604800/' | sed 's/month/2592000/') + echo $expires | grep -qE '(onetime|1)'; set -g __dpaste_eat_once (and echo 1; or echo 0) + set expires (echo $expires | sed -E 's/(1|2|twotimes)/onetime/;s/hour/3600/;s/week/604800/;s/month/2592000/') set __dpaste_send_url "$__dpaste_send_url&expires=$expires" end echo $argv | sed -E "s/$expires_spec//" | xargs diff --git a/plugins/dpaste/tests/test_dpaste.fish b/plugins/dpaste/tests/test_dpaste.fish index d91e764..6944983 100755 --- a/plugins/dpaste/tests/test_dpaste.fish +++ b/plugins/dpaste/tests/test_dpaste.fish @@ -21,9 +21,6 @@ end function test_dpaste_system set url (eval $argv[1])/raw - # everything is correct: - # one time snippets are available twice if you use curl - curl_and_check $url (echo_text) curl_and_check $url (echo_text) # now it shouldn't be available curl_and_fail $url @@ -44,20 +41,30 @@ function dpaste_teardown end function suite_dpaste + function setup __dpaste_set_defaults + set -g __dpaste_send_url $__dpaste_url_dpaste_de end function test_dpaste_parse_expires assert_equal text (__dpaste_parse_expires text) assert_equal "https://dpaste.de/api/?format=url" $__dpaste_send_url - set -g __dpaste_send_url $dpaste_url - assert_equal text (__dpaste_parse_expires -t never text) - assert_equal "https://dpaste.de/api/?format=url&expires=never" $__dpaste_send_url - set -g __dpaste_send_url $dpaste_url + end + + function test_dpaste_parse_expires_1 + assert_equal text (__dpaste_parse_expires -t 1 text) + assert_equal "https://dpaste.de/api/?format=url&expires=onetime" $__dpaste_send_url + end + + function test_dpaste_parse_expires_hour assert_equal text (__dpaste_parse_expires -t hour text) assert_equal "https://dpaste.de/api/?format=url&expires=3600" $__dpaste_send_url - set -g __dpaste_send_url $dpaste_url + end + + function test_dpaste_parse_expires_never + assert_equal text (__dpaste_parse_expires -t never text) + assert_equal "https://dpaste.de/api/?format=url&expires=never" $__dpaste_send_url end function test_dpaste_system_file_redirect @@ -87,6 +94,7 @@ function suite_dpaste end test_dpaste_system dpaste_text end + end @@ -99,4 +107,3 @@ if not set -q tank_running tank_run dpaste_teardown end -