1 limbo code implement HgReadrevlog;
3 limbo code include "sys.m";
5 limbo code sprint: import sys;
6 limbo code include "draw.m";
7 limbo code include "arg.m";
8 limbo code include "string.m";
9 limbo code str: String;
10 limbo code include "mercurial.m";
11 limbo code mercurial: Mercurial;
12 limbo code Revlog, Repo, Entry, Nodeid, Change: import mercurial;
14 limbo code dflag: int;
16 limbo code HgReadrevlog: module {
17 limbo code init: fn(nil: ref Draw->Context, args: list of string);
20 limbo code init(nil: ref Draw->Context, args: list of string)
22 limbo code sys = load Sys Sys->PATH;
23 limbo code arg := load Arg Arg->PATH;
24 limbo code str = load String String->PATH;
25 limbo code mercurial = load Mercurial Mercurial->PATH;
26 limbo code mercurial->init();
28 limbo code arg->init(args);
29 limbo code arg->setusage(arg->progname()+" [-d] path");
30 limbo code while((c := arg->opt()) != 0)
32 limbo code 'd' => dflag++;
33 limbo code if(dflag > 1)
34 limbo code mercurial->debug++;
35 limbo code * => arg->usage();
37 limbo code args = arg->argv();
38 limbo code if(len args != 1)
39 limbo code arg->usage();
40 limbo code path := hd args;
42 limbo code (rl, err) := Revlog.open(path);
43 limbo code if(err != nil)
47 limbo code (last, err) = rl.lastrev();
48 limbo code if(err != nil)
51 limbo code e: ref Entry;
52 limbo code for(i := 0; i <= last; i++) {
53 limbo code (e, err) = rl.findrev(i);
54 limbo code if(err != nil)
56 limbo comment #sys->print("entry %d:\n", i);
57 limbo code sys->print("%s\n", e.text());
61 limbo code fail(s: string)
63 limbo code sys->fprint(sys->fildes(2), "%s\n", s);
64 limbo code raise "fail:"+s;