diff --git a/tools/cli/internal/cli/split/split.go b/tools/cli/internal/cli/split/split.go index 1e8a67b8a4..df6e697fab 100644 --- a/tools/cli/internal/cli/split/split.go +++ b/tools/cli/internal/cli/split/split.go @@ -35,6 +35,7 @@ type Opts struct { outputPath string env string format string + gitSha string } func (o *Opts) Run() error { @@ -55,6 +56,12 @@ func (o *Opts) Run() error { return err } + if o.gitSha != "" { + filteredOAS.Info.Extensions = map[string]any{ + "x-xgen-sha": o.gitSha, + } + } + if err := o.saveVersionedOas(filteredOAS, version); err != nil { return err } @@ -130,6 +137,7 @@ func Builder() *cobra.Command { cmd.Flags().StringVar(&opts.env, flag.Environment, "", usage.Environment) cmd.Flags().StringVarP(&opts.outputPath, flag.Output, flag.OutputShort, "", usage.Output) cmd.Flags().StringVarP(&opts.format, flag.Format, flag.FormatShort, openapi.JSON, usage.Format) + cmd.Flags().StringVar(&opts.gitSha, flag.GitSha, "", usage.GitSha) _ = cmd.MarkFlagRequired(flag.Output) diff --git a/tools/cli/internal/cli/split/split_test.go b/tools/cli/internal/cli/split/split_test.go index de4972a2d6..0597fd9305 100644 --- a/tools/cli/internal/cli/split/split_test.go +++ b/tools/cli/internal/cli/split/split_test.go @@ -115,6 +115,26 @@ func TestSplitMulitplePreviewsRun(t *testing.T) { require.Contains(t, info.Spec.Paths.Map(), "/api/atlas/v2/groups/{groupId}/serviceAccounts") } +func TestInjectSha_Run(t *testing.T) { + fs := afero.NewMemMapFs() + opts := &Opts{ + basePath: "../../../test/data/base_spec.json", + outputPath: "foas.yaml", + fs: fs, + gitSha: "123456", + } + + if err := opts.Run(); err != nil { + t.Fatalf("Run() unexpected error: %v", err) + } + + result, err := loadRunResultOas(fs, "foas-2023-01-01.yaml") + require.NoError(t, err) + // check sha + require.Contains(t, result.Spec.Info.Extensions, "x-xgen-sha") + require.Equal(t, "123456", result.Spec.Info.Extensions["x-xgen-sha"]) +} + func TestOpts_PreRunE(t *testing.T) { testCases := []struct { wantErr require.ErrorAssertionFunc