Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save andrewchambers/4cd42162bdfd7ddae35ec077f234d4fb to your computer and use it in GitHub Desktop.
Save andrewchambers/4cd42162bdfd7ddae35ec077f234d4fb to your computer and use it in GitHub Desktop.
use std
const runcmd = {cmd : byte[:][:]
var output, status
match std.spork(cmd)
| `std.Ok (pid, stdin, stdout):
match std.fslurp(stdout)
| `std.Ok out: output = out
| _: std.fatal("stdout slurp failed\n")
;;
std.close(stdin)
std.close(stdout)
status = std.wait(pid)
match status
| `std.Wsuccess:
-> (true, output)
| _:
-> (false, output)
;;
| `std.Fail err:
std.fatal("error sporking: {}\n", err)
;;
}
const getnewcommits = {repo, lastcommit
var arg, commits
var success, output
arg = std.sldup(lastcommit)
std.sljoin(&arg, "..HEAD")
(success, output) = runcmd(["git", "rev-list", arg][:])
std.slfree(arg)
if !success
std.fatal("error getting new commits (git returned non zero)\n")
;;
commits = std.strtok(output)
for var i = 0; i < commits.len; i++
commits[i] = std.sldup(commits[i])
;;
std.slfree(output)
-> commits
}
const main = {args : byte[:][:]
var newcommits
newcommits = getnewcommits("TODO", "8bddfc10c3448039fd536a338942dfaba8a35695")
for var i = 0; i < newcommits.len; i++
std.put("{}\n", newcommits[i])
std.slfree(newcommits[i])
;;
std.slfree(newcommits)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment