diff --git a/cmd/commit.go b/cmd/commit.go index aed2866..67b997a 100644 --- a/cmd/commit.go +++ b/cmd/commit.go @@ -216,7 +216,7 @@ var commitCmd = &cobra.Command{ logrus.Fatal("unable to read pending revert") } - commitTransactionFromFlags.Reverts = revertParameters.Reverts[0] + commitTransactionFromFlags.Reverts = revertParameters.Reverts if commitTransactionFromFlags.Comment == "" { commitTransactionFromFlags.Comment = revertParameters.Comment diff --git a/cmd/revert.go b/cmd/revert.go index cab2b7d..63a622d 100644 --- a/cmd/revert.go +++ b/cmd/revert.go @@ -82,21 +82,15 @@ identical to the original.`, logrus.Fatal(err) } - var headID envelopes.ID - headID, err = persist.Resolve(ctx, repo, persist.MostRecentTransactionAlias) + var balances *envelopes.State + balances, err = index.LoadState(ctx, root) if err != nil { logrus.Fatal(err) } - var head envelopes.Transaction - err = repo.LoadTransaction(ctx, headID, &head) - if err != nil { - logrus.Fatal(err) - } - - updated := envelopes.State(head.State.Add(envelopes.State(delta.Negate()))) + updated := envelopes.State(balances.Add(envelopes.State(delta.Negate()))) - err = index.CheckoutState(ctx, &updated, root, os.ModePerm) + err = index.CheckoutState(ctx, &updated, root, 0660) if err != nil { logrus.Fatal(err) } diff --git a/go.mod b/go.mod index 596bb99..c1b3094 100644 --- a/go.mod +++ b/go.mod @@ -1,7 +1,7 @@ module github.com/marstr/baronial require ( - github.com/marstr/envelopes v0.5.1-0.20250724195254-1badb247f40f + github.com/marstr/envelopes v0.5.1-0.20250726040416-21d6874f4b76 github.com/marstr/units v1.0.1 github.com/mitchellh/go-homedir v1.1.0 github.com/sirupsen/logrus v1.2.0 diff --git a/go.sum b/go.sum index c0c67cb..89e17b1 100644 --- a/go.sum +++ b/go.sum @@ -19,8 +19,8 @@ github.com/magiconair/properties v1.8.0 h1:LLgXmsheXeRoUOBOjtwPQCWIYqM/LU1ayDtDe github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/marstr/collection/v2 v2.0.0 h1:a0J20uXTesrD0HaCd+EyvTJzs34KQwEDVw12nd9q9Bw= github.com/marstr/collection/v2 v2.0.0/go.mod h1:53MC3XxVQ/rUxiNS4bZTvx5QJSWNgZMqPFMJomGKob4= -github.com/marstr/envelopes v0.5.1-0.20250724195254-1badb247f40f h1:2TVNx+IIL4AqX7ysPTObFmLfGDJCb74uPfaErrgRzBQ= -github.com/marstr/envelopes v0.5.1-0.20250724195254-1badb247f40f/go.mod h1:ejfyNhHkqWnJaxWANdGIjn+iSqrIDqyRLxGnIV8q9lY= +github.com/marstr/envelopes v0.5.1-0.20250726040416-21d6874f4b76 h1:H9ylvdSZBsYsB8wLhdMB+6GWbYtLM/hwzaFoC5sKSD0= +github.com/marstr/envelopes v0.5.1-0.20250726040416-21d6874f4b76/go.mod h1:ejfyNhHkqWnJaxWANdGIjn+iSqrIDqyRLxGnIV8q9lY= github.com/marstr/units v1.0.1 h1:J1oBku8rInztZY9IO0W2fS1bZ60UotlmBLbyvyZLoSU= github.com/marstr/units v1.0.1/go.mod h1:B1/IxDKETT7FwLuU0ZOvdPePP9chjt0PLTt+qeVARJ8= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= diff --git a/internal/format/transaction.go b/internal/format/transaction.go index 63ffc94..d0f2876 100644 --- a/internal/format/transaction.go +++ b/internal/format/transaction.go @@ -23,6 +23,7 @@ import ( "io" "path" "sort" + "strings" "time" "github.com/marstr/envelopes" @@ -68,8 +69,13 @@ func ConcisePrintTransaction(_ context.Context, output io.Writer, subject envelo return err } } - if !subject.Reverts.Equal(envelopes.ID{}) { - _, err = fmt.Fprintf(output, "\tReverts:\t%s\n", subject.Reverts) + if len(subject.Reverts) > 0 { + strRevs := make([]string, len(subject.Reverts)) + for i := range subject.Reverts { + strRevs[i] = subject.Reverts[i].String() + } + + _, err = fmt.Fprintf(output, "\tReverts:\t%s\n", strings.Join(strRevs, ", ")) if err != nil { return err } @@ -135,10 +141,16 @@ func PrettyPrintTransaction( if err != nil { return err } - _, err = fmt.Fprintf(output, "Parent: \t%s\n", subject.Parents[0]) + _, err = fmt.Fprintf(output, "Parent: \t%s\n", joinedIDStringList(subject.Parents, ", ")) if err != nil { return err } + if len(subject.Reverts) > 0 { + _, err = fmt.Fprintf(output, "Reverts: \t%s\n", joinedIDStringList(subject.Reverts, ", ")) + if err != nil { + return err + } + } _, err = fmt.Fprintf(output, "Comment: \t%s\n", subject.Comment) if err != nil { return err @@ -206,3 +218,11 @@ func flattenBudgets(diff envelopes.Impact) map[string]envelopes.Balance { return retval } + +func joinedIDStringList(subject []envelopes.ID, sep string) string { + strSub := make([]string, len(subject)) + for i := range subject { + strSub[i] = subject[i].String() + } + return strings.Join(strSub, sep) +} diff --git a/internal/index/checkout.go b/internal/index/checkout.go index 860e3e8..b0778ca 100644 --- a/internal/index/checkout.go +++ b/internal/index/checkout.go @@ -17,7 +17,6 @@ package index import ( "context" - "io/ioutil" "os" "path" @@ -41,7 +40,7 @@ func CheckoutState(ctx context.Context, state *envelopes.State, targetDir string return err } - err = os.Mkdir(accountsDir, perm) + err = os.Mkdir(accountsDir, perm|os.ModeDir|0110) if err != nil { return err } @@ -52,7 +51,7 @@ func CheckoutState(ctx context.Context, state *envelopes.State, targetDir string return err } - err = os.Mkdir(budgetDir, perm) + err = os.Mkdir(budgetDir, perm|os.ModeDir|0110) if err != nil { return err } @@ -61,13 +60,13 @@ func CheckoutState(ctx context.Context, state *envelopes.State, targetDir string for accName, accBal := range state.Accounts { dirName := path.Join(accountsDir, accName) - err = os.MkdirAll(dirName, perm) + err = os.MkdirAll(dirName, perm|os.ModeDir|0110) if err != nil { return err } fileName := path.Join(dirName, cashName) - err = ioutil.WriteFile(fileName, []byte(accBal.String()), perm) + err = os.WriteFile(fileName, []byte(accBal.String()), perm) if err != nil { return err } @@ -78,7 +77,7 @@ func CheckoutState(ctx context.Context, state *envelopes.State, targetDir string var processBudget func(context.Context, string, *envelopes.Budget) error processBudget = func(ctx context.Context, location string, budget *envelopes.Budget) error { - err = os.MkdirAll(location, perm) + err = os.MkdirAll(location, perm|os.ModeDir|0110) if err != nil { return err }