From 898c05124d78f47295efa24e7f4f4b0313a64e61 Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Mon, 26 Aug 2024 11:57:25 -0700 Subject: [PATCH 01/53] initial work on signed commits --- go/cmd/dolt/cli/arg_parser_helpers.go | 2 +- go/cmd/dolt/cli/flags.go | 1 + go/cmd/dolt/commands/commit.go | 11 ++ .../doltcore/cherry_pick/cherry_pick.go | 2 +- .../doltcore/sqle/dprocedures/dolt_commit.go | 50 +++++++- .../doltcore/sqle/dprocedures/dolt_merge.go | 2 +- go/libraries/doltcore/sqle/dsess/session.go | 8 +- go/libraries/utils/config/keys.go | 4 + go/libraries/utils/gpg/sign.go | 116 ++++++++++++++++++ go/libraries/utils/gpg/sign_test.go | 47 +++++++ 10 files changed, 234 insertions(+), 9 deletions(-) create mode 100644 go/libraries/utils/gpg/sign.go create mode 100644 go/libraries/utils/gpg/sign_test.go diff --git a/go/cmd/dolt/cli/arg_parser_helpers.go b/go/cmd/dolt/cli/arg_parser_helpers.go index e441a7a6263..71de6190dfa 100644 --- a/go/cmd/dolt/cli/arg_parser_helpers.go +++ b/go/cmd/dolt/cli/arg_parser_helpers.go @@ -68,7 +68,7 @@ func CreateCommitArgParser() *argparser.ArgParser { ap.SupportsString(AuthorParam, "", "author", "Specify an explicit author using the standard A U Thor {{.LessThan}}author@example.com{{.GreaterThan}} format.") ap.SupportsFlag(AllFlag, "a", "Adds all existing, changed tables (but not new tables) in the working set to the staged set.") ap.SupportsFlag(UpperCaseAllFlag, "A", "Adds all tables and databases (including new tables) in the working set to the staged set.") - ap.SupportsFlag(AmendFlag, "", "Amend previous commit") + ap.SupportsOptionalString(SignFlag, "S", "key-id", "Sign the commit using GPG. If no key-id is provided the key-id is taken from 'user.signingkey' the in the configuration") return ap } diff --git a/go/cmd/dolt/cli/flags.go b/go/cmd/dolt/cli/flags.go index b059de50eb8..4981f470111 100644 --- a/go/cmd/dolt/cli/flags.go +++ b/go/cmd/dolt/cli/flags.go @@ -65,6 +65,7 @@ const ( SetUpstreamFlag = "set-upstream" ShallowFlag = "shallow" ShowIgnoredFlag = "ignored" + SignFlag = "gpg-sign" SilentFlag = "silent" SingleBranchFlag = "single-branch" SkipEmptyFlag = "skip-empty" diff --git a/go/cmd/dolt/commands/commit.go b/go/cmd/dolt/commands/commit.go index e769b1b2ade..736a4ad5146 100644 --- a/go/cmd/dolt/commands/commit.go +++ b/go/cmd/dolt/commands/commit.go @@ -268,6 +268,17 @@ func constructParametrizedDoltCommitQuery(msg string, apr *argparser.ArgParseRes writeToBuffer("--skip-empty") } + if apr.Contains(cli.SignFlag) { + writeToBuffer("--gpg-sign") + + gpgKey := apr.GetValueOrDefault(cli.SignFlag, "") + if gpgKey != "" { + param = true + writeToBuffer("?") + params = append(params, gpgKey) + } + } + buffer.WriteString(")") return buffer.String(), params, nil } diff --git a/go/libraries/doltcore/cherry_pick/cherry_pick.go b/go/libraries/doltcore/cherry_pick/cherry_pick.go index 19527414054..ec57e888a14 100644 --- a/go/libraries/doltcore/cherry_pick/cherry_pick.go +++ b/go/libraries/doltcore/cherry_pick/cherry_pick.go @@ -139,7 +139,7 @@ func CherryPick(ctx *sql.Context, commit string, options CherryPickOptions) (str return "", nil, fmt.Errorf("failed to get roots for current session") } - pendingCommit, err := doltSession.NewPendingCommit(ctx, dbName, roots, commitProps) + pendingCommit, err := doltSession.NewPendingCommit(ctx, dbName, roots, commitProps, "") if err != nil { return "", nil, err } diff --git a/go/libraries/doltcore/sqle/dprocedures/dolt_commit.go b/go/libraries/doltcore/sqle/dprocedures/dolt_commit.go index b07ce1c6ccd..15271ffc6ac 100644 --- a/go/libraries/doltcore/sqle/dprocedures/dolt_commit.go +++ b/go/libraries/doltcore/sqle/dprocedures/dolt_commit.go @@ -17,6 +17,9 @@ package dprocedures import ( "errors" "fmt" + "github.com/dolthub/dolt/go/libraries/doltcore/doltdb" + "github.com/dolthub/dolt/go/libraries/utils/config" + "strings" "github.com/dolthub/go-mysql-server/sql" "github.com/dolthub/go-mysql-server/sql/types" @@ -152,7 +155,7 @@ func doDoltCommit(ctx *sql.Context, args []string) (string, bool, error) { } } - pendingCommit, err := dSess.NewPendingCommit(ctx, dbName, roots, actions.CommitStagedProps{ + csp := actions.CommitStagedProps{ Message: msg, Date: t, AllowEmpty: apr.Contains(cli.AllowEmptyFlag), @@ -161,7 +164,22 @@ func doDoltCommit(ctx *sql.Context, args []string) (string, bool, error) { Force: apr.Contains(cli.ForceFlag), Name: name, Email: email, - }) + } + + signature := "" + if apr.Contains(cli.SignFlag) || strings.ToUpper(cliCtx.Config().GetStringOrDefault(config.SignCommitsKey, "FALSE")) == "TRUE" { + strToSign, err := commitSignatureStr(ctx, dbName, roots, csp) + if err != nil { + return "", false, err + } + + signature, err = gpgSign([]byte(strToSign)) + if err != nil { + return "", false, err + } + } + + pendingCommit, err := dSess.NewPendingCommit(ctx, dbName, roots, csp, signature) if err != nil { return "", false, err } @@ -206,3 +224,31 @@ func getDoltArgs(ctx *sql.Context, row sql.Row, children []sql.Expression) ([]st return args, nil } + +func commitSignatureStr(ctx *sql.Context, dbName string, roots doltdb.Roots, csp actions.CommitStagedProps) (string, error) { + var lines []string + lines = append(lines, fmt.Sprint("db: ", dbName)) + lines = append(lines, fmt.Sprint("Message: ", csp.Message)) + lines = append(lines, fmt.Sprint("Name: ", csp.Name)) + lines = append(lines, fmt.Sprint("Email: ", csp.Email)) + lines = append(lines, fmt.Sprint("Date: ", csp.Date.String())) + + head, err := roots.Head.HashOf() + if err != nil { + return "", err + } + + staged, err := roots.Staged.HashOf() + if err != nil { + return "", err + } + + lines = append(lines, fmt.Sprint("Head: ", head.String())) + lines = append(lines, fmt.Sprint("Staged: ", staged.String())) + + return strings.Join(lines, "\n"), nil +} + +func gpgSign(toSign []byte) (string, error) { + return "", nil +} diff --git a/go/libraries/doltcore/sqle/dprocedures/dolt_merge.go b/go/libraries/doltcore/sqle/dprocedures/dolt_merge.go index d950141cd8b..96b0225daf6 100644 --- a/go/libraries/doltcore/sqle/dprocedures/dolt_merge.go +++ b/go/libraries/doltcore/sqle/dprocedures/dolt_merge.go @@ -435,7 +435,7 @@ func executeNoFFMerge( Force: spec.Force, Name: spec.Name, Email: spec.Email, - }) + }, "") if err != nil { return nil, nil, err } diff --git a/go/libraries/doltcore/sqle/dsess/session.go b/go/libraries/doltcore/sqle/dsess/session.go index 59d9a83eb64..fb830da9c49 100644 --- a/go/libraries/doltcore/sqle/dsess/session.go +++ b/go/libraries/doltcore/sqle/dsess/session.go @@ -661,13 +661,13 @@ func (d *DoltSession) PendingCommitAllStaged(ctx *sql.Context, branchState *bran return nil, err } - return d.newPendingCommit(ctx, branchState, roots, props) + return d.newPendingCommit(ctx, branchState, roots, props, "") } // NewPendingCommit returns a new |doltdb.PendingCommit| for the database named, using the roots given, adding any // merge parent from an in progress merge as appropriate. The session working set is not updated with these new roots, // but they are set in the returned |doltdb.PendingCommit|. If there are no changes staged, this method returns nil. -func (d *DoltSession) NewPendingCommit(ctx *sql.Context, dbName string, roots doltdb.Roots, props actions.CommitStagedProps) (*doltdb.PendingCommit, error) { +func (d *DoltSession) NewPendingCommit(ctx *sql.Context, dbName string, roots doltdb.Roots, props actions.CommitStagedProps, signature string) (*doltdb.PendingCommit, error) { branchState, ok, err := d.lookupDbState(ctx, dbName) if err != nil { return nil, err @@ -676,12 +676,12 @@ func (d *DoltSession) NewPendingCommit(ctx *sql.Context, dbName string, roots do return nil, fmt.Errorf("session state for database %s not found", dbName) } - return d.newPendingCommit(ctx, branchState, roots, props) + return d.newPendingCommit(ctx, branchState, roots, props, signature) } // newPendingCommit returns a new |doltdb.PendingCommit| for the database and head named by |branchState| // See NewPendingCommit -func (d *DoltSession) newPendingCommit(ctx *sql.Context, branchState *branchState, roots doltdb.Roots, props actions.CommitStagedProps) (*doltdb.PendingCommit, error) { +func (d *DoltSession) newPendingCommit(ctx *sql.Context, branchState *branchState, roots doltdb.Roots, props actions.CommitStagedProps, signature string) (*doltdb.PendingCommit, error) { headCommit := branchState.headCommit headHash, _ := headCommit.HashOf() diff --git a/go/libraries/utils/config/keys.go b/go/libraries/utils/config/keys.go index 3395985f5f0..7667f369b4c 100755 --- a/go/libraries/utils/config/keys.go +++ b/go/libraries/utils/config/keys.go @@ -64,3 +64,7 @@ const PushAutoSetupRemote = "push.autosetupremote" const ProfileKey = "profile" const VersionCheckDisabled = "versioncheck.disabled" + +const SignCommitsKey = "commit.gpgsign" + +const GPGSigningKeyKey = "user.signingkey" diff --git a/go/libraries/utils/gpg/sign.go b/go/libraries/utils/gpg/sign.go new file mode 100644 index 00000000000..38125e9a4d5 --- /dev/null +++ b/go/libraries/utils/gpg/sign.go @@ -0,0 +1,116 @@ +package gpg + +import ( + "bytes" + "context" + "encoding/pem" + "fmt" + "golang.org/x/sync/errgroup" + "io" + "os/exec" + "strings" +) + +func Sign(ctx context.Context, keyId string, message []byte) ([]byte, error) { + args := []string{"--clear-sign", "-u", keyId} + cmdStr := fmt.Sprintf("gpg %s", strings.Join(args, " ")) + cmd := exec.CommandContext(ctx, "gpg", args...) + + stdOut, err := cmd.StdoutPipe() + if err != nil { + return nil, fmt.Errorf("failed to get stdout for command '%s': %w", cmdStr, err) + } + + stdErr, err := cmd.StderrPipe() + if err != nil { + return nil, fmt.Errorf("failed to get stderr for command '%s': %w", cmdStr, err) + } + + stdIn, err := cmd.StdinPipe() + if err != nil { + return nil, fmt.Errorf("failed to get stdin for command '%s': %w", cmdStr, err) + } + + err = cmd.Start() + if err != nil { + return nil, fmt.Errorf("failed to start command '%s': %w", cmdStr, err) + } + + eg, egCtx := errgroup.WithContext(ctx) + outBuf := listenToOut(egCtx, eg, stdOut) + errBuf := listenToOut(egCtx, eg, stdErr) + + n, err := io.Copy(stdIn, strings.NewReader(string(message))) + if err != nil { + return nil, fmt.Errorf("failed to write stdin for command '%s': %w", cmdStr, err) + } else if n < int64(len(message)) { + return nil, fmt.Errorf("failed to write stdin for command '%s': EOF before all bytes written", cmd) + } + + err = stdIn.Close() + if err != nil { + return nil, fmt.Errorf("failed to close stdin for command '%s': %w", cmdStr, err) + } + + for { + state, err := cmd.Process.Wait() + if err != nil { + return nil, fmt.Errorf("failed to wait for command '%s': %w", cmdStr, err) + } + + if state.Exited() { + if state.ExitCode() != 0 { + return nil, fmt.Errorf("command '%s' exited with code %d. stdout: '%s', stderr: '%s'", cmdStr, state.ExitCode(), outBuf.String(), errBuf.String()) + } + + break + } + } + + err = eg.Wait() + if err != nil { + return nil, fmt.Errorf("failed to read output for command '%s': %w", cmdStr, err) + } + + var signature []byte + pemBlocks := decodeAllPEMBlocks(outBuf.Bytes()) + for _, block := range pemBlocks { + fmt.Println("type:", block.Type) + fmt.Println("headers:", block.Headers) + fmt.Println("bytes:", block.Bytes) + + if block.Type == "SIGNATURE" { + signature = block.Bytes + } + } + + return signature, nil +} + +func listenToOut(ctx context.Context, eg *errgroup.Group, r io.Reader) *bytes.Buffer { + buf := bytes.NewBuffer(nil) + eg.Go(func() error { + _, err := io.Copy(buf, r) + return err + }) + return buf +} + +// Throws away all intersperesed text and returns all decoded PEM blocks, in the order they are read. +func decodeAllPEMBlocks(bs []byte) []*pem.Block { + fmt.Println("decoding PEM blocks in:") + fmt.Println(string(bs)) + + var b *pem.Block + var ret []*pem.Block + for { + b, bs = pem.Decode(bs) + if b != nil { + fmt.Println("decoded block") + ret = append(ret, b) + } else { + fmt.Printf("decoded '%d' blocks\n", len(ret)) + return ret + } + } +} diff --git a/go/libraries/utils/gpg/sign_test.go b/go/libraries/utils/gpg/sign_test.go new file mode 100644 index 00000000000..c1d8c8d8c8d --- /dev/null +++ b/go/libraries/utils/gpg/sign_test.go @@ -0,0 +1,47 @@ +package gpg + +import ( + "context" + "fmt" + "github.com/stretchr/testify/require" + "testing" +) + +func TestSign(t *testing.T) { + ctx := context.Background() + keyId := "4798B29CA9029452D103B1E388F64CE29826DA4A" + + message := []byte("I did a thing") + signature, err := Sign(ctx, keyId, message) + require.NoError(t, err) + require.NotNil(t, signature) + require.NotEmpty(t, signature) +} + +func TestDecodeAllPemBlocks(t *testing.T) { + pemBlock := ` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +I did a thing +-----BEGIN PGP SIGNATURE----- + +iQIzBAEBCAAdFiEER5iynKkClFLRA7HjiPZM4pgm2koFAmbH0PIACgkQiPZM4pgm +2kpiyRAAjyMs8dkydx87w2N8aM7skbOzfk7Xhg+NJYS+MVk465EHSfW5WQZmXdbu +jupH3FPmB1UiiGTCP7Igrhl/KU9WrEXLvrYBI07aHly0bRiy6COd6E/+YIEz0uaW +nfbcHgR9zkVxl5lj42HReGUnkbK9KYbu32AZznu8F5/qlHOA7e06ILivyKrRXkRT +vbC/IaW0pRRJqTDylAEFEDsIYP2pFhIgIE/aEoid6Bb93yh1jmZTci6aOWd0B5o7 +hLWFJAmyFSiMAi+WrWnKAD9xeq5gGJjpyWNW7XpeIQ7E/xUeLeHvvrgnOd9O5w8n +hFqz7IV6EMXc6dFz/sivusnb0viTUS2fsqsS2k4vA/1SyoE5ffTM/BFpWBCevAmi +og0VVLur5OcijL+hyGXuuOVSgKkiuu6KKjg/Qer3/iJB5KYIlDoZIjSevLP2O6ZD +FM/wBFp6aBIhh/dl/1DqW6F0HM23J5dIV5SAf7uLPHN7nKky6XcFiILRrET1uC6R +j9KK38Dhaa4o30uf5RZsSy03hP/mUCS+U5NVREnN12Z3RETSkarfZ3wgiV2ftMup +z22q4wvtUGB5whOZ5D3PW7df5LREGbxfKvn159a3OccEKa3UURWDF3V63apV2OMN +YN6Sszg+o8Aw0AT4M6nrLTe3YaIE6sR4YMxOCSOPAT9oSDg1t5s= +=fklH +-----END PGP SIGNATURE-----` + + pemBlocks := decodeAllPEMBlocks([]byte(pemBlock)) + fmt.Println(len(pemBlocks)) + require.Len(t, pemBlocks, 2) +} From 273b54da6403c17c6bd247b9e7918e5a9a6d852d Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Wed, 28 Aug 2024 11:31:30 -0700 Subject: [PATCH 02/53] writing signature... but not backward compatible atm --- go/cmd/dolt/commands/utils.go | 7 ++ go/gen/fb/serial/commit.go | 14 ++- .../doltcore/cherry_pick/cherry_pick.go | 2 +- .../doltcore/sqle/dolt_log_table_function.go | 3 +- .../doltcore/sqle/dprocedures/dolt_commit.go | 66 ++++++++++--- .../doltcore/sqle/dprocedures/dolt_merge.go | 2 +- go/libraries/doltcore/sqle/dsess/session.go | 8 +- .../doltcore/sqle/system_variables.go | 14 +++ go/libraries/utils/gpg/sign.go | 95 ++++++++++++++----- go/libraries/utils/gpg/sign_test.go | 15 ++- go/store/datas/commit.go | 3 + go/store/datas/commit_meta.go | 14 ++- 12 files changed, 194 insertions(+), 49 deletions(-) diff --git a/go/cmd/dolt/commands/utils.go b/go/cmd/dolt/commands/utils.go index 9c60d717f9d..391dd87565f 100644 --- a/go/cmd/dolt/commands/utils.go +++ b/go/cmd/dolt/commands/utils.go @@ -672,8 +672,14 @@ func getCommitInfo(queryist cli.Queryist, sqlCtx *sql.Context, ref string) (*Com message := row[4].(string) parent := row[5].(string) height := uint64(len(rows)) + isHead := commitHash == hashOfHead + var signature string + if len(row) > 6 { + signature = row[6].(string) + } + localBranchesForHash, err := getBranchesForHash(queryist, sqlCtx, commitHash, true) if err != nil { return nil, fmt.Errorf("error getting branches for hash '%s': %v", commitHash, err) @@ -694,6 +700,7 @@ func getCommitInfo(queryist cli.Queryist, sqlCtx *sql.Context, ref string) (*Com Timestamp: timestamp, Description: message, UserTimestamp: int64(timestamp), + Signature: signature, }, commitHash: commitHash, height: height, diff --git a/go/gen/fb/serial/commit.go b/go/gen/fb/serial/commit.go index 195afa77d62..3dbca73ff6f 100644 --- a/go/gen/fb/serial/commit.go +++ b/go/gen/fb/serial/commit.go @@ -190,6 +190,14 @@ func (rcv *Commit) Description() []byte { return nil } +func (rcv *Commit) Signature() []byte { + o := flatbuffers.UOffsetT(rcv._tab.Offset(22)) + if o != 0 { + return rcv._tab.ByteVector(o + rcv._tab.Pos) + } + return nil +} + func (rcv *Commit) TimestampMillis() uint64 { o := flatbuffers.UOffsetT(rcv._tab.Offset(18)) if o != 0 { @@ -214,7 +222,7 @@ func (rcv *Commit) MutateUserTimestampMillis(n int64) bool { return rcv._tab.MutateInt64Slot(20, n) } -const CommitNumFields = 9 +const CommitNumFields = 10 func CommitStart(builder *flatbuffers.Builder) { builder.StartObject(CommitNumFields) @@ -255,6 +263,10 @@ func CommitAddTimestampMillis(builder *flatbuffers.Builder, timestampMillis uint func CommitAddUserTimestampMillis(builder *flatbuffers.Builder, userTimestampMillis int64) { builder.PrependInt64Slot(8, userTimestampMillis, 0) } +func CommitAddSignature(builder *flatbuffers.Builder, signature flatbuffers.UOffsetT) { + builder.PrependUOffsetTSlot(9, flatbuffers.UOffsetT(signature), 0) +} + func CommitEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT { return builder.EndObject() } diff --git a/go/libraries/doltcore/cherry_pick/cherry_pick.go b/go/libraries/doltcore/cherry_pick/cherry_pick.go index ec57e888a14..19527414054 100644 --- a/go/libraries/doltcore/cherry_pick/cherry_pick.go +++ b/go/libraries/doltcore/cherry_pick/cherry_pick.go @@ -139,7 +139,7 @@ func CherryPick(ctx *sql.Context, commit string, options CherryPickOptions) (str return "", nil, fmt.Errorf("failed to get roots for current session") } - pendingCommit, err := doltSession.NewPendingCommit(ctx, dbName, roots, commitProps, "") + pendingCommit, err := doltSession.NewPendingCommit(ctx, dbName, roots, commitProps) if err != nil { return "", nil, err } diff --git a/go/libraries/doltcore/sqle/dolt_log_table_function.go b/go/libraries/doltcore/sqle/dolt_log_table_function.go index 4107bca274a..d7853d15030 100644 --- a/go/libraries/doltcore/sqle/dolt_log_table_function.go +++ b/go/libraries/doltcore/sqle/dolt_log_table_function.go @@ -57,6 +57,7 @@ var logTableSchema = sql.Schema{ &sql.Column{Name: "email", Type: types.Text}, &sql.Column{Name: "date", Type: types.Datetime}, &sql.Column{Name: "message", Type: types.Text}, + &sql.Column{Name: "signature", Type: types.Text}, } // NewInstance creates a new instance of TableFunction interface @@ -748,7 +749,7 @@ func (itr *logTableFunctionRowIter) Next(ctx *sql.Context) (sql.Row, error) { return nil, err } - row := sql.NewRow(commitHash.String(), meta.Name, meta.Email, meta.Time(), meta.Description) + row := sql.NewRow(commitHash.String(), meta.Name, meta.Email, meta.Time(), meta.Description, meta.Signature) if itr.showParents { prStr, err := getParentsString(ctx, commit) diff --git a/go/libraries/doltcore/sqle/dprocedures/dolt_commit.go b/go/libraries/doltcore/sqle/dprocedures/dolt_commit.go index 15271ffc6ac..aac862c0301 100644 --- a/go/libraries/doltcore/sqle/dprocedures/dolt_commit.go +++ b/go/libraries/doltcore/sqle/dprocedures/dolt_commit.go @@ -15,10 +15,11 @@ package dprocedures import ( + "context" "errors" "fmt" "github.com/dolthub/dolt/go/libraries/doltcore/doltdb" - "github.com/dolthub/dolt/go/libraries/utils/config" + "github.com/dolthub/dolt/go/libraries/utils/gpg" "strings" "github.com/dolthub/go-mysql-server/sql" @@ -166,20 +167,12 @@ func doDoltCommit(ctx *sql.Context, args []string) (string, bool, error) { Email: email, } - signature := "" - if apr.Contains(cli.SignFlag) || strings.ToUpper(cliCtx.Config().GetStringOrDefault(config.SignCommitsKey, "FALSE")) == "TRUE" { - strToSign, err := commitSignatureStr(ctx, dbName, roots, csp) - if err != nil { - return "", false, err - } - - signature, err = gpgSign([]byte(strToSign)) - if err != nil { - return "", false, err - } + shouldSign, err := dsess.GetBooleanSystemVar(ctx, "gpgsign") + if err != nil { + return "", false, fmt.Errorf("failed to get gpgsign: %w", err) } - pendingCommit, err := dSess.NewPendingCommit(ctx, dbName, roots, csp, signature) + pendingCommit, err := dSess.NewPendingCommit(ctx, dbName, roots, csp) if err != nil { return "", false, err } @@ -191,6 +184,32 @@ func doDoltCommit(ctx *sql.Context, args []string) (string, bool, error) { return "", false, errors.New("nothing to commit") } + if apr.Contains(cli.SignFlag) || shouldSign { + keyId := apr.GetValueOrDefault(cli.SignFlag, "") + + if keyId == "" { + v, err := ctx.GetSessionVariable(ctx, "signingkey") + if err != nil && !sql.ErrUnknownSystemVariable.Is(err) { + return "", false, fmt.Errorf("failed to get signingkey: %w", err) + } else if err == nil { + keyId = v.(string) + } + } + + strToSign, err := commitSignatureStr(ctx, dbName, roots, csp) + if err != nil { + return "", false, err + } + + signed, signature, err := gpgSign(ctx, keyId, []byte(strToSign)) + if err != nil { + return "", false, err + } + + fmt.Println(signed, signature) + pendingCommit.CommitOptions.Meta.Signature = signature + } + newCommit, err := dSess.DoltCommit(ctx, dbName, dSess.GetTransaction(), pendingCommit) if err != nil { return "", false, err @@ -249,6 +268,23 @@ func commitSignatureStr(ctx *sql.Context, dbName string, roots doltdb.Roots, csp return strings.Join(lines, "\n"), nil } -func gpgSign(toSign []byte) (string, error) { - return "", nil +func gpgSign(ctx context.Context, keyId string, toSign []byte) (string, string, error) { + blocks, err := gpg.Sign(ctx, keyId, toSign) + if err != nil { + return "", "", fmt.Errorf("failed to sign: %w", err) + } + + signedDataBlocks := gpg.GetBlocksOfType(blocks, "PGP SIGNED MESSAGE") + + if len(signedDataBlocks) != 1 { + return "", "", fmt.Errorf("expected 1 'PGP SIGNED MESSAGE' block, got %d", len(signedDataBlocks)) + } + + signatureBlocks := gpg.GetBlocksOfType(blocks, "PGP SIGNATURE") + + if len(signatureBlocks) != 1 { + return "", "", fmt.Errorf("expected 1 PGP SIGNATURE block, got %d", len(signatureBlocks)) + } + + return string(signedDataBlocks[0].Bytes), string(signatureBlocks[0].Bytes), nil } diff --git a/go/libraries/doltcore/sqle/dprocedures/dolt_merge.go b/go/libraries/doltcore/sqle/dprocedures/dolt_merge.go index 96b0225daf6..d950141cd8b 100644 --- a/go/libraries/doltcore/sqle/dprocedures/dolt_merge.go +++ b/go/libraries/doltcore/sqle/dprocedures/dolt_merge.go @@ -435,7 +435,7 @@ func executeNoFFMerge( Force: spec.Force, Name: spec.Name, Email: spec.Email, - }, "") + }) if err != nil { return nil, nil, err } diff --git a/go/libraries/doltcore/sqle/dsess/session.go b/go/libraries/doltcore/sqle/dsess/session.go index fb830da9c49..59d9a83eb64 100644 --- a/go/libraries/doltcore/sqle/dsess/session.go +++ b/go/libraries/doltcore/sqle/dsess/session.go @@ -661,13 +661,13 @@ func (d *DoltSession) PendingCommitAllStaged(ctx *sql.Context, branchState *bran return nil, err } - return d.newPendingCommit(ctx, branchState, roots, props, "") + return d.newPendingCommit(ctx, branchState, roots, props) } // NewPendingCommit returns a new |doltdb.PendingCommit| for the database named, using the roots given, adding any // merge parent from an in progress merge as appropriate. The session working set is not updated with these new roots, // but they are set in the returned |doltdb.PendingCommit|. If there are no changes staged, this method returns nil. -func (d *DoltSession) NewPendingCommit(ctx *sql.Context, dbName string, roots doltdb.Roots, props actions.CommitStagedProps, signature string) (*doltdb.PendingCommit, error) { +func (d *DoltSession) NewPendingCommit(ctx *sql.Context, dbName string, roots doltdb.Roots, props actions.CommitStagedProps) (*doltdb.PendingCommit, error) { branchState, ok, err := d.lookupDbState(ctx, dbName) if err != nil { return nil, err @@ -676,12 +676,12 @@ func (d *DoltSession) NewPendingCommit(ctx *sql.Context, dbName string, roots do return nil, fmt.Errorf("session state for database %s not found", dbName) } - return d.newPendingCommit(ctx, branchState, roots, props, signature) + return d.newPendingCommit(ctx, branchState, roots, props) } // newPendingCommit returns a new |doltdb.PendingCommit| for the database and head named by |branchState| // See NewPendingCommit -func (d *DoltSession) newPendingCommit(ctx *sql.Context, branchState *branchState, roots doltdb.Roots, props actions.CommitStagedProps, signature string) (*doltdb.PendingCommit, error) { +func (d *DoltSession) newPendingCommit(ctx *sql.Context, branchState *branchState, roots doltdb.Roots, props actions.CommitStagedProps) (*doltdb.PendingCommit, error) { headCommit := branchState.headCommit headHash, _ := headCommit.HashOf() diff --git a/go/libraries/doltcore/sqle/system_variables.go b/go/libraries/doltcore/sqle/system_variables.go index 5e8c8ee5db9..3585fdfe1cd 100644 --- a/go/libraries/doltcore/sqle/system_variables.go +++ b/go/libraries/doltcore/sqle/system_variables.go @@ -254,6 +254,20 @@ func AddDoltSystemVariables() { Type: types.NewSystemStringType(dsess.DoltStatsBranches), Default: "", }, + &sql.MysqlSystemVariable{ + Name: "signingkey", + Dynamic: true, + Scope: sql.GetMysqlScope(sql.SystemVariableScope_PersistOnly), + Type: types.NewSystemStringType("signingkey"), + Default: "", + }, + &sql.MysqlSystemVariable{ + Name: "gpgsign", + Dynamic: true, + Scope: sql.GetMysqlScope(sql.SystemVariableScope_PersistOnly), + Type: types.NewSystemBoolType("gpgsign"), + Default: int8(0), + }, }) } diff --git a/go/libraries/utils/gpg/sign.go b/go/libraries/utils/gpg/sign.go index 38125e9a4d5..2205b4c8cc7 100644 --- a/go/libraries/utils/gpg/sign.go +++ b/go/libraries/utils/gpg/sign.go @@ -11,7 +11,7 @@ import ( "strings" ) -func Sign(ctx context.Context, keyId string, message []byte) ([]byte, error) { +func Sign(ctx context.Context, keyId string, message []byte) ([]*pem.Block, error) { args := []string{"--clear-sign", "-u", keyId} cmdStr := fmt.Sprintf("gpg %s", strings.Join(args, " ")) cmd := exec.CommandContext(ctx, "gpg", args...) @@ -72,19 +72,12 @@ func Sign(ctx context.Context, keyId string, message []byte) ([]byte, error) { return nil, fmt.Errorf("failed to read output for command '%s': %w", cmdStr, err) } - var signature []byte - pemBlocks := decodeAllPEMBlocks(outBuf.Bytes()) - for _, block := range pemBlocks { - fmt.Println("type:", block.Type) - fmt.Println("headers:", block.Headers) - fmt.Println("bytes:", block.Bytes) - - if block.Type == "SIGNATURE" { - signature = block.Bytes - } + pemBlocks, err := decodeAllPEMBlocks(outBuf.Bytes()) + if err != nil { + return nil, fmt.Errorf("failed to decode PEM blocks: %w", err) } - return signature, nil + return pemBlocks, nil } func listenToOut(ctx context.Context, eg *errgroup.Group, r io.Reader) *bytes.Buffer { @@ -97,20 +90,74 @@ func listenToOut(ctx context.Context, eg *errgroup.Group, r io.Reader) *bytes.Bu } // Throws away all intersperesed text and returns all decoded PEM blocks, in the order they are read. -func decodeAllPEMBlocks(bs []byte) []*pem.Block { - fmt.Println("decoding PEM blocks in:") - fmt.Println(string(bs)) +func decodeAllPEMBlocks(bs []byte) ([]*pem.Block, error) { + const beginHeaderPrefix = "BEGIN " + const pemSeperator = "-----" + + sections := strings.Split(string(bs), pemSeperator) + filtered := make([]string, 0, len(sections)) + + for i, section := range sections { + section := strings.TrimSpace(section) + + if i == 0 || i == len(sections)-1 { + if section == "" { + continue + } + } + + filtered = append(filtered, section) + } + + pemBlocks := make([]*pem.Block, 0, len(filtered)) + for i := 0; i < len(filtered); { + headerName := filtered[i] + i++ + + if strings.HasPrefix(headerName, beginHeaderPrefix) { + headerName = headerName[len(beginHeaderPrefix):] + + body := filtered[i] + i++ + + headers := make(map[string]string) + lines := strings.Split(body, "\n") + for j, line := range lines { + trimmed := strings.TrimSpace(line) + tokens := strings.Split(trimmed, ":") + if len(tokens) == 2 { + headers[strings.TrimSpace(tokens[0])] = strings.TrimSpace(tokens[1]) + } else { + if j > 0 { + if lines[j] == "" { + j++ + } + + lines = lines[j:] + } + + break + } + } - var b *pem.Block + body = strings.Join(lines, "\n") + pemBlocks = append(pemBlocks, &pem.Block{ + Type: headerName, + Headers: headers, + Bytes: []byte(body), + }) + } + } + + return pemBlocks, nil +} + +func GetBlocksOfType(blocks []*pem.Block, blTypeStr string) []*pem.Block { var ret []*pem.Block - for { - b, bs = pem.Decode(bs) - if b != nil { - fmt.Println("decoded block") - ret = append(ret, b) - } else { - fmt.Printf("decoded '%d' blocks\n", len(ret)) - return ret + for _, block := range blocks { + if block.Type == blTypeStr { + ret = append(ret, block) } } + return ret } diff --git a/go/libraries/utils/gpg/sign_test.go b/go/libraries/utils/gpg/sign_test.go index c1d8c8d8c8d..490370dfbac 100644 --- a/go/libraries/utils/gpg/sign_test.go +++ b/go/libraries/utils/gpg/sign_test.go @@ -2,6 +2,7 @@ package gpg import ( "context" + "encoding/pem" "fmt" "github.com/stretchr/testify/require" "testing" @@ -41,7 +42,19 @@ YN6Sszg+o8Aw0AT4M6nrLTe3YaIE6sR4YMxOCSOPAT9oSDg1t5s= =fklH -----END PGP SIGNATURE-----` - pemBlocks := decodeAllPEMBlocks([]byte(pemBlock)) + pemBlocks, err := decodeAllPEMBlocks([]byte(pemBlock)) + require.NoError(t, err) fmt.Println(len(pemBlocks)) require.Len(t, pemBlocks, 2) + require.True(t, containsBlockOfType(pemBlocks, "PGP SIGNED MESSAGE")) + require.True(t, containsBlockOfType(pemBlocks, "PGP SIGNATURE")) +} + +func containsBlockOfType(blocks []*pem.Block, blockType string) bool { + for _, block := range blocks { + if block.Type == blockType { + return true + } + } + return false } diff --git a/go/store/datas/commit.go b/go/store/datas/commit.go index 2600c38f52b..8d18b125734 100644 --- a/go/store/datas/commit.go +++ b/go/store/datas/commit.go @@ -174,6 +174,7 @@ func commit_flatbuffer(vaddr hash.Hash, opts CommitOptions, heights []uint64, pa nameoff := builder.CreateString(opts.Meta.Name) emailoff := builder.CreateString(opts.Meta.Email) descoff := builder.CreateString(opts.Meta.Description) + sigoff := builder.CreateString(opts.Meta.Signature) serial.CommitStart(builder) serial.CommitAddRoot(builder, vaddroff) serial.CommitAddHeight(builder, maxheight+1) @@ -184,6 +185,7 @@ func commit_flatbuffer(vaddr hash.Hash, opts CommitOptions, heights []uint64, pa serial.CommitAddDescription(builder, descoff) serial.CommitAddTimestampMillis(builder, opts.Meta.Timestamp) serial.CommitAddUserTimestampMillis(builder, opts.Meta.UserTimestamp) + serial.CommitAddSignature(builder, sigoff) bytes := serial.FinishMessage(builder, serial.CommitEnd(builder), []byte(serial.CommitFileID)) return bytes, maxheight + 1 @@ -582,6 +584,7 @@ func GetCommitMeta(ctx context.Context, cv types.Value) (*CommitMeta, error) { ret.Description = string(cmsg.Description()) ret.Timestamp = cmsg.TimestampMillis() ret.UserTimestamp = cmsg.UserTimestampMillis() + ret.Signature = string(cmsg.Signature()) return ret, nil } c, ok := cv.(types.Struct) diff --git a/go/store/datas/commit_meta.go b/go/store/datas/commit_meta.go index 6fdd2433ba1..d0839dd8f08 100644 --- a/go/store/datas/commit_meta.go +++ b/go/store/datas/commit_meta.go @@ -34,6 +34,7 @@ const ( commitMetaTimestampKey = "timestamp" commitMetaUserTSKey = "user_timestamp" commitMetaVersionKey = "metaversion" + commitMetaSignature = "signature" commitMetaStName = "metadata" commitMetaVersion = "1.0" @@ -60,6 +61,7 @@ type CommitMeta struct { Timestamp uint64 Description string UserTimestamp int64 + Signature string } // NewCommitMeta creates a CommitMeta instance from a name, email, and description and uses the current time for the @@ -118,7 +120,7 @@ func NewCommitMetaWithUserTS(name, email, desc string, userTS time.Time) (*Commi committerDateMillis := uint64(CommitterDate().UnixMilli()) authorDateMillis := userTS.UnixMilli() - return &CommitMeta{n, e, committerDateMillis, d, authorDateMillis}, nil + return &CommitMeta{n, e, committerDateMillis, d, authorDateMillis, ""}, nil } func getRequiredFromSt(st types.Struct, k string) (types.Value, error) { @@ -164,12 +166,21 @@ func CommitMetaFromNomsSt(st types.Struct) (*CommitMeta, error) { userTS = types.Int(int64(uint64(ts.(types.Uint)))) } + signature, ok, err := st.MaybeGet(commitMetaSignature) + + if err != nil { + return nil, err + } else if !ok { + signature = types.String("") + } + return &CommitMeta{ string(n.(types.String)), string(e.(types.String)), uint64(ts.(types.Uint)), string(d.(types.String)), int64(userTS.(types.Int)), + string(signature.(types.String)), }, nil } @@ -181,6 +192,7 @@ func (cm *CommitMeta) toNomsStruct(nbf *types.NomsBinFormat) (types.Struct, erro commitMetaTimestampKey: types.Uint(cm.Timestamp), commitMetaVersionKey: types.String(commitMetaVersion), commitMetaUserTSKey: types.Int(cm.UserTimestamp), + commitMetaSignature: types.String(cm.Signature), } return types.NewStruct(nbf, commitMetaStName, metadata) From a4b285ae98b8cbe59771ec4f81ed2a30e51c58ed Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Wed, 28 Aug 2024 15:08:22 -0700 Subject: [PATCH 03/53] signature in log (should be optional) --- go/cmd/dolt/commands/utils.go | 4 +-- .../doltcore/sqle/dolt_log_table_function.go | 4 ++- .../doltcore/sqle/dprocedures/dolt_commit.go | 27 ++----------------- go/libraries/utils/gpg/sign.go | 11 +++----- 4 files changed, 10 insertions(+), 36 deletions(-) diff --git a/go/cmd/dolt/commands/utils.go b/go/cmd/dolt/commands/utils.go index 391dd87565f..34bb4b8d4d2 100644 --- a/go/cmd/dolt/commands/utils.go +++ b/go/cmd/dolt/commands/utils.go @@ -676,8 +676,8 @@ func getCommitInfo(queryist cli.Queryist, sqlCtx *sql.Context, ref string) (*Com isHead := commitHash == hashOfHead var signature string - if len(row) > 6 { - signature = row[6].(string) + if len(row) > 7 { + signature = row[7].(string) } localBranchesForHash, err := getBranchesForHash(queryist, sqlCtx, commitHash, true) diff --git a/go/libraries/doltcore/sqle/dolt_log_table_function.go b/go/libraries/doltcore/sqle/dolt_log_table_function.go index d7853d15030..31ba438201c 100644 --- a/go/libraries/doltcore/sqle/dolt_log_table_function.go +++ b/go/libraries/doltcore/sqle/dolt_log_table_function.go @@ -749,7 +749,7 @@ func (itr *logTableFunctionRowIter) Next(ctx *sql.Context) (sql.Row, error) { return nil, err } - row := sql.NewRow(commitHash.String(), meta.Name, meta.Email, meta.Time(), meta.Description, meta.Signature) + row := sql.NewRow(commitHash.String(), meta.Name, meta.Email, meta.Time(), meta.Description) if itr.showParents { prStr, err := getParentsString(ctx, commit) @@ -765,6 +765,8 @@ func (itr *logTableFunctionRowIter) Next(ctx *sql.Context) (sql.Row, error) { row = row.Append(sql.NewRow(getRefsString(branchNames, isHead))) } + row = row.Append(sql.NewRow(meta.Signature)) + return row, nil } diff --git a/go/libraries/doltcore/sqle/dprocedures/dolt_commit.go b/go/libraries/doltcore/sqle/dprocedures/dolt_commit.go index aac862c0301..8faa4201adb 100644 --- a/go/libraries/doltcore/sqle/dprocedures/dolt_commit.go +++ b/go/libraries/doltcore/sqle/dprocedures/dolt_commit.go @@ -15,7 +15,6 @@ package dprocedures import ( - "context" "errors" "fmt" "github.com/dolthub/dolt/go/libraries/doltcore/doltdb" @@ -201,13 +200,12 @@ func doDoltCommit(ctx *sql.Context, args []string) (string, bool, error) { return "", false, err } - signed, signature, err := gpgSign(ctx, keyId, []byte(strToSign)) + signature, err := gpg.Sign(ctx, keyId, []byte(strToSign)) if err != nil { return "", false, err } - fmt.Println(signed, signature) - pendingCommit.CommitOptions.Meta.Signature = signature + pendingCommit.CommitOptions.Meta.Signature = string(signature) } newCommit, err := dSess.DoltCommit(ctx, dbName, dSess.GetTransaction(), pendingCommit) @@ -267,24 +265,3 @@ func commitSignatureStr(ctx *sql.Context, dbName string, roots doltdb.Roots, csp return strings.Join(lines, "\n"), nil } - -func gpgSign(ctx context.Context, keyId string, toSign []byte) (string, string, error) { - blocks, err := gpg.Sign(ctx, keyId, toSign) - if err != nil { - return "", "", fmt.Errorf("failed to sign: %w", err) - } - - signedDataBlocks := gpg.GetBlocksOfType(blocks, "PGP SIGNED MESSAGE") - - if len(signedDataBlocks) != 1 { - return "", "", fmt.Errorf("expected 1 'PGP SIGNED MESSAGE' block, got %d", len(signedDataBlocks)) - } - - signatureBlocks := gpg.GetBlocksOfType(blocks, "PGP SIGNATURE") - - if len(signatureBlocks) != 1 { - return "", "", fmt.Errorf("expected 1 PGP SIGNATURE block, got %d", len(signatureBlocks)) - } - - return string(signedDataBlocks[0].Bytes), string(signatureBlocks[0].Bytes), nil -} diff --git a/go/libraries/utils/gpg/sign.go b/go/libraries/utils/gpg/sign.go index 2205b4c8cc7..a26323819bf 100644 --- a/go/libraries/utils/gpg/sign.go +++ b/go/libraries/utils/gpg/sign.go @@ -11,7 +11,7 @@ import ( "strings" ) -func Sign(ctx context.Context, keyId string, message []byte) ([]*pem.Block, error) { +func Sign(ctx context.Context, keyId string, message []byte) ([]byte, error) { args := []string{"--clear-sign", "-u", keyId} cmdStr := fmt.Sprintf("gpg %s", strings.Join(args, " ")) cmd := exec.CommandContext(ctx, "gpg", args...) @@ -72,12 +72,7 @@ func Sign(ctx context.Context, keyId string, message []byte) ([]*pem.Block, erro return nil, fmt.Errorf("failed to read output for command '%s': %w", cmdStr, err) } - pemBlocks, err := decodeAllPEMBlocks(outBuf.Bytes()) - if err != nil { - return nil, fmt.Errorf("failed to decode PEM blocks: %w", err) - } - - return pemBlocks, nil + return outBuf.Bytes(), nil } func listenToOut(ctx context.Context, eg *errgroup.Group, r io.Reader) *bytes.Buffer { @@ -90,7 +85,7 @@ func listenToOut(ctx context.Context, eg *errgroup.Group, r io.Reader) *bytes.Bu } // Throws away all intersperesed text and returns all decoded PEM blocks, in the order they are read. -func decodeAllPEMBlocks(bs []byte) ([]*pem.Block, error) { +func DecodeAllPEMBlocks(bs []byte) ([]*pem.Block, error) { const beginHeaderPrefix = "BEGIN " const pemSeperator = "-----" From c8c252a143004a6716b72ea83243066476dcc93d Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Wed, 28 Aug 2024 16:01:24 -0700 Subject: [PATCH 04/53] flatbuffer changes --- go/gen/fb/serial/commit.go | 17 ++++++------ go/libraries/utils/gpg/sign.go | 47 ++++++++++++++++++++++++---------- go/serial/commit.fbs | 1 + 3 files changed, 42 insertions(+), 23 deletions(-) diff --git a/go/gen/fb/serial/commit.go b/go/gen/fb/serial/commit.go index 3dbca73ff6f..01b41213a94 100644 --- a/go/gen/fb/serial/commit.go +++ b/go/gen/fb/serial/commit.go @@ -190,14 +190,6 @@ func (rcv *Commit) Description() []byte { return nil } -func (rcv *Commit) Signature() []byte { - o := flatbuffers.UOffsetT(rcv._tab.Offset(22)) - if o != 0 { - return rcv._tab.ByteVector(o + rcv._tab.Pos) - } - return nil -} - func (rcv *Commit) TimestampMillis() uint64 { o := flatbuffers.UOffsetT(rcv._tab.Offset(18)) if o != 0 { @@ -222,6 +214,14 @@ func (rcv *Commit) MutateUserTimestampMillis(n int64) bool { return rcv._tab.MutateInt64Slot(20, n) } +func (rcv *Commit) Signature() []byte { + o := flatbuffers.UOffsetT(rcv._tab.Offset(22)) + if o != 0 { + return rcv._tab.ByteVector(o + rcv._tab.Pos) + } + return nil +} + const CommitNumFields = 10 func CommitStart(builder *flatbuffers.Builder) { @@ -266,7 +266,6 @@ func CommitAddUserTimestampMillis(builder *flatbuffers.Builder, userTimestampMil func CommitAddSignature(builder *flatbuffers.Builder, signature flatbuffers.UOffsetT) { builder.PrependUOffsetTSlot(9, flatbuffers.UOffsetT(signature), 0) } - func CommitEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT { return builder.EndObject() } diff --git a/go/libraries/utils/gpg/sign.go b/go/libraries/utils/gpg/sign.go index a26323819bf..fd8521d54bc 100644 --- a/go/libraries/utils/gpg/sign.go +++ b/go/libraries/utils/gpg/sign.go @@ -11,56 +11,55 @@ import ( "strings" ) -func Sign(ctx context.Context, keyId string, message []byte) ([]byte, error) { - args := []string{"--clear-sign", "-u", keyId} +func execGpgAndReadOutput(ctx context.Context, in []byte, args []string) (*bytes.Buffer, *bytes.Buffer, error) { cmdStr := fmt.Sprintf("gpg %s", strings.Join(args, " ")) cmd := exec.CommandContext(ctx, "gpg", args...) stdOut, err := cmd.StdoutPipe() if err != nil { - return nil, fmt.Errorf("failed to get stdout for command '%s': %w", cmdStr, err) + return nil, nil, fmt.Errorf("failed to get stdout for command '%s': %w", cmdStr, err) } stdErr, err := cmd.StderrPipe() if err != nil { - return nil, fmt.Errorf("failed to get stderr for command '%s': %w", cmdStr, err) + return nil, nil, fmt.Errorf("failed to get stderr for command '%s': %w", cmdStr, err) } stdIn, err := cmd.StdinPipe() if err != nil { - return nil, fmt.Errorf("failed to get stdin for command '%s': %w", cmdStr, err) + return nil, nil, fmt.Errorf("failed to get stdin for command '%s': %w", cmdStr, err) } err = cmd.Start() if err != nil { - return nil, fmt.Errorf("failed to start command '%s': %w", cmdStr, err) + return nil, nil, fmt.Errorf("failed to start command '%s': %w", cmdStr, err) } eg, egCtx := errgroup.WithContext(ctx) outBuf := listenToOut(egCtx, eg, stdOut) errBuf := listenToOut(egCtx, eg, stdErr) - n, err := io.Copy(stdIn, strings.NewReader(string(message))) + n, err := io.Copy(stdIn, strings.NewReader(string(in))) if err != nil { - return nil, fmt.Errorf("failed to write stdin for command '%s': %w", cmdStr, err) - } else if n < int64(len(message)) { - return nil, fmt.Errorf("failed to write stdin for command '%s': EOF before all bytes written", cmd) + return nil, nil, fmt.Errorf("failed to write stdin for command '%s': %w", cmdStr, err) + } else if n < int64(len(in)) { + return nil, nil, fmt.Errorf("failed to write stdin for command '%s': EOF before all bytes written", cmd) } err = stdIn.Close() if err != nil { - return nil, fmt.Errorf("failed to close stdin for command '%s': %w", cmdStr, err) + return nil, nil, fmt.Errorf("failed to close stdin for command '%s': %w", cmdStr, err) } for { state, err := cmd.Process.Wait() if err != nil { - return nil, fmt.Errorf("failed to wait for command '%s': %w", cmdStr, err) + return nil, nil, fmt.Errorf("failed to wait for command '%s': %w", cmdStr, err) } if state.Exited() { if state.ExitCode() != 0 { - return nil, fmt.Errorf("command '%s' exited with code %d. stdout: '%s', stderr: '%s'", cmdStr, state.ExitCode(), outBuf.String(), errBuf.String()) + return nil, nil, fmt.Errorf("command '%s' exited with code %d. stdout: '%s', stderr: '%s'", cmdStr, state.ExitCode(), outBuf.String(), errBuf.String()) } break @@ -69,7 +68,27 @@ func Sign(ctx context.Context, keyId string, message []byte) ([]byte, error) { err = eg.Wait() if err != nil { - return nil, fmt.Errorf("failed to read output for command '%s': %w", cmdStr, err) + return nil, nil, fmt.Errorf("failed to read output for command '%s': %w", cmdStr, err) + } + + return outBuf, errBuf, nil +} + +func Sign(ctx context.Context, keyId string, message []byte) ([]byte, error) { + args := []string{"--clear-sign", "-u", keyId} + outBuf, _, err := execGpgAndReadOutput(ctx, message, args) + if err != nil { + return nil, err + } + + return outBuf.Bytes(), nil +} + +func Verify(ctx context.Context, signature []byte) ([]byte, error) { + args := []string{"--verify"} + outBuf, _, err := execGpgAndReadOutput(ctx, signature, args) + if err != nil { + return nil, err } return outBuf.Bytes(), nil diff --git a/go/serial/commit.fbs b/go/serial/commit.fbs index 92f70a0899f..58239bb8480 100644 --- a/go/serial/commit.fbs +++ b/go/serial/commit.fbs @@ -28,6 +28,7 @@ table Commit { description:string (required); timestamp_millis:uint64; user_timestamp_millis:int64; + signature:string; } // KEEP THIS IN SYNC WITH fileidentifiers.go From 1c6f5483d3bbdb02cee968d9293ad5e08e7109cb Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Tue, 3 Sep 2024 15:29:22 -0700 Subject: [PATCH 05/53] log --show-signature and initial test setup --- go/cmd/dolt/cli/arg_parser_helpers.go | 1 + go/cmd/dolt/cli/flags.go | 1 + go/cmd/dolt/commands/cherry-pick.go | 2 +- go/cmd/dolt/commands/commit.go | 2 +- go/cmd/dolt/commands/log.go | 8 +- go/cmd/dolt/commands/merge.go | 2 +- go/cmd/dolt/commands/pull.go | 2 +- go/cmd/dolt/commands/revert.go | 2 +- go/cmd/dolt/commands/show.go | 2 +- go/cmd/dolt/commands/utils.go | 33 +++++++- .../doltcore/sqle/dolt_log_table_function.go | 67 ++++++++++----- go/libraries/utils/gpg/sign.go | 6 +- go/libraries/utils/gpg/sign_test.go | 6 +- integration-tests/bats/private.pgp | 81 +++++++++++++++++++ integration-tests/bats/signed.bats | 54 +++++++++++++ 15 files changed, 231 insertions(+), 38 deletions(-) create mode 100644 integration-tests/bats/private.pgp create mode 100644 integration-tests/bats/signed.bats diff --git a/go/cmd/dolt/cli/arg_parser_helpers.go b/go/cmd/dolt/cli/arg_parser_helpers.go index 71de6190dfa..5065f0a3b6e 100644 --- a/go/cmd/dolt/cli/arg_parser_helpers.go +++ b/go/cmd/dolt/cli/arg_parser_helpers.go @@ -279,6 +279,7 @@ func CreateLogArgParser(isTableFunction bool) *argparser.ArgParser { ap.SupportsFlag(ParentsFlag, "", "Shows all parents of each commit in the log.") ap.SupportsString(DecorateFlag, "", "decorate_fmt", "Shows refs next to commits. Valid options are short, full, no, and auto") ap.SupportsStringList(NotFlag, "", "revision", "Excludes commits from revision.") + ap.SupportsFlag(ShowSignatureFlag, "", "Shows the signature of each commit.") if isTableFunction { ap.SupportsStringList(TablesFlag, "t", "table", "Restricts the log to commits that modified the specified tables.") } else { diff --git a/go/cmd/dolt/cli/flags.go b/go/cmd/dolt/cli/flags.go index 4981f470111..1c0a717a019 100644 --- a/go/cmd/dolt/cli/flags.go +++ b/go/cmd/dolt/cli/flags.go @@ -65,6 +65,7 @@ const ( SetUpstreamFlag = "set-upstream" ShallowFlag = "shallow" ShowIgnoredFlag = "ignored" + ShowSignatureFlag = "show-signature" SignFlag = "gpg-sign" SilentFlag = "silent" SingleBranchFlag = "single-branch" diff --git a/go/cmd/dolt/commands/cherry-pick.go b/go/cmd/dolt/commands/cherry-pick.go index d45272855e4..c462134c30a 100644 --- a/go/cmd/dolt/commands/cherry-pick.go +++ b/go/cmd/dolt/commands/cherry-pick.go @@ -206,7 +206,7 @@ hint: commit your changes (dolt commit -am \"\") or reset them (dolt re pager := outputpager.Start() defer pager.Stop() - PrintCommitInfo(pager, 0, false, "auto", commit) + PrintCommitInfo(pager, 0, false, false, "auto", commit) }) return nil diff --git a/go/cmd/dolt/commands/commit.go b/go/cmd/dolt/commands/commit.go index 736a4ad5146..cf1bba4a246 100644 --- a/go/cmd/dolt/commands/commit.go +++ b/go/cmd/dolt/commands/commit.go @@ -181,7 +181,7 @@ func performCommit(ctx context.Context, commandStr string, args []string, cliCtx pager := outputpager.Start() defer pager.Stop() - PrintCommitInfo(pager, 0, false, "auto", commit) + PrintCommitInfo(pager, 0, false, false, "auto", commit) }) } diff --git a/go/cmd/dolt/commands/log.go b/go/cmd/dolt/commands/log.go index 455b0fd9177..bed423191f2 100644 --- a/go/cmd/dolt/commands/log.go +++ b/go/cmd/dolt/commands/log.go @@ -280,10 +280,14 @@ func getExistingTables(revisions []string, queryist cli.Queryist, sqlCtx *sql.Co // logCommits takes a list of sql rows that have only 1 column, commit hash, and retrieves the commit info for each hash to be printed to std out func logCommits(apr *argparser.ArgParseResults, commitHashes []sql.Row, queryist cli.Queryist, sqlCtx *sql.Context) error { + opts := commitInfoOptions{ + showSignature: apr.Contains(cli.ShowSignatureFlag), + } + var commitsInfo []CommitInfo for _, hash := range commitHashes { cmHash := hash[0].(string) - commit, err := getCommitInfo(queryist, sqlCtx, cmHash) + commit, err := getCommitInfoWithOptions(queryist, sqlCtx, cmHash, opts) if commit == nil { return fmt.Errorf("no commits found for ref %s", cmHash) } @@ -338,7 +342,7 @@ func logCompact(pager *outputpager.Pager, apr *argparser.ArgParseResults, commit func logDefault(pager *outputpager.Pager, apr *argparser.ArgParseResults, commits []CommitInfo, sqlCtx *sql.Context, queryist cli.Queryist) error { for _, comm := range commits { - PrintCommitInfo(pager, apr.GetIntOrDefault(cli.MinParentsFlag, 0), apr.Contains(cli.ParentsFlag), apr.GetValueOrDefault(cli.DecorateFlag, "auto"), &comm) + PrintCommitInfo(pager, apr.GetIntOrDefault(cli.MinParentsFlag, 0), apr.Contains(cli.ParentsFlag), apr.Contains(cli.ShowSignatureFlag), apr.GetValueOrDefault(cli.DecorateFlag, "auto"), &comm) if apr.Contains(cli.StatFlag) { if comm.parentHashes != nil && len(comm.parentHashes) == 1 { // don't print stats for merge commits diffStats := make(map[string]*merge.MergeStats) diff --git a/go/cmd/dolt/commands/merge.go b/go/cmd/dolt/commands/merge.go index 8666de33d3f..7e901547bb3 100644 --- a/go/cmd/dolt/commands/merge.go +++ b/go/cmd/dolt/commands/merge.go @@ -398,7 +398,7 @@ func printMergeStats(fastForward bool, pager := outputpager.Start() defer pager.Stop() - PrintCommitInfo(pager, 0, false, "auto", commit) + PrintCommitInfo(pager, 0, false, false, "auto", commit) }) } } diff --git a/go/cmd/dolt/commands/pull.go b/go/cmd/dolt/commands/pull.go index 5c88a078229..cc41604a806 100644 --- a/go/cmd/dolt/commands/pull.go +++ b/go/cmd/dolt/commands/pull.go @@ -174,7 +174,7 @@ func (cmd PullCmd) Exec(ctx context.Context, commandStr string, args []string, d pager := outputpager.Start() defer pager.Stop() - PrintCommitInfo(pager, 0, false, "auto", commit) + PrintCommitInfo(pager, 0, false, false, "auto", commit) }) } } else { diff --git a/go/cmd/dolt/commands/revert.go b/go/cmd/dolt/commands/revert.go index 3e2622c6ba0..04b5b83e673 100644 --- a/go/cmd/dolt/commands/revert.go +++ b/go/cmd/dolt/commands/revert.go @@ -144,7 +144,7 @@ func (cmd RevertCmd) Exec(ctx context.Context, commandStr string, args []string, pager := outputpager.Start() defer pager.Stop() - PrintCommitInfo(pager, 0, false, "auto", commit) + PrintCommitInfo(pager, 0, false, false, "auto", commit) }) return 0 diff --git a/go/cmd/dolt/commands/show.go b/go/cmd/dolt/commands/show.go index 3e6cde95adb..9aa3cc4f46a 100644 --- a/go/cmd/dolt/commands/show.go +++ b/go/cmd/dolt/commands/show.go @@ -326,7 +326,7 @@ func fetchAndPrintCommit(queryist cli.Queryist, sqlCtx *sql.Context, opts *showO pager := outputpager.Start() defer pager.Stop() - PrintCommitInfo(pager, 0, opts.showParents, opts.decoration, commit) + PrintCommitInfo(pager, 0, opts.showParents, false, opts.decoration, commit) }) if len(parents) == 0 { diff --git a/go/cmd/dolt/commands/utils.go b/go/cmd/dolt/commands/utils.go index 34bb4b8d4d2..f3d8827bd99 100644 --- a/go/cmd/dolt/commands/utils.go +++ b/go/cmd/dolt/commands/utils.go @@ -557,7 +557,7 @@ func GetDoltStatus(queryist cli.Queryist, sqlCtx *sql.Context) (stagedChangedTab } // PrintCommitInfo prints the given commit in the format used by log and show. -func PrintCommitInfo(pager *outputpager.Pager, minParents int, showParents bool, decoration string, comm *CommitInfo) { +func PrintCommitInfo(pager *outputpager.Pager, minParents int, showParents, showSignatures bool, decoration string, comm *CommitInfo) { color.NoColor = false if len(comm.parentHashes) < minParents { return @@ -583,6 +583,14 @@ func PrintCommitInfo(pager *outputpager.Pager, minParents int, showParents bool, } } + if showSignatures && len(comm.commitMeta.Signature) > 0 { + signatureLines := strings.Split(comm.commitMeta.Signature, "\n") + for _, line := range signatureLines { + pager.Writer.Write([]byte("\n")) + pager.Writer.Write([]byte(color.CyanString(line))) + } + } + pager.Writer.Write([]byte(fmt.Sprintf("\nAuthor: %s <%s>", comm.commitMeta.Name, comm.commitMeta.Email))) timeStr := comm.commitMeta.FormatTS() @@ -641,17 +649,34 @@ func printRefs(pager *outputpager.Pager, comm *CommitInfo, decoration string) { pager.Writer.Write([]byte(yellow.Sprintf("%s) ", joinedReferences))) } +type commitInfoOptions struct { + showSignature bool +} + // getCommitInfo returns the commit info for the given ref. func getCommitInfo(queryist cli.Queryist, sqlCtx *sql.Context, ref string) (*CommitInfo, error) { + return getCommitInfoWithOptions(queryist, sqlCtx, ref, commitInfoOptions{}) +} + +func getCommitInfoWithOptions(queryist cli.Queryist, sqlCtx *sql.Context, ref string, opts commitInfoOptions) (*CommitInfo, error) { hashOfHead, err := getHashOf(queryist, sqlCtx, "HEAD") if err != nil { return nil, fmt.Errorf("error getting hash of HEAD: %v", err) } - q, err := dbr.InterpolateForDialect("select * from dolt_log(?, '--parents', '--decorate=full')", []interface{}{ref}, dialect.MySQL) - if err != nil { - return nil, fmt.Errorf("error interpolating query: %v", err) + var q string + if opts.showSignature { + q, err = dbr.InterpolateForDialect("select * from dolt_log(?, '--parents', '--decorate=full', '--show-signature')", []interface{}{ref}, dialect.MySQL) + if err != nil { + return nil, fmt.Errorf("error interpolating query: %v", err) + } + } else { + q, err = dbr.InterpolateForDialect("select * from dolt_log(?, '--parents', '--decorate=full')", []interface{}{ref}, dialect.MySQL) + if err != nil { + return nil, fmt.Errorf("error interpolating query: %v", err) + } } + rows, err := GetRowsForSql(queryist, sqlCtx, q) if err != nil { return nil, fmt.Errorf("error getting logs for ref '%s': %v", ref, err) diff --git a/go/libraries/doltcore/sqle/dolt_log_table_function.go b/go/libraries/doltcore/sqle/dolt_log_table_function.go index 31ba438201c..b8e7a2a7eeb 100644 --- a/go/libraries/doltcore/sqle/dolt_log_table_function.go +++ b/go/libraries/doltcore/sqle/dolt_log_table_function.go @@ -16,6 +16,7 @@ package sqle import ( "fmt" + "github.com/dolthub/dolt/go/libraries/utils/gpg" "strings" "github.com/dolthub/go-mysql-server/sql" @@ -44,9 +45,10 @@ type LogTableFunction struct { notRevisionStrs []string tableNames []string - minParents int - showParents bool - decoration string + minParents int + showParents bool + showSignature bool + decoration string database sql.Database } @@ -57,7 +59,6 @@ var logTableSchema = sql.Schema{ &sql.Column{Name: "email", Type: types.Text}, &sql.Column{Name: "date", Type: types.Datetime}, &sql.Column{Name: "message", Type: types.Text}, - &sql.Column{Name: "signature", Type: types.Text}, } // NewInstance creates a new instance of TableFunction interface @@ -141,6 +142,10 @@ func (ltf *LogTableFunction) getOptionsString() string { options = append(options, fmt.Sprintf("--%s", cli.ParentsFlag)) } + if ltf.showSignature { + options = append(options, fmt.Sprintf("--%s", cli.ShowSignatureFlag)) + } + if len(ltf.decoration) > 0 && ltf.decoration != "auto" { options = append(options, fmt.Sprintf("--%s %s", cli.DecorateFlag, ltf.decoration)) } @@ -162,6 +167,9 @@ func (ltf *LogTableFunction) Schema() sql.Schema { if shouldDecorateWithRefs(ltf.decoration) { logSchema = append(logSchema, &sql.Column{Name: "refs", Type: types.Text}) } + if ltf.showSignature { + logSchema = append(logSchema, &sql.Column{Name: "signature", Type: types.Text}) + } return logSchema } @@ -254,6 +262,7 @@ func (ltf *LogTableFunction) addOptions(expression []sql.Expression) error { ltf.minParents = minParents ltf.showParents = apr.Contains(cli.ParentsFlag) + ltf.showSignature = apr.Contains(cli.ShowSignatureFlag) decorateOption := apr.GetValueOrDefault(cli.DecorateFlag, "auto") switch decorateOption { @@ -594,11 +603,12 @@ var _ sql.RowIter = (*logTableFunctionRowIter)(nil) // logTableFunctionRowIter is a sql.RowIter implementation which iterates over each commit as if it's a row in the table. type logTableFunctionRowIter struct { - child doltdb.CommitItr - showParents bool - decoration string - cHashToRefs map[hash.Hash][]string - headHash hash.Hash + child doltdb.CommitItr + showParents bool + showSignature bool + decoration string + cHashToRefs map[hash.Hash][]string + headHash hash.Hash tableNames []string } @@ -615,12 +625,13 @@ func (ltf *LogTableFunction) NewLogTableFunctionRowIter(ctx *sql.Context, ddb *d } return &logTableFunctionRowIter{ - child: child, - showParents: ltf.showParents, - decoration: ltf.decoration, - cHashToRefs: cHashToRefs, - headHash: h, - tableNames: tableNames, + child: child, + showParents: ltf.showParents, + showSignature: ltf.showSignature, + decoration: ltf.decoration, + cHashToRefs: cHashToRefs, + headHash: h, + tableNames: tableNames, }, nil } @@ -655,12 +666,13 @@ func (ltf *LogTableFunction) NewDotDotLogTableFunctionRowIter(ctx *sql.Context, } return &logTableFunctionRowIter{ - child: child, - showParents: ltf.showParents, - decoration: ltf.decoration, - cHashToRefs: cHashToRefs, - headHash: headHash, - tableNames: tableNames, + child: child, + showParents: ltf.showParents, + showSignature: ltf.showSignature, + decoration: ltf.decoration, + cHashToRefs: cHashToRefs, + headHash: headHash, + tableNames: tableNames, }, nil } @@ -765,7 +777,18 @@ func (itr *logTableFunctionRowIter) Next(ctx *sql.Context) (sql.Row, error) { row = row.Append(sql.NewRow(getRefsString(branchNames, isHead))) } - row = row.Append(sql.NewRow(meta.Signature)) + if itr.showSignature { + if len(meta.Signature) > 0 { + out, err := gpg.Verify(ctx, []byte(meta.Signature)) + if err != nil { + return nil, err + } + + row = row.Append(sql.NewRow(string(out))) + } else { + row = row.Append(sql.NewRow("")) + } + } return row, nil } diff --git a/go/libraries/utils/gpg/sign.go b/go/libraries/utils/gpg/sign.go index fd8521d54bc..1afd317fb9b 100644 --- a/go/libraries/utils/gpg/sign.go +++ b/go/libraries/utils/gpg/sign.go @@ -86,12 +86,12 @@ func Sign(ctx context.Context, keyId string, message []byte) ([]byte, error) { func Verify(ctx context.Context, signature []byte) ([]byte, error) { args := []string{"--verify"} - outBuf, _, err := execGpgAndReadOutput(ctx, signature, args) + _, errBuf, err := execGpgAndReadOutput(ctx, signature, args) if err != nil { return nil, err } - return outBuf.Bytes(), nil + return errBuf.Bytes(), nil } func listenToOut(ctx context.Context, eg *errgroup.Group, r io.Reader) *bytes.Buffer { @@ -103,7 +103,7 @@ func listenToOut(ctx context.Context, eg *errgroup.Group, r io.Reader) *bytes.Bu return buf } -// Throws away all intersperesed text and returns all decoded PEM blocks, in the order they are read. +// DecodeAllPEMBlocks decodes all PEM blocks from a byte slice. func DecodeAllPEMBlocks(bs []byte) ([]*pem.Block, error) { const beginHeaderPrefix = "BEGIN " const pemSeperator = "-----" diff --git a/go/libraries/utils/gpg/sign_test.go b/go/libraries/utils/gpg/sign_test.go index 490370dfbac..95b15d6e86d 100644 --- a/go/libraries/utils/gpg/sign_test.go +++ b/go/libraries/utils/gpg/sign_test.go @@ -42,12 +42,16 @@ YN6Sszg+o8Aw0AT4M6nrLTe3YaIE6sR4YMxOCSOPAT9oSDg1t5s= =fklH -----END PGP SIGNATURE-----` - pemBlocks, err := decodeAllPEMBlocks([]byte(pemBlock)) + pemBlocks, err := DecodeAllPEMBlocks([]byte(pemBlock)) require.NoError(t, err) fmt.Println(len(pemBlocks)) require.Len(t, pemBlocks, 2) require.True(t, containsBlockOfType(pemBlocks, "PGP SIGNED MESSAGE")) require.True(t, containsBlockOfType(pemBlocks, "PGP SIGNATURE")) + + output, err := Verify(context.Background(), []byte(pemBlock)) + require.NoError(t, err) + require.NotNil(t, output) } func containsBlockOfType(blocks []*pem.Block, blockType string) bool { diff --git a/integration-tests/bats/private.pgp b/integration-tests/bats/private.pgp new file mode 100644 index 00000000000..014e9543001 --- /dev/null +++ b/integration-tests/bats/private.pgp @@ -0,0 +1,81 @@ +-----BEGIN PGP PRIVATE KEY BLOCK----- + +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 +=WzPV +-----END PGP PRIVATE KEY BLOCK----- diff --git a/integration-tests/bats/signed.bats b/integration-tests/bats/signed.bats new file mode 100644 index 00000000000..76f351ee57b --- /dev/null +++ b/integration-tests/bats/signed.bats @@ -0,0 +1,54 @@ +#!/usr/bin/env bats +load $BATS_TEST_DIRNAME/helper/common.bash + +setup() { + setup_common +} + +teardown() { + assert_feature_version + teardown_common +} + +init_gpg() { + # check if gpg is installed properly + run which gpg + [ "$status" -eq 0 ] + + # check for existence of public.gpg and private.gpg + run gpg --list-keys + if [[ "$output" =~ "573DA8C6366D04E35CDB1A44E09A0B208F666373" ]]; then + echo "key exists" + else + echo "importing $BATS_TEST_DIRNAME/private.pgp" + run gpg --import "$BATS_TEST_DIRNAME/private.pgp" + [ "$status" -eq 0 ] + fi +} + +@test "signing a dolt commit" { + init_gpg + run dolt sql -q "CREATE TABLE t (pk INT primary key);" + [ "$status" -eq 0 ] + + run dolt add . + [ "$status" -eq 0 ] + + run dolt commit -m "initial commit" + [ "$status" -eq 0 ] + + run dolt sql -q "INSERT INTO t VALUES (1);" + [ "$status" -eq 0 ] + + run dolt add . + [ "$status" -eq 0 ] + + run dolt commit -S "573DA8C6366D04E35CDB1A44E09A0B208F666373" -m "signed commit" + echo $output + [ "$status" -eq 0 ] + + run dolt log --show-signature + echo $output + [ "$status" -eq 0 ] + [[ "$output" =~ 'gpg: Good signature from "Test User "' ]] || false +} \ No newline at end of file From 56dfbf18374b29d7d4a2024ab02cd4c4724f9a6b Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Thu, 5 Sep 2024 13:20:04 -0700 Subject: [PATCH 06/53] fix --- go/cmd/dolt/commands/commit.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/go/cmd/dolt/commands/commit.go b/go/cmd/dolt/commands/commit.go index cf1bba4a246..4bda3a796cb 100644 --- a/go/cmd/dolt/commands/commit.go +++ b/go/cmd/dolt/commands/commit.go @@ -268,7 +268,8 @@ func constructParametrizedDoltCommitQuery(msg string, apr *argparser.ArgParseRes writeToBuffer("--skip-empty") } - if apr.Contains(cli.SignFlag) { + cfgSign := cliCtx.Config().GetStringOrDefault("sqlserver.global.gpgsign", "") + if apr.Contains(cli.SignFlag) || strings.ToLower(cfgSign) == "true" { writeToBuffer("--gpg-sign") gpgKey := apr.GetValueOrDefault(cli.SignFlag, "") From 3df5902063b5641b700c8a0eeb39664aecb8e31b Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Thu, 5 Sep 2024 13:43:56 -0700 Subject: [PATCH 07/53] session var fix and tests --- go/libraries/doltcore/sqle/dsess/session.go | 14 +++++ integration-tests/bats/signed.bats | 62 ++++++++++++++++++++- 2 files changed, 75 insertions(+), 1 deletion(-) diff --git a/go/libraries/doltcore/sqle/dsess/session.go b/go/libraries/doltcore/sqle/dsess/session.go index 5544f2ef8de..530000b9b23 100644 --- a/go/libraries/doltcore/sqle/dsess/session.go +++ b/go/libraries/doltcore/sqle/dsess/session.go @@ -1650,12 +1650,15 @@ func getPersistedValue(conf config.ReadableConfig, k string) (interface{}, error var res interface{} switch value.(type) { case int8: + v = asIntIfBoolValue(v) var tmp int64 tmp, err = strconv.ParseInt(v, 10, 8) res = int8(tmp) case int, int16, int32, int64: + v = asIntIfBoolValue(v) res, err = strconv.ParseInt(v, 10, 64) case uint, uint8, uint16, uint32, uint64: + v = asIntIfBoolValue(v) res, err = strconv.ParseUint(v, 10, 64) case float32, float64: res, err = strconv.ParseFloat(v, 64) @@ -1674,6 +1677,17 @@ func getPersistedValue(conf config.ReadableConfig, k string) (interface{}, error return res, nil } +func asIntIfBoolValue(v string) string { + lower := strings.ToLower(v) + if lower == "true" { + return "1" + } else if lower == "false" { + return "0" + } + + return v +} + // setPersistedValue casts and persists a key value pair assuming thread safety func setPersistedValue(conf config.WritableConfig, key string, value interface{}) error { switch v := value.(type) { diff --git a/integration-tests/bats/signed.bats b/integration-tests/bats/signed.bats index 76f351ee57b..7c8a52c9f9e 100644 --- a/integration-tests/bats/signed.bats +++ b/integration-tests/bats/signed.bats @@ -26,7 +26,7 @@ init_gpg() { fi } -@test "signing a dolt commit" { +@test "signing a dolt commit with key specified on command line" { init_gpg run dolt sql -q "CREATE TABLE t (pk INT primary key);" [ "$status" -eq 0 ] @@ -51,4 +51,64 @@ init_gpg() { echo $output [ "$status" -eq 0 ] [[ "$output" =~ 'gpg: Good signature from "Test User "' ]] || false +} + +@test "signing a dolt commit with key specified in config" { + init_gpg + run dolt config --global --add sqlserver.global.signingkey "573DA8C6366D04E35CDB1A44E09A0B208F666373" + [ "$status" -eq 0 ] + + run dolt sql -q "CREATE TABLE t (pk INT primary key);" + [ "$status" -eq 0 ] + + run dolt add . + [ "$status" -eq 0 ] + + run dolt commit -m "initial commit" + [ "$status" -eq 0 ] + + run dolt sql -q "INSERT INTO t VALUES (1);" + [ "$status" -eq 0 ] + + run dolt add . + [ "$status" -eq 0 ] + + run dolt commit -S -m "signed commit" + [ "$status" -eq 0 ] + + run dolt log --show-signature + [ "$status" -eq 0 ] + [[ "$output" =~ 'gpg: Good signature from "Test User "' ]] || false +} + +@test "default to signed commits using the config" { + init_gpg + run dolt config --global --add sqlserver.global.signingkey "573DA8C6366D04E35CDB1A44E09A0B208F666373" + [ "$status" -eq 0 ] + + run dolt config --global --add sqlserver.global.gpgsign true + [ "$status" -eq 0 ] + + run dolt sql -q "CREATE TABLE t (pk INT primary key);" + [ "$status" -eq 0 ] + + run dolt add . + [ "$status" -eq 0 ] + + run dolt commit -m "initial commit" + echo $output + [ "$status" -eq 0 ] + + run dolt sql -q "INSERT INTO t VALUES (1);" + [ "$status" -eq 0 ] + + run dolt add . + [ "$status" -eq 0 ] + + run dolt commit -m "signed commit without being specified on the command line" + [ "$status" -eq 0 ] + + run dolt log --show-signature + [ "$status" -eq 0 ] + [[ "$output" =~ 'gpg: Good signature from "Test User "' ]] || false } \ No newline at end of file From 67e912d415957f5a2829caa973c03fc039aae2a2 Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Thu, 5 Sep 2024 13:52:04 -0700 Subject: [PATCH 08/53] call dolt_commit signed commit test --- integration-tests/bats/signed.bats | 32 ++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/integration-tests/bats/signed.bats b/integration-tests/bats/signed.bats index 7c8a52c9f9e..37f87452b03 100644 --- a/integration-tests/bats/signed.bats +++ b/integration-tests/bats/signed.bats @@ -108,6 +108,38 @@ init_gpg() { run dolt commit -m "signed commit without being specified on the command line" [ "$status" -eq 0 ] + run dolt log --show-signature + [ "$status" -eq 0 ] + [[ "$output" =~ 'gpg: Good signature from "Test User "' ]] || false +} + +@test "commit using stored procedure with signed commits configured" { + init_gpg + run dolt config --global --add sqlserver.global.signingkey "573DA8C6366D04E35CDB1A44E09A0B208F666373" + [ "$status" -eq 0 ] + + run dolt config --global --add sqlserver.global.gpgsign true + [ "$status" -eq 0 ] + + run dolt sql -q "CREATE TABLE t (pk INT primary key);" + [ "$status" -eq 0 ] + + run dolt add . + [ "$status" -eq 0 ] + + run dolt commit -m "initial commit" + echo $output + [ "$status" -eq 0 ] + + run dolt sql -q "INSERT INTO t VALUES (1);" + [ "$status" -eq 0 ] + + run dolt add . + [ "$status" -eq 0 ] + + run dolt sql -q "CALL dolt_commit('-m', 'signed commit');" + [ "$status" -eq 0 ] + run dolt log --show-signature [ "$status" -eq 0 ] [[ "$output" =~ 'gpg: Good signature from "Test User "' ]] || false From f658fcae2f500b0def0946230865b67496c73739 Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Thu, 5 Sep 2024 14:05:40 -0700 Subject: [PATCH 09/53] formatting --- .../doltcore/sqle/dolt_log_table_function.go | 2 +- .../doltcore/sqle/dprocedures/dolt_commit.go | 4 ++-- go/libraries/utils/gpg/sign.go | 17 ++++++++++++++++- go/libraries/utils/gpg/sign_test.go | 17 ++++++++++++++++- 4 files changed, 35 insertions(+), 5 deletions(-) diff --git a/go/libraries/doltcore/sqle/dolt_log_table_function.go b/go/libraries/doltcore/sqle/dolt_log_table_function.go index b8e7a2a7eeb..75e4dadb32f 100644 --- a/go/libraries/doltcore/sqle/dolt_log_table_function.go +++ b/go/libraries/doltcore/sqle/dolt_log_table_function.go @@ -16,7 +16,6 @@ package sqle import ( "fmt" - "github.com/dolthub/dolt/go/libraries/utils/gpg" "strings" "github.com/dolthub/go-mysql-server/sql" @@ -29,6 +28,7 @@ import ( "github.com/dolthub/dolt/go/libraries/doltcore/merge" "github.com/dolthub/dolt/go/libraries/doltcore/schema" "github.com/dolthub/dolt/go/libraries/doltcore/sqle/dsess" + "github.com/dolthub/dolt/go/libraries/utils/gpg" "github.com/dolthub/dolt/go/store/hash" ) diff --git a/go/libraries/doltcore/sqle/dprocedures/dolt_commit.go b/go/libraries/doltcore/sqle/dprocedures/dolt_commit.go index 8faa4201adb..5303520c268 100644 --- a/go/libraries/doltcore/sqle/dprocedures/dolt_commit.go +++ b/go/libraries/doltcore/sqle/dprocedures/dolt_commit.go @@ -17,8 +17,6 @@ package dprocedures import ( "errors" "fmt" - "github.com/dolthub/dolt/go/libraries/doltcore/doltdb" - "github.com/dolthub/dolt/go/libraries/utils/gpg" "strings" "github.com/dolthub/go-mysql-server/sql" @@ -27,8 +25,10 @@ import ( "github.com/dolthub/dolt/go/cmd/dolt/cli" "github.com/dolthub/dolt/go/libraries/doltcore/branch_control" "github.com/dolthub/dolt/go/libraries/doltcore/dconfig" + "github.com/dolthub/dolt/go/libraries/doltcore/doltdb" "github.com/dolthub/dolt/go/libraries/doltcore/env/actions" "github.com/dolthub/dolt/go/libraries/doltcore/sqle/dsess" + "github.com/dolthub/dolt/go/libraries/utils/gpg" "github.com/dolthub/dolt/go/store/datas" ) diff --git a/go/libraries/utils/gpg/sign.go b/go/libraries/utils/gpg/sign.go index 1afd317fb9b..4a2e4260405 100644 --- a/go/libraries/utils/gpg/sign.go +++ b/go/libraries/utils/gpg/sign.go @@ -1,3 +1,17 @@ +// Copyright 2024 Dolthub, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package gpg import ( @@ -5,10 +19,11 @@ import ( "context" "encoding/pem" "fmt" - "golang.org/x/sync/errgroup" "io" "os/exec" "strings" + + "golang.org/x/sync/errgroup" ) func execGpgAndReadOutput(ctx context.Context, in []byte, args []string) (*bytes.Buffer, *bytes.Buffer, error) { diff --git a/go/libraries/utils/gpg/sign_test.go b/go/libraries/utils/gpg/sign_test.go index 95b15d6e86d..2f804df22aa 100644 --- a/go/libraries/utils/gpg/sign_test.go +++ b/go/libraries/utils/gpg/sign_test.go @@ -1,11 +1,26 @@ +// Copyright 2024 Dolthub, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package gpg import ( "context" "encoding/pem" "fmt" - "github.com/stretchr/testify/require" "testing" + + "github.com/stretchr/testify/require" ) func TestSign(t *testing.T) { From 45a85d6f401d7c6289dc338e74b86376361918bb Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Thu, 5 Sep 2024 16:24:08 -0700 Subject: [PATCH 10/53] formatting --- integration-tests/bats/signed.bats | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/integration-tests/bats/signed.bats b/integration-tests/bats/signed.bats index 37f87452b03..8e1943fa461 100644 --- a/integration-tests/bats/signed.bats +++ b/integration-tests/bats/signed.bats @@ -26,7 +26,7 @@ init_gpg() { fi } -@test "signing a dolt commit with key specified on command line" { +@test "signed a dolt commit with key specified on command line" { init_gpg run dolt sql -q "CREATE TABLE t (pk INT primary key);" [ "$status" -eq 0 ] @@ -53,7 +53,7 @@ init_gpg() { [[ "$output" =~ 'gpg: Good signature from "Test User "' ]] || false } -@test "signing a dolt commit with key specified in config" { +@test "signed a dolt commit with key specified in config" { init_gpg run dolt config --global --add sqlserver.global.signingkey "573DA8C6366D04E35CDB1A44E09A0B208F666373" [ "$status" -eq 0 ] @@ -81,7 +81,7 @@ init_gpg() { [[ "$output" =~ 'gpg: Good signature from "Test User "' ]] || false } -@test "default to signed commits using the config" { +@test "signed by default using the config" { init_gpg run dolt config --global --add sqlserver.global.signingkey "573DA8C6366D04E35CDB1A44E09A0B208F666373" [ "$status" -eq 0 ] @@ -113,7 +113,7 @@ init_gpg() { [[ "$output" =~ 'gpg: Good signature from "Test User "' ]] || false } -@test "commit using stored procedure with signed commits configured" { +@test "signed using stored procedure" { init_gpg run dolt config --global --add sqlserver.global.signingkey "573DA8C6366D04E35CDB1A44E09A0B208F666373" [ "$status" -eq 0 ] From 556e5e5dfccc908ee6bfda707d85171483a28766 Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Thu, 5 Sep 2024 16:33:35 -0700 Subject: [PATCH 11/53] formatting 3 --- integration-tests/bats/signed.bats | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/integration-tests/bats/signed.bats b/integration-tests/bats/signed.bats index 8e1943fa461..fad1b9bf9be 100644 --- a/integration-tests/bats/signed.bats +++ b/integration-tests/bats/signed.bats @@ -26,7 +26,7 @@ init_gpg() { fi } -@test "signed a dolt commit with key specified on command line" { +@test "signed: dolt commit with key specified on command line" { init_gpg run dolt sql -q "CREATE TABLE t (pk INT primary key);" [ "$status" -eq 0 ] @@ -53,7 +53,7 @@ init_gpg() { [[ "$output" =~ 'gpg: Good signature from "Test User "' ]] || false } -@test "signed a dolt commit with key specified in config" { +@test "signed: dolt commit with key specified in config" { init_gpg run dolt config --global --add sqlserver.global.signingkey "573DA8C6366D04E35CDB1A44E09A0B208F666373" [ "$status" -eq 0 ] @@ -81,7 +81,7 @@ init_gpg() { [[ "$output" =~ 'gpg: Good signature from "Test User "' ]] || false } -@test "signed by default using the config" { +@test "signed: signing by default using the config" { init_gpg run dolt config --global --add sqlserver.global.signingkey "573DA8C6366D04E35CDB1A44E09A0B208F666373" [ "$status" -eq 0 ] @@ -113,7 +113,7 @@ init_gpg() { [[ "$output" =~ 'gpg: Good signature from "Test User "' ]] || false } -@test "signed using stored procedure" { +@test "signed: using stored procedure" { init_gpg run dolt config --global --add sqlserver.global.signingkey "573DA8C6366D04E35CDB1A44E09A0B208F666373" [ "$status" -eq 0 ] From d944fef78f499770e61927f40a73b16a6cdc9308 Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Thu, 5 Sep 2024 17:22:57 -0700 Subject: [PATCH 12/53] amend fix --- go/cmd/dolt/cli/arg_parser_helpers.go | 1 + 1 file changed, 1 insertion(+) diff --git a/go/cmd/dolt/cli/arg_parser_helpers.go b/go/cmd/dolt/cli/arg_parser_helpers.go index 5065f0a3b6e..4057974fbf2 100644 --- a/go/cmd/dolt/cli/arg_parser_helpers.go +++ b/go/cmd/dolt/cli/arg_parser_helpers.go @@ -68,6 +68,7 @@ func CreateCommitArgParser() *argparser.ArgParser { ap.SupportsString(AuthorParam, "", "author", "Specify an explicit author using the standard A U Thor {{.LessThan}}author@example.com{{.GreaterThan}} format.") ap.SupportsFlag(AllFlag, "a", "Adds all existing, changed tables (but not new tables) in the working set to the staged set.") ap.SupportsFlag(UpperCaseAllFlag, "A", "Adds all tables and databases (including new tables) in the working set to the staged set.") + ap.SupportsFlag(AmendFlag, "", "Amend previous commit") ap.SupportsOptionalString(SignFlag, "S", "key-id", "Sign the commit using GPG. If no key-id is provided the key-id is taken from 'user.signingkey' the in the configuration") return ap } From 3c18c80d8f064b0e12d383885f45ddc4e3072d90 Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Mon, 9 Sep 2024 11:41:37 -0700 Subject: [PATCH 13/53] don't write signature if signature has len 0 --- go/store/datas/commit.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/go/store/datas/commit.go b/go/store/datas/commit.go index 8d18b125734..a3fa50070ac 100644 --- a/go/store/datas/commit.go +++ b/go/store/datas/commit.go @@ -174,7 +174,12 @@ func commit_flatbuffer(vaddr hash.Hash, opts CommitOptions, heights []uint64, pa nameoff := builder.CreateString(opts.Meta.Name) emailoff := builder.CreateString(opts.Meta.Email) descoff := builder.CreateString(opts.Meta.Description) - sigoff := builder.CreateString(opts.Meta.Signature) + + var sigoff flatbuffers.UOffsetT + if len(opts.Meta.Signature) != 0 { + sigoff = builder.CreateString(opts.Meta.Signature) + } + serial.CommitStart(builder) serial.CommitAddRoot(builder, vaddroff) serial.CommitAddHeight(builder, maxheight+1) From 8ec03789f6c78c57d9522dbe778b2e99cb703df6 Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Tue, 10 Sep 2024 10:50:38 -0700 Subject: [PATCH 14/53] unix install gnupg --- .github/workflows/ci-bats-unix.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci-bats-unix.yaml b/.github/workflows/ci-bats-unix.yaml index b2cdc65db2e..07927760dc1 100644 --- a/.github/workflows/ci-bats-unix.yaml +++ b/.github/workflows/ci-bats-unix.yaml @@ -112,6 +112,8 @@ jobs: echo "runtime_jar=$runtime_jar" >> $GITHUB_OUTPUT - name: Check expect run: expect -v + - name: Install GPG + run: sudo apt-get install -y gnupg - name: Test all Unix env: SQL_ENGINE: "local-engine" From 006209e599db2306bcfec56189d13498e2b0dc7a Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Tue, 10 Sep 2024 10:59:38 -0700 Subject: [PATCH 15/53] additional output --- integration-tests/bats/signed.bats | 2 ++ 1 file changed, 2 insertions(+) diff --git a/integration-tests/bats/signed.bats b/integration-tests/bats/signed.bats index fad1b9bf9be..20b2be86305 100644 --- a/integration-tests/bats/signed.bats +++ b/integration-tests/bats/signed.bats @@ -13,10 +13,12 @@ teardown() { init_gpg() { # check if gpg is installed properly run which gpg + echo which gpg: \"$output\" [ "$status" -eq 0 ] # check for existence of public.gpg and private.gpg run gpg --list-keys + echo gpg --list-keys: \"$output\" if [[ "$output" =~ "573DA8C6366D04E35CDB1A44E09A0B208F666373" ]]; then echo "key exists" else From e7e2b9a1e81f495843ac75961a611853f4587642 Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Tue, 10 Sep 2024 12:29:43 -0700 Subject: [PATCH 16/53] remove which call --- integration-tests/bats/signed.bats | 5 ----- 1 file changed, 5 deletions(-) diff --git a/integration-tests/bats/signed.bats b/integration-tests/bats/signed.bats index 20b2be86305..0d0f80c9249 100644 --- a/integration-tests/bats/signed.bats +++ b/integration-tests/bats/signed.bats @@ -11,11 +11,6 @@ teardown() { } init_gpg() { - # check if gpg is installed properly - run which gpg - echo which gpg: \"$output\" - [ "$status" -eq 0 ] - # check for existence of public.gpg and private.gpg run gpg --list-keys echo gpg --list-keys: \"$output\" From dc9bebaf2f9d6b9fbda5200c2b72b46001ee77eb Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Tue, 10 Sep 2024 12:45:41 -0700 Subject: [PATCH 17/53] fix --- integration-tests/bats/signed.bats | 3 +++ 1 file changed, 3 insertions(+) diff --git a/integration-tests/bats/signed.bats b/integration-tests/bats/signed.bats index 0d0f80c9249..78394edbe20 100644 --- a/integration-tests/bats/signed.bats +++ b/integration-tests/bats/signed.bats @@ -11,6 +11,9 @@ teardown() { } init_gpg() { + # run it once to create the directory + gpg --list-keys + # check for existence of public.gpg and private.gpg run gpg --list-keys echo gpg --list-keys: \"$output\" From 748e78ec45b493b9cea4dce598ddb4348a86793d Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Tue, 10 Sep 2024 12:58:03 -0700 Subject: [PATCH 18/53] debug output --- integration-tests/bats/signed.bats | 1 + 1 file changed, 1 insertion(+) diff --git a/integration-tests/bats/signed.bats b/integration-tests/bats/signed.bats index 78394edbe20..f6dc04339e4 100644 --- a/integration-tests/bats/signed.bats +++ b/integration-tests/bats/signed.bats @@ -22,6 +22,7 @@ init_gpg() { else echo "importing $BATS_TEST_DIRNAME/private.pgp" run gpg --import "$BATS_TEST_DIRNAME/private.pgp" + echo gpg --import $BATS_TEST_DIRNAME/private.pgp: \"$output\" [ "$status" -eq 0 ] fi } From 5756da74b8b9b14b1fa9aa08402ea27cfb264ca5 Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Tue, 10 Sep 2024 13:08:51 -0700 Subject: [PATCH 19/53] install gpg-agent --- .github/workflows/ci-bats-unix.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-bats-unix.yaml b/.github/workflows/ci-bats-unix.yaml index 07927760dc1..81e38915366 100644 --- a/.github/workflows/ci-bats-unix.yaml +++ b/.github/workflows/ci-bats-unix.yaml @@ -113,7 +113,7 @@ jobs: - name: Check expect run: expect -v - name: Install GPG - run: sudo apt-get install -y gnupg + run: sudo apt-get install -y gnupg gpg-agent - name: Test all Unix env: SQL_ENGINE: "local-engine" From e5de2d4615529f80bc9eea69343773f4fe7d78eb Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Tue, 10 Sep 2024 13:27:05 -0700 Subject: [PATCH 20/53] more debug output --- integration-tests/bats/signed.bats | 2 ++ 1 file changed, 2 insertions(+) diff --git a/integration-tests/bats/signed.bats b/integration-tests/bats/signed.bats index f6dc04339e4..1f758cf519e 100644 --- a/integration-tests/bats/signed.bats +++ b/integration-tests/bats/signed.bats @@ -13,6 +13,8 @@ teardown() { init_gpg() { # run it once to create the directory gpg --list-keys + run gpg-agent --daemon + echo gpg-agent --daemon: \"$output\" # check for existence of public.gpg and private.gpg run gpg --list-keys From 8d6f3f4c7f6bd705e982d0afa3afd07f5135b23f Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Tue, 10 Sep 2024 13:33:49 -0700 Subject: [PATCH 21/53] try to fix gpg-agent install --- .github/workflows/ci-bats-unix.yaml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci-bats-unix.yaml b/.github/workflows/ci-bats-unix.yaml index 81e38915366..5a9fbca1fbe 100644 --- a/.github/workflows/ci-bats-unix.yaml +++ b/.github/workflows/ci-bats-unix.yaml @@ -64,6 +64,10 @@ jobs: run: | mkdir -p ./.ci_bin echo "$(pwd)/.ci_bin" >> $GITHUB_PATH + - name: Install GPG + run: sudo apt-get install -y gnupg + - name: Install GPG Agent + run: sudo apt-get install -y gpg-agent - name: Install Bats run: | npm i bats @@ -112,8 +116,6 @@ jobs: echo "runtime_jar=$runtime_jar" >> $GITHUB_OUTPUT - name: Check expect run: expect -v - - name: Install GPG - run: sudo apt-get install -y gnupg gpg-agent - name: Test all Unix env: SQL_ENGINE: "local-engine" From bfe90d519c42247316c544437d709cbebb870e05 Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Tue, 10 Sep 2024 14:00:00 -0700 Subject: [PATCH 22/53] gpg install change --- .github/workflows/ci-bats-unix.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci-bats-unix.yaml b/.github/workflows/ci-bats-unix.yaml index 5a9fbca1fbe..8fdfc0a2536 100644 --- a/.github/workflows/ci-bats-unix.yaml +++ b/.github/workflows/ci-bats-unix.yaml @@ -65,9 +65,8 @@ jobs: mkdir -p ./.ci_bin echo "$(pwd)/.ci_bin" >> $GITHUB_PATH - name: Install GPG - run: sudo apt-get install -y gnupg - - name: Install GPG Agent - run: sudo apt-get install -y gpg-agent + run: sudo apt update \ + sudo apt install gnupg2 - name: Install Bats run: | npm i bats From bd9d9b0f6600d9272cf3dbddb9755dacf71fa31f Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Tue, 10 Sep 2024 14:08:01 -0700 Subject: [PATCH 23/53] gpg2 install --- .github/workflows/ci-bats-unix.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/ci-bats-unix.yaml b/.github/workflows/ci-bats-unix.yaml index 8fdfc0a2536..81725300945 100644 --- a/.github/workflows/ci-bats-unix.yaml +++ b/.github/workflows/ci-bats-unix.yaml @@ -65,8 +65,7 @@ jobs: mkdir -p ./.ci_bin echo "$(pwd)/.ci_bin" >> $GITHUB_PATH - name: Install GPG - run: sudo apt update \ - sudo apt install gnupg2 + run: sudo apt install -y gnupg2 - name: Install Bats run: | npm i bats From 23f09fb39da040eee365fc4d03438e27c0922750 Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Tue, 10 Sep 2024 15:22:10 -0700 Subject: [PATCH 24/53] test --- .github/workflows/ci-bats-unix.yaml | 12 ++++++++++++ integration-tests/bats/signed.bats | 16 ---------------- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/.github/workflows/ci-bats-unix.yaml b/.github/workflows/ci-bats-unix.yaml index 81725300945..a2afd1a2067 100644 --- a/.github/workflows/ci-bats-unix.yaml +++ b/.github/workflows/ci-bats-unix.yaml @@ -66,6 +66,18 @@ jobs: echo "$(pwd)/.ci_bin" >> $GITHUB_PATH - name: Install GPG run: sudo apt install -y gnupg2 + - name: Import GPG keys + working-directory: ./integration-tests/bats + run: | + output=$(gpg --list-keys) + + if [[ $output == *"573DA8C6366D04E35CDB1A44E09A0B208F666373"* ]]; then + echo "It's there! key exists" + else + echo "It's not there" + echo "importing ./private.pgp" + gpg --import ./private.pgp + fi - name: Install Bats run: | npm i bats diff --git a/integration-tests/bats/signed.bats b/integration-tests/bats/signed.bats index 1f758cf519e..c21f96c4ff1 100644 --- a/integration-tests/bats/signed.bats +++ b/integration-tests/bats/signed.bats @@ -11,22 +11,6 @@ teardown() { } init_gpg() { - # run it once to create the directory - gpg --list-keys - run gpg-agent --daemon - echo gpg-agent --daemon: \"$output\" - - # check for existence of public.gpg and private.gpg - run gpg --list-keys - echo gpg --list-keys: \"$output\" - if [[ "$output" =~ "573DA8C6366D04E35CDB1A44E09A0B208F666373" ]]; then - echo "key exists" - else - echo "importing $BATS_TEST_DIRNAME/private.pgp" - run gpg --import "$BATS_TEST_DIRNAME/private.pgp" - echo gpg --import $BATS_TEST_DIRNAME/private.pgp: \"$output\" - [ "$status" -eq 0 ] - fi } @test "signed: dolt commit with key specified on command line" { From 279a1f807cddda0201f28ef76d21eaf1ede219bb Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Tue, 10 Sep 2024 15:29:24 -0700 Subject: [PATCH 25/53] test again --- integration-tests/bats/signed.bats | 1 + 1 file changed, 1 insertion(+) diff --git a/integration-tests/bats/signed.bats b/integration-tests/bats/signed.bats index c21f96c4ff1..fd694216885 100644 --- a/integration-tests/bats/signed.bats +++ b/integration-tests/bats/signed.bats @@ -11,6 +11,7 @@ teardown() { } init_gpg() { + echo skip gpg init } @test "signed: dolt commit with key specified on command line" { From 1dd698836efba63669063cda9b2124d4aa8aaa96 Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Tue, 10 Sep 2024 15:36:11 -0700 Subject: [PATCH 26/53] put init_gpg back to the way it was --- integration-tests/bats/signed.bats | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/integration-tests/bats/signed.bats b/integration-tests/bats/signed.bats index fd694216885..6045d27f17b 100644 --- a/integration-tests/bats/signed.bats +++ b/integration-tests/bats/signed.bats @@ -11,7 +11,16 @@ teardown() { } init_gpg() { - echo skip gpg init + run gpg --list-keys + echo gpg --list-keys: \"$output\" + if [[ "$output" =~ "573DA8C6366D04E35CDB1A44E09A0B208F666373" ]]; then + echo "key exists" + else + echo "importing $BATS_TEST_DIRNAME/private.pgp" + run gpg --import "$BATS_TEST_DIRNAME/private.pgp" + echo gpg --import $BATS_TEST_DIRNAME/private.pgp: \"$output\" + [ "$status" -eq 0 ] + fi } @test "signed: dolt commit with key specified on command line" { From cfa8b1f37d90a13d31ddfbbbb634ae3ff2061635 Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Tue, 10 Sep 2024 15:43:55 -0700 Subject: [PATCH 27/53] remove setup --- integration-tests/bats/signed.bats | 3 --- 1 file changed, 3 deletions(-) diff --git a/integration-tests/bats/signed.bats b/integration-tests/bats/signed.bats index 6045d27f17b..19ea68871c8 100644 --- a/integration-tests/bats/signed.bats +++ b/integration-tests/bats/signed.bats @@ -2,12 +2,9 @@ load $BATS_TEST_DIRNAME/helper/common.bash setup() { - setup_common } teardown() { - assert_feature_version - teardown_common } init_gpg() { From 9fabf4aa247ab5e09340705ff1c921069ead7bf9 Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Tue, 10 Sep 2024 15:51:14 -0700 Subject: [PATCH 28/53] more nonsense --- integration-tests/bats/signed.bats | 2 ++ 1 file changed, 2 insertions(+) diff --git a/integration-tests/bats/signed.bats b/integration-tests/bats/signed.bats index 19ea68871c8..64041b82fa1 100644 --- a/integration-tests/bats/signed.bats +++ b/integration-tests/bats/signed.bats @@ -2,9 +2,11 @@ load $BATS_TEST_DIRNAME/helper/common.bash setup() { + echo setup } teardown() { + echo teardown } init_gpg() { From cdda41de7be447d5b8a827dc31b5da75ac68274c Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Tue, 10 Sep 2024 16:01:38 -0700 Subject: [PATCH 29/53] again --- .github/workflows/ci-bats-unix.yaml | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/.github/workflows/ci-bats-unix.yaml b/.github/workflows/ci-bats-unix.yaml index a2afd1a2067..29a3cd96502 100644 --- a/.github/workflows/ci-bats-unix.yaml +++ b/.github/workflows/ci-bats-unix.yaml @@ -66,18 +66,6 @@ jobs: echo "$(pwd)/.ci_bin" >> $GITHUB_PATH - name: Install GPG run: sudo apt install -y gnupg2 - - name: Import GPG keys - working-directory: ./integration-tests/bats - run: | - output=$(gpg --list-keys) - - if [[ $output == *"573DA8C6366D04E35CDB1A44E09A0B208F666373"* ]]; then - echo "It's there! key exists" - else - echo "It's not there" - echo "importing ./private.pgp" - gpg --import ./private.pgp - fi - name: Install Bats run: | npm i bats @@ -142,5 +130,6 @@ jobs: PARQUET_RUNTIME_JAR: ${{ steps.parquet_cli.outputs.runtime_jar }} BATS_TEST_RETRIES: "3" run: | + gpg-agent --daemon --enable-ssh-support bats --tap $BATS_FILTER . working-directory: ./integration-tests/bats From c638d6684ab4bfbccaaf237f0bd37d140f1754e9 Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Tue, 10 Sep 2024 16:11:29 -0700 Subject: [PATCH 30/53] blah --- .github/workflows/ci-bats-unix.yaml | 1 + integration-tests/bats/signed.bats | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/.github/workflows/ci-bats-unix.yaml b/.github/workflows/ci-bats-unix.yaml index 29a3cd96502..3c1ff3b4f06 100644 --- a/.github/workflows/ci-bats-unix.yaml +++ b/.github/workflows/ci-bats-unix.yaml @@ -131,5 +131,6 @@ jobs: BATS_TEST_RETRIES: "3" run: | gpg-agent --daemon --enable-ssh-support + gpg-connect-agent updatestartuptty /bye bats --tap $BATS_FILTER . working-directory: ./integration-tests/bats diff --git a/integration-tests/bats/signed.bats b/integration-tests/bats/signed.bats index 64041b82fa1..16a407075bd 100644 --- a/integration-tests/bats/signed.bats +++ b/integration-tests/bats/signed.bats @@ -10,6 +10,10 @@ teardown() { } init_gpg() { + run gpg-agent --daemon + echo gpg-agent --daemon: \"$output\" + run gpg-connect-agent updatestartuptty /bye + echo gpg-connect-agent updatestartuptty /bye: \"$output\" run gpg --list-keys echo gpg --list-keys: \"$output\" if [[ "$output" =~ "573DA8C6366D04E35CDB1A44E09A0B208F666373" ]]; then From 7e32dc3d1cba811927fa0efbbb122afe5317da81 Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Tue, 10 Sep 2024 16:33:30 -0700 Subject: [PATCH 31/53] ugh --- .github/workflows/ci-bats-unix.yaml | 1 - integration-tests/bats/signed.bats | 6 ++---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci-bats-unix.yaml b/.github/workflows/ci-bats-unix.yaml index 3c1ff3b4f06..29a3cd96502 100644 --- a/.github/workflows/ci-bats-unix.yaml +++ b/.github/workflows/ci-bats-unix.yaml @@ -131,6 +131,5 @@ jobs: BATS_TEST_RETRIES: "3" run: | gpg-agent --daemon --enable-ssh-support - gpg-connect-agent updatestartuptty /bye bats --tap $BATS_FILTER . working-directory: ./integration-tests/bats diff --git a/integration-tests/bats/signed.bats b/integration-tests/bats/signed.bats index 16a407075bd..0ea33dc85ac 100644 --- a/integration-tests/bats/signed.bats +++ b/integration-tests/bats/signed.bats @@ -10,10 +10,8 @@ teardown() { } init_gpg() { - run gpg-agent --daemon - echo gpg-agent --daemon: \"$output\" - run gpg-connect-agent updatestartuptty /bye - echo gpg-connect-agent updatestartuptty /bye: \"$output\" + run /usr/bin/gpg-agent --daemon + echo /usr/bin/gpg-agent --daemon: \"$output\" run gpg --list-keys echo gpg --list-keys: \"$output\" if [[ "$output" =~ "573DA8C6366D04E35CDB1A44E09A0B208F666373" ]]; then From 11435b838462f5f9aa0f91786b3fdd8ddb99bc83 Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Tue, 10 Sep 2024 16:49:02 -0700 Subject: [PATCH 32/53] skip signed bats tests --- integration-tests/bats/signed.bats | 270 ++++++++++++++--------------- 1 file changed, 135 insertions(+), 135 deletions(-) diff --git a/integration-tests/bats/signed.bats b/integration-tests/bats/signed.bats index 0ea33dc85ac..d31ff4613a6 100644 --- a/integration-tests/bats/signed.bats +++ b/integration-tests/bats/signed.bats @@ -2,143 +2,143 @@ load $BATS_TEST_DIRNAME/helper/common.bash setup() { - echo setup + setup_common } teardown() { - echo teardown + assert_feature_version + teardown_common } -init_gpg() { - run /usr/bin/gpg-agent --daemon - echo /usr/bin/gpg-agent --daemon: \"$output\" - run gpg --list-keys - echo gpg --list-keys: \"$output\" - if [[ "$output" =~ "573DA8C6366D04E35CDB1A44E09A0B208F666373" ]]; then - echo "key exists" - else - echo "importing $BATS_TEST_DIRNAME/private.pgp" - run gpg --import "$BATS_TEST_DIRNAME/private.pgp" - echo gpg --import $BATS_TEST_DIRNAME/private.pgp: \"$output\" - [ "$status" -eq 0 ] - fi -} - -@test "signed: dolt commit with key specified on command line" { - init_gpg - run dolt sql -q "CREATE TABLE t (pk INT primary key);" - [ "$status" -eq 0 ] - - run dolt add . - [ "$status" -eq 0 ] - - run dolt commit -m "initial commit" - [ "$status" -eq 0 ] - - run dolt sql -q "INSERT INTO t VALUES (1);" - [ "$status" -eq 0 ] - - run dolt add . - [ "$status" -eq 0 ] - - run dolt commit -S "573DA8C6366D04E35CDB1A44E09A0B208F666373" -m "signed commit" - echo $output - [ "$status" -eq 0 ] - - run dolt log --show-signature - echo $output - [ "$status" -eq 0 ] - [[ "$output" =~ 'gpg: Good signature from "Test User "' ]] || false -} - -@test "signed: dolt commit with key specified in config" { - init_gpg - run dolt config --global --add sqlserver.global.signingkey "573DA8C6366D04E35CDB1A44E09A0B208F666373" - [ "$status" -eq 0 ] - - run dolt sql -q "CREATE TABLE t (pk INT primary key);" - [ "$status" -eq 0 ] - - run dolt add . - [ "$status" -eq 0 ] - - run dolt commit -m "initial commit" - [ "$status" -eq 0 ] - - run dolt sql -q "INSERT INTO t VALUES (1);" - [ "$status" -eq 0 ] - - run dolt add . - [ "$status" -eq 0 ] - - run dolt commit -S -m "signed commit" - [ "$status" -eq 0 ] - - run dolt log --show-signature - [ "$status" -eq 0 ] - [[ "$output" =~ 'gpg: Good signature from "Test User "' ]] || false -} - -@test "signed: signing by default using the config" { - init_gpg - run dolt config --global --add sqlserver.global.signingkey "573DA8C6366D04E35CDB1A44E09A0B208F666373" - [ "$status" -eq 0 ] - - run dolt config --global --add sqlserver.global.gpgsign true - [ "$status" -eq 0 ] - - run dolt sql -q "CREATE TABLE t (pk INT primary key);" - [ "$status" -eq 0 ] - - run dolt add . - [ "$status" -eq 0 ] - - run dolt commit -m "initial commit" - echo $output - [ "$status" -eq 0 ] - - run dolt sql -q "INSERT INTO t VALUES (1);" - [ "$status" -eq 0 ] - - run dolt add . - [ "$status" -eq 0 ] - - run dolt commit -m "signed commit without being specified on the command line" - [ "$status" -eq 0 ] - - run dolt log --show-signature - [ "$status" -eq 0 ] - [[ "$output" =~ 'gpg: Good signature from "Test User "' ]] || false -} - -@test "signed: using stored procedure" { - init_gpg - run dolt config --global --add sqlserver.global.signingkey "573DA8C6366D04E35CDB1A44E09A0B208F666373" - [ "$status" -eq 0 ] - - run dolt config --global --add sqlserver.global.gpgsign true - [ "$status" -eq 0 ] - - run dolt sql -q "CREATE TABLE t (pk INT primary key);" - [ "$status" -eq 0 ] - - run dolt add . - [ "$status" -eq 0 ] - - run dolt commit -m "initial commit" - echo $output - [ "$status" -eq 0 ] - - run dolt sql -q "INSERT INTO t VALUES (1);" - [ "$status" -eq 0 ] - - run dolt add . - [ "$status" -eq 0 ] - - run dolt sql -q "CALL dolt_commit('-m', 'signed commit');" - [ "$status" -eq 0 ] - - run dolt log --show-signature - [ "$status" -eq 0 ] - [[ "$output" =~ 'gpg: Good signature from "Test User "' ]] || false -} \ No newline at end of file +# init_gpg() { + # # check for existence of public.gpg and private.gpg + # run gpg --list-keys + # echo gpg --list-keys: \"$output\" + # if [[ "$output" =~ "573DA8C6366D04E35CDB1A44E09A0B208F666373" ]]; then + # echo "key exists" + # else + # echo "importing $BATS_TEST_DIRNAME/private.pgp" + # run gpg --import "$BATS_TEST_DIRNAME/private.pgp" + # echo gpg --import $BATS_TEST_DIRNAME/private.pgp: \"$output\" + # [ "$status" -eq 0 ] + # fi +# } + +# @test "signed: dolt commit with key specified on command line" { + # init_gpg + # run dolt sql -q "CREATE TABLE t (pk INT primary key);" + # [ "$status" -eq 0 ] +# + # run dolt add . + # [ "$status" -eq 0 ] +# + # run dolt commit -m "initial commit" + # [ "$status" -eq 0 ] +# + # run dolt sql -q "INSERT INTO t VALUES (1);" + # [ "$status" -eq 0 ] +# + # run dolt add . + # [ "$status" -eq 0 ] +# + # run dolt commit -S "573DA8C6366D04E35CDB1A44E09A0B208F666373" -m "signed commit" + # echo $output + # [ "$status" -eq 0 ] +# + # run dolt log --show-signature + # echo $output + # [ "$status" -eq 0 ] + # [[ "$output" =~ 'gpg: Good signature from "Test User "' ]] || false +# } +# +# @test "signed: dolt commit with key specified in config" { + # init_gpg + # run dolt config --global --add sqlserver.global.signingkey "573DA8C6366D04E35CDB1A44E09A0B208F666373" + # [ "$status" -eq 0 ] +# + # run dolt sql -q "CREATE TABLE t (pk INT primary key);" + # [ "$status" -eq 0 ] +# + # run dolt add . + # [ "$status" -eq 0 ] +# + # run dolt commit -m "initial commit" + # [ "$status" -eq 0 ] +# + # run dolt sql -q "INSERT INTO t VALUES (1);" + # [ "$status" -eq 0 ] +# + # run dolt add . + # [ "$status" -eq 0 ] +# + # run dolt commit -S -m "signed commit" + # [ "$status" -eq 0 ] +# + # run dolt log --show-signature + # [ "$status" -eq 0 ] + # [[ "$output" =~ 'gpg: Good signature from "Test User "' ]] || false +# } + +# @test "signed: signing by default using the config" { + # init_gpg + # run dolt config --global --add sqlserver.global.signingkey "573DA8C6366D04E35CDB1A44E09A0B208F666373" + # [ "$status" -eq 0 ] +# + # run dolt config --global --add sqlserver.global.gpgsign true + # [ "$status" -eq 0 ] +# + # run dolt sql -q "CREATE TABLE t (pk INT primary key);" + # [ "$status" -eq 0 ] +# + # run dolt add . + # [ "$status" -eq 0 ] +# + # run dolt commit -m "initial commit" + # echo $output + # [ "$status" -eq 0 ] +# + # run dolt sql -q "INSERT INTO t VALUES (1);" + # [ "$status" -eq 0 ] +# + # run dolt add . + # [ "$status" -eq 0 ] +# + # run dolt commit -m "signed commit without being specified on the command line" + # [ "$status" -eq 0 ] +# + # run dolt log --show-signature + # [ "$status" -eq 0 ] + # [[ "$output" =~ 'gpg: Good signature from "Test User "' ]] || false +# } +# +# @test "signed: using stored procedure" { + # init_gpg + # run dolt config --global --add sqlserver.global.signingkey "573DA8C6366D04E35CDB1A44E09A0B208F666373" + # [ "$status" -eq 0 ] +# + # run dolt config --global --add sqlserver.global.gpgsign true + # [ "$status" -eq 0 ] +# + # run dolt sql -q "CREATE TABLE t (pk INT primary key);" + # [ "$status" -eq 0 ] +# + # run dolt add . + # [ "$status" -eq 0 ] +# + # run dolt commit -m "initial commit" + # echo $output + # [ "$status" -eq 0 ] +# + # run dolt sql -q "INSERT INTO t VALUES (1);" + # [ "$status" -eq 0 ] +# + # run dolt add . + # [ "$status" -eq 0 ] +# + # run dolt sql -q "CALL dolt_commit('-m', 'signed commit');" + # [ "$status" -eq 0 ] +# + # run dolt log --show-signature + # [ "$status" -eq 0 ] + # [[ "$output" =~ 'gpg: Good signature from "Test User "' ]] || false +# } \ No newline at end of file From 1c71e9b93cf7594b6764fccba408f73dd820ae27 Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Tue, 10 Sep 2024 17:11:18 -0700 Subject: [PATCH 33/53] test fix --- .../doltcore/sqle/dsess/dolt_session_test.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/go/libraries/doltcore/sqle/dsess/dolt_session_test.go b/go/libraries/doltcore/sqle/dsess/dolt_session_test.go index 84b1f1e17d9..e335519bc55 100644 --- a/go/libraries/doltcore/sqle/dsess/dolt_session_test.go +++ b/go/libraries/doltcore/sqle/dsess/dolt_session_test.go @@ -200,9 +200,9 @@ func TestGetPersistedValue(t *testing.T) { ExpectedRes: uint64(7), }, { - Name: "activate_all_roles_on_login", - Value: "true", - Err: true, + Name: "activate_all_roles_on_login", + Value: "true", + ExpectedRes: int8(1), }, { Name: "activate_all_roles_on_login", @@ -215,9 +215,9 @@ func TestGetPersistedValue(t *testing.T) { ExpectedRes: int8(1), }, { - Name: "activate_all_roles_on_login", - Value: "false", - Err: true, + Name: "activate_all_roles_on_login", + Value: "false", + ExpectedRes: int8(0), }, { Name: "activate_all_roles_on_login", From 672019d3b527b67a5d62660f8738764eec7651fa Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Tue, 10 Sep 2024 17:28:02 -0700 Subject: [PATCH 34/53] remove gpg lines --- .github/workflows/ci-bats-unix.yaml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/ci-bats-unix.yaml b/.github/workflows/ci-bats-unix.yaml index 29a3cd96502..b2cdc65db2e 100644 --- a/.github/workflows/ci-bats-unix.yaml +++ b/.github/workflows/ci-bats-unix.yaml @@ -64,8 +64,6 @@ jobs: run: | mkdir -p ./.ci_bin echo "$(pwd)/.ci_bin" >> $GITHUB_PATH - - name: Install GPG - run: sudo apt install -y gnupg2 - name: Install Bats run: | npm i bats @@ -130,6 +128,5 @@ jobs: PARQUET_RUNTIME_JAR: ${{ steps.parquet_cli.outputs.runtime_jar }} BATS_TEST_RETRIES: "3" run: | - gpg-agent --daemon --enable-ssh-support bats --tap $BATS_FILTER . working-directory: ./integration-tests/bats From 5e7caf754909aa8f138f241d1c951693567a3221 Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Thu, 12 Sep 2024 15:34:22 -0700 Subject: [PATCH 35/53] move tests to go --- go/cmd/dolt/commands/signed_commits_test.go | 71 +++++++++++++++ .../signed_commits/db/.dolt/config.json | 1 + .../signed_commits/db/.dolt/noms/LOCK | 0 .../signed_commits/db/.dolt/noms/journal.idx | Bin 0 -> 986 bytes .../signed_commits/db/.dolt/noms/manifest | 1 + .../noms/vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv | Bin 0 -> 1048576 bytes .../signed_commits/db/.dolt/repo_state.json | 6 ++ .../db/.dolt/stats/.dolt/config.json | 1 + .../db/.dolt/stats/.dolt/noms/LOCK | 0 .../db/.dolt/stats/.dolt/noms/journal.idx | Bin 0 -> 261 bytes .../db/.dolt/stats/.dolt/noms/manifest | 1 + .../noms/vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv | Bin 0 -> 1048576 bytes .../db/.dolt/stats/.dolt/repo_state.json | 6 ++ .../testdata/signed_commits/private.pgp | 81 ++++++++++++++++++ go/libraries/doltcore/env/config.go | 18 ++++ go/libraries/utils/gpg/sign.go | 26 ++++++ go/libraries/utils/gpg/sign_test.go | 9 ++ 17 files changed, 221 insertions(+) create mode 100644 go/cmd/dolt/commands/signed_commits_test.go create mode 100755 go/cmd/dolt/commands/testdata/signed_commits/db/.dolt/config.json create mode 100644 go/cmd/dolt/commands/testdata/signed_commits/db/.dolt/noms/LOCK create mode 100644 go/cmd/dolt/commands/testdata/signed_commits/db/.dolt/noms/journal.idx create mode 100644 go/cmd/dolt/commands/testdata/signed_commits/db/.dolt/noms/manifest create mode 100644 go/cmd/dolt/commands/testdata/signed_commits/db/.dolt/noms/vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv create mode 100755 go/cmd/dolt/commands/testdata/signed_commits/db/.dolt/repo_state.json create mode 100755 go/cmd/dolt/commands/testdata/signed_commits/db/.dolt/stats/.dolt/config.json create mode 100644 go/cmd/dolt/commands/testdata/signed_commits/db/.dolt/stats/.dolt/noms/LOCK create mode 100644 go/cmd/dolt/commands/testdata/signed_commits/db/.dolt/stats/.dolt/noms/journal.idx create mode 100644 go/cmd/dolt/commands/testdata/signed_commits/db/.dolt/stats/.dolt/noms/manifest create mode 100644 go/cmd/dolt/commands/testdata/signed_commits/db/.dolt/stats/.dolt/noms/vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv create mode 100755 go/cmd/dolt/commands/testdata/signed_commits/db/.dolt/stats/.dolt/repo_state.json create mode 100644 go/cmd/dolt/commands/testdata/signed_commits/private.pgp diff --git a/go/cmd/dolt/commands/signed_commits_test.go b/go/cmd/dolt/commands/signed_commits_test.go new file mode 100644 index 00000000000..1ba27a01c9b --- /dev/null +++ b/go/cmd/dolt/commands/signed_commits_test.go @@ -0,0 +1,71 @@ +package commands + +import ( + "context" + "github.com/dolthub/dolt/go/cmd/dolt/cli" + "github.com/dolthub/dolt/go/libraries/doltcore/env" + "github.com/dolthub/dolt/go/libraries/utils/argparser" + "github.com/dolthub/dolt/go/libraries/utils/config" + "github.com/dolthub/dolt/go/libraries/utils/filesys" + "github.com/dolthub/dolt/go/libraries/utils/gpg" + "github.com/stretchr/testify/require" + "os" + "testing" +) + +const keyId = "573DA8C6366D04E35CDB1A44E09A0B208F666373" + +func importKey(t *testing.T, ctx context.Context) { + err := gpg.ImportKey(ctx, "testdata/signed_commits/private.pgp") + require.NoError(t, err) + + ok, err := gpg.HasKey(ctx, keyId) + require.NoError(t, err) + require.True(t, ok) +} + +func TestSignAndVerifyCommit(t *testing.T) { + ctx := context.Background() + importKey(t, ctx) + + args := []string{"-S", keyId, "-m", "test commit"} + apr, err := cli.CreateCommitArgParser().Parse(args) + require.NoError(t, err) + + global := map[string]string{ + "user.name": "First Last", + "user.email": "test@dolthub.com", + } + + execCommand(t, ctx, "testdata/signed_commits/db", CommitCmd{}, args, apr, map[string]string{}, global) +} + +func execCommand(t *testing.T, ctx context.Context, wd string, cmd cli.Command, args []string, apr *argparser.ArgParseResults, local, global map[string]string) { + err := os.Chdir(wd) + require.NoError(t, err) + + fs := filesys.LocalFS + dEnv := env.Load(context.Background(), testHomeDirFunc, fs, wd, "test") + + ch := config.NewConfigHierarchy() + if global != nil { + ch.AddConfig("global", config.NewMapConfig(global)) + } + + if local != nil { + ch.AddConfig("local", config.NewMapConfig(local)) + } + + cfg := env.NewTestDoltCliConfigFromHierarchy(ch, fs) + + mr, err := env.MultiEnvForDirectory(ctx, ch, fs, dEnv.Version, dEnv) + require.NoError(t, err) + + latebind, verr := BuildSqlEngineQueryist(ctx, dEnv.FS, mr, &cli.UserPassword{}, apr) + require.NoError(t, verr) + cliCtx, err := cli.NewCliContext(apr, cfg, latebind) + require.NoError(t, err) + + n := cmd.Exec(ctx, "commit", args, dEnv, cliCtx) + require.Equal(t, 0, n) +} diff --git a/go/cmd/dolt/commands/testdata/signed_commits/db/.dolt/config.json b/go/cmd/dolt/commands/testdata/signed_commits/db/.dolt/config.json new file mode 100755 index 00000000000..9e26dfeeb6e --- /dev/null +++ b/go/cmd/dolt/commands/testdata/signed_commits/db/.dolt/config.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/go/cmd/dolt/commands/testdata/signed_commits/db/.dolt/noms/LOCK b/go/cmd/dolt/commands/testdata/signed_commits/db/.dolt/noms/LOCK new file mode 100644 index 00000000000..e69de29bb2d diff --git a/go/cmd/dolt/commands/testdata/signed_commits/db/.dolt/noms/journal.idx b/go/cmd/dolt/commands/testdata/signed_commits/db/.dolt/noms/journal.idx new file mode 100644 index 0000000000000000000000000000000000000000..cd57ccd25db6b2f0eac544855012c565c8a64754 GIT binary patch literal 986 zcmXxjeNfAB9Ki99^yFdL?g-T!B_+97sFd@NkxGP0WlE8AiLNJCZl0Qvw9!%5W~@}6 zkAB3?5~a@NvHP)0^RUS@PkCC7m6gwYe?EVF-*>;)efPWH_xBqNMr2FsntB)HPBL+| zJ#)=K#toARXGR^?2Cm8QznrMu+;#9*0D~8?cOfoBAM;A^*5;`AQtM=q{2aj{QtURU zPQBo%2v}+Mq2r9R!mm~nwBcf<(6Zs0`gVnlPBHU|VPV*TOa^{I*1>>Vr zj2%NmI`zwU3YIdc#VUcI?AvbaJ+QOL!5g2M$@X;?k-)+ zB7(!LCzJxN%DDMSAEjXyXOH*I>>+A`!#P+!PY90i#;QR6BFjC{%g`-ykF<0NzgeFTXQXwZz@hZsOA9roO89Ln zpGvzOXT6F@<3hvFiZL#p6~9YN$Bd2s%H4MV3|ODBwcz6>kf=G)dd-_%WmDoaI|({b zSPGKVRsNjd*2iV5%#+%tpRm3SoKYfNXpk57SQ^^rC~MAlC?99Znzuws+l2&O#$r`4%#>}H z(DJlC%Fzi5bosX!{EDSuw7Rrd7h7Uj&^EXO1YzX_U7N5pBuTtW+t_`n@*wV>i9P@S zWNt4IYhm5M*|h>N_S2mri!@`-II@#liKT#FoIc=VaR~L@6QK#Q@X82I$i~ut0p!j+ A-~a#s literal 0 HcmV?d00001 diff --git a/go/cmd/dolt/commands/testdata/signed_commits/db/.dolt/noms/manifest b/go/cmd/dolt/commands/testdata/signed_commits/db/.dolt/noms/manifest new file mode 100644 index 00000000000..0c9cf2916ae --- /dev/null +++ b/go/cmd/dolt/commands/testdata/signed_commits/db/.dolt/noms/manifest @@ -0,0 +1 @@ +5:__DOLT__:brqj5m8e9b0s0rtjmhqp4pn1k8e2akqv:8m5mnvhavk3k6b409fajpv9iipokkeuj:00000000000000000000000000000000:vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv:34 \ No newline at end of file diff --git a/go/cmd/dolt/commands/testdata/signed_commits/db/.dolt/noms/vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv b/go/cmd/dolt/commands/testdata/signed_commits/db/.dolt/noms/vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv new file mode 100644 index 0000000000000000000000000000000000000000..0c1238d3e6ddc181edd78e9874cd2a6142676168 GIT binary patch literal 1048576 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 z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs t0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0Ro2v{vT6_yMh1! literal 0 HcmV?d00001 diff --git a/go/cmd/dolt/commands/testdata/signed_commits/db/.dolt/repo_state.json b/go/cmd/dolt/commands/testdata/signed_commits/db/.dolt/repo_state.json new file mode 100755 index 00000000000..32f2d6197d5 --- /dev/null +++ b/go/cmd/dolt/commands/testdata/signed_commits/db/.dolt/repo_state.json @@ -0,0 +1,6 @@ +{ + "head": "refs/heads/main", + "remotes": {}, + "backups": {}, + "branches": {} +} \ No newline at end of file diff --git a/go/cmd/dolt/commands/testdata/signed_commits/db/.dolt/stats/.dolt/config.json b/go/cmd/dolt/commands/testdata/signed_commits/db/.dolt/stats/.dolt/config.json new file mode 100755 index 00000000000..9e26dfeeb6e --- /dev/null +++ b/go/cmd/dolt/commands/testdata/signed_commits/db/.dolt/stats/.dolt/config.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/go/cmd/dolt/commands/testdata/signed_commits/db/.dolt/stats/.dolt/noms/LOCK b/go/cmd/dolt/commands/testdata/signed_commits/db/.dolt/stats/.dolt/noms/LOCK new file mode 100644 index 00000000000..e69de29bb2d diff --git a/go/cmd/dolt/commands/testdata/signed_commits/db/.dolt/stats/.dolt/noms/journal.idx b/go/cmd/dolt/commands/testdata/signed_commits/db/.dolt/stats/.dolt/noms/journal.idx new file mode 100644 index 0000000000000000000000000000000000000000..f0de6296dceff9e7e288cc85d91c9253071af80b GIT binary patch literal 261 zcmZSh?_J!t@!%JSQpL}*x87R)WPkt}AXUJ?;+3zgX17STUv(~L+~$5AsN@qpho*9Qll7mfkObNHX>V>0E}nlBza7!i|f2A_O?Pv&%0+B$+_Q_Awl@G<$D+ zrq(kuh0Tz^OX&bq@)MA5Wia=(>u%Y#fy5;MaBNC^ literal 0 HcmV?d00001 diff --git a/go/cmd/dolt/commands/testdata/signed_commits/db/.dolt/stats/.dolt/noms/manifest b/go/cmd/dolt/commands/testdata/signed_commits/db/.dolt/stats/.dolt/noms/manifest new file mode 100644 index 00000000000..1f8982faf1c --- /dev/null +++ b/go/cmd/dolt/commands/testdata/signed_commits/db/.dolt/stats/.dolt/noms/manifest @@ -0,0 +1 @@ +5:__DOLT__:jrhi6484op854sujfe0pcqpkme0i6bto:mt40uhrd930kmdnu07taara6u8ecm84d:00000000000000000000000000000000:vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv:9 \ No newline at end of file diff --git a/go/cmd/dolt/commands/testdata/signed_commits/db/.dolt/stats/.dolt/noms/vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv b/go/cmd/dolt/commands/testdata/signed_commits/db/.dolt/stats/.dolt/noms/vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv new file mode 100644 index 0000000000000000000000000000000000000000..433b1f250ca17c90d4eb57cfd18e33bb51f88fa2 GIT binary patch literal 1048576 zcmeIyaco^x836Ee+rF(`wzaZ`bgm_DV=OZ^cEFrq>MYx$1-fN)jTA#n%HA8ibnmr! zeRF`*pp%GsTg$4HF0U|bLlCKv-r$(R~vV(<@_5EDsegcug)#6-oQ-+fN!pd*^# zU;f_9$-C#>d(Qp7-}%l-DILsOTK;z9%!A*1?)9Nv%m2{#;^`0nx$j#?ztZ|Zwr5#N z_w}TdM#nxe5P=m#J+-C9ah+1uoBFe*3)2U)`Gxk5EOmFx-;kx=YvNW6U7HnG zU$<#=b4m+h)WX7O`+}4TW7&9HSL(?6vwX&LpN%&>_R#yrSH3s8ry`!V8>TK_wf-A@ z2d;Ru<5N!^=s(!GY@qcw*_xR2rIqo_rj47&QX#wV(lnT^N&RVcTA7LwTTevQmM)Da z?kV2;@UX8|p16Noy)sc7DoyQd+_CGn4{V>R#(#^WZOD51i^Jtwsa~0!NvV6$ z_?9eCM&|N7_J!A%fAUz%mt)xeNb$85L)GsdzxU{d>lR@Zx4x-Qky->JfUOrz2aF>ldTt8r|87kvYIx3hz(dh2luPyklmdQfrj!wTYbr z+w0|tM)|Vo!{7hiEuT9QqrVfuJi7FX!I34Of9!$ruJ(PCyI;8K=&i-pL)j}4&B6T5 z+r~!6QkvIX`FYWAi`IyCLA24&Rq|Dccnhn#a-nx6+HX&9{OOYiZyJvIR%coM^0edB z+P!mzy>-vad0`!itbTOuy4SA$*=Mi6r8Mu#&ihx)er9&^*4D$#D*DX{NXqMwE2DtYCrT!>+{*yBbnKJ zMQ$G57Il`Q+W)zq^U7~)R{!3$r*@>Q?@T%FhkD9aCa;L`X!$%!eOtLPGjP60W9Z})13&*s`}(iO<=IH+ z>EX_gSBIawaowBQUyf8icDDCKaeo}Y`El^l#cJ~T7<)m&(a&r0T*~K;ga16?k+~Ai z?unItS28~E;>gM4cm47Hi1C6WWvNfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk b1PBlyK!5-N0t5&UAV7cs0Rja6Uj_aSU^LDY literal 0 HcmV?d00001 diff --git a/go/cmd/dolt/commands/testdata/signed_commits/db/.dolt/stats/.dolt/repo_state.json b/go/cmd/dolt/commands/testdata/signed_commits/db/.dolt/stats/.dolt/repo_state.json new file mode 100755 index 00000000000..32f2d6197d5 --- /dev/null +++ b/go/cmd/dolt/commands/testdata/signed_commits/db/.dolt/stats/.dolt/repo_state.json @@ -0,0 +1,6 @@ +{ + "head": "refs/heads/main", + "remotes": {}, + "backups": {}, + "branches": {} +} \ No newline at end of file diff --git a/go/cmd/dolt/commands/testdata/signed_commits/private.pgp b/go/cmd/dolt/commands/testdata/signed_commits/private.pgp new file mode 100644 index 00000000000..014e9543001 --- /dev/null +++ b/go/cmd/dolt/commands/testdata/signed_commits/private.pgp @@ -0,0 +1,81 @@ +-----BEGIN PGP PRIVATE KEY BLOCK----- + +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 +=WzPV +-----END PGP PRIVATE KEY BLOCK----- diff --git a/go/libraries/doltcore/env/config.go b/go/libraries/doltcore/env/config.go index d26d5c01614..34c11a0195c 100644 --- a/go/libraries/doltcore/env/config.go +++ b/go/libraries/doltcore/env/config.go @@ -72,6 +72,24 @@ type DoltCliConfig struct { var _ config.ReadableConfig = &DoltCliConfig{} +func NewTestDoltCliConfig(gcfg, lcfg config.ReadWriteConfig, fs filesys.Filesys) *DoltCliConfig { + cfgHierarchy := config.NewConfigHierarchy() + + if gcfg != nil { + cfgHierarchy.AddConfig(globalConfigName, gcfg) + } + + if lcfg != nil { + cfgHierarchy.AddConfig(localConfigName, lcfg) + } + + return &DoltCliConfig{cfgHierarchy, cfgHierarchy, fs} +} + +func NewTestDoltCliConfigFromHierarchy(ch *config.ConfigHierarchy, fs filesys.Filesys) *DoltCliConfig { + return &DoltCliConfig{ch, ch, fs} +} + func LoadDoltCliConfig(hdp HomeDirProvider, fs filesys.ReadWriteFS) (*DoltCliConfig, error) { ch := config.NewConfigHierarchy() diff --git a/go/libraries/utils/gpg/sign.go b/go/libraries/utils/gpg/sign.go index 4a2e4260405..a2a3f0265f3 100644 --- a/go/libraries/utils/gpg/sign.go +++ b/go/libraries/utils/gpg/sign.go @@ -89,6 +89,32 @@ func execGpgAndReadOutput(ctx context.Context, in []byte, args []string) (*bytes return outBuf, errBuf, nil } +func ImportKey(ctx context.Context, keyFile string) error { + args := []string{"--import", keyFile} + _, _, err := execGpgAndReadOutput(ctx, nil, args) + return err +} + +func ListKeys(ctx context.Context) ([]byte, error) { + args := []string{"--list-keys"} + outBuf, _, err := execGpgAndReadOutput(ctx, nil, args) + if err != nil { + return nil, err + } + + return outBuf.Bytes(), nil +} + +func HasKey(ctx context.Context, keyId string) (bool, error) { + args := []string{"--list-keys", keyId} + outBuf, _, err := execGpgAndReadOutput(ctx, nil, args) + if err != nil { + return false, err + } + + return strings.Contains(outBuf.String(), keyId), nil +} + func Sign(ctx context.Context, keyId string, message []byte) ([]byte, error) { args := []string{"--clear-sign", "-u", keyId} outBuf, _, err := execGpgAndReadOutput(ctx, message, args) diff --git a/go/libraries/utils/gpg/sign_test.go b/go/libraries/utils/gpg/sign_test.go index 2f804df22aa..658431e980f 100644 --- a/go/libraries/utils/gpg/sign_test.go +++ b/go/libraries/utils/gpg/sign_test.go @@ -23,6 +23,15 @@ import ( "github.com/stretchr/testify/require" ) +func signTestSetup(t *testing.T, ctx context.Context) { + err := ImportKey(ctx, "testdata/private.pgp") + require.NoError(t, err) + + ok, err := HasKey(ctx, "4798B29CA9029452D103B1E388F64CE29826DA4A") + require.NoError(t, err) + require.True(t, ok) +} + func TestSign(t *testing.T) { ctx := context.Background() keyId := "4798B29CA9029452D103B1E388F64CE29826DA4A" From 7ad3daeec5686b411609ae1cd94b97139d63d3b8 Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Thu, 12 Sep 2024 15:55:10 -0700 Subject: [PATCH 36/53] test fixes --- go/cmd/dolt/cli/stdio.go | 6 +++++- go/cmd/dolt/commands/signed_commits_test.go | 13 +++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/go/cmd/dolt/cli/stdio.go b/go/cmd/dolt/cli/stdio.go index 7707e1a3ef8..601ffd4c9a5 100644 --- a/go/cmd/dolt/cli/stdio.go +++ b/go/cmd/dolt/cli/stdio.go @@ -53,9 +53,13 @@ func SetIOStreams(inStream io.ReadCloser, outStream io.WriteCloser) { } func InitIO() (restoreIO func()) { + outFile := filepath.Join(os.TempDir(), uuid.New().String()) + return InitIOWithFile(outFile) +} + +func InitIOWithFile(outFile string) (restoreIO func()) { stdOut, stdErr := os.Stdout, os.Stderr - outFile := filepath.Join(os.TempDir(), uuid.New().String()) f, err := os.Create(outFile) if err == nil { diff --git a/go/cmd/dolt/commands/signed_commits_test.go b/go/cmd/dolt/commands/signed_commits_test.go index 1ba27a01c9b..52a0fba343e 100644 --- a/go/cmd/dolt/commands/signed_commits_test.go +++ b/go/cmd/dolt/commands/signed_commits_test.go @@ -8,8 +8,10 @@ import ( "github.com/dolthub/dolt/go/libraries/utils/config" "github.com/dolthub/dolt/go/libraries/utils/filesys" "github.com/dolthub/dolt/go/libraries/utils/gpg" + "github.com/google/uuid" "github.com/stretchr/testify/require" "os" + "path/filepath" "testing" ) @@ -66,6 +68,17 @@ func execCommand(t *testing.T, ctx context.Context, wd string, cmd cli.Command, cliCtx, err := cli.NewCliContext(apr, cfg, latebind) require.NoError(t, err) + outFile := filepath.Join(os.TempDir(), uuid.New().String()) + revertIO := cli.InitIOWithFile(outFile) + defer func() { + revertIO() + + outAndErr, err := os.ReadFile(outFile) + require.NoError(t, err) + + t.Logf("Output:\n%s", string(outAndErr)) + }() + n := cmd.Exec(ctx, "commit", args, dEnv, cliCtx) require.Equal(t, 0, n) } From e86bb5dc86b9d2a300b159a14c18fe81da38334d Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Thu, 12 Sep 2024 16:09:01 -0700 Subject: [PATCH 37/53] io --- go/cmd/dolt/commands/signed_commits_test.go | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/go/cmd/dolt/commands/signed_commits_test.go b/go/cmd/dolt/commands/signed_commits_test.go index 52a0fba343e..35da76aa698 100644 --- a/go/cmd/dolt/commands/signed_commits_test.go +++ b/go/cmd/dolt/commands/signed_commits_test.go @@ -8,10 +8,8 @@ import ( "github.com/dolthub/dolt/go/libraries/utils/config" "github.com/dolthub/dolt/go/libraries/utils/filesys" "github.com/dolthub/dolt/go/libraries/utils/gpg" - "github.com/google/uuid" "github.com/stretchr/testify/require" "os" - "path/filepath" "testing" ) @@ -68,12 +66,18 @@ func execCommand(t *testing.T, ctx context.Context, wd string, cmd cli.Command, cliCtx, err := cli.NewCliContext(apr, cfg, latebind) require.NoError(t, err) - outFile := filepath.Join(os.TempDir(), uuid.New().String()) - revertIO := cli.InitIOWithFile(outFile) + initialOut := os.Stdout + initialErr := os.Stderr + f, err := os.CreateTemp(os.TempDir(), "signed-commit-test-*") + os.Stdout = f + os.Stderr = f defer func() { - revertIO() + err := f.Close() + os.Stdout = initialOut + os.Stderr = initialErr + require.NoError(t, err) - outAndErr, err := os.ReadFile(outFile) + outAndErr, err := os.ReadFile(f.Name()) require.NoError(t, err) t.Logf("Output:\n%s", string(outAndErr)) From 6640869f07f1958dd9fef23a8ece681cd6b7e212 Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Thu, 12 Sep 2024 16:11:22 -0700 Subject: [PATCH 38/53] io --- go/cmd/dolt/commands/signed_commits_test.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/go/cmd/dolt/commands/signed_commits_test.go b/go/cmd/dolt/commands/signed_commits_test.go index 35da76aa698..182262822cd 100644 --- a/go/cmd/dolt/commands/signed_commits_test.go +++ b/go/cmd/dolt/commands/signed_commits_test.go @@ -71,11 +71,16 @@ func execCommand(t *testing.T, ctx context.Context, wd string, cmd cli.Command, f, err := os.CreateTemp(os.TempDir(), "signed-commit-test-*") os.Stdout = f os.Stderr = f + restoreIO := cli.InitIO() + defer func() { err := f.Close() + require.NoError(t, err) + + restoreIO() + os.Stdout = initialOut os.Stderr = initialErr - require.NoError(t, err) outAndErr, err := os.ReadFile(f.Name()) require.NoError(t, err) From e658fceb48159422449a8dad2b860a174cc9967b Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Thu, 12 Sep 2024 16:15:19 -0700 Subject: [PATCH 39/53] io fix --- go/cmd/dolt/commands/signed_commits_test.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/go/cmd/dolt/commands/signed_commits_test.go b/go/cmd/dolt/commands/signed_commits_test.go index 182262822cd..c67b74efc4e 100644 --- a/go/cmd/dolt/commands/signed_commits_test.go +++ b/go/cmd/dolt/commands/signed_commits_test.go @@ -37,10 +37,12 @@ func TestSignAndVerifyCommit(t *testing.T) { "user.email": "test@dolthub.com", } - execCommand(t, ctx, "testdata/signed_commits/db", CommitCmd{}, args, apr, map[string]string{}, global) + commitOutput := execCommand(t, ctx, "testdata/signed_commits/db", CommitCmd{}, args, apr, map[string]string{}, global) + require.NoError(t, err) + } -func execCommand(t *testing.T, ctx context.Context, wd string, cmd cli.Command, args []string, apr *argparser.ArgParseResults, local, global map[string]string) { +func execCommand(t *testing.T, ctx context.Context, wd string, cmd cli.Command, args []string, apr *argparser.ArgParseResults, local, global map[string]string) (output string) { err := os.Chdir(wd) require.NoError(t, err) From 5f4ee75b9c0ddd068ee740294a729549ecc9d7e3 Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Thu, 12 Sep 2024 16:17:54 -0700 Subject: [PATCH 40/53] get commit output --- go/cmd/dolt/commands/signed_commits_test.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/go/cmd/dolt/commands/signed_commits_test.go b/go/cmd/dolt/commands/signed_commits_test.go index c67b74efc4e..1fbbe29a142 100644 --- a/go/cmd/dolt/commands/signed_commits_test.go +++ b/go/cmd/dolt/commands/signed_commits_test.go @@ -9,6 +9,7 @@ import ( "github.com/dolthub/dolt/go/libraries/utils/filesys" "github.com/dolthub/dolt/go/libraries/utils/gpg" "github.com/stretchr/testify/require" + "log" "os" "testing" ) @@ -40,6 +41,7 @@ func TestSignAndVerifyCommit(t *testing.T) { commitOutput := execCommand(t, ctx, "testdata/signed_commits/db", CommitCmd{}, args, apr, map[string]string{}, global) require.NoError(t, err) + log.Println("commit output", commitOutput) } func execCommand(t *testing.T, ctx context.Context, wd string, cmd cli.Command, args []string, apr *argparser.ArgParseResults, local, global map[string]string) (output string) { @@ -84,12 +86,13 @@ func execCommand(t *testing.T, ctx context.Context, wd string, cmd cli.Command, os.Stdout = initialOut os.Stderr = initialErr - outAndErr, err := os.ReadFile(f.Name()) + outputBytes, err := os.ReadFile(f.Name()) require.NoError(t, err) - t.Logf("Output:\n%s", string(outAndErr)) + output = string(outputBytes) }() n := cmd.Exec(ctx, "commit", args, dEnv, cliCtx) require.Equal(t, 0, n) + return } From 6b3cd4b68ddc2794cbacd5e153ef963cfd2e0e8f Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Fri, 13 Sep 2024 00:43:53 -0700 Subject: [PATCH 41/53] go tests for signing --- go/cmd/dolt/commands/signed_commits_test.go | 133 +++++++++-- go/go.mod | 46 ++-- go/go.sum | 81 ++++--- go/go.work | 4 +- go/go.work.sum | 206 ++++++++++++++++++ go/libraries/utils/filesys/fs.go | 46 ++++ integration-tests/go-sql-server-driver/go.mod | 6 +- integration-tests/go-sql-server-driver/go.sum | 1 + 8 files changed, 438 insertions(+), 85 deletions(-) diff --git a/go/cmd/dolt/commands/signed_commits_test.go b/go/cmd/dolt/commands/signed_commits_test.go index 1fbbe29a142..0b5331e1abc 100644 --- a/go/cmd/dolt/commands/signed_commits_test.go +++ b/go/cmd/dolt/commands/signed_commits_test.go @@ -2,16 +2,21 @@ package commands import ( "context" + "fmt" + "log" + "os" + "path/filepath" + "strings" + "testing" + "github.com/dolthub/dolt/go/cmd/dolt/cli" "github.com/dolthub/dolt/go/libraries/doltcore/env" "github.com/dolthub/dolt/go/libraries/utils/argparser" "github.com/dolthub/dolt/go/libraries/utils/config" "github.com/dolthub/dolt/go/libraries/utils/filesys" "github.com/dolthub/dolt/go/libraries/utils/gpg" + "github.com/stretchr/testify/require" - "log" - "os" - "testing" ) const keyId = "573DA8C6366D04E35CDB1A44E09A0B208F666373" @@ -25,31 +30,87 @@ func importKey(t *testing.T, ctx context.Context) { require.True(t, ok) } +func setupTestDB(t *testing.T, ctx context.Context, fs filesys.Filesys) string { + dir, err := os.MkdirTemp(os.TempDir(), "signed_commits") + require.NoError(t, err) + dbDir := filepath.Join(dir, "db") + err = filesys.CopyDir("testdata/signed_commits/db/", dbDir, fs) + require.NoError(t, err) + + log.Println(dbDir) + return dbDir +} + func TestSignAndVerifyCommit(t *testing.T) { + tests := []struct { + name string + localCfg map[string]string + commitArgs []string + expectErr bool + }{ + { + name: "sign commit with command line key id", + localCfg: map[string]string{}, + commitArgs: []string{"-S", keyId, "-m", "test commit"}, + expectErr: false, + }, + { + name: "sign no key id, no keyid in config", + localCfg: map[string]string{}, + commitArgs: []string{"-S", "-m", "test commit"}, + expectErr: true, + }, + } + ctx := context.Background() importKey(t, ctx) - - args := []string{"-S", keyId, "-m", "test commit"} - apr, err := cli.CreateCommitArgParser().Parse(args) - require.NoError(t, err) + dbDir := setupTestDB(t, ctx, filesys.LocalFS) global := map[string]string{ "user.name": "First Last", "user.email": "test@dolthub.com", } - commitOutput := execCommand(t, ctx, "testdata/signed_commits/db", CommitCmd{}, args, apr, map[string]string{}, global) - require.NoError(t, err) + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + apr, err := cli.CreateCommitArgParser().Parse(test.commitArgs) + require.NoError(t, err) - log.Println("commit output", commitOutput) + _, err = execCommand(ctx, dbDir, CommitCmd{}, test.commitArgs, apr, map[string]string{}, global) + + if test.expectErr { + require.Error(t, err) + return + } else { + require.NoError(t, err) + } + + args := []string{"--show-signature"} + apr, err = cli.CreateLogArgParser(false).Parse(args) + require.NoError(t, err) + + logOutput, err := execCommand(ctx, dbDir, LogCmd{}, args, apr, map[string]string{}, global) + require.NoError(t, err) + require.Contains(t, logOutput, "Good signature from \"Test User \"") + }) + } } -func execCommand(t *testing.T, ctx context.Context, wd string, cmd cli.Command, args []string, apr *argparser.ArgParseResults, local, global map[string]string) (output string) { - err := os.Chdir(wd) - require.NoError(t, err) +func execCommand(ctx context.Context, wd string, cmd cli.Command, args []string, apr *argparser.ArgParseResults, local, global map[string]string) (output string, err error) { + err = os.Chdir(wd) + if err != nil { + err = fmt.Errorf("error changing directory to %s: %w", wd, err) + return + } + + var fs filesys.Filesys + fs, err = filesys.LocalFilesysWithWorkingDir(wd) + if err != nil { + err = fmt.Errorf("error creating local filesystem with working directory %s: %w", wd, err) + return + } - fs := filesys.LocalFS - dEnv := env.Load(context.Background(), testHomeDirFunc, fs, wd, "test") + dEnv := env.Load(context.Background(), testHomeDirFunc, fs, ".", "test") ch := config.NewConfigHierarchy() if global != nil { @@ -63,36 +124,60 @@ func execCommand(t *testing.T, ctx context.Context, wd string, cmd cli.Command, cfg := env.NewTestDoltCliConfigFromHierarchy(ch, fs) mr, err := env.MultiEnvForDirectory(ctx, ch, fs, dEnv.Version, dEnv) - require.NoError(t, err) + if err != nil { + err = fmt.Errorf("error creating multi repo: %w", err) + return + } latebind, verr := BuildSqlEngineQueryist(ctx, dEnv.FS, mr, &cli.UserPassword{}, apr) - require.NoError(t, verr) + if verr != nil { + err = fmt.Errorf("error building sql engine: %w", verr) + return + } + cliCtx, err := cli.NewCliContext(apr, cfg, latebind) - require.NoError(t, err) + if err != nil { + err = fmt.Errorf("error creating cli context: %w", err) + return + } initialOut := os.Stdout initialErr := os.Stderr f, err := os.CreateTemp(os.TempDir(), "signed-commit-test-*") + if err != nil { + err = fmt.Errorf("error creating temp file: %w", err) + return + } + os.Stdout = f os.Stderr = f restoreIO := cli.InitIO() defer func() { - err := f.Close() - require.NoError(t, err) + closeErr := f.Close() + if closeErr != nil && err == nil { + err = fmt.Errorf("error closing temp file: %w", closeErr) + } restoreIO() os.Stdout = initialOut os.Stderr = initialErr - outputBytes, err := os.ReadFile(f.Name()) - require.NoError(t, err) + outputBytes, readOutputErr := os.ReadFile(f.Name()) + if readOutputErr != nil && err == nil { + err = fmt.Errorf("error reading temp file: %w", readOutputErr) + return + } output = string(outputBytes) }() - n := cmd.Exec(ctx, "commit", args, dEnv, cliCtx) - require.Equal(t, 0, n) + n := cmd.Exec(ctx, cmd.Name(), args, dEnv, cliCtx) + if n != 0 { + err = fmt.Errorf("command %s %s exited with code %d", cmd.Name(), strings.Join(args, " "), n) + return + } + return } diff --git a/go/go.mod b/go/go.mod index 52796e0c1b8..83980f32269 100644 --- a/go/go.mod +++ b/go/go.mod @@ -2,12 +2,12 @@ module github.com/dolthub/dolt/go require ( cloud.google.com/go/storage v1.31.0 - github.com/BurntSushi/toml v1.1.0 + github.com/BurntSushi/toml v1.2.1 github.com/HdrHistogram/hdrhistogram-go v1.1.2 github.com/abiosoft/readline v0.0.0-20180607040430-155bce2042db github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883 github.com/attic-labs/kingpin v2.2.7-0.20180312050558-442efcfac769+incompatible - github.com/aws/aws-sdk-go v1.34.0 + github.com/aws/aws-sdk-go v1.44.122 github.com/bcicen/jstream v1.0.0 github.com/boltdb/bolt v1.3.1 github.com/denisbrodbeck/machineid v1.0.1 @@ -17,15 +17,15 @@ require ( github.com/dolthub/sqllogictest/go v0.0.0-20201107003712-816f3ae12d81 github.com/dolthub/vitess v0.0.0-20240807181005-71d735078e24 github.com/dustin/go-humanize v1.0.1 - github.com/fatih/color v1.13.0 + github.com/fatih/color v1.16.0 github.com/flynn-archive/go-shlex v0.0.0-20150515145356-3f9db97f8568 github.com/go-sql-driver/mysql v1.7.2-0.20231213112541-0004702b931d github.com/gocraft/dbr/v2 v2.7.2 github.com/golang/snappy v0.0.4 - github.com/google/uuid v1.3.0 + github.com/google/uuid v1.3.1 github.com/jpillora/backoff v1.0.0 github.com/juju/gnuflag v0.0.0-20171113085948-2ce1bb71843d - github.com/mattn/go-isatty v0.0.17 + github.com/mattn/go-isatty v0.0.20 github.com/mattn/go-runewidth v0.0.13 github.com/pkg/errors v0.9.1 github.com/pkg/profile v1.5.0 @@ -43,8 +43,8 @@ require ( golang.org/x/sync v0.7.0 golang.org/x/sys v0.20.0 google.golang.org/api v0.126.0 - google.golang.org/grpc v1.57.1 - google.golang.org/protobuf v1.31.0 + google.golang.org/grpc v1.59.0 + google.golang.org/protobuf v1.33.0 gopkg.in/src-d/go-errors.v1 v1.0.0 gopkg.in/yaml.v2 v2.4.0 ) @@ -52,7 +52,7 @@ require ( require ( github.com/Shopify/toxiproxy/v2 v2.5.0 github.com/aliyun/aliyun-oss-go-sdk v2.2.5+incompatible - github.com/cenkalti/backoff/v4 v4.1.3 + github.com/cenkalti/backoff/v4 v4.2.1 github.com/cespare/xxhash v1.1.0 github.com/cespare/xxhash/v2 v2.2.0 github.com/creasty/defaults v1.6.0 @@ -68,7 +68,7 @@ require ( github.com/jmoiron/sqlx v1.3.4 github.com/kch42/buzhash v0.0.0-20160816060738-9bdec3dec7c6 github.com/kylelemons/godebug v1.1.0 - github.com/lib/pq v1.10.0 + github.com/lib/pq v1.10.3 github.com/mohae/uvarint v0.0.0-20160208145430-c3f9e62bf2b0 github.com/oracle/oci-go-sdk/v65 v65.55.0 github.com/prometheus/client_golang v1.13.0 @@ -83,11 +83,11 @@ require ( github.com/zeebo/blake3 v0.2.3 github.com/zeebo/xxh3 v1.0.2 go.etcd.io/bbolt v1.3.6 - go.opentelemetry.io/otel v1.7.0 + go.opentelemetry.io/otel v1.24.0 go.opentelemetry.io/otel/exporters/jaeger v1.7.0 - go.opentelemetry.io/otel/sdk v1.7.0 - go.opentelemetry.io/otel/trace v1.7.0 - golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1 + go.opentelemetry.io/otel/sdk v1.24.0 + go.opentelemetry.io/otel/trace v1.24.0 + golang.org/x/exp v0.0.0-20230905200255-921286631fa9 golang.org/x/text v0.16.0 gonum.org/v1/plot v0.11.0 gopkg.in/errgo.v2 v2.1.0 @@ -114,7 +114,7 @@ require ( github.com/go-fonts/liberation v0.2.0 // indirect github.com/go-kit/kit v0.10.0 // indirect github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81 // indirect - github.com/go-logr/logr v1.2.3 // indirect + github.com/go-logr/logr v1.4.1 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.2.6 // indirect github.com/go-pdf/fpdf v0.6.0 // indirect @@ -122,7 +122,6 @@ require ( github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.3 // indirect - github.com/google/go-cmp v0.6.0 // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/google/s2a-go v0.1.4 // indirect github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect @@ -130,7 +129,7 @@ require ( github.com/gorilla/mux v1.8.0 // indirect github.com/hashicorp/golang-lru v0.5.4 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect - github.com/klauspost/compress v1.10.5 // indirect + github.com/klauspost/compress v1.15.11 // indirect github.com/klauspost/cpuid/v2 v2.0.12 // indirect github.com/lestrrat-go/strftime v1.0.4 // indirect github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect @@ -151,22 +150,25 @@ require ( github.com/tklauser/numcpus v0.3.0 // indirect github.com/yusufpapurcu/wmi v1.2.2 // indirect go.opencensus.io v0.24.0 // indirect + go.opentelemetry.io/otel/metric v1.24.0 // indirect go.uber.org/atomic v1.7.0 // indirect go.uber.org/multierr v1.6.0 // indirect golang.org/x/image v0.18.0 // indirect golang.org/x/mod v0.17.0 // indirect - golang.org/x/oauth2 v0.8.0 // indirect + golang.org/x/oauth2 v0.18.0 // indirect golang.org/x/term v0.20.0 // indirect - golang.org/x/time v0.0.0-20191024005414-555d28b269f0 // indirect + golang.org/x/time v0.5.0 // indirect golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20230807174057-1744710a1577 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20230803162519-f966b187b2e5 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20230803162519-f966b187b2e5 // indirect + google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d // indirect gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect ) replace github.com/dolthub/dolt/go/gen/proto/dolt/services/eventsapi => ./gen/proto/dolt/services/eventsapi -go 1.22.2 +go 1.22.5 + +toolchain go1.22.7 diff --git a/go/go.sum b/go/go.sum index 991c45daa55..5a9f38679ac 100644 --- a/go/go.sum +++ b/go/go.sum @@ -54,8 +54,8 @@ github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935 github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/toml v1.1.0 h1:ksErzDEI1khOiGPgpwuI7x2ebx/uXQNw7xJpn9Eq1+I= -github.com/BurntSushi/toml v1.1.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak= +github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/DATA-DOG/go-sqlmock v1.5.0 h1:Shsta01QNfFxHCfpW6YH2STWB0MudeXXEWMr20OEh60= github.com/DATA-DOG/go-sqlmock v1.5.0/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= @@ -104,8 +104,8 @@ github.com/attic-labs/kingpin v2.2.7-0.20180312050558-442efcfac769+incompatible/ github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.30.19/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= -github.com/aws/aws-sdk-go v1.34.0 h1:brux2dRrlwCF5JhTL7MUT3WUwo9zfDHZZp3+g3Mvlmo= -github.com/aws/aws-sdk-go v1.34.0/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= +github.com/aws/aws-sdk-go v1.44.122 h1:p6mw01WBaNpbdP2xrisz5tIkcNwzj/HysobNoaAHjgo= +github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/aws/aws-sdk-go-v2 v1.7.1/go.mod h1:L5LuPC1ZgDr2xQS7AmIec/Jlc7O/Y1u2KxJyNVab250= github.com/aws/aws-sdk-go-v2/config v1.5.0/go.mod h1:RWlPOAW3E3tbtNAqTwvSW54Of/yP3oiZXMI0xfUdjyA= @@ -135,8 +135,8 @@ github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= -github.com/cenkalti/backoff/v4 v4.1.3 h1:cFAlzYUlVYDysBEH2T5hyJZMh3+5+WCBvSnK6Q8UtC4= -github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= +github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= +github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= @@ -214,8 +214,8 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.m github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= -github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= +github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= github.com/flynn-archive/go-shlex v0.0.0-20150515145356-3f9db97f8568 h1:BMXYYRWTLOJKlh+lOBt6nUQgXAfB7oVIQt5cNreqSLI= github.com/flynn-archive/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:rZfgFAXFS/z/lEd6LJmf9HVZ1LkgYiHx5pHhV5DR16M= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= @@ -248,8 +248,9 @@ github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= +github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= @@ -362,8 +363,8 @@ github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3 github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= +github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.2.3 h1:yk9/cqRKtT9wXZSsRH9aurXEpJX+U6FLtpYTdC3R06k= github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= @@ -406,6 +407,8 @@ github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= +github.com/hashicorp/terraform v1.9.5 h1:2e0DyCe3kHRSE5HdeKDKoLO0WMtwperwf6bkBmxw7zc= +github.com/hashicorp/terraform v1.9.5/go.mod h1:3nK9o9EY0EXFcjXWxndJgcHGKDEN1Gd81cJBOkKHcJI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= github.com/iancoleman/strcase v0.1.3/go.mod h1:SK73tn/9oHe+/Y0h39VT4UCxmurVJkR5NA7kMEAOgSE= @@ -445,8 +448,9 @@ github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvW github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.10.5 h1:7q6vHIqubShURwQz8cQK6yIe/xC3IF0Vm7TGfqjewrc= github.com/klauspost/compress v1.10.5/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.15.11 h1:Lcadnb3RKGin4FYM/orgq0qde+nc15E5Cbqg4B9Sx9c= +github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= github.com/klauspost/cpuid/v2 v2.0.12 h1:p9dKCg8i4gmOxtv35DvrYoWqYzQrvEVdjQ762Y0OqZE= github.com/klauspost/cpuid/v2 v2.0.12/go.mod h1:g2LTdtYhdyuGPqyWyv7qRAmj1WBqxuObKfj5c0PQa7c= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -467,8 +471,9 @@ github.com/lestrrat-go/envload v0.0.0-20180220234015-a3eb8ddeffcc/go.mod h1:kopu github.com/lestrrat-go/strftime v1.0.4 h1:T1Rb9EPkAhgxKqbcMIPguPq8glqXTA1koF8n9BHElA8= github.com/lestrrat-go/strftime v1.0.4/go.mod h1:E1nN3pCbtMSu1yjSVeyuRFVm/U0xoR76fd03sz+Qz4g= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.10.0 h1:Zx5DJFEYQXio93kgXnQ09fXNiUKsqv4OUEu2UtGcB1E= github.com/lib/pq v1.10.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lib/pq v1.10.3 h1:v9QZf2Sn6AmjXtQeFpdoq/eaNtYP6IN+7lcrygsIAtg= +github.com/lib/pq v1.10.3/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= @@ -477,7 +482,6 @@ github.com/lyft/protoc-gen-star v0.5.2/go.mod h1:9toiA3cC7z5uVbODF7kEQ91Xn7XNFkV github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= -github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= @@ -486,11 +490,10 @@ github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNx github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= -github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU= github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= @@ -731,14 +734,19 @@ go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/otel v1.7.0 h1:Z2lA3Tdch0iDcrhJXDIlC94XE+bxok1F9B+4Lz/lGsM= go.opentelemetry.io/otel v1.7.0/go.mod h1:5BdUoMIz5WEs0vt0CUEMtSSaTSHBBVwrhnz7+nrD5xk= +go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= +go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= go.opentelemetry.io/otel/exporters/jaeger v1.7.0 h1:wXgjiRldljksZkZrldGVe6XrG9u3kYDyQmkZwmm5dI0= go.opentelemetry.io/otel/exporters/jaeger v1.7.0/go.mod h1:PwQAOqBgqbLQRKlj466DuD2qyMjbtcPpfPfj+AqbSBs= -go.opentelemetry.io/otel/sdk v1.7.0 h1:4OmStpcKVOfvDOgCt7UriAPtKolwIhxpnSNI/yK+1B0= +go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= +go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= go.opentelemetry.io/otel/sdk v1.7.0/go.mod h1:uTEOTwaqIVuTGiJN7ii13Ibp75wJmYUDe374q6cZwUU= -go.opentelemetry.io/otel/trace v1.7.0 h1:O37Iogk1lEkMRXewVtZ1BBTVn5JEp8GrJvP92bJqC6o= +go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw= +go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg= go.opentelemetry.io/otel/trace v1.7.0/go.mod h1:fzLSB9nqR2eXzxPXb2JW9IKE+ScyXA48yyE4TNvoHqU= +go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= +go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= @@ -786,8 +794,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1 h1:k/i9J1pBpvlfR+9QsetwPyERsqu1GIbi967PQMq3Ivc= -golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1/go.mod h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w= +golang.org/x/exp v0.0.0-20230905200255-921286631fa9 h1:GoHiUyI/Tp2nVkLI2mCxVkOjsbSXD66ic0XW0js0R9g= +golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -873,8 +881,8 @@ golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4Iltr golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.8.0 h1:6dkIjl3j3LtZ/O3sTgZTMsLKSftL/B8Zgq4huOIIUu8= -golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE= +golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI= +golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -916,7 +924,6 @@ golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -951,6 +958,7 @@ golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= @@ -972,8 +980,9 @@ golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0 h1:/5xXl8Y5W96D+TtHSlonuFqGHIWVuyCkGJLwGh9JJFs= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= +golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -1101,12 +1110,12 @@ google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7Fc google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20230807174057-1744710a1577 h1:Tyk/35yqszRCvaragTn5NnkY6IiKk/XvHzEWepo71N0= -google.golang.org/genproto v0.0.0-20230807174057-1744710a1577/go.mod h1:yZTlhN0tQnXo3h00fuXNCxJdLdIdnVFVBaRJ5LWBbw4= -google.golang.org/genproto/googleapis/api v0.0.0-20230803162519-f966b187b2e5 h1:nIgk/EEq3/YlnmVVXVnm14rC2oxgs1o0ong4sD/rd44= -google.golang.org/genproto/googleapis/api v0.0.0-20230803162519-f966b187b2e5/go.mod h1:5DZzOUPCLYL3mNkQ0ms0F3EuUNZ7py1Bqeq6sxzI7/Q= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230803162519-f966b187b2e5 h1:eSaPbMR4T7WfH9FvABk36NBMacoTUKdWCvV0dx+KfOg= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230803162519-f966b187b2e5/go.mod h1:zBEcrKX2ZOcEkHWxBPAIvYUWOKKMIhYcmNiUIu2ji3I= +google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d h1:VBu5YqKPv6XiJ199exd8Br+Aetz+o08F+PLMnwJQHAY= +google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d/go.mod h1:yZTlhN0tQnXo3h00fuXNCxJdLdIdnVFVBaRJ5LWBbw4= +google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d h1:DoPTO70H+bcDXcd39vOqb2viZxgqeBeSGtZ55yZU4/Q= +google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d h1:uvYuEyMHKNt+lT4K3bN6fGswmK8qSvcreM3BwjDh+y4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= @@ -1128,8 +1137,8 @@ google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTp google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= -google.golang.org/grpc v1.57.1 h1:upNTNqv0ES+2ZOOqACwVtS3Il8M12/+Hz41RCPzAjQg= -google.golang.org/grpc v1.57.1/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= +google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= +google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -1142,8 +1151,8 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= -google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/go/go.work b/go/go.work index 844492aa06d..0535a0ff63f 100644 --- a/go/go.work +++ b/go/go.work @@ -1,4 +1,6 @@ -go 1.22.2 +go 1.22.5 + +toolchain go1.22.7 use ( . diff --git a/go/go.work.sum b/go/go.work.sum index 743236f58e3..fcdd5ec4456 100644 --- a/go/go.work.sum +++ b/go/go.work.sum @@ -52,6 +52,7 @@ cloud.google.com/go/cloudtasks v1.12.1/go.mod h1:a9udmnou9KO2iulGscKR0qBYjreuX8o cloud.google.com/go/compute v1.14.0/go.mod h1:YfLtxrj9sU4Yxv+sXzZkyPjEyPBZfXHUvjxega5vAdo= cloud.google.com/go/compute v1.19.1/go.mod h1:6ylj3a05WF8leseCdIf77NK0g1ey+nj5IKd5/kvShxE= cloud.google.com/go/compute v1.19.3/go.mod h1:qxvISKp/gYnXkSAD1ppcSOveRAmzxicEv/JlizULFrI= +cloud.google.com/go/compute v1.20.1/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= cloud.google.com/go/contactcenterinsights v1.10.0 h1:YR2aPedGVQPpFBZXJnPkqRj8M//8veIZZH5ZvICoXnI= cloud.google.com/go/contactcenterinsights v1.10.0/go.mod h1:bsg/R7zGLYMVxFFzfh9ooLTruLRCG9fnzhH9KznHhbM= @@ -250,16 +251,33 @@ cloud.google.com/go/workflows v1.11.1/go.mod h1:Z+t10G1wF7h8LgdY/EmRcQY8ptBD/nvo dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9 h1:VpgP7xuJadIUuKccphEpTJnWhS2jkQyMt6Y7pJCD7fY= gioui.org v0.0.0-20210308172011-57750fc8a0a6 h1:K72hopUosKG3ntOPNG4OzzbuhxGuVf06fa2la1/H/Ho= gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8= +github.com/AlecAivazis/survey/v2 v2.3.6/go.mod h1:4AuI9b7RjAR+G7v9+C4YSlX/YL3K3cWNXgWXOhllqvI= github.com/Azure/azure-pipeline-go v0.2.3 h1:7U9HBg1JFK3jHl5qmo4CTZKFTVgMwdFHMVtCdfBE21U= +github.com/Azure/azure-sdk-for-go v59.2.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-storage-blob-go v0.14.0 h1:1BCg74AmVdYwO3dlKwtFU1V0wU2PZdREkXvAmZJRUlM= github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= +github.com/Azure/go-autorest/autorest v0.11.27/go.mod h1:7l8ybrIdUmGqZMTD0sRtAr8NvbHjfofbf8RSP2q7w7U= github.com/Azure/go-autorest/autorest/adal v0.9.13 h1:Mp5hbtOePIzM8pJVRa3YLrWWmZtoxRXqUEzCfJt3+/Q= +github.com/Azure/go-autorest/autorest/adal v0.9.20/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ= +github.com/Azure/go-autorest/autorest/azure/cli v0.4.4/go.mod h1:yAQ2b6eP/CmLPnmLvxtT1ALIY3OR1oFcCqVBi8vHiTc= github.com/Azure/go-autorest/autorest/date v0.3.0 h1:7gUk1U5M/CQbp9WoqinNzJar+8KY+LPI6wiWrP/myHw= github.com/Azure/go-autorest/autorest/mocks v0.4.1 h1:K0laFcLE6VLTOwNgSxaGbUcLPuGXlNkbVvq4cW4nIHk= +github.com/Azure/go-autorest/autorest/to v0.4.0/go.mod h1:fE8iZBn7LQR7zH/9XU2NcPR4o9jEImooCeWJcYV/zLE= +github.com/Azure/go-autorest/autorest/validation v0.3.1/go.mod h1:yhLgjC0Wda5DYXl6JAsWyUe4KVNffhoDhG0zVzUMo3E= github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+ZtXWSmf4Tg= github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo= +github.com/Azure/go-ntlmssp v0.0.0-20200615164410-66371956d46c/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802 h1:1BDTz0u9nC3//pOCMdNH+CiXJVYJh5UQNCOBG7jbELc= +github.com/ChrisTrenkamp/goxpath v0.0.0-20190607011252-c5096ec8773d/go.mod h1:nuWgzSkT5PnyOd+272uUmV0dnAnAn42Mk7PiQC5VzN4= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible h1:1G1pk05UrOh0NlF1oeaaix1x8XzrfjIDK47TY0Zehcw= +github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= +github.com/Masterminds/semver/v3 v3.2.0/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= +github.com/Masterminds/sprig/v3 v3.2.3/go.mod h1:rXcFaZ2zZbLRJv/xSysmlgIM1u11eBaRMhvYXJNkGuM= +github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= +github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2/go.mod h1:HBCaDeC1lPdgDeDbhX8XFpy1jqjK0IBG8W5K+xYqA0w= +github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= +github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/Shopify/sarama v1.19.0 h1:9oksLxC6uxVPHPVYUmq6xhr1BOF/hHobWH2UzO67z1s= github.com/Shopify/toxiproxy v2.1.4+incompatible h1:TKdv8HiTLgE5wdJuEML90aBgNWsokNbMijUGhmcoBJc= github.com/VividCortex/ewma v1.2.0 h1:f58SaIzcDXrSy3kWaHNvuJgJ3Nmz59Zji6XoJR/q1ow= @@ -267,42 +285,87 @@ github.com/VividCortex/ewma v1.2.0/go.mod h1:nz4BbCtbLyFDeC9SUHbtcT5644juEuWfUAU github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d h1:licZJFw2RwpHMqeKTCYkitsPqHNxTmd4SNR5r94FGM8= github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d/go.mod h1:asat636LX7Bqt5lYEZ27JNDcqxfjdBQuJ/MM4CN/Lzo= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5 h1:rFw4nCn9iMW+Vajsk51NtYIcwSTkXr+JGrMd36kTDJw= +github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9 h1:7kQgkwGRoLzC9K0oyXdJo7nve/bynv/KwUsxbiTlzAM= github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19 h1:iXUgAaqDcIUGbRoy2TdeofRG/j1zpGRSEmNK05T+bi8= +github.com/aliyun/alibaba-cloud-sdk-go v1.61.1501/go.mod h1:RcDobYh8k5VP6TNybz9m++gL3ijVI5wueVr0EM10VsU= +github.com/aliyun/aliyun-tablestore-go-sdk v4.1.2+incompatible/go.mod h1:LDQHRZylxvcg8H7wBIDfvO5g/cy4/sz1iucBlc2l3Jw= github.com/andybalholm/brotli v1.0.4 h1:V7DdXeJtZscaqfNuAdSRuRFzuiKlHSC/Zh3zl9qY3JY= github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= +github.com/antchfx/xmlquery v1.3.5/go.mod h1:64w0Xesg2sTaawIdNqMB+7qaW/bSqkQm+ssPaCMWNnc= +github.com/antchfx/xpath v1.1.10/go.mod h1:Yee4kTMuNiPYJ7nSNorELQMr1J33uOpXDMByNYhvtNk= github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg= github.com/apache/arrow/go/v12 v12.0.0 h1:xtZE63VWl7qLdB0JObIXvvhGjoVNrQ9ciIHG2OK5cmc= github.com/apache/arrow/go/v12 v12.0.0/go.mod h1:d+tV/eHZZ7Dz7RPrFKtPK02tpr+c9/PEd/zm8mDS9Vg= github.com/apache/thrift v0.16.0 h1:qEy6UW60iVOlUy+b9ZR0d5WzUWYGOo4HfopoyBaNmoY= github.com/apache/thrift v0.16.0/go.mod h1:PHK3hniurgQaNMZYaCLEqXKsYK8upmhPbmdP2FXSqgU= +github.com/apparentlymart/go-cidr v1.1.0/go.mod h1:EBcsNrHc3zQeuaeCeCtQruQm+n9/YjEn/vI25Lg7Gwc= +github.com/apparentlymart/go-shquot v0.0.1/go.mod h1:lw58XsE5IgUXZ9h0cxnypdx31p9mPFIVEQ9P3c7MlrU= +github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= +github.com/apparentlymart/go-userdirs v0.0.0-20200915174352-b0c018a67c13/go.mod h1:7kfpUbyCdGJ9fDRCp3fopPQi5+cKNHgTE4ZuNrO71Cw= +github.com/apparentlymart/go-versions v1.0.2/go.mod h1:YF5j7IQtrOAOnsGkniupEA5bfCjzd7i14yu0shZavyM= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e h1:QEF07wC0T1rKkctt1RINW/+RMTVmiwxETico2l3gxJA= +github.com/armon/circbuf v0.0.0-20190214190532-5111143e8da2/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da h1:8GUt8eRujhVEGZFFEjBj46YV4rDjvGrNxb0KMWYkL2I= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310 h1:BUAU3CGlLvorLI26FmByPp2eC2qla6E1Tw+scpcg/to= +github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a h1:pv34s756C4pEXnjgPfGYgdhg/ZdajGhyOvzx8k+23nw= +github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/aws/aws-lambda-go v1.13.3 h1:SuCy7H3NLyp+1Mrfp+m80jcbi9KYWAs9/BXwppwRDzY= github.com/aws/aws-sdk-go-v2 v1.7.1 h1:TswSc7KNqZ/K1Ijt3IkpXk/2+62vi3Q82Yrr5wSbRBQ= +github.com/aws/aws-sdk-go-v2 v1.25.3/go.mod h1:35hUlJVYd+M++iLI3ALmVwMOyRYMmRqUXpTtRGW+K9I= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.1/go.mod h1:sxpLb+nZk7tIfCWChfd+h4QwHNUR57d8hA1cleTkjJo= github.com/aws/aws-sdk-go-v2/config v1.5.0 h1:tRQcWXVmO7wC+ApwYc2LiYKfIBoIrdzcJ+7HIh6AlR0= +github.com/aws/aws-sdk-go-v2/config v1.27.7/go.mod h1:PH0/cNpoMO+B04qET699o5W92Ca79fVtbUnvMIZro4I= github.com/aws/aws-sdk-go-v2/credentials v1.3.1 h1:fFeqL5+9kwFKsCb2oci5yAIDsWYqn/Nga8oQ5bIasI8= +github.com/aws/aws-sdk-go-v2/credentials v1.17.7/go.mod h1:UQi7LMR0Vhvs+44w5ec8Q+VS+cd10cjwgHwiVkE0YGU= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.3.0 h1:s4vtv3Mv1CisI3qm2HGHi1Ls9ZtbCOEqeQn6oz7fTyU= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.15.3/go.mod h1:/fYB+FZbDlwlAiynK9KDXlzZl3ANI9JkD0Uhz5FjNT4= github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.3.2 h1:fzEMxnHQWh+bUV0ZzfhMbgUG8zjIPnAgApjtdHtC9Yg= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.16.9/go.mod h1:GyJJTZoHVuENM4TeJEl5Ffs4W9m19u+4wKJcDi/GZ4A= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.3/go.mod h1:oQZXg3c6SNeY6OZrDY+xHcF4VGIEoNotX2B4PrDeoJI= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.3/go.mod h1:vCKrdLXtybdf/uQd/YfVR2r5pcbNuEYKzMQpcxmeSJw= github.com/aws/aws-sdk-go-v2/internal/ini v1.1.1 h1:SDLwr1NKyowP7uqxuLNdvFZhjnoVWxNv456zAp+ZFjU= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0/go.mod h1:8tu/lYfQfFe6IGnaOdrpVgEL2IrrDOf6/m9RQum4NkY= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.3/go.mod h1:V8MuRVcCRt5h1S+Fwu8KbC7l/gBGo3yBAyUbJM2IJOk= +github.com/aws/aws-sdk-go-v2/service/dynamodb v1.30.4/go.mod h1:HOZYCpIko/NOS693uPQINLs7drzMjRtIN1+XRL8IkfA= +github.com/aws/aws-sdk-go-v2/service/iam v1.28.5/go.mod h1:kKI0gdVsf+Ev9knh/3lBJbchtX5LLNH25lAzx3KDj3Q= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.2.1 h1:s/uV8UyMB4UcO0ERHxG9BJhYJAD9MiY0QeYvJmlC7PE= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.1/go.mod h1:JKpmtYhhPs7D97NL/ltqz7yCkERFW5dOlHyVl66ZYF8= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.5/go.mod h1:FCOPWGjsshkkICJIn9hq9xr6dLKtyaWpuUojiN3W1/8= +github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.9.4/go.mod h1:Egp7w6xf3EzlnfkfnMbDtHtts8H21B9QrCvc+3NNT24= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.2.1 h1:VJe/XEhrfyfBLupcGg1BfUSK2VMZNdbDcZQ49jnp+h0= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.5/go.mod h1:cl9HGLV66EnCmMNzq4sYOti+/xo8w34CsgzVtm2GgsY= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.5.1 h1:1ds3HkMQEBx9XvOkqsPuqBmNFn0w8XEDuB4LOi6KepU= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.17.3/go.mod h1:oFcjjUq5Hm09N9rpxTdeMeLeQcxS7mIkBkL8qUKng+A= github.com/aws/aws-sdk-go-v2/service/s3 v1.11.1 h1:HiXhafnqG0AkVJIZA/BHhFvuc/8xFdUO1uaeqF2Artc= +github.com/aws/aws-sdk-go-v2/service/s3 v1.51.4/go.mod h1:MGTaf3x/+z7ZGugCGvepnx2DS6+caCYYqKhzVoLNYPk= +github.com/aws/aws-sdk-go-v2/service/sqs v1.29.5/go.mod h1:mCUv04gd/7g+/HNzDB4X6dzJuygji0ckvB3Lg/TdG5Y= github.com/aws/aws-sdk-go-v2/service/sso v1.3.1 h1:H2ZLWHUbbeYtghuqCY5s/7tbBM99PAwCioRJF8QvV/U= +github.com/aws/aws-sdk-go-v2/service/sso v1.20.2/go.mod h1:Vv9Xyk1KMHXrR3vNQe8W5LMFdTjSeWk0gBZBzvf3Qa0= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.2/go.mod h1:JYzLoEVeLXk+L4tn1+rrkfhkxl6mLDEVaDSvGq9og90= github.com/aws/aws-sdk-go-v2/service/sts v1.6.0 h1:Y9r6mrzOyAYz4qKaluSH19zqH1236il/nGbsPKOUT0s= +github.com/aws/aws-sdk-go-v2/service/sts v1.28.4/go.mod h1:+K1rNPVyGxkRuv9NNiaZ4YhBFuyw2MMA9SlIJ1Zlpz8= github.com/aws/smithy-go v1.6.0 h1:T6puApfBcYiTIsaI+SYWqanjMt5pc3aoyyDrI+0YH54= +github.com/aws/smithy-go v1.20.1/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E= +github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= +github.com/bmatcuk/doublestar v1.1.5/go.mod h1:wiQtGV+rzVYxB7WIlirSN++5HPtPlXEo9MEoZQC/PmE= +github.com/bmatcuk/doublestar/v4 v4.6.0/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= github.com/boombuler/barcode v1.0.1 h1:NDBbPmhS+EqABEs5Kg3n/5ZNjy73Pz7SIV+KCeqyXcs= +github.com/bradleyfalzon/ghinstallation/v2 v2.1.0/go.mod h1:Xg3xPRN5Mcq6GDqeUVhFbjEWMb4JHCyWEeeBGEYQoTU= github.com/casbin/casbin/v2 v2.1.2 h1:bTwon/ECRx9dwBy2ewRVr5OiqjeXSGiTUY74sDPQi/g= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/census-instrumentation/opencensus-proto v0.4.1 h1:iKLQ0xPNFxR/2hzXZMrBo8f1j86j5WHzznCCQxV/b8g= github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8= +github.com/clbanning/mxj v1.8.4/go.mod h1:BVjHeAH+rl9rs6f+QIpeRl0tfu10SXn1pUSa5PVGJng= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec h1:EdRZT3IeKQmfCSrgo8SZ8V3MEnskuJP0wCYNpe+aiXo= +github.com/cli/go-gh v1.0.0/go.mod h1:bqxLdCoTZ73BuiPEJx4olcO/XKhVZaFDchFagYRBweE= +github.com/cli/safeexec v1.0.0/go.mod h1:Z/D4tTN8Vs5gXYHDCbaM1S/anmEDnJb1iW0+EJ5zx3Q= +github.com/cli/shurcooL-graphql v0.0.2/go.mod h1:tlrLmw/n5Q/+4qSvosT+9/W5zc8ZMjnJeYBxSdb4nWA= github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI= +github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe h1:QQ3GSy+MqSHxm/d8nCtnAiZdYFd45cYZPs8vOOIYKfk= github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4 h1:/inchEIKaYC1Akx+H+gqO04wryn5h75LSazbRlnya1k= @@ -317,48 +380,69 @@ github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf h1:CAKfRE2YtTUIjjh1bkBt github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9 h1:uDmaGzcdjhF4i/plgjmEsriH11Y0o7RKapEf/LDaM3w= +github.com/creack/pty v1.1.17/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= +github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE= github.com/dolthub/go-mysql-server v0.18.2-0.20240812011431-f3892cc42bbf h1:F4OT8cjaQzGlLne9vp7/q0i5QFsQE2OUWIaL5thO5qA= github.com/dolthub/go-mysql-server v0.18.2-0.20240812011431-f3892cc42bbf/go.mod h1:PwuemL+YK+YiWcUFhknixeqNLjJNfCx7KDsHNajx9fM= github.com/dolthub/go-mysql-server v0.18.2-0.20240827100900-3bf086dd5c18 h1:1lgwZvnecrjoc9v0iqxjdKBvaasAPiQzty40uTKOHsE= github.com/dolthub/go-mysql-server v0.18.2-0.20240827100900-3bf086dd5c18/go.mod h1:nbdOzd0ceWONE80vbfwoRBjut7z3CIj69ZgDF/cKuaA= +github.com/dylanmei/iso8601 v0.1.0/go.mod h1:w9KhXSgIyROl1DefbMYIE7UVSIvELTbMrCfx+QkYnoQ= +github.com/dylanmei/winrmtest v0.0.0-20210303004826-fbc9ae56efb6/go.mod h1:6BLLhzn1VEiJ4veuAGhINBTrBlV889Wd+aU4auxKOww= github.com/eapache/go-resiliency v1.1.0 h1:1NtRmCAqadE2FN4ZcN6g90TP3uk8cg9rn9eNK2197aU= github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 h1:YEetp8/yCZMuEPMUDHG0CW/brkkEp8mzqk2+ODEitlw= github.com/eapache/queue v1.1.0 h1:YOEu7KNc61ntiQlcEeUIoDTJ2o8mQznoNvUhiigpIqc= github.com/edsrzf/mmap-go v1.0.0 h1:CEBF7HpRnUCSJgGUb5h1Gm7e3VkmVDrR8lvWVLtrOFw= +github.com/emicklei/go-restful/v3 v3.8.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.11.1-0.20230524094728-9239064ad72f h1:7T++XKzy4xg7PKy+bM+Sa9/oe1OC88yz2hXQUISoXfA= github.com/envoyproxy/go-control-plane v0.11.1-0.20230524094728-9239064ad72f/go.mod h1:sfYdkwUW4BA3PbKjySwjJy+O4Pu0h62rlqCMHNk+K+Q= +github.com/envoyproxy/go-control-plane v0.11.1/go.mod h1:uhMcXKCQMEJHiAb0w+YGefQLaTEw+YhGluxZkrTmD0g= github.com/envoyproxy/protoc-gen-validate v0.10.1 h1:c0g45+xCJhdgFGw7a5QAfdS4byAbud7miNWJ1WwEVf8= github.com/envoyproxy/protoc-gen-validate v0.10.1/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= +github.com/envoyproxy/protoc-gen-validate v1.0.2/go.mod h1:GpiZQP3dDbg4JouG/NNS7QWXpgx6x8QiMKdmN72jogE= github.com/fogleman/gg v1.3.0 h1:/7zJX8F6AaYQc57WQCyN9cAIz+4bCJGO9B+dyW29am8= github.com/form3tech-oss/jwt-go v3.2.2+incompatible h1:TcekIExNqud5crz4xD2pavyTgWiPvpYe4Xau31I0PRk= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db h1:gb2Z18BhTPJPpLQWj4T+rfKHYCHxRHCtRxhKKjRidVw= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8 h1:a9ENSRDFBUPkJ5lCgVZh26+ZbGyoVJG7yb5SSzF5H54= github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= +github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/go-fonts/stix v0.1.0 h1:UlZlgrvvmT/58o573ot7NFw0vZasZ5I6bcIft/oMdgg= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1 h1:QbL/5oDUmRBzO9/Z7Seo6zf912W/a6Sr4Eu0G/3Jho0= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4 h1:WtGNWLvXpe6ZudgnXrq0barxBImvnnJoMEhXAzcbM0I= github.com/go-kit/log v0.2.0 h1:7i2K3eKTos3Vc0enKCfnVcgHh2olr/MyfboYq7cAcFw= github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA= +github.com/go-openapi/errors v0.20.2/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= +github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonreference v0.19.5/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg= +github.com/go-openapi/strfmt v0.21.3/go.mod h1:k+RzNO0Da+k3FrrynSNN8F7n/peCmQQqbbXjtDfvmGg= +github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= +github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/godbus/dbus/v5 v5.0.4 h1:9349emZab16e7zQvpmsbtjc18ykshndd8y2PG3sgJbA= +github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gogo/googleapis v1.1.0 h1:kFkMAZBNAn4j7K0GiZr8cRYzejq68VbheufiV3YuyFI= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE= github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= +github.com/golang/glog v1.1.2/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ= github.com/golang/mock v1.5.0 h1:jlYHihg//f7RRwuPfptm04yp4s7O6Kw8EZiVYIGcH0g= github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/flatbuffers v2.0.8+incompatible h1:ivUb1cGomAB101ZM1T0nOiWz9pSrTMoa9+EiY7igmkM= github.com/google/flatbuffers v2.0.8+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/gnostic v0.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-github/v45 v45.2.0/go.mod h1:FObaZJEDSTa/WGCzZ2Z3eoCDXWJKMenWWTrd8jrta28= github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw= +github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99 h1:Ak8CrdlwwXwAZxzS66vgPt4U8yUZX7JwLvVR58FN5jM= github.com/google/renameio v0.1.0 h1:GOZbcHa3HfsPKPlmyPyN2KEohoMXOhdMbHrvbpl2QaA= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= github.com/gorilla/context v1.1.1 h1:AWwleXJkX/nhcU9bZSnZoi3h/qGYqQAGhq6zZe/aQW8= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c h1:Lh2aW+HnU2Nbe1gqD9SOJLJxW1jBMmQOktN2acDyJk8= @@ -367,67 +451,128 @@ github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92Bcuy github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3 h1:lLT7ZLSzGLI08vc9cpd+tYmNWjdKDqyr/2L+f6U12Fk= github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU0GSB0f8Nhgmxx0VIRUvaC0w= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg= +github.com/hashicorp/aws-sdk-go-base/v2 v2.0.0-beta.45/go.mod h1:roO9Btzl+fvOFhvDN7CuPf6n60K6Yh0ykzwxhwbMK90= +github.com/hashicorp/cli v1.1.6/go.mod h1:MPon5QYlgjjo0BSoAiN0ESeT5fRzDjVRp+uioJ0piz4= github.com/hashicorp/consul/api v1.3.0 h1:HXNYlRkkM/t+Y/Yhxtwcy02dlYwIaoxzvxPnS+cqy78= +github.com/hashicorp/consul/api v1.13.0/go.mod h1:ZlVrynguJKcYr54zGaDbaL3fOvKC9m72FhPvA8T35KQ= github.com/hashicorp/consul/sdk v0.3.0 h1:UOxjlb4xVNF93jak1mzzoBatyFju9nrkxpVwIp/QqxQ= +github.com/hashicorp/copywrite v0.16.3/go.mod h1:wl92lMJ9VBqxH9M5KWfseHzXtjj7Q2u5LnKhpS0Rclo= github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= +github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-azure-helpers v0.43.0/go.mod h1:ofh+59GPB8g/lWI08711STfrIPSPOlXQkuMc8rovpBk= +github.com/hashicorp/go-checkpoint v0.5.0/go.mod h1:7nfLNL10NsxqO4iWuW6tWW0HjZuDrwkBuEQsVcpCOgg= github.com/hashicorp/go-cleanhttp v0.5.1 h1:dH3aiDG9Jvb5r5+bYHsikaOUIpcM0xvgMXVoDkXMzJM= +github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= +github.com/hashicorp/go-getter v1.7.5/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= +github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-immutable-radix v1.0.0 h1:AKDB1HM5PWEA7i4nhcpwOrO2byshxBjXVn/J/3+z5/0= github.com/hashicorp/go-msgpack v0.5.3 h1:zKjpN5BK/P5lMYrLmBHdBULWbJ0XpYR+7NGzqkZzoD4= github.com/hashicorp/go-multierror v1.0.0 h1:iVjPR7a6H0tWELX5NxNe7bYopibicUzc7uPribsnS6o= +github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= +github.com/hashicorp/go-plugin v1.6.0/go.mod h1:lBS5MtSSBZk0SHc66KACcjjlU6WzEVP/8pwz68aMkCI= +github.com/hashicorp/go-retryablehttp v0.7.7/go.mod h1:pkQpWZeYWskR+D1tR2O5OcBFOxfA7DoAO6xtkuQnHTk= github.com/hashicorp/go-rootcerts v1.0.0 h1:Rqb66Oo1X/eSV1x66xbDccZjhJigjg0+e82kpwzSwCI= +github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= +github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= +github.com/hashicorp/go-slug v0.15.0/go.mod h1:THWVTAXwJEinbsp4/bBRcmbaO5EYNLTqxbG4tZ3gCYQ= github.com/hashicorp/go-sockaddr v1.0.0 h1:GeH6tui99pF4NJgfnhp+L6+FfobzVW3Ah46sLo0ICXs= github.com/hashicorp/go-syslog v1.0.0 h1:KaodqZuhUoZereWVIYmpUgZysurB1kBLX2j0MwMrUAE= +github.com/hashicorp/go-tfe v1.58.0/go.mod h1:XnTtBj3tVQ4uFkcFsv8Grn+O1CVcIcceL1uc2AgUcaU= github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE= +github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.2.0 h1:3vNe/fWF5CBgRIguda1meWhsZHy3m8gCJ5wx+dIzX/E= +github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go.net v0.0.1 h1:sNCoNyDEvN1xa+X0baata4RdcpKwcMS6DH+xwfqPgjw= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hashicorp/hcl/v2 v2.20.0/go.mod h1:WmcD/Ym72MDOOx5F62Ly+leloeu6H7m0pG7VBiU6pQk= +github.com/hashicorp/jsonapi v1.3.1/go.mod h1:kWfdn49yCjQvbpnvY1dxxAuAFzISwrrMDQOcu6NsFoM= github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y= github.com/hashicorp/mdns v1.0.0 h1:WhIgCr5a7AaVH6jPUwjtRuuE7/RDufnUvzIr48smyxs= github.com/hashicorp/memberlist v0.1.3 h1:EmmoJme1matNzb+hMpDuR/0sbJSUisxyqBGG676r31M= github.com/hashicorp/serf v0.8.2 h1:YZ7UKsJv+hKjqGVUUbtE3HNj79Eln2oQ75tniF6iPt0= +github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= +github.com/hashicorp/terraform-plugin-log v0.9.0/go.mod h1:rKL8egZQ/eXSyDqzLUuwUYLVdlYeamldAHSxjUFADow= +github.com/hashicorp/terraform-registry-address v0.2.3/go.mod h1:lFHA76T8jfQteVfT7caREqguFrW3c4MFSPhZB7HHgUM= +github.com/hashicorp/terraform-svchost v0.1.1/go.mod h1:mNsjQfZyf/Jhz35v6/0LWcv26+X7JPS+buii2c9/ctc= +github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= +github.com/henvic/httpretty v0.0.6/go.mod h1:X38wLjWXHkXT7r2+uK8LjCMne9rsuNaBLJ+5cU2/Pmo= github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= +github.com/huandu/xstrings v1.3.3/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/hudl/fargo v1.3.0 h1:0U6+BtN6LhaYuTnIJq4Wyq5cpn6O2kWrxAtcqBmYY6w= github.com/iancoleman/strcase v0.2.0 h1:05I4QRnGpI0m37iZQRuskXh+w77mr6Z41lwQzuHLwW0= github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6 h1:UDMh68UUwekSh5iP2OMhRRZJiiBccgV7axzUG8vi56c= +github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= +github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d h1:/WZQPMZNsjZ7IlCpsLGdQBINg5bxKQ1K1sh6awxLtkA= github.com/jcmturner/gofork v0.0.0-20180107083740-2aebee971930 h1:v4CYlQ+HeysPHsr2QFiEO60gKqnvn1xwvuKhhAhuEkk= +github.com/jedib0t/go-pretty v4.3.0+incompatible/go.mod h1:XemHduiw8R651AF9Pt4FwCTKeG3oo7hrHJAoznj9nag= +github.com/jedib0t/go-pretty/v6 v6.4.4/go.mod h1:MgmISkTWDSFu0xOqiZ0mKNntMQ2mDgOcwOkwBEkMDJI= +github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/jstemmer/go-junit-report v0.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U= github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5 h1:PJr+ZMXIecYc1Ey2zucXdR73SMBtgjPgwa31099IMv0= +github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= +github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/kisielk/errcheck v1.5.0 h1:e8esj/e4R+SAOwFwN+n3zr0nYeCyeweozKfO23MvHzY= github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= github.com/klauspost/asmfmt v1.3.2 h1:4Ri7ox3EwapiOjCki+hw14RyKk201CN4rzyCJRFLpK4= github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= github.com/klauspost/compress v1.15.9 h1:wKRjX6JRtDdrE9qwa4b/Cip7ACOshUI4smpCQanqjSY= github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= +github.com/knadh/koanf v1.5.0/go.mod h1:Hgyjp4y8v44hpZtPzs7JZfRAW5AhN7KfZcwv1RYggDs= github.com/konsorten/go-windows-terminal-sequences v1.0.3 h1:CE8S1cTafDpPvMhIxNJKvHsGVBgn1xWYf1NbHQhywc8= github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515 h1:T+h1c/A9Gawja4Y9mFVWj2vyii2bbUNDw3kt9VxK2EY= github.com/kr/pty v1.1.1 h1:VkoXIwSboBpnk99O/KFauAEILuNHv5DVFKZMBN/gUgw= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743 h1:143Bb8f8DuGWck/xpNUOckBVYfFbBTnLevfRZ1aVVqo= github.com/lightstep/lightstep-tracer-go v0.18.1 h1:vi1F1IQ8N7hNWytK9DpJsUfQhGuNSc19z330K6vl4zk= +github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= github.com/lyft/protoc-gen-star v0.5.2 h1:ICQPpOr4uO46eme1Y5Jj0fnJkc9/upQ9xxt0+2AmUDQ= github.com/lyft/protoc-gen-star/v2 v2.0.1 h1:keaAo8hRuAT0O3DfJ/wM3rufbAjGeJ1lAtWZHDjKGB0= github.com/lyft/protoc-gen-star/v2 v2.0.1/go.mod h1:RcCdONR2ScXaYnQC5tUzxzlpA3WVYF7/opLeUgcQs/o= +github.com/lyft/protoc-gen-star/v2 v2.0.3/go.mod h1:amey7yeodaJhXSbf/TlLvWiqQfLOSpEk//mLlc+axEk= github.com/lyft/protoc-gen-validate v0.0.13 h1:KNt/RhmQTOLr7Aj8PsJ7mTronaFyx80mRTT9qF261dA= +github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/manicminer/hamilton v0.44.0/go.mod h1:lbVyngC+/nCWuDp8UhC6Bw+bh7jcP/E+YwqzHTmzemk= +github.com/manicminer/hamilton-autorest v0.2.0/go.mod h1:NselDpNTImEmOc/fa41kPg6YhDt/6S95ejWbTGZ6tlg= +github.com/masterzen/simplexml v0.0.0-20190410153822-31eea3082786/go.mod h1:kCEbxUJlNDEBNbdQMkPSp6yaKcRXVI6f4ddk8Riv4bc= +github.com/masterzen/winrm v0.0.0-20200615185753-c42b5136ff88/go.mod h1:a2HXwefeat3evJHxFXSayvRHpYEPJYtErl4uIzfaUqY= github.com/mattn/go-ieproxy v0.0.1 h1:qiyop7gCflfhwCzGyeT0gro3sF9AIg9HU98JORTkqfI= +github.com/mattn/go-shellwords v1.0.12/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= +github.com/mergestat/timediff v0.0.3/go.mod h1:yvMUaRu2oetc+9IbPLYBJviz6sA7xz8OXMDfhBl7YSI= +github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= github.com/miekg/dns v1.0.14 h1:9jZdLNd/P4+SfEJ0TNyxYpsK8N4GtfylBLqtbYN1sbA= github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8 h1:AMFGa4R4MiIpspGNG7Z948v4n35fFGB3RR3G/ry4FWs= github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY= github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3 h1:+n/aFZefKZp7spd8DFdX7uMikMLXX4oubIzJF4kv/wI= github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE= github.com/mitchellh/cli v1.0.0 h1:iGBIsUe3+HZ/AD/Vd7DErOt5sU9fa8Uj7A2s1aggv1Y= +github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db/go.mod h1:l0dey0ia/Uv7NcFFVbCLtqEBQbrT4OCwCSKTEv6enCw= +github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= github.com/mitchellh/go-homedir v1.0.0 h1:vKb8ShqSby24Yrqr/yDYkuFz8d0WUjys40rvnGC8aR0= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-linereader v0.0.0-20190213213312-1b945b3263eb/go.mod h1:OaY7UOoTkkrX3wRwjpYRKafIkkyeD0UtweSHAWWiqQM= github.com/mitchellh/go-testing-interface v1.0.0 h1:fzU/JVNcaqHQEcVFAKeR41fkiLdIPrefOvVG1VZ96U0= +github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= +github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= github.com/mitchellh/gox v0.4.0 h1:lfGJxY7ToLJQjHHwi0EX6uYBdK78egf954SQl13PQJc= +github.com/mitchellh/gox v1.0.1/go.mod h1:ED6BioOGXMswlXa2zxfh/xdd5QhwYliBFn9V18Ap4z4= github.com/mitchellh/iochan v1.0.0 h1:C+X3KsSTLFVBr/tK1eYN/vs4rJcvsiLU338UhYPJWeY= github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= +github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/mozillazg/go-httpheader v0.3.0/go.mod h1:PuT8h0pw6efvp8ZeUec1Rs7dwjK08bt6gKSReGMqtdA= +github.com/muesli/termenv v0.12.0/go.mod h1:WCCv32tusQ/EEZ5S8oUIIrC/nIuBcxCVqlN4Xfkv+7A= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= github.com/nats-io/jwt v0.3.2 h1:+RB5hMpXUUA2dfxuhBTEkMOrYmM+gKIZYS1KjSostMI= github.com/nats-io/nats-server/v2 v2.1.2 h1:i2Ly0B+1+rzNZHHWtD4ZwKi+OU5l+uQo1iDHZ2PmiIc= @@ -437,8 +582,11 @@ github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw= github.com/nbutton23/zxcvbn-go v0.0.0-20210217022336-fa2cb2858354 h1:4kuARK6Y6FxaNu/BnU2OAaLF86eTVhP2hjTB6iMvItA= github.com/ncw/swift v1.0.52 h1:ACF3JufDGgeKp/9mrDgQlEgS8kRYC4XKcuzj/8EJjQU= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= +github.com/nishanths/exhaustive v0.12.0/go.mod h1:mEZ95wPIZW+x8kC4TgC+9YCUgiST7ecevsVDTgc2obs= +github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d/go.mod h1:YUTz3bUH2ZwIWBy3CJBeOBEugqcmXREj14T+iG/4k4U= github.com/oklog/oklog v0.3.2 h1:wVfs8F+in6nTBMkA7CbRw+zZMIB7nNM825cM1wuzoTk= github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5 h1:58+kh9C6jJVXYjt8IE48G2eWl6BjwU5Gj0gqY84fy78= github.com/onsi/ginkgo v1.7.0 h1:WSHQ+IS43OoUrWtD1/bbclrwK8TTH5hzp+umCiuxHgs= github.com/onsi/gomega v1.4.3 h1:RE1xgDvH7imwFD45h+u2SgIfERHlS2yNG4DObb5BSKU= @@ -448,6 +596,7 @@ github.com/opentracing/basictracer-go v1.0.0 h1:YyUAhaEfjoWXclZVJ9sGoNct7j4TVk7l github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5 h1:ZCnq+JUrvXcDVhX/xRolRBZifmabN1HcS1wrPSvxhrU= github.com/openzipkin/zipkin-go v0.2.2 h1:nY8Hti+WKaP0cRsSeQ026wU03QsM762XBeCXBb9NAWI= +github.com/packer-community/winrmcp v0.0.0-20221126162354-6e900dd2c68f/go.mod h1:f6Izs6JvFTdnRbziASagjZ2vmf55NSIkC/weStxCHqk= github.com/pact-foundation/pact-go v1.0.4 h1:OYkFijGHoZAYbOIb1LWXrwKQbMMRUv1oQ89blD2Mh2Q= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c h1:Lgl0gzECD8GnQ5QCWA8o6BtfL6mDH5rQgM4/fX3avOs= github.com/pborman/getopt v0.0.0-20180729010549-6fdd0a2c7117 h1:7822vZ646Atgxkp3tqrSufChvAAYgIy+iFEGpQntwlI= @@ -458,10 +607,13 @@ github.com/phpdave11/gofpdi v1.0.13 h1:o61duiW8M9sMlkVXWlvP92sZJtGKENvW3VExs6dZu github.com/pierrec/lz4 v2.0.5+incompatible h1:2xWsjqPFWcplujydGg4WmhC/6fZqK42wMM8aXeqhl0I= github.com/pierrec/lz4/v4 v4.1.15 h1:MO0/ucJhngq7299dKLwIMtgTfbkoSPF6AoMYDd8Q4q0= github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= +github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU= github.com/pkg/sftp v1.13.0 h1:Riw6pgOKK41foc1I1Uu03CjvbLZDXeGpInycM4shXoI= github.com/posener/complete v1.1.1 h1:ccV59UEOTzVDnDUEFdT95ZzHVZ+5+158q8+SJb2QV5w= +github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4= github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= +github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a h1:9ZKAASQSHhDYGoxY8uLVpewe1GDZ2vu2Tr/vTdVAkFQ= github.com/rogpeppe/fastuuid v1.2.0 h1:Ppwyp6VYCF1nvBTXL3trRso7mXMlRrw9ooo375wvi2s= github.com/rogpeppe/go-internal v1.3.0 h1:RR9dF3JtopPvtkroDZuVD7qquD0bnHlKSqaQhgwt8yk= @@ -469,6 +621,7 @@ github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245 h1:K1Xf3bKttbF+koVGaX5xngRIZ5bVjbmPnaxE/dR08uY= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f h1:UFr9zpz4xgTnIE5yIMtWAMngCdZ9p/+q6lTbgelo80M= +github.com/samber/lo v1.37.0/go.mod h1:9vaz2O4o8oOnK23pd2TrXufcbdbJIa3b6cstBWKpopA= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da h1:p3Vo3i64TCLY7gIfzeQaUJ+kppEO5WQG3cL8iE8tGHU= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I= github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= @@ -476,58 +629,101 @@ github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykE github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= github.com/soheilhy/cmux v0.1.4 h1:0HKaf1o97UwFjHH9o5XsHUOF+tqmdA7KEzXLpiyaw0E= github.com/spf13/afero v1.3.3 h1:p5gZEKLYoL7wh8VrJesMaYeNxdEd1v3cb4irOk9zB54= +github.com/spf13/afero v1.9.3/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= +github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= github.com/spf13/cobra v0.0.3 h1:ZlrZ4XsMRm04Fr5pSFxBgfND2EBVa1nLpiy1stUsX/8= +github.com/spf13/cobra v1.6.1/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= github.com/spf13/pflag v1.0.1 h1:aCvUg6QPl3ibpQUxyLkrEkCHtPqYJL4x9AuhqVqFis4= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271 h1:WhxRHzgeVGETMlmVfqhRn8RIeeNoPr2Czh33I4Zdccw= github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a h1:AhmOdSHeswKHBjhsLs/7+1voOxT+LLrSk/Nxvk35fug= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.588/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sts v1.0.588/go.mod h1:vPvXNb+zBZVJfZCIKWcYxLpGzgScKKgiPUArobWZ+nU= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tag v1.0.233/go.mod h1:sX14+NSvMjOhNFaMtP2aDy6Bss8PyFXij21gpY6+DAs= +github.com/tencentyun/cos-go-sdk-v5 v0.7.42/go.mod h1:LUFnaqRmGk6pEHOaRmdn2dCZR2j0cSsM5xowWFPTPao= +github.com/thanhpk/randstr v1.0.4/go.mod h1:M/H2P1eNLZzlDwAzpkkkUvoyNNMbzRGhESZuEQk3r0U= +github.com/thlib/go-timezone-local v0.0.0-20210907160436-ef149e42d28e/go.mod h1:/Tnicc6m/lsJE0irFMA0LfIwTBo4QP7A8IfyIv4zZKI= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8 h1:ndzgwNDnKIqyCvHTXaCqh9KlOWKvBry6nuXMJmonVsE= +github.com/tombuildsstuff/giovanni v0.15.1/go.mod h1:0TZugJPEtqzPlMpuJHYfXY6Dq2uLPrXf98D2XQSxNbA= +github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/urfave/cli v1.22.1 h1:+mkCCcOFKPnCmVYVcURKps1Xe+3zP90gSYGNfRkjoIY= github.com/urfave/cli/v2 v2.11.0 h1:c6bD90aLd2iEsokxhxkY5Er0zA2V9fId2aJfwmrF+do= github.com/urfave/cli/v2 v2.11.0/go.mod h1:f8iq5LtQ/bLxafbdBSLPPNsgaW0l/2fYYEHhAyPlwvo= +github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc= +github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= +github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= +github.com/xlab/treeprint v0.0.0-20161029104018-1d6e34225557/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= github.com/yuin/goldmark v1.4.13 h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE= +github.com/zclconf/go-cty v1.14.4/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +github.com/zclconf/go-cty-debug v0.0.0-20240417160409-8c45e122ae1a/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM= +github.com/zclconf/go-cty-yaml v1.0.3/go.mod h1:9YLUH4g7lOhVWqUbctnVlZ5KLpg7JAprQNgxSZ1Gyxs= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738 h1:VcrIfasaLFkyjk6KNlXQSzO+B0fZcnECiDrKJsfxka0= +go.mongodb.org/mongo-driver v1.10.0/go.mod h1:wsihk0Kdgv8Kqu1Anit4sfK+22vSFbUrAVEYRhCXrA8= +go.opentelemetry.io/contrib/exporters/autoexport v0.45.0/go.mod h1:9hFI4YY6Ehe9enzw9qGlKAjJGQAtEo75Ysrb3byOZtI= +go.opentelemetry.io/contrib/instrumentation/github.com/aws/aws-sdk-go-v2/otelaws v0.46.1/go.mod h1:h0dNRrQsnnlMonPE/+FXrXtDYZEyZSTaIOfs+n8P/RQ= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.0/go.mod h1:Ct6zzQEuGK3WpJs2n4dn+wfJYzd/+hNnxMRTWjGn30M= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0/go.mod h1:IPtUMKL4O3tH5y+iXVyAXqpAwMuzC1IrxVS81rummfE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.19.0/go.mod h1:0+KuTDyKL4gjKCF75pHOX4wuzYDUZYfAQdSu43o+Z2I= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0/go.mod h1:oVdCUtjq9MK9BlS7TtucsQwUcXcymNiEDjgDD2jMtZU= go.opentelemetry.io/proto/otlp v0.19.0 h1:IVN6GR+mhC4s5yfcTbmzHYODqvWAp3ZedA2SJPI1Nnw= go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= +go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= +go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4= golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= +golang.org/x/exp/typeparams v0.0.0-20221208152030-732eee02a75a/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028 h1:4+4C/Iv2U4fMZBiMCc98MG1In4gJY5YRhtpDNeDeHWs= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= +golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE= +golang.org/x/oauth2 v0.11.0/go.mod h1:LdF7O/8bLR/qWK9DrpXmbHLTouvRHK0SgJl0GmDBchk= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2 h1:IRJeR9r1pYWsHKTRe/IInb7lYvbBVIqOgsX/u0mbOWY= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools/cmd/cover v0.1.0-deprecated/go.mod h1:hMDiIvlpN1NoVgmjLjUJE9tMHyxHjFX7RuQ+rW12mSA= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0 h1:OE9mWmgKkjJyEmDAAtGMPjXu+YNeGvK9VTSHY6+Qihc= google.golang.org/genproto v0.0.0-20230526161137-0005af68ea54/go.mod h1:zqTuNwFlFRsw5zIts5VnzLQxSRqh+CGOTVMlYbY0Eyk= google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:xZnkP7mREFX5MORlOPEzLMr+90PPZQ2QWzrVTWfAq64= google.golang.org/genproto v0.0.0-20230726155614-23370e0ffb3e/go.mod h1:0ggbjUrZYpy1q+ANUS30SEoGZ53cdfwtbuG7Ptgy108= +google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5/go.mod h1:oH/ZOT02u4kWEp7oYBGYFFkCdKS/uYR9Z7+0/xuuFp8= google.golang.org/genproto/googleapis/api v0.0.0-20230525234035-dd9d682886f9/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= +google.golang.org/genproto/googleapis/api v0.0.0-20230803162519-f966b187b2e5/go.mod h1:5DZzOUPCLYL3mNkQ0ms0F3EuUNZ7py1Bqeq6sxzI7/Q= google.golang.org/genproto/googleapis/bytestream v0.0.0-20230530153820-e85fd2cbaebc h1:g3hIDl0jRNd9PPTs2uBzYuaD5mQuwOkZY0vSc0LR32o= google.golang.org/genproto/googleapis/bytestream v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:ylj+BE99M198VPbBh6A8d9n3w8fChvyLK3wwBOjXBFA= google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= google.golang.org/genproto/googleapis/rpc v0.0.0-20230731190214-cbb8c96f2d6d/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230803162519-f966b187b2e5/go.mod h1:zBEcrKX2ZOcEkHWxBPAIvYUWOKKMIhYcmNiUIu2ji3I= google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8= google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0 h1:M1YKkFIboKNieVO5DLUEVzQfGwJD30Nv2jfUgzb5UcE= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc= gopkg.in/cheggaaa/pb.v1 v1.0.25 h1:Ev7yu1/f6+d+b3pi5vPdRPc6nNtP1umSfcWiEfRqv6I= gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= gopkg.in/gcfg.v1 v1.2.3 h1:m8OOJ4ccYHnx2f4gQwpno8nAX5OGOh7RLaaz0pj3Ogs= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/ini.v1 v1.66.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/jcmturner/aescts.v1 v1.0.1 h1:cVVZBK2b1zY26haWB4vbBiZrfFQnfbTVrE3xZq6hrEw= gopkg.in/jcmturner/dnsutils.v1 v1.0.1 h1:cIuC1OLRGZrld+16ZJvvZxVJeKPsvd5eUIvxfoN5hSM= gopkg.in/jcmturner/goidentity.v3 v3.0.0 h1:1duIyWiTaYvVx3YX2CYtpJbUFd7/UuPYCfgXtQ3VTbI= @@ -536,8 +732,18 @@ gopkg.in/jcmturner/rpc.v1 v1.1.0 h1:QHIUxTX1ISuAv9dD2wJ9HWQVuWDX/Zc0PfeC2tjc4rU= gopkg.in/resty.v1 v1.12.0 h1:CuXP0Pjfw9rOuY6EP+UvtNvt5DSqHpIxILZKT/quCZI= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= honnef.co/go/tools v0.1.3 h1:qTakTkI6ni6LFD5sBwwsdSO+AQqbSIxOauHTTQKZ/7o= +honnef.co/go/tools v0.5.0-0.dev.0.20230826160118-ad5ca31ff221/go.mod h1:+rnGS1THNh8zMwnd2oVOTL9QF6vmfyG6ZXBULae2uc0= +k8s.io/api v0.25.5/go.mod h1:RzplZX0Z8rV/WhSTfEvnyd91bBhBQTRWo85qBQwRmb8= +k8s.io/apimachinery v0.25.5/go.mod h1:1S2i1QHkmxc8+EZCIxe/fX5hpldVXk4gvnJInMEb8D4= +k8s.io/client-go v0.25.5/go.mod h1:bOeoaUUdpyz3WDFGo+Xm3nOQFh2KuYXRDwrvbAPtFQA= +k8s.io/klog/v2 v2.70.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/kube-openapi v0.0.0-20220803162953-67bda5d908f1/go.mod h1:C/N6wCaBHeBHkHUesQOQy2/MZqGgMAFPqGsGQLdbZBU= +k8s.io/utils v0.0.0-20220728103510-ee6ede2d64ed/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= rsc.io/binaryregexp v0.2.0 h1:HfqmD5MEmC0zvwBuF187nq9mdnXjXsSivRiXN7SmRkE= rsc.io/quote/v3 v3.1.0 h1:9JKUTTIUgS6kzR9mK1YuGKv6Nl+DijDNIc0ghT58FaY= rsc.io/sampler v1.3.0 h1:7uVkIFmeBqHfdjD+gZwtXXI+RODJ2Wc4O7MPEh/QiW4= +sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= +sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs= +sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0 h1:ucqkfpjg9WzSUubAO62csmucvxl4/JeW3F4I4909XkM= diff --git a/go/libraries/utils/filesys/fs.go b/go/libraries/utils/filesys/fs.go index 0f3d2484af0..529b7b71610 100644 --- a/go/libraries/utils/filesys/fs.go +++ b/go/libraries/utils/filesys/fs.go @@ -17,8 +17,10 @@ package filesys import ( "encoding/json" "errors" + "fmt" "io" "os" + "path/filepath" "time" ) @@ -146,3 +148,47 @@ func CopyFile(srcPath, destPath string, srcFS, destFS Filesys) (err error) { _, err = io.Copy(wr, rd) return } + +func CopyDir(src, dest string, fs Filesys) error { + absSrc, err := fs.Abs(src) + if err != nil { + return fmt.Errorf("error getting absolute path for %s: %w", src, err) + } + + err = fs.MkDirs(dest) + if err != nil { + return fmt.Errorf("error creating directory %s: %w", dest, err) + } + + itrErr := fs.Iter(absSrc, true, func(path string, size int64, isDir bool) (stop bool) { + relPath := path[len(absSrc):] + destPath := filepath.Join(dest, relPath) + if isDir { + err = fs.MkDirs(destPath) + if err != nil { + err = fmt.Errorf("error creating directory %s: %w", destPath, err) + return true + } + } else { + var data []byte + data, err = fs.ReadFile(path) + if err != nil { + err = fmt.Errorf("error reading file %s: %w", path, err) + return true + } + + err = fs.WriteFile(destPath, data, os.ModePerm) + if err != nil { + err = fmt.Errorf("error writing file %s: %w", destPath, err) + return true + } + } + return false + }) + + if err != nil { + return err + } + + return itrErr +} diff --git a/integration-tests/go-sql-server-driver/go.mod b/integration-tests/go-sql-server-driver/go.mod index 8b54928d8fa..e6bcf40df07 100644 --- a/integration-tests/go-sql-server-driver/go.mod +++ b/integration-tests/go-sql-server-driver/go.mod @@ -1,10 +1,12 @@ module github.com/dolthub/dolt/integration-tests/go-sql-server-driver -go 1.22.2 +go 1.22.5 + +toolchain go1.22.7 require ( github.com/dolthub/dolt/go v0.40.4 - github.com/google/uuid v1.3.0 + github.com/google/uuid v1.3.1 github.com/stretchr/testify v1.8.4 golang.org/x/sync v0.7.0 gopkg.in/square/go-jose.v2 v2.5.1 diff --git a/integration-tests/go-sql-server-driver/go.sum b/integration-tests/go-sql-server-driver/go.sum index 237627b76b3..4520fdee07f 100644 --- a/integration-tests/go-sql-server-driver/go.sum +++ b/integration-tests/go-sql-server-driver/go.sum @@ -10,6 +10,7 @@ github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= From 50397bf02c8caeeede9b1a6a4fca51dd2f47fed8 Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Fri, 13 Sep 2024 01:13:48 -0700 Subject: [PATCH 42/53] mod tidy --- go/go.sum | 2 -- go/go.work.sum | 5 +++++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/go/go.sum b/go/go.sum index d9c089de98a..64f992ebf44 100644 --- a/go/go.sum +++ b/go/go.sum @@ -407,8 +407,6 @@ github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/hashicorp/terraform v1.9.5 h1:2e0DyCe3kHRSE5HdeKDKoLO0WMtwperwf6bkBmxw7zc= -github.com/hashicorp/terraform v1.9.5/go.mod h1:3nK9o9EY0EXFcjXWxndJgcHGKDEN1Gd81cJBOkKHcJI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= github.com/iancoleman/strcase v0.1.3/go.mod h1:SK73tn/9oHe+/Y0h39VT4UCxmurVJkR5NA7kMEAOgSE= diff --git a/go/go.work.sum b/go/go.work.sum index fcdd5ec4456..267a6382dec 100644 --- a/go/go.work.sum +++ b/go/go.work.sum @@ -397,9 +397,11 @@ github.com/emicklei/go-restful/v3 v3.8.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.11.1-0.20230524094728-9239064ad72f h1:7T++XKzy4xg7PKy+bM+Sa9/oe1OC88yz2hXQUISoXfA= github.com/envoyproxy/go-control-plane v0.11.1-0.20230524094728-9239064ad72f/go.mod h1:sfYdkwUW4BA3PbKjySwjJy+O4Pu0h62rlqCMHNk+K+Q= +github.com/envoyproxy/go-control-plane v0.11.1 h1:wSUXTlLfiAQRWs2F+p+EKOY9rUyis1MyGqJ2DIk5HpM= github.com/envoyproxy/go-control-plane v0.11.1/go.mod h1:uhMcXKCQMEJHiAb0w+YGefQLaTEw+YhGluxZkrTmD0g= github.com/envoyproxy/protoc-gen-validate v0.10.1 h1:c0g45+xCJhdgFGw7a5QAfdS4byAbud7miNWJ1WwEVf8= github.com/envoyproxy/protoc-gen-validate v0.10.1/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= +github.com/envoyproxy/protoc-gen-validate v1.0.2 h1:QkIBuU5k+x7/QXPvPPnWXWlCdaBFApVqftFV6k087DA= github.com/envoyproxy/protoc-gen-validate v1.0.2/go.mod h1:GpiZQP3dDbg4JouG/NNS7QWXpgx6x8QiMKdmN72jogE= github.com/fogleman/gg v1.3.0 h1:/7zJX8F6AaYQc57WQCyN9cAIz+4bCJGO9B+dyW29am8= github.com/form3tech-oss/jwt-go v3.2.2+incompatible h1:TcekIExNqud5crz4xD2pavyTgWiPvpYe4Xau31I0PRk= @@ -428,6 +430,7 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE= github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= +github.com/golang/glog v1.1.2 h1:DVjP2PbBOzHyzA+dn3WhHIq4NdVu3Q+pvivFICf/7fo= github.com/golang/glog v1.1.2/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ= github.com/golang/mock v1.5.0 h1:jlYHihg//f7RRwuPfptm04yp4s7O6Kw8EZiVYIGcH0g= github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= @@ -537,6 +540,7 @@ github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i github.com/lyft/protoc-gen-star v0.5.2 h1:ICQPpOr4uO46eme1Y5Jj0fnJkc9/upQ9xxt0+2AmUDQ= github.com/lyft/protoc-gen-star/v2 v2.0.1 h1:keaAo8hRuAT0O3DfJ/wM3rufbAjGeJ1lAtWZHDjKGB0= github.com/lyft/protoc-gen-star/v2 v2.0.1/go.mod h1:RcCdONR2ScXaYnQC5tUzxzlpA3WVYF7/opLeUgcQs/o= +github.com/lyft/protoc-gen-star/v2 v2.0.3 h1:/3+/2sWyXeMLzKd1bX+ixWKgEMsULrIivpDsuaF441o= github.com/lyft/protoc-gen-star/v2 v2.0.3/go.mod h1:amey7yeodaJhXSbf/TlLvWiqQfLOSpEk//mLlc+axEk= github.com/lyft/protoc-gen-validate v0.0.13 h1:KNt/RhmQTOLr7Aj8PsJ7mTronaFyx80mRTT9qF261dA= github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= @@ -613,6 +617,7 @@ github.com/posener/complete v1.1.1 h1:ccV59UEOTzVDnDUEFdT95ZzHVZ+5+158q8+SJb2QV5 github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4= github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= +github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY= github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a h1:9ZKAASQSHhDYGoxY8uLVpewe1GDZ2vu2Tr/vTdVAkFQ= github.com/rogpeppe/fastuuid v1.2.0 h1:Ppwyp6VYCF1nvBTXL3trRso7mXMlRrw9ooo375wvi2s= From ca4b3804acd4088527752958865f17b70c49cbb5 Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Mon, 16 Sep 2024 09:56:27 -0700 Subject: [PATCH 43/53] build fix --- go/cmd/dolt/commands/signed_commits_test.go | 14 ++++ go/go.mod | 46 ++++++------ go/go.sum | 79 ++++++++++----------- 3 files changed, 72 insertions(+), 67 deletions(-) diff --git a/go/cmd/dolt/commands/signed_commits_test.go b/go/cmd/dolt/commands/signed_commits_test.go index 0b5331e1abc..8fbfec98b22 100644 --- a/go/cmd/dolt/commands/signed_commits_test.go +++ b/go/cmd/dolt/commands/signed_commits_test.go @@ -1,3 +1,17 @@ +// Copyright 2024 Dolthub, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package commands import ( diff --git a/go/go.mod b/go/go.mod index 1d41e5258e4..9a600b2aa39 100644 --- a/go/go.mod +++ b/go/go.mod @@ -2,12 +2,12 @@ module github.com/dolthub/dolt/go require ( cloud.google.com/go/storage v1.31.0 - github.com/BurntSushi/toml v1.2.1 + github.com/BurntSushi/toml v1.1.0 github.com/HdrHistogram/hdrhistogram-go v1.1.2 github.com/abiosoft/readline v0.0.0-20180607040430-155bce2042db github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883 github.com/attic-labs/kingpin v2.2.7-0.20180312050558-442efcfac769+incompatible - github.com/aws/aws-sdk-go v1.44.122 + github.com/aws/aws-sdk-go v1.34.0 github.com/bcicen/jstream v1.0.0 github.com/boltdb/bolt v1.3.1 github.com/denisbrodbeck/machineid v1.0.1 @@ -17,15 +17,15 @@ require ( github.com/dolthub/sqllogictest/go v0.0.0-20201107003712-816f3ae12d81 github.com/dolthub/vitess v0.0.0-20240913073519-a282f4c775fc github.com/dustin/go-humanize v1.0.1 - github.com/fatih/color v1.16.0 + github.com/fatih/color v1.13.0 github.com/flynn-archive/go-shlex v0.0.0-20150515145356-3f9db97f8568 github.com/go-sql-driver/mysql v1.7.2-0.20231213112541-0004702b931d github.com/gocraft/dbr/v2 v2.7.2 github.com/golang/snappy v0.0.4 - github.com/google/uuid v1.3.1 + github.com/google/uuid v1.3.0 github.com/jpillora/backoff v1.0.0 github.com/juju/gnuflag v0.0.0-20171113085948-2ce1bb71843d - github.com/mattn/go-isatty v0.0.20 + github.com/mattn/go-isatty v0.0.17 github.com/mattn/go-runewidth v0.0.13 github.com/pkg/errors v0.9.1 github.com/pkg/profile v1.5.0 @@ -43,8 +43,8 @@ require ( golang.org/x/sync v0.7.0 golang.org/x/sys v0.20.0 google.golang.org/api v0.126.0 - google.golang.org/grpc v1.59.0 - google.golang.org/protobuf v1.33.0 + google.golang.org/grpc v1.57.1 + google.golang.org/protobuf v1.31.0 gopkg.in/src-d/go-errors.v1 v1.0.0 gopkg.in/yaml.v2 v2.4.0 ) @@ -52,7 +52,7 @@ require ( require ( github.com/Shopify/toxiproxy/v2 v2.5.0 github.com/aliyun/aliyun-oss-go-sdk v2.2.5+incompatible - github.com/cenkalti/backoff/v4 v4.2.1 + github.com/cenkalti/backoff/v4 v4.1.3 github.com/cespare/xxhash v1.1.0 github.com/cespare/xxhash/v2 v2.2.0 github.com/creasty/defaults v1.6.0 @@ -68,7 +68,7 @@ require ( github.com/jmoiron/sqlx v1.3.4 github.com/kch42/buzhash v0.0.0-20160816060738-9bdec3dec7c6 github.com/kylelemons/godebug v1.1.0 - github.com/lib/pq v1.10.3 + github.com/lib/pq v1.10.0 github.com/mohae/uvarint v0.0.0-20160208145430-c3f9e62bf2b0 github.com/oracle/oci-go-sdk/v65 v65.55.0 github.com/prometheus/client_golang v1.13.0 @@ -83,11 +83,11 @@ require ( github.com/zeebo/blake3 v0.2.3 github.com/zeebo/xxh3 v1.0.2 go.etcd.io/bbolt v1.3.6 - go.opentelemetry.io/otel v1.24.0 + go.opentelemetry.io/otel v1.7.0 go.opentelemetry.io/otel/exporters/jaeger v1.7.0 - go.opentelemetry.io/otel/sdk v1.24.0 - go.opentelemetry.io/otel/trace v1.24.0 - golang.org/x/exp v0.0.0-20230905200255-921286631fa9 + go.opentelemetry.io/otel/sdk v1.7.0 + go.opentelemetry.io/otel/trace v1.7.0 + golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1 golang.org/x/text v0.16.0 gonum.org/v1/plot v0.11.0 gopkg.in/errgo.v2 v2.1.0 @@ -114,7 +114,7 @@ require ( github.com/go-fonts/liberation v0.2.0 // indirect github.com/go-kit/kit v0.10.0 // indirect github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81 // indirect - github.com/go-logr/logr v1.4.1 // indirect + github.com/go-logr/logr v1.2.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.2.6 // indirect github.com/go-pdf/fpdf v0.6.0 // indirect @@ -122,6 +122,7 @@ require ( github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.3 // indirect + github.com/google/go-cmp v0.6.0 // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/google/s2a-go v0.1.4 // indirect github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect @@ -129,7 +130,7 @@ require ( github.com/gorilla/mux v1.8.0 // indirect github.com/hashicorp/golang-lru v0.5.4 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect - github.com/klauspost/compress v1.15.11 // indirect + github.com/klauspost/compress v1.10.5 // indirect github.com/klauspost/cpuid/v2 v2.0.12 // indirect github.com/lestrrat-go/strftime v1.0.4 // indirect github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect @@ -150,25 +151,22 @@ require ( github.com/tklauser/numcpus v0.3.0 // indirect github.com/yusufpapurcu/wmi v1.2.2 // indirect go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/otel/metric v1.24.0 // indirect go.uber.org/atomic v1.7.0 // indirect go.uber.org/multierr v1.6.0 // indirect golang.org/x/image v0.18.0 // indirect golang.org/x/mod v0.17.0 // indirect - golang.org/x/oauth2 v0.18.0 // indirect + golang.org/x/oauth2 v0.8.0 // indirect golang.org/x/term v0.20.0 // indirect - golang.org/x/time v0.5.0 // indirect + golang.org/x/time v0.0.0-20191024005414-555d28b269f0 // indirect golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d // indirect + google.golang.org/genproto v0.0.0-20230807174057-1744710a1577 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20230803162519-f966b187b2e5 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20230803162519-f966b187b2e5 // indirect gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect ) replace github.com/dolthub/dolt/go/gen/proto/dolt/services/eventsapi => ./gen/proto/dolt/services/eventsapi -go 1.22.5 - -toolchain go1.22.7 +go 1.22.2 diff --git a/go/go.sum b/go/go.sum index e861230c3ff..24fa13dfa22 100644 --- a/go/go.sum +++ b/go/go.sum @@ -54,8 +54,8 @@ github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935 github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak= -github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +github.com/BurntSushi/toml v1.1.0 h1:ksErzDEI1khOiGPgpwuI7x2ebx/uXQNw7xJpn9Eq1+I= +github.com/BurntSushi/toml v1.1.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/DATA-DOG/go-sqlmock v1.5.0 h1:Shsta01QNfFxHCfpW6YH2STWB0MudeXXEWMr20OEh60= github.com/DATA-DOG/go-sqlmock v1.5.0/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= @@ -104,8 +104,8 @@ github.com/attic-labs/kingpin v2.2.7-0.20180312050558-442efcfac769+incompatible/ github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.30.19/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= -github.com/aws/aws-sdk-go v1.44.122 h1:p6mw01WBaNpbdP2xrisz5tIkcNwzj/HysobNoaAHjgo= -github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= +github.com/aws/aws-sdk-go v1.34.0 h1:brux2dRrlwCF5JhTL7MUT3WUwo9zfDHZZp3+g3Mvlmo= +github.com/aws/aws-sdk-go v1.34.0/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/aws/aws-sdk-go-v2 v1.7.1/go.mod h1:L5LuPC1ZgDr2xQS7AmIec/Jlc7O/Y1u2KxJyNVab250= github.com/aws/aws-sdk-go-v2/config v1.5.0/go.mod h1:RWlPOAW3E3tbtNAqTwvSW54Of/yP3oiZXMI0xfUdjyA= @@ -135,8 +135,8 @@ github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= -github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= -github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/cenkalti/backoff/v4 v4.1.3 h1:cFAlzYUlVYDysBEH2T5hyJZMh3+5+WCBvSnK6Q8UtC4= +github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= @@ -214,8 +214,8 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.m github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= -github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= +github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/flynn-archive/go-shlex v0.0.0-20150515145356-3f9db97f8568 h1:BMXYYRWTLOJKlh+lOBt6nUQgXAfB7oVIQt5cNreqSLI= github.com/flynn-archive/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:rZfgFAXFS/z/lEd6LJmf9HVZ1LkgYiHx5pHhV5DR16M= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= @@ -248,9 +248,8 @@ github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= -github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= @@ -363,8 +362,8 @@ github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3 github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= -github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.2.3 h1:yk9/cqRKtT9wXZSsRH9aurXEpJX+U6FLtpYTdC3R06k= github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= @@ -446,9 +445,8 @@ github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvW github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.10.5 h1:7q6vHIqubShURwQz8cQK6yIe/xC3IF0Vm7TGfqjewrc= github.com/klauspost/compress v1.10.5/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.15.11 h1:Lcadnb3RKGin4FYM/orgq0qde+nc15E5Cbqg4B9Sx9c= -github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= github.com/klauspost/cpuid/v2 v2.0.12 h1:p9dKCg8i4gmOxtv35DvrYoWqYzQrvEVdjQ762Y0OqZE= github.com/klauspost/cpuid/v2 v2.0.12/go.mod h1:g2LTdtYhdyuGPqyWyv7qRAmj1WBqxuObKfj5c0PQa7c= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -469,9 +467,8 @@ github.com/lestrrat-go/envload v0.0.0-20180220234015-a3eb8ddeffcc/go.mod h1:kopu github.com/lestrrat-go/strftime v1.0.4 h1:T1Rb9EPkAhgxKqbcMIPguPq8glqXTA1koF8n9BHElA8= github.com/lestrrat-go/strftime v1.0.4/go.mod h1:E1nN3pCbtMSu1yjSVeyuRFVm/U0xoR76fd03sz+Qz4g= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.10.0 h1:Zx5DJFEYQXio93kgXnQ09fXNiUKsqv4OUEu2UtGcB1E= github.com/lib/pq v1.10.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/lib/pq v1.10.3 h1:v9QZf2Sn6AmjXtQeFpdoq/eaNtYP6IN+7lcrygsIAtg= -github.com/lib/pq v1.10.3/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= @@ -480,6 +477,7 @@ github.com/lyft/protoc-gen-star v0.5.2/go.mod h1:9toiA3cC7z5uVbODF7kEQ91Xn7XNFkV github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= +github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= @@ -488,10 +486,11 @@ github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNx github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= +github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU= github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= @@ -732,19 +731,14 @@ go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= +go.opentelemetry.io/otel v1.7.0 h1:Z2lA3Tdch0iDcrhJXDIlC94XE+bxok1F9B+4Lz/lGsM= go.opentelemetry.io/otel v1.7.0/go.mod h1:5BdUoMIz5WEs0vt0CUEMtSSaTSHBBVwrhnz7+nrD5xk= -go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= -go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= go.opentelemetry.io/otel/exporters/jaeger v1.7.0 h1:wXgjiRldljksZkZrldGVe6XrG9u3kYDyQmkZwmm5dI0= go.opentelemetry.io/otel/exporters/jaeger v1.7.0/go.mod h1:PwQAOqBgqbLQRKlj466DuD2qyMjbtcPpfPfj+AqbSBs= -go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= -go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= +go.opentelemetry.io/otel/sdk v1.7.0 h1:4OmStpcKVOfvDOgCt7UriAPtKolwIhxpnSNI/yK+1B0= go.opentelemetry.io/otel/sdk v1.7.0/go.mod h1:uTEOTwaqIVuTGiJN7ii13Ibp75wJmYUDe374q6cZwUU= -go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw= -go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg= +go.opentelemetry.io/otel/trace v1.7.0 h1:O37Iogk1lEkMRXewVtZ1BBTVn5JEp8GrJvP92bJqC6o= go.opentelemetry.io/otel/trace v1.7.0/go.mod h1:fzLSB9nqR2eXzxPXb2JW9IKE+ScyXA48yyE4TNvoHqU= -go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= -go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= @@ -792,8 +786,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20230905200255-921286631fa9 h1:GoHiUyI/Tp2nVkLI2mCxVkOjsbSXD66ic0XW0js0R9g= -golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k= +golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1 h1:k/i9J1pBpvlfR+9QsetwPyERsqu1GIbi967PQMq3Ivc= +golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1/go.mod h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -879,8 +873,8 @@ golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4Iltr golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI= -golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= +golang.org/x/oauth2 v0.8.0 h1:6dkIjl3j3LtZ/O3sTgZTMsLKSftL/B8Zgq4huOIIUu8= +golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -922,6 +916,7 @@ golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -956,7 +951,6 @@ golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= @@ -978,9 +972,8 @@ golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0 h1:/5xXl8Y5W96D+TtHSlonuFqGHIWVuyCkGJLwGh9JJFs= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= -golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -1108,12 +1101,12 @@ google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7Fc google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d h1:VBu5YqKPv6XiJ199exd8Br+Aetz+o08F+PLMnwJQHAY= -google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d/go.mod h1:yZTlhN0tQnXo3h00fuXNCxJdLdIdnVFVBaRJ5LWBbw4= -google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d h1:DoPTO70H+bcDXcd39vOqb2viZxgqeBeSGtZ55yZU4/Q= -google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d h1:uvYuEyMHKNt+lT4K3bN6fGswmK8qSvcreM3BwjDh+y4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= +google.golang.org/genproto v0.0.0-20230807174057-1744710a1577 h1:Tyk/35yqszRCvaragTn5NnkY6IiKk/XvHzEWepo71N0= +google.golang.org/genproto v0.0.0-20230807174057-1744710a1577/go.mod h1:yZTlhN0tQnXo3h00fuXNCxJdLdIdnVFVBaRJ5LWBbw4= +google.golang.org/genproto/googleapis/api v0.0.0-20230803162519-f966b187b2e5 h1:nIgk/EEq3/YlnmVVXVnm14rC2oxgs1o0ong4sD/rd44= +google.golang.org/genproto/googleapis/api v0.0.0-20230803162519-f966b187b2e5/go.mod h1:5DZzOUPCLYL3mNkQ0ms0F3EuUNZ7py1Bqeq6sxzI7/Q= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230803162519-f966b187b2e5 h1:eSaPbMR4T7WfH9FvABk36NBMacoTUKdWCvV0dx+KfOg= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230803162519-f966b187b2e5/go.mod h1:zBEcrKX2ZOcEkHWxBPAIvYUWOKKMIhYcmNiUIu2ji3I= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= @@ -1135,8 +1128,8 @@ google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTp google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= -google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= -google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= +google.golang.org/grpc v1.57.1 h1:upNTNqv0ES+2ZOOqACwVtS3Il8M12/+Hz41RCPzAjQg= +google.golang.org/grpc v1.57.1/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -1149,8 +1142,8 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From ade094b754127c389673e9d48ac723203c5cb590 Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Mon, 16 Sep 2024 10:11:46 -0700 Subject: [PATCH 44/53] go mod/sum updates --- go/go.mod | 1 + go/go.sum | 2 ++ go/go.work.sum | 7 ++----- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/go/go.mod b/go/go.mod index 9a600b2aa39..62b5f7ce45c 100644 --- a/go/go.mod +++ b/go/go.mod @@ -108,6 +108,7 @@ require ( github.com/apache/thrift v0.13.1-0.20201008052519-daf620915714 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/davecgh/go-spew v1.1.1 // indirect + github.com/dolthub/dolt/integration-tests/go-sql-server-driver v0.0.0-20240913223734-d36ad30bc916 // indirect github.com/dolthub/go-icu-regex v0.0.0-20230524105445-af7e7991c97e // indirect github.com/dolthub/jsonpath v0.0.2-0.20240227200619-19675ab05c71 // indirect github.com/dolthub/maphash v0.0.0-20221220182448-74e1e1ea1577 // indirect diff --git a/go/go.sum b/go/go.sum index 24fa13dfa22..f0f0147bff7 100644 --- a/go/go.sum +++ b/go/go.sum @@ -177,6 +177,8 @@ github.com/denisbrodbeck/machineid v1.0.1/go.mod h1:dJUwb7PTidGDeYyUBmXZ2GphQBbj github.com/denisenkom/go-mssqldb v0.10.0 h1:QykgLZBorFE95+gO3u9esLd0BmbvpWp0/waNNZfHBM8= github.com/denisenkom/go-mssqldb v0.10.0/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dolthub/dolt/integration-tests/go-sql-server-driver v0.0.0-20240913223734-d36ad30bc916 h1:L/mI7DciaZGyONL7NI7xHv356vMxrGrOyzI+Pt5j34U= +github.com/dolthub/dolt/integration-tests/go-sql-server-driver v0.0.0-20240913223734-d36ad30bc916/go.mod h1:NmmovpKuDgMrEAt36cbLylyE7cM8hWxKnGwM6cafBW4= github.com/dolthub/flatbuffers/v23 v23.3.3-dh.2 h1:u3PMzfF8RkKd3lB9pZ2bfn0qEG+1Gms9599cr0REMww= github.com/dolthub/flatbuffers/v23 v23.3.3-dh.2/go.mod h1:mIEZOHnFx4ZMQeawhw9rhsj+0zwQj7adVsnBX7t+eKY= github.com/dolthub/fslock v0.0.3 h1:iLMpUIvJKMKm92+N1fmHVdxJP5NdyDK5bK7z7Ba2s2U= diff --git a/go/go.work.sum b/go/go.work.sum index 267a6382dec..b0c6dda7f22 100644 --- a/go/go.work.sum +++ b/go/go.work.sum @@ -445,7 +445,6 @@ github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw= github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99 h1:Ak8CrdlwwXwAZxzS66vgPt4U8yUZX7JwLvVR58FN5jM= github.com/google/renameio v0.1.0 h1:GOZbcHa3HfsPKPlmyPyN2KEohoMXOhdMbHrvbpl2QaA= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= github.com/gorilla/context v1.1.1 h1:AWwleXJkX/nhcU9bZSnZoi3h/qGYqQAGhq6zZe/aQW8= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c h1:Lh2aW+HnU2Nbe1gqD9SOJLJxW1jBMmQOktN2acDyJk8= @@ -689,7 +688,6 @@ golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= -golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE= golang.org/x/oauth2 v0.11.0/go.mod h1:LdF7O/8bLR/qWK9DrpXmbHLTouvRHK0SgJl0GmDBchk= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -709,20 +707,17 @@ google.golang.org/genproto v0.0.0-20230726155614-23370e0ffb3e/go.mod h1:0ggbjUrZ google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5/go.mod h1:oH/ZOT02u4kWEp7oYBGYFFkCdKS/uYR9Z7+0/xuuFp8= google.golang.org/genproto/googleapis/api v0.0.0-20230525234035-dd9d682886f9/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= -google.golang.org/genproto/googleapis/api v0.0.0-20230803162519-f966b187b2e5/go.mod h1:5DZzOUPCLYL3mNkQ0ms0F3EuUNZ7py1Bqeq6sxzI7/Q= google.golang.org/genproto/googleapis/bytestream v0.0.0-20230530153820-e85fd2cbaebc h1:g3hIDl0jRNd9PPTs2uBzYuaD5mQuwOkZY0vSc0LR32o= google.golang.org/genproto/googleapis/bytestream v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:ylj+BE99M198VPbBh6A8d9n3w8fChvyLK3wwBOjXBFA= google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= google.golang.org/genproto/googleapis/rpc v0.0.0-20230731190214-cbb8c96f2d6d/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230803162519-f966b187b2e5/go.mod h1:zBEcrKX2ZOcEkHWxBPAIvYUWOKKMIhYcmNiUIu2ji3I= google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8= google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0 h1:M1YKkFIboKNieVO5DLUEVzQfGwJD30Nv2jfUgzb5UcE= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc= gopkg.in/cheggaaa/pb.v1 v1.0.25 h1:Ev7yu1/f6+d+b3pi5vPdRPc6nNtP1umSfcWiEfRqv6I= gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= @@ -735,6 +730,8 @@ gopkg.in/jcmturner/goidentity.v3 v3.0.0 h1:1duIyWiTaYvVx3YX2CYtpJbUFd7/UuPYCfgXt gopkg.in/jcmturner/gokrb5.v7 v7.3.0 h1:0709Jtq/6QXEuWRfAm260XqlpcwL1vxtO1tUE2qK8Z4= gopkg.in/jcmturner/rpc.v1 v1.1.0 h1:QHIUxTX1ISuAv9dD2wJ9HWQVuWDX/Zc0PfeC2tjc4rU= gopkg.in/resty.v1 v1.12.0 h1:CuXP0Pjfw9rOuY6EP+UvtNvt5DSqHpIxILZKT/quCZI= +gopkg.in/square/go-jose.v2 v2.5.1 h1:7odma5RETjNHWJnR32wx8t+Io4djHE1PqxCFx3iiZ2w= +gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= honnef.co/go/tools v0.1.3 h1:qTakTkI6ni6LFD5sBwwsdSO+AQqbSIxOauHTTQKZ/7o= honnef.co/go/tools v0.5.0-0.dev.0.20230826160118-ad5ca31ff221/go.mod h1:+rnGS1THNh8zMwnd2oVOTL9QF6vmfyG6ZXBULae2uc0= From ff41470ef67cfb64f93a2a062381d138404c3c5e Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Mon, 16 Sep 2024 10:21:40 -0700 Subject: [PATCH 45/53] go mod/sum updates --- go/go.mod | 2 +- go/go.sum | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/go/go.mod b/go/go.mod index 62b5f7ce45c..6daf89d27bb 100644 --- a/go/go.mod +++ b/go/go.mod @@ -22,7 +22,7 @@ require ( github.com/go-sql-driver/mysql v1.7.2-0.20231213112541-0004702b931d github.com/gocraft/dbr/v2 v2.7.2 github.com/golang/snappy v0.0.4 - github.com/google/uuid v1.3.0 + github.com/google/uuid v1.6.0 github.com/jpillora/backoff v1.0.0 github.com/juju/gnuflag v0.0.0-20171113085948-2ce1bb71843d github.com/mattn/go-isatty v0.0.17 diff --git a/go/go.sum b/go/go.sum index f0f0147bff7..73419eb82a2 100644 --- a/go/go.sum +++ b/go/go.sum @@ -366,6 +366,8 @@ github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.2.3 h1:yk9/cqRKtT9wXZSsRH9aurXEpJX+U6FLtpYTdC3R06k= github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= From c7b74b13c72fcfa2a3708eb2c7f17897c76abddd Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Mon, 16 Sep 2024 10:24:50 -0700 Subject: [PATCH 46/53] mod tidy --- go/go.mod | 1 - go/go.sum | 4 ---- 2 files changed, 5 deletions(-) diff --git a/go/go.mod b/go/go.mod index 6daf89d27bb..ec7b5f0fded 100644 --- a/go/go.mod +++ b/go/go.mod @@ -108,7 +108,6 @@ require ( github.com/apache/thrift v0.13.1-0.20201008052519-daf620915714 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/dolthub/dolt/integration-tests/go-sql-server-driver v0.0.0-20240913223734-d36ad30bc916 // indirect github.com/dolthub/go-icu-regex v0.0.0-20230524105445-af7e7991c97e // indirect github.com/dolthub/jsonpath v0.0.2-0.20240227200619-19675ab05c71 // indirect github.com/dolthub/maphash v0.0.0-20221220182448-74e1e1ea1577 // indirect diff --git a/go/go.sum b/go/go.sum index 73419eb82a2..0cdb248e86d 100644 --- a/go/go.sum +++ b/go/go.sum @@ -177,8 +177,6 @@ github.com/denisbrodbeck/machineid v1.0.1/go.mod h1:dJUwb7PTidGDeYyUBmXZ2GphQBbj github.com/denisenkom/go-mssqldb v0.10.0 h1:QykgLZBorFE95+gO3u9esLd0BmbvpWp0/waNNZfHBM8= github.com/denisenkom/go-mssqldb v0.10.0/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dolthub/dolt/integration-tests/go-sql-server-driver v0.0.0-20240913223734-d36ad30bc916 h1:L/mI7DciaZGyONL7NI7xHv356vMxrGrOyzI+Pt5j34U= -github.com/dolthub/dolt/integration-tests/go-sql-server-driver v0.0.0-20240913223734-d36ad30bc916/go.mod h1:NmmovpKuDgMrEAt36cbLylyE7cM8hWxKnGwM6cafBW4= github.com/dolthub/flatbuffers/v23 v23.3.3-dh.2 h1:u3PMzfF8RkKd3lB9pZ2bfn0qEG+1Gms9599cr0REMww= github.com/dolthub/flatbuffers/v23 v23.3.3-dh.2/go.mod h1:mIEZOHnFx4ZMQeawhw9rhsj+0zwQj7adVsnBX7t+eKY= github.com/dolthub/fslock v0.0.3 h1:iLMpUIvJKMKm92+N1fmHVdxJP5NdyDK5bK7z7Ba2s2U= @@ -364,8 +362,6 @@ github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3 github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.2.3 h1:yk9/cqRKtT9wXZSsRH9aurXEpJX+U6FLtpYTdC3R06k= From cd941ee3e03930f08869580fec87ec2f9b0ad275 Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Mon, 16 Sep 2024 10:29:33 -0700 Subject: [PATCH 47/53] mod tidy again --- go/go.work.sum | 1 + 1 file changed, 1 insertion(+) diff --git a/go/go.work.sum b/go/go.work.sum index b0c6dda7f22..995c782c815 100644 --- a/go/go.work.sum +++ b/go/go.work.sum @@ -445,6 +445,7 @@ github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw= github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99 h1:Ak8CrdlwwXwAZxzS66vgPt4U8yUZX7JwLvVR58FN5jM= github.com/google/renameio v0.1.0 h1:GOZbcHa3HfsPKPlmyPyN2KEohoMXOhdMbHrvbpl2QaA= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= github.com/gorilla/context v1.1.1 h1:AWwleXJkX/nhcU9bZSnZoi3h/qGYqQAGhq6zZe/aQW8= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c h1:Lh2aW+HnU2Nbe1gqD9SOJLJxW1jBMmQOktN2acDyJk8= From f81e847f742ba2c98ba86ae118c0e1387911de78 Mon Sep 17 00:00:00 2001 From: coffeegoddd Date: Mon, 16 Sep 2024 10:42:54 -0700 Subject: [PATCH 48/53] /integration-tests/go-sql-server-driver: run go mod tidy in integration-tests/go-sql-server-driver --- integration-tests/go-sql-server-driver/go.mod | 2 +- integration-tests/go-sql-server-driver/go.sum | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/integration-tests/go-sql-server-driver/go.mod b/integration-tests/go-sql-server-driver/go.mod index e6bcf40df07..57b39afe4ed 100644 --- a/integration-tests/go-sql-server-driver/go.mod +++ b/integration-tests/go-sql-server-driver/go.mod @@ -6,7 +6,7 @@ toolchain go1.22.7 require ( github.com/dolthub/dolt/go v0.40.4 - github.com/google/uuid v1.3.1 + github.com/google/uuid v1.6.0 github.com/stretchr/testify v1.8.4 golang.org/x/sync v0.7.0 gopkg.in/square/go-jose.v2 v2.5.1 diff --git a/integration-tests/go-sql-server-driver/go.sum b/integration-tests/go-sql-server-driver/go.sum index 4520fdee07f..5c6ee908c5f 100644 --- a/integration-tests/go-sql-server-driver/go.sum +++ b/integration-tests/go-sql-server-driver/go.sum @@ -8,9 +8,8 @@ github.com/go-sql-driver/mysql v1.7.2-0.20231213112541-0004702b931d h1:QQP1nE4qh github.com/go-sql-driver/mysql v1.7.2-0.20231213112541-0004702b931d/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= From 2d383079378ab187bdd63f8f591be31559f4feb1 Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Mon, 16 Sep 2024 11:03:06 -0700 Subject: [PATCH 49/53] debug output --- go/libraries/utils/gpg/sign.go | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/go/libraries/utils/gpg/sign.go b/go/libraries/utils/gpg/sign.go index a2a3f0265f3..6129770a8e2 100644 --- a/go/libraries/utils/gpg/sign.go +++ b/go/libraries/utils/gpg/sign.go @@ -20,6 +20,7 @@ import ( "encoding/pem" "fmt" "io" + "log" "os/exec" "strings" @@ -91,7 +92,18 @@ func execGpgAndReadOutput(ctx context.Context, in []byte, args []string) (*bytes func ImportKey(ctx context.Context, keyFile string) error { args := []string{"--import", keyFile} - _, _, err := execGpgAndReadOutput(ctx, nil, args) + ioOut, ioErr, err := execGpgAndReadOutput(ctx, nil, args) + + if ioOut != nil && len(ioOut.String()) > 0 { + log.Println("import output:", ioOut.String()) + } + + if ioErr != nil && len(ioErr.String()) > 0 { + log.Println("import ioErr:", ioErr.String()) + } + + log.Println("import err:", err) + return err } From 7070471f7abeb8180ee7134ab1f7ced77aed8319 Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Mon, 16 Sep 2024 12:47:02 -0700 Subject: [PATCH 50/53] error output fix --- go/libraries/utils/gpg/sign.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/go/libraries/utils/gpg/sign.go b/go/libraries/utils/gpg/sign.go index 6129770a8e2..e0fa6214a6f 100644 --- a/go/libraries/utils/gpg/sign.go +++ b/go/libraries/utils/gpg/sign.go @@ -75,6 +75,11 @@ func execGpgAndReadOutput(ctx context.Context, in []byte, args []string) (*bytes if state.Exited() { if state.ExitCode() != 0 { + waitErr := eg.Wait() + if waitErr != nil { + return nil, nil, fmt.Errorf("failed to read output for command '%s': %w", cmdStr, waitErr) + } + return nil, nil, fmt.Errorf("command '%s' exited with code %d. stdout: '%s', stderr: '%s'", cmdStr, state.ExitCode(), outBuf.String(), errBuf.String()) } From 580c9a77603414522d927537797ce603923106fa Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Mon, 16 Sep 2024 14:38:16 -0700 Subject: [PATCH 51/53] test fix --- go/libraries/utils/gpg/sign_test.go | 13 ++-- go/libraries/utils/gpg/testdata/private.pgp | 81 +++++++++++++++++++++ 2 files changed, 89 insertions(+), 5 deletions(-) create mode 100644 go/libraries/utils/gpg/testdata/private.pgp diff --git a/go/libraries/utils/gpg/sign_test.go b/go/libraries/utils/gpg/sign_test.go index 658431e980f..173df9daa40 100644 --- a/go/libraries/utils/gpg/sign_test.go +++ b/go/libraries/utils/gpg/sign_test.go @@ -23,24 +23,30 @@ import ( "github.com/stretchr/testify/require" ) +var keyId = "573DA8C6366D04E35CDB1A44E09A0B208F666373" + func signTestSetup(t *testing.T, ctx context.Context) { err := ImportKey(ctx, "testdata/private.pgp") require.NoError(t, err) - ok, err := HasKey(ctx, "4798B29CA9029452D103B1E388F64CE29826DA4A") + ok, err := HasKey(ctx, keyId) require.NoError(t, err) require.True(t, ok) } func TestSign(t *testing.T) { ctx := context.Background() - keyId := "4798B29CA9029452D103B1E388F64CE29826DA4A" + signTestSetup(t, ctx) message := []byte("I did a thing") signature, err := Sign(ctx, keyId, message) require.NoError(t, err) require.NotNil(t, signature) require.NotEmpty(t, signature) + + output, err := Verify(context.Background(), signature) + require.NoError(t, err) + require.NotNil(t, output) } func TestDecodeAllPemBlocks(t *testing.T) { @@ -73,9 +79,6 @@ YN6Sszg+o8Aw0AT4M6nrLTe3YaIE6sR4YMxOCSOPAT9oSDg1t5s= require.True(t, containsBlockOfType(pemBlocks, "PGP SIGNED MESSAGE")) require.True(t, containsBlockOfType(pemBlocks, "PGP SIGNATURE")) - output, err := Verify(context.Background(), []byte(pemBlock)) - require.NoError(t, err) - require.NotNil(t, output) } func containsBlockOfType(blocks []*pem.Block, blockType string) bool { diff --git a/go/libraries/utils/gpg/testdata/private.pgp b/go/libraries/utils/gpg/testdata/private.pgp new file mode 100644 index 00000000000..014e9543001 --- /dev/null +++ b/go/libraries/utils/gpg/testdata/private.pgp @@ -0,0 +1,81 @@ +-----BEGIN PGP PRIVATE KEY BLOCK----- + +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 +=WzPV +-----END PGP PRIVATE KEY BLOCK----- From 69b29ff42bf7055b850db639fe47659148272005 Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Mon, 16 Sep 2024 17:20:39 -0700 Subject: [PATCH 52/53] pr feedback --- go/libraries/utils/filesys/fs.go | 1 + go/libraries/utils/gpg/sign.go | 38 +++++++++++++++----------------- 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/go/libraries/utils/filesys/fs.go b/go/libraries/utils/filesys/fs.go index 529b7b71610..386300cd9a3 100644 --- a/go/libraries/utils/filesys/fs.go +++ b/go/libraries/utils/filesys/fs.go @@ -149,6 +149,7 @@ func CopyFile(srcPath, destPath string, srcFS, destFS Filesys) (err error) { return } +// CopyDir does a recursive copy of the src directory into the dest directory. func CopyDir(src, dest string, fs Filesys) error { absSrc, err := fs.Abs(src) if err != nil { diff --git a/go/libraries/utils/gpg/sign.go b/go/libraries/utils/gpg/sign.go index e0fa6214a6f..4285e5b57dd 100644 --- a/go/libraries/utils/gpg/sign.go +++ b/go/libraries/utils/gpg/sign.go @@ -20,7 +20,6 @@ import ( "encoding/pem" "fmt" "io" - "log" "os/exec" "strings" @@ -67,24 +66,19 @@ func execGpgAndReadOutput(ctx context.Context, in []byte, args []string) (*bytes return nil, nil, fmt.Errorf("failed to close stdin for command '%s': %w", cmdStr, err) } + var exitCode int for { state, err := cmd.Process.Wait() if err != nil { return nil, nil, fmt.Errorf("failed to wait for command '%s': %w", cmdStr, err) } - if state.Exited() { - if state.ExitCode() != 0 { - waitErr := eg.Wait() - if waitErr != nil { - return nil, nil, fmt.Errorf("failed to read output for command '%s': %w", cmdStr, waitErr) - } - - return nil, nil, fmt.Errorf("command '%s' exited with code %d. stdout: '%s', stderr: '%s'", cmdStr, state.ExitCode(), outBuf.String(), errBuf.String()) - } - - break + if !state.Exited() { + continue } + + exitCode = state.ExitCode() + break } err = eg.Wait() @@ -92,26 +86,26 @@ func execGpgAndReadOutput(ctx context.Context, in []byte, args []string) (*bytes return nil, nil, fmt.Errorf("failed to read output for command '%s': %w", cmdStr, err) } + if exitCode != 0 { + return nil, nil, fmt.Errorf("command '%s' exited with code %d. stdout: '%s', stderr: '%s'", cmdStr, exitCode, outBuf.String(), errBuf.String()) + } + return outBuf, errBuf, nil } +// ImportKey imports a key from a file using gpg func ImportKey(ctx context.Context, keyFile string) error { args := []string{"--import", keyFile} - ioOut, ioErr, err := execGpgAndReadOutput(ctx, nil, args) - - if ioOut != nil && len(ioOut.String()) > 0 { - log.Println("import output:", ioOut.String()) - } + _, ioErr, err := execGpgAndReadOutput(ctx, nil, args) if ioErr != nil && len(ioErr.String()) > 0 { - log.Println("import ioErr:", ioErr.String()) + err = fmt.Errorf("`gpg --import %s` error gpg_output: %s - %w", keyFile, ioErr.String(), err) } - log.Println("import err:", err) - return err } +// ListKey returns the output of `gpg --list-keys` func ListKeys(ctx context.Context) ([]byte, error) { args := []string{"--list-keys"} outBuf, _, err := execGpgAndReadOutput(ctx, nil, args) @@ -122,6 +116,7 @@ func ListKeys(ctx context.Context) ([]byte, error) { return outBuf.Bytes(), nil } +// HasKey returns true if the key with the given keyId is present when `gpg --list-keys` is run func HasKey(ctx context.Context, keyId string) (bool, error) { args := []string{"--list-keys", keyId} outBuf, _, err := execGpgAndReadOutput(ctx, nil, args) @@ -132,6 +127,7 @@ func HasKey(ctx context.Context, keyId string) (bool, error) { return strings.Contains(outBuf.String(), keyId), nil } +// Sign signs a message using the key with the given keyId func Sign(ctx context.Context, keyId string, message []byte) ([]byte, error) { args := []string{"--clear-sign", "-u", keyId} outBuf, _, err := execGpgAndReadOutput(ctx, message, args) @@ -142,6 +138,7 @@ func Sign(ctx context.Context, keyId string, message []byte) ([]byte, error) { return outBuf.Bytes(), nil } +// Verify verifies a signature func Verify(ctx context.Context, signature []byte) ([]byte, error) { args := []string{"--verify"} _, errBuf, err := execGpgAndReadOutput(ctx, signature, args) @@ -224,6 +221,7 @@ func DecodeAllPEMBlocks(bs []byte) ([]*pem.Block, error) { return pemBlocks, nil } +// GetBlocksOfType returns all PEM blocks of a given type. func GetBlocksOfType(blocks []*pem.Block, blTypeStr string) []*pem.Block { var ret []*pem.Block for _, block := range blocks { From fdb34d6cd247ee554b26097cb5903a3b5acb6a7b Mon Sep 17 00:00:00 2001 From: Brian Hendriks Date: Mon, 16 Sep 2024 17:28:45 -0700 Subject: [PATCH 53/53] fix --- go/libraries/utils/gpg/sign.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go/libraries/utils/gpg/sign.go b/go/libraries/utils/gpg/sign.go index 4285e5b57dd..078897578c3 100644 --- a/go/libraries/utils/gpg/sign.go +++ b/go/libraries/utils/gpg/sign.go @@ -98,7 +98,7 @@ func ImportKey(ctx context.Context, keyFile string) error { args := []string{"--import", keyFile} _, ioErr, err := execGpgAndReadOutput(ctx, nil, args) - if ioErr != nil && len(ioErr.String()) > 0 { + if err != nil && ioErr != nil && len(ioErr.String()) > 0 { err = fmt.Errorf("`gpg --import %s` error gpg_output: %s - %w", keyFile, ioErr.String(), err) }