Mercurial > paster
annotate paster.sh @ 48:fa7125489435
paster: make private pastes by default, closes #2481
author | David Demelier <markand@malikania.fr> |
---|---|
date | Fri, 14 Feb 2020 20:10:00 +0100 |
parents | 39defd15564e |
children | 78a4062bed62 |
rev | line source |
---|---|
7 | 1 # |
2 # paster -- convenient front-end to a pasterd instance | |
3 # | |
4 # Copyright (c) 2020 David Demelier <markand@malikania.fr> | |
5 # | |
6 # Permission to use, copy, modify, and/or distribute this software for any | |
7 # purpose with or without fee is hereby granted, provided that the above | |
8 # copyright notice and this permission notice appear in all copies. | |
9 # | |
10 # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |
11 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
12 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |
13 # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
14 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
15 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | |
16 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
17 # | |
18 | |
19 author="Anonymous" | |
20 language="nohighlight" | |
21 title="Untitled" | |
22 duration="month" | |
48
fa7125489435
paster: make private pastes by default, closes #2481
David Demelier <markand@malikania.fr>
parents:
7
diff
changeset
|
23 public=0 |
7 | 24 verbose=0 |
25 | |
26 die() | |
27 { | |
28 echo "$@" 1>&2 | |
29 exit 1 | |
30 } | |
31 | |
32 languages() | |
33 { | |
34 echo "nohighlight" | |
35 echo "1c" | |
36 echo "abnf" | |
37 echo "accesslog" | |
38 echo "actionscript" | |
39 echo "ada" | |
40 echo "apache" | |
41 echo "applescript" | |
42 echo "arduino" | |
43 echo "armasm" | |
44 echo "asciidoc" | |
45 echo "aspectj" | |
46 echo "autohotkey" | |
47 echo "autoit" | |
48 echo "avrasm" | |
49 echo "awk" | |
50 echo "axapta" | |
51 echo "bash" | |
52 echo "basic" | |
53 echo "bnf" | |
54 echo "brainfuck" | |
55 echo "cal" | |
56 echo "capnproto" | |
57 echo "ceylon" | |
58 echo "clean" | |
59 echo "clojure" | |
60 echo "clojure-repl" | |
61 echo "cmake" | |
62 echo "coffeescript" | |
63 echo "coq" | |
64 echo "cos" | |
65 echo "cpp" | |
66 echo "crmsh" | |
67 echo "crystal" | |
68 echo "cs" | |
69 echo "csp" | |
70 echo "css" | |
71 echo "dart" | |
72 echo "delphi" | |
73 echo "diff" | |
74 echo "django" | |
75 echo "d" | |
76 echo "dns" | |
77 echo "dockerfile" | |
78 echo "dos" | |
79 echo "dsconfig" | |
80 echo "dts" | |
81 echo "dust" | |
82 echo "ebnf" | |
83 echo "elixir" | |
84 echo "elm" | |
85 echo "erb" | |
86 echo "erlang" | |
87 echo "erlang-repl" | |
88 echo "excel" | |
89 echo "fix" | |
90 echo "flix" | |
91 echo "fortran" | |
92 echo "fsharp" | |
93 echo "gams" | |
94 echo "gauss" | |
95 echo "gcode" | |
96 echo "gherkin" | |
97 echo "glsl" | |
98 echo "go" | |
99 echo "golo" | |
100 echo "gradle" | |
101 echo "groovy" | |
102 echo "haml" | |
103 echo "handlebars" | |
104 echo "haskell" | |
105 echo "haxe" | |
106 echo "hsp" | |
107 echo "htmlbars" | |
108 echo "http" | |
109 echo "hy" | |
110 echo "inform7" | |
111 echo "ini" | |
112 echo "irpf90" | |
113 echo "java" | |
114 echo "javascript" | |
115 echo "jboss-cli" | |
116 echo "json" | |
117 echo "julia" | |
118 echo "julia-repl" | |
119 echo "kotlin" | |
120 echo "lasso" | |
121 echo "ldif" | |
122 echo "leaf" | |
123 echo "less" | |
124 echo "lisp" | |
125 echo "livecodeserver" | |
126 echo "livescript" | |
127 echo "llvm" | |
128 echo "lsl" | |
129 echo "lua" | |
130 echo "makefile" | |
131 echo "markdown" | |
132 echo "mathematica" | |
133 echo "matlab" | |
134 echo "maxima" | |
135 echo "mel" | |
136 echo "mercury" | |
137 echo "mipsasm" | |
138 echo "mizar" | |
139 echo "mojolicious" | |
140 echo "monkey" | |
141 echo "moonscript" | |
142 echo "n1ql" | |
143 echo "nginx" | |
144 echo "nimrod" | |
145 echo "nix" | |
146 echo "nsis" | |
147 echo "objectivec" | |
148 echo "ocaml" | |
149 echo "openscad" | |
150 echo "oxygene" | |
151 echo "parser3" | |
152 echo "perl" | |
153 echo "pf" | |
154 echo "php" | |
155 echo "pony" | |
156 echo "powershell" | |
157 echo "processing" | |
158 echo "profile" | |
159 echo "prolog" | |
160 echo "protobuf" | |
161 echo "puppet" | |
162 echo "purebasic" | |
163 echo "python" | |
164 echo "q" | |
165 echo "qml" | |
166 echo "rib" | |
167 echo "r" | |
168 echo "roboconf" | |
169 echo "routeros" | |
170 echo "rsl" | |
171 echo "ruby" | |
172 echo "ruleslanguage" | |
173 echo "rust" | |
174 echo "scala" | |
175 echo "scheme" | |
176 echo "scilab" | |
177 echo "scss" | |
178 echo "shell" | |
179 echo "smali" | |
180 echo "smalltalk" | |
181 echo "sml" | |
182 echo "sqf" | |
183 echo "sql" | |
184 echo "stan" | |
185 echo "stata" | |
186 echo "step21" | |
187 echo "stylus" | |
188 echo "subunit" | |
189 echo "swift" | |
190 echo "taggerscript" | |
191 echo "tap" | |
192 echo "tcl" | |
193 echo "tex" | |
194 echo "thrift" | |
195 echo "tp" | |
196 echo "twig" | |
197 echo "typescript" | |
198 echo "vala" | |
199 echo "vbnet" | |
200 echo "vbscript-html" | |
201 echo "vbscript" | |
202 echo "verilog" | |
203 echo "vhdl" | |
204 echo "vim" | |
205 echo "x86asm" | |
206 echo "xl" | |
207 echo "xml" | |
208 echo "xquery" | |
209 echo "yaml" | |
210 echo "zephir" | |
211 exit 0 | |
212 } | |
213 | |
214 durations() | |
215 { | |
216 echo "hour" | |
217 echo "day" | |
218 echo "week" | |
219 echo "month" | |
220 exit 0 | |
221 } | |
222 | |
223 usage() | |
224 { | |
225 cat 1>&2 <<-EOF | |
48
fa7125489435
paster: make private pastes by default, closes #2481
David Demelier <markand@malikania.fr>
parents:
7
diff
changeset
|
226 usage: paster [-LDpv] [-a author] [-l language] [-d duration] [-t title] filename host |
7 | 227 EOF |
228 exit 1 | |
229 } | |
230 | |
231 send() | |
232 { | |
48
fa7125489435
paster: make private pastes by default, closes #2481
David Demelier <markand@malikania.fr>
parents:
7
diff
changeset
|
233 if [ $public -eq 1 ]; then |
fa7125489435
paster: make private pastes by default, closes #2481
David Demelier <markand@malikania.fr>
parents:
7
diff
changeset
|
234 with_private="--data private=off" |
fa7125489435
paster: make private pastes by default, closes #2481
David Demelier <markand@malikania.fr>
parents:
7
diff
changeset
|
235 else |
7 | 236 with_private="--data private=on" |
237 fi | |
48
fa7125489435
paster: make private pastes by default, closes #2481
David Demelier <markand@malikania.fr>
parents:
7
diff
changeset
|
238 |
7 | 239 if [ $verbose -eq 0 ]; then |
240 with_verbose="-s" | |
241 fi | |
242 | |
243 curl -i -X POST \ | |
244 --data author="$author" \ | |
245 --data language="$language" \ | |
246 --data duration="$duration" \ | |
247 --data title="$title" \ | |
248 --data-urlencode code@"$1" \ | |
249 $with_private \ | |
250 $with_verbose \ | |
251 "$2"/new | |
252 } | |
253 | |
254 if ! command -v curl >/dev/null 2>&1; then | |
255 die "abort: curl is required" | |
256 fi | |
257 | |
48
fa7125489435
paster: make private pastes by default, closes #2481
David Demelier <markand@malikania.fr>
parents:
7
diff
changeset
|
258 while getopts "LDa:d:l:pt:v" opt; do |
7 | 259 case "$opt" in |
260 D) | |
261 durations | |
262 ;; | |
263 L) | |
264 languages | |
265 ;; | |
266 a) | |
267 author="$OPTARG" | |
268 ;; | |
269 d) | |
270 duration="$OPTARG" | |
271 ;; | |
272 l) | |
273 language="$OPTARG" | |
274 ;; | |
48
fa7125489435
paster: make private pastes by default, closes #2481
David Demelier <markand@malikania.fr>
parents:
7
diff
changeset
|
275 p) |
fa7125489435
paster: make private pastes by default, closes #2481
David Demelier <markand@malikania.fr>
parents:
7
diff
changeset
|
276 public=1 |
fa7125489435
paster: make private pastes by default, closes #2481
David Demelier <markand@malikania.fr>
parents:
7
diff
changeset
|
277 ;; |
7 | 278 t) |
279 title="$OPTARG" | |
280 ;; | |
281 v) | |
282 verbose=1 | |
283 ;; | |
284 *) | |
285 usage | |
286 ;; | |
287 esac | |
288 done | |
289 | |
290 shift $((OPTIND - 1)) | |
291 | |
292 if [ "$#" -ne 2 ]; then | |
293 usage | |
294 fi | |
295 | |
296 # If verbose, dump all headers. | |
297 if [ $verbose -eq 1 ]; then | |
298 send "$1" "$2" | |
299 else | |
300 url=$(send "$1" "$2" | grep -E "^Location: " | awk '{ print $2 }') | |
301 | |
302 if [ -z "$url" ]; then | |
303 die "abort: error occured, retry with -v" | |
304 fi | |
305 | |
306 printf "%s%s\n" "$2" "$url" | |
307 fi |