var pr = get_and_check("https://api.github.com/repos/{repo}/pulls/{number}")
var prm = pr.json_as_map
var sha = prm["head"].json_as_map["sha"].to_s
- var statuses = get_and_check("https://api.github.com/repos/{repo}/statuses/{sha}")
+ var statuses = get_and_check("https://api.github.com/repos/{repo}/commits/{sha}/status")
+ statuses = statuses.json_as_map
prm["statuses"] = statuses
print "{prm["title"].to_s}: by {prm["user"].json_as_map["login"].to_s} (# {prm["number"].to_s})"
var mergeable = prm["mergeable"]
else
print "\tmergeable: unknown"
end
- var st = prm["statuses"].json_as_a
- if not st.is_empty then
- print "\tstatus: {st[0].json_as_map["state"].to_s}"
- else
+ var state = statuses["state"]
+ if state == null then
print "\tstatus: not tested"
+ else
+ print "\tstatus: {state}"
+ var sts = statuses["statuses"].json_as_a
+ for st in sts do
+ st = st.json_as_map
+ var ctx = st["context"].to_s
+ state = st["state"].to_s
+ print "\tstatus {ctx}: {state}"
+ end
end
return prm
end
var opt_auth = new OptionString("OAuth token", "--auth")
var opt_query = new OptionString("Query to get issues (e.g. label=ok_will_merge)", "-q", "--query")
var opt_keepgoing = new OptionBool("Skip merge conflicts", "-k", "--keep-going")
+var opt_all = new OptionBool("Merge all", "-a", "--all")
var opts = new OptionContext
-opts.add_option(opt_repo, opt_auth, opt_query, opt_keepgoing)
+opts.add_option(opt_repo, opt_auth, opt_query, opt_all, opt_keepgoing)
opts.parse(sys.args)
var args = opts.rest
if args.is_empty then
# Without args, list `ok_will_merge`
var x = curl.get_and_check("https://api.github.com/repos/{repo}/issues?{query}")
+ var list = new Array[String]
for y in x.json_as_a do
var number = y.json_as_map["number"].as(Int)
- curl.getpr(repo, number)
+ var pr = curl.getpr(repo, number)
+ if pr == null then continue
+ list.add number.to_s
end
- return
+
+ if not opt_all.value then return
+ args = list
end
for arg in args do