diff --git a/tools/cli/internal/changelog/changelog.go b/tools/cli/internal/changelog/changelog.go index 59bd4689e1..ff143d3e54 100644 --- a/tools/cli/internal/changelog/changelog.go +++ b/tools/cli/internal/changelog/changelog.go @@ -180,8 +180,8 @@ func NewEntries(basePath, revisionPath, exceptionFilePath string) ([]*Entry, err } for _, version := range changelog.RevisionMetadata.Versions { - // Skip preview versions - if apiversion.IsPreviewStabilityLevel(version) { + // Skip preview and upcoming versions + if apiversion.IsPreviewStabilityLevel(version) || apiversion.IsUpcomingStabilityLevel(version) { continue } @@ -229,6 +229,12 @@ func NewEntriesBetweenRevisionVersions(revisionPath, exceptionFilePath string) ( if apiversion.IsPreviewStabilityLevel(fromVersion) || apiversion.IsPreviewStabilityLevel(toVersion) { continue } + + // Skip upcoming version. It will be included in CLOUDP-315486 + if apiversion.IsUpcomingStabilityLevel(fromVersion) || apiversion.IsUpcomingStabilityLevel(toVersion) { + continue + } + entry, err := newEntriesBetweenVersion(revisionMetadata, fromVersion, toVersion, exceptionFilePath) if err != nil { return nil, err diff --git a/tools/cli/internal/cli/changelog/metadata/create.go b/tools/cli/internal/cli/changelog/metadata/create.go index a7991d98a0..7d9d292899 100644 --- a/tools/cli/internal/cli/changelog/metadata/create.go +++ b/tools/cli/internal/cli/changelog/metadata/create.go @@ -19,6 +19,7 @@ import ( "fmt" "time" + "github.com/mongodb/openapi/tools/cli/internal/apiversion" "github.com/mongodb/openapi/tools/cli/internal/changelog" "github.com/mongodb/openapi/tools/cli/internal/cli/flag" "github.com/mongodb/openapi/tools/cli/internal/cli/usage" @@ -70,8 +71,9 @@ func (o *Opts) PreRun() error { } } + // Validate that the API version use the correct date format YYYY-MM-DD for _, version := range o.versions { - if _, err := time.Parse("2006-01-02", version); err != nil { + if _, err := apiversion.New(apiversion.WithVersion(version)); err != nil { return fmt.Errorf("invalid version date: %w. Make sure to use the format YYYY-MM-DD", err) } } @@ -79,7 +81,8 @@ func (o *Opts) PreRun() error { return nil } -// changelog metadata create [--run-date=2024-09-22] --sha=e624d716e86f6910757b60cefdf3aa3181582d38 versions=2023-01-01,2023-02-01. +// CreateBuilder creates the Cobra command for changelog metadata create [--run-date=2024-09-22] +// --sha=e624d716e86f6910757b60cefdf3aa3181582d38 versions=2023-01-01,2023-02-01. func CreateBuilder() *cobra.Command { opts := &Opts{ fs: afero.NewOsFs(), diff --git a/tools/cli/internal/cli/changelog/metadata/create_test.go b/tools/cli/internal/cli/changelog/metadata/create_test.go index 15d2eeccdb..5d7338361f 100644 --- a/tools/cli/internal/cli/changelog/metadata/create_test.go +++ b/tools/cli/internal/cli/changelog/metadata/create_test.go @@ -28,7 +28,7 @@ func TestCreateBuild_Run(t *testing.T) { opts := &Opts{ specRevision: "11110c256dffdb163be71a3ca70854a57fad5f6f", runDate: "2024-01-01", - versions: []string{"2024-01-01"}, + versions: []string{"2024-01-01", "2024-01-01.upcoming"}, fs: fs, } @@ -47,6 +47,18 @@ func TestCreateBuild_PreRun_InvalidVersion(t *testing.T) { require.ErrorContains(t, opts.PreRun(), "invalid version date") } +func TestCreateBuild_PreRun_UpcomingVersion(t *testing.T) { + fs := afero.NewMemMapFs() + opts := &Opts{ + specRevision: "test", + runDate: "2024-01-01", + versions: []string{"2024-01-01.upcoming", "2025-01-01"}, + fs: fs, + } + + require.NoError(t, opts.PreRun()) +} + func TestCreateBuilder(t *testing.T) { test.CmdValidator( t,