feat(sdk): render version templates
Co-Authored-By: Virgil <virgil@lethean.io>
This commit is contained in:
parent
4e664e62b5
commit
f7e994382c
2 changed files with 49 additions and 2 deletions
|
|
@ -86,7 +86,7 @@ func New(projectDir string, config *Config) *SDK {
|
|||
// s.SetVersion("v1.2.3")
|
||||
func (s *SDK) SetVersion(version string) {
|
||||
s.version = version
|
||||
if s.config != nil {
|
||||
if s.config != nil && !containsVersionTemplate(s.config.Package.Version) {
|
||||
s.config.Package.Version = version
|
||||
}
|
||||
}
|
||||
|
|
@ -148,7 +148,7 @@ func (s *SDK) GenerateLanguage(ctx context.Context, lang string) error {
|
|||
SpecPath: specPath,
|
||||
OutputDir: outputDir,
|
||||
PackageName: s.config.Package.Name,
|
||||
Version: s.config.Package.Version,
|
||||
Version: s.resolvePackageVersion(),
|
||||
}
|
||||
|
||||
core.Print(nil, "Generating %s SDK...", lang)
|
||||
|
|
@ -159,3 +159,36 @@ func (s *SDK) GenerateLanguage(ctx context.Context, lang string) error {
|
|||
|
||||
return nil
|
||||
}
|
||||
|
||||
// resolvePackageVersion renders the configured package version against the
|
||||
// current SDK version when a template placeholder is present.
|
||||
//
|
||||
// resolved := s.resolvePackageVersion() // "v1.2.3" or "1.2.3-beta"
|
||||
func (s *SDK) resolvePackageVersion() string {
|
||||
if s == nil || s.config == nil {
|
||||
return ""
|
||||
}
|
||||
|
||||
packageVersion := s.config.Package.Version
|
||||
if packageVersion == "" {
|
||||
return s.version
|
||||
}
|
||||
|
||||
if !containsVersionTemplate(packageVersion) {
|
||||
return packageVersion
|
||||
}
|
||||
|
||||
if s.version == "" {
|
||||
return packageVersion
|
||||
}
|
||||
|
||||
resolved := core.Replace(packageVersion, "{{.Version}}", s.version)
|
||||
resolved = core.Replace(resolved, "{{Version}}", s.version)
|
||||
return resolved
|
||||
}
|
||||
|
||||
// containsVersionTemplate reports whether a package version uses a version
|
||||
// placeholder that should be rendered at generation time.
|
||||
func containsVersionTemplate(value string) bool {
|
||||
return core.Contains(value, "{{.Version}}") || core.Contains(value, "{{Version}}")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,6 +31,20 @@ func TestSDK_VersionPassedToGenerator_Good(t *testing.T) {
|
|||
assert.Equal(t, "v2.0.0", s.config.Package.Version)
|
||||
}
|
||||
|
||||
func TestSDK_VersionTemplateIsRendered_Good(t *testing.T) {
|
||||
config := &Config{
|
||||
Package: PackageConfig{
|
||||
Name: "test-sdk",
|
||||
Version: "{{.Version}}-beta",
|
||||
},
|
||||
}
|
||||
s := New("/tmp", config)
|
||||
s.SetVersion("v2.0.0")
|
||||
|
||||
assert.Equal(t, "{{.Version}}-beta", s.config.Package.Version)
|
||||
assert.Equal(t, "v2.0.0-beta", s.resolvePackageVersion())
|
||||
}
|
||||
|
||||
func TestSDK_DefaultConfig_Good(t *testing.T) {
|
||||
cfg := DefaultConfig()
|
||||
assert.Contains(t, cfg.Languages, "typescript")
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue