#!/bin/sh show_builds () { curl -sL \ -H 'User-Agent: build log downloader' \ 'https://api.travis-ci.org/v3/repo/ocamllabs%2Focaml-multicore/builds?include=build.jobs' | \ jq -r '.builds | reverse | .[] | (if .pull_request_title then "PR #\(.pull_request_number)%\(.commit.message | split("\n")[0])" else "\(.branch.name)%\(.commit.message | split("\n")[0])" end) as $desc | (if .duration != null then "(\(.duration/60 | floor)m)" else "" end) as $time | (if .state == "passed" then "" elif .state == "started" then "" else "" end) as $colour | "\($colour)\(.number) \(.state)%\($desc) \($time)"' | \ column -t -s '%' } dump_log () { curl -sL \ -H 'User-Agent: build log downloader' \ 'https://api.travis-ci.org/v3/repo/ocamllabs%2Focaml-multicore/builds?include=build.jobs' | \ jq -r --arg key "$1" \ '[.builds[] | .jobs[] as $job | select($job.state != "passed") | if $key != "" then select([.number, $job.number, .branch.name] | any(.==$key)) else . end | $job] | first | "\(.number) \(.id)"' | {\ read number id echo "Fetching logs for build $number ..." 1>&2 curl -Ls "https://api.travis-ci.org/v3/job/$id/log.txt" } | less -r +G } case "$1" in "") show_builds ;; log) dump_log "$2" ;; *) cat <