-
Notifications
You must be signed in to change notification settings - Fork 21
/
Copy pathleanpub.elv
93 lines (80 loc) · 1.86 KB
/
leanpub.elv
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
use str
var api-key = $nil
var api-key-fn = $nil
fn api-key {
if $api-key {
put $api-key
} elif $api-key-fn {
set api-key = ($api-key-fn)
put $api-key
} else {
fail "Please set leanpub:api-key or leanpub:api-key-fn"
}
}
fn get-slug {|@args|
if (eq $args []) {
put [(str:split / $pwd)][-1]
} else {
put $args[0]
}
}
fn preview {|@args|
var slug = (get-slug $@args)
pprint (curl -s -d "api_key="(api-key) https://leanpub.com/$slug/preview.json | from-json)
}
fn subset {|@args|
var slug = (get-slug $@args)
pprint (curl -s -d "api_key="(api-key) https://leanpub.com/$slug/preview/subset.json | from-json)
}
fn publish {|@args|
var slug = (get-slug $@args)
pprint (curl -s -d "api_key="(api-key) https://leanpub.com/$slug/publish.json | from-json)
}
fn status {|@args|
var slug = (get-slug $@args)
var status = (curl -s "https://leanpub.com/"$slug"/job_status?api_key="(api-key) | from-json)
if (has-key $status backtrace) {
var file = (mktemp)
echo $status[backtrace] > $file
del status[backtrace]
set status[error-log] = $file
}
put $status
if (has-key $status error-log) {
fail "An error occurred. The backtrace is at "$status[error-log]
}
}
fn watch {|@args|
var slug = (get-slug $@args)
var s = (status $slug)
while (not-eq $s [&]) {
pprint $s
sleep 5
set s = (status $slug)
}
}
fn preview-and-watch {|@args|
var slug = (get-slug $@args)
preview $slug
watch $slug
}
fn subset-and-watch {|@args|
var slug = (get-slug $@args)
subset $slug
watch $slug
}
fn publish-and-watch {|@args|
var slug = (get-slug $@args)
publish $slug
watch $slug
}
fn do-subset {|@args|
var msg = (echo $@args)
git ci -a -m $msg
git push
subset-and-watch
}
fn info {|@args|
var slug = (get-slug $@args)
pprint (curl -s "https://leanpub.com/"$slug".json?api_key="(api-key) | from-json)
}