diff options
| author | Quentin Carbonneaux | 2021-11-10 23:07:32 +0100 |
|---|---|---|
| committer | Quentin Carbonneaux | 2021-11-10 23:07:32 +0100 |
| commit | af1173599b455eb722c47c8617488909100abf2b (patch) | |
| tree | fb296f04ef6ee39036269b0597066cb3b881d906 | |
| parent | 3b34bfea7b2d430110a49527dcf3afd86892af24 (diff) | |
[mx] nits
| -rw-r--r-- | memex/main.go | 145 |
1 files changed, 56 insertions, 89 deletions
diff --git a/memex/main.go b/memex/main.go index d4903fe..1ccda11 100644 --- a/memex/main.go +++ b/memex/main.go @@ -213,15 +213,13 @@ func addCommit(args commitArgs, head Addr) (new Addr, err error) { var tree Addr var walker Walker - startInfo := func() func() { - return InfoLoop(func() { - fmt.Printf("writing: %s ", BytesString(a.nbytes)) - }) + progress := func() { + fmt.Printf("writing: %s ", BytesString(a.nbytes)) } if full { walker = MakeFsDirWalker("", false) - done := startInfo() + done := InfoLoop(progress) tree, err = a.AddFsDir(walker) done() } else { @@ -235,7 +233,7 @@ func addCommit(args commitArgs, head Addr) (new Addr, err error) { if err != nil { return } - done := startInfo() + done := InfoLoop(progress) tree, err = addPaths(a, walker, args.paths) done() } @@ -259,19 +257,16 @@ func commitCmd(args commitArgs) int { /* grab a lock to avoid racy accesses to the stash, * it is released when the commit subcommand exits */ - _, err := GetRepoLock(config.Arch) - if err != nil { + if _, err := GetRepoLock(config.Arch); err != nil { errf("could not lock archive: %v", err) return 2 } - _, err = os.Stat(path.Join(config.Arch, "stash/log")) + _, err := os.Stat(path.Join(config.Arch, "stash/log")) if err == nil { - errf("the sdar stash is dirty") - errf("... empty %s/stash/ before continuing", config.Arch) + errf("flush %s/stash/ before continuing", config.Arch) return 2 - } - if err != nil && !os.IsNotExist(err) { + } else if !os.IsNotExist(err) { errf("%v", err) return 2 } @@ -289,22 +284,17 @@ func commitCmd(args commitArgs) int { errf("failed to add data: %v", err) return 2 } - - sdarmsg := fmt.Sprintf("%d %s", args.now.Unix(), args.msg) - err = SdarCommit(config.Arch, sdarmsg) - if err != nil { + msg := fmt.Sprintf("%d %s", args.now.Unix(), args.msg) + if SdarCommit(config.Arch, msg) != nil { errf("sdar commit failed") return 2 } - err = WriteRef(config.Arch, config.Ref, newhead) - if err != nil { + if WriteRef(config.Arch, config.Ref, newhead) != nil { errf("could not write ref/%s (%v)", config.Ref, newhead) return 2 } - - err = SetSync(config.Ref, &config) - if err != nil { + if SetSync(config.Ref, &config) != nil { errf("could not update config to sync=%s", config.Ref) return 2 } @@ -371,6 +361,16 @@ func walkRevAt(rd SdarReader, rev, rel string) Walker { return w } +func makeArchiveReader() SdarReader { + rd, err := MakeReader(config.Arch) + if err != nil { + errf("could not read archive: %v", err) + os.Exit(2) + } + return rd + +} + type walkArgs struct { cur string rev string @@ -384,11 +384,7 @@ func walkCmd(args walkArgs) int { args.paths = []string{"/"} } - rd, err := MakeReader(config.Arch) - if err != nil { - errf("could not read archive: %v", err) - return 2 - } + rd := makeArchiveReader() defer rd.Done() w := walkRevAt(rd, args.rev, "") @@ -434,11 +430,7 @@ type logArgs struct { } func logCmd(args logArgs) int { - rd, err := MakeReader(config.Arch) - if err != nil { - errf("could not read archive: %v", err) - return 2 - } + rd := makeArchiveReader() defer rd.Done() rev, err := Revspec(args.rev, rd) @@ -511,13 +503,6 @@ type diffArgs struct { } func diffCmd(args diffArgs) int { - rd, err := MakeReader(config.Arch) - if err != nil { - errf("could not read archive: %v", err) - return 2 - } - defer rd.Done() - if args.brev == "" { if args.arev == "" { args.arev = "." @@ -529,6 +514,9 @@ func diffCmd(args diffArgs) int { } } + rd := makeArchiveReader() + defer rd.Done() + var wa, wb Walker wa = walkRevAt(rd, args.arev, args.cur) if args.brev == "" { @@ -627,10 +615,9 @@ func syncFile(abs string, addr Addr, rd SdarReader) error { if err != nil { return err } + defer f.Close() f.Truncate(0) - err = rd.WriteTo(addr, f) - f.Close() - return err + return rd.WriteTo(addr, f) } func syncFs(cs []Change, rd SdarReader) error { @@ -724,11 +711,7 @@ func syncCmd(args syncArgs) int { return 0 } - rd, err := MakeReader(config.Arch) - if err != nil { - errf("could not read archive: %v", err) - return 2 - } + rd := makeArchiveReader() defer rd.Done() /* use this walker to check if we are overriding @@ -845,22 +828,23 @@ func markBad(a Addr, chk *Check) { } func checkData(ent *Entry, chk *Check) (err error) { - if !visited(ent.Addr, Vblob, chk) { - seen := chk.seen - digest := xxhash.New() - writer := &Counted{&chk.seen, digest} - err = chk.reader.WriteTo(ent.Addr, writer) - cksum := digest.Sum64() - bad := (chk.seen-seen) != ent.Size || cksum != ent.Xxh - if err == readError { - bad = true - /* the reader is still in a consistent - * state so we can swallow the error */ - err = nil - } - if bad { - markBad(ent.Addr, chk) - } + if visited(ent.Addr, Vblob, chk) { + return + } + seen := chk.seen + digest := xxhash.New() + writer := &Counted{&chk.seen, digest} + err = chk.reader.WriteTo(ent.Addr, writer) + cksum := digest.Sum64() + bad := (chk.seen-seen) != ent.Size || cksum != ent.Xxh + if err == readError { + bad = true + /* the reader is still in a consistent + * state so we can swallow the error */ + err = nil + } + if bad { + markBad(ent.Addr, chk) } return } @@ -910,11 +894,7 @@ func checkWalk(w Walker, chk *Check) (bool, error) { } func checkCmd(revs []string) int { - rd, err := MakeReader(config.Arch) - if err != nil { - errf("could not read archive: %v", err) - return 2 - } + rd := makeArchiveReader() defer rd.Done() if len(revs) == 0 { @@ -1034,11 +1014,7 @@ type getArgs struct { } func getCmd(args getArgs) int { - rd, err := MakeReader(config.Arch) - if err != nil { - errf("could not read archive: %v", err) - return 2 - } + rd := makeArchiveReader() defer rd.Done() curw := walkRevAt(rd, args.rev, args.cur) @@ -1073,8 +1049,7 @@ func getCmd(args getArgs) int { errf("could not walk to %s: %v", rel, err) return 2 } - err = tarAt(w, rd, tw) - if err != nil { + if err = tarAt(w, rd, tw); err != nil { errf("%v", err) return 2 } @@ -1091,11 +1066,7 @@ type resetArgs struct { } func resetCmd(args resetArgs) int { - rd, err := MakeReader(config.Arch) - if err != nil { - errf("could not read archive: %v", err) - return 2 - } + rd := makeArchiveReader() defer rd.Done() ci, err := Revspec(args.rev, rd) @@ -1110,8 +1081,7 @@ func resetCmd(args resetArgs) int { } if args.sync { - err := SetSync(ci.String(), &config) - if err != nil { + if err := SetSync(ci.String(), &config); err != nil { errf("could not update config to sync=%s", ci) return 2 } @@ -1200,13 +1170,10 @@ func main() { /* -a -b ------------------------------------ - _ _ : checkout ref to tree - A _ : revision A to tree - _ B : revision B^ to B - A B : revision A to B - - path : same path in both a and b - path:path : diff first path against second + _ _ : sync to fs tree + A _ : rev A to tree + _ B : rev B^ to B + A B : rev A to B */ var args diffArgs cmd := flag.NewFlagSet("diff", flag.ExitOnError) |
