summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQuentin Carbonneaux2021-11-10 23:07:32 +0100
committerQuentin Carbonneaux2021-11-10 23:07:32 +0100
commitaf1173599b455eb722c47c8617488909100abf2b (patch)
treefb296f04ef6ee39036269b0597066cb3b881d906
parent3b34bfea7b2d430110a49527dcf3afd86892af24 (diff)
[mx] nits
-rw-r--r--memex/main.go145
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)