From 9ce45f5f38fa365f3ef813819c5b96b65e1315b3 Mon Sep 17 00:00:00 2001
From: Roman Inflianskas <infroma@gmail.com>
Date: Mon, 9 Jun 2014 10:54:21 +0400
Subject: [PATCH] [dpaste] Add "expires" option

---
 plugins/dpaste/dpaste.fish | 74 ++++++++++++++++++++++++++++----------
 1 file changed, 55 insertions(+), 19 deletions(-)

diff --git a/plugins/dpaste/dpaste.fish b/plugins/dpaste/dpaste.fish
index ba187c3..a00ec6c 100644
--- a/plugins/dpaste/dpaste.fish
+++ b/plugins/dpaste/dpaste.fish
@@ -5,33 +5,69 @@
 # https://github.com/Paulloz/fish-sprunge
 # Based on oh-my-zsh's sprunge plugin
 
-if test -z $dpaste_keyword 
-  set dpaste_keyword content
-end
-if test -z $dpaste_url
-  set dpaste_url https://dpaste.de/api/
+
+set dpaste_expires_choises '(onetime|never|hour|week|month)'
+
+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
 end
 
 function dpaste_send
-  curl -F "$dpaste_keyword=<-" $dpaste_url 2> /dev/null | sed "s/.*\"\(.*\)\".*/\1\n/"
+  # echo $dpaste_url >&2
+  # echo $dpaste_send_url >&2
+  curl -F "$dpaste_keyword=<-" $dpaste_send_url
+end
+
+function dpaste_parse_expires
+  set expires_spec "-t $dpaste_expires_choises"
+  set dpaste_expires (echo $argv | sed -r "s/.*$expires_spec.*/\1/" | sed 's/hour/3600/' | sed 's/week/604800/' | sed 's/month/2592000/')
+  if [ -z (echo $dpaste_expires | sed -r "s/$dpaste_expires_choises//") ]
+    set dpaste_send_url "$dpaste_send_url&expires=$dpaste_expires"
+  end
+  echo $argv | sed -r "s/$expires_spec//"
+end
+
+function dpaste_help
+  echo -e \
+"Usage:
+  dpaste [-t EXPIRES] < README.md
+  dpaste [-t EXPIRES] README.md
+  cat README.md | dpaste [-t EXPIRES]
+  dpaste [-t EXPIRES] "I \<3 to paste"
+
+Options:
+  -t EXPIRES  set snippet expiration time: $dpaste_expires_choises [default: month]"
+end
+
+function dpaste_parse_help
+  if contains -- -h $argv
+    dpaste_help
+  end
 end
 
 function dpaste
-  if isatty
-    if [ (count $argv) -gt 0 ]
-      if [ -f $argv ]
-        cat $argv
+  dpaste_set_defaults
+  set -g dpaste_send_url $dpaste_url
+  dpaste_parse_help $argv
+  or begin
+    set argv (dpaste_parse_expires $argv)
+    if isatty
+      if [ -n $argv ]
+        if [ -f $argv ]
+          cat $argv
+        else
+          echo $argv
+        end | dpaste_send
       else
-        echo $argv
-      end | dpaste_send
+        dpaste_help
+      end
     else
-      echo -e "Usage:
-    * dpaste < README.md
-    * dpaste README.md
-    * cat README.md | dpaste
-    * dpaste "I \<3 to paste""
+      dpaste_send
     end
-  else
-    dpaste_send
   end
 end
-- 
GitLab