feat(ci): scaffold sdk config in init
Co-Authored-By: Virgil <virgil@lethean.io>
This commit is contained in:
parent
e8fa26b5d2
commit
2ea501c5bc
4 changed files with 61 additions and 1 deletions
|
|
@ -157,6 +157,10 @@ func runCIReleaseInit() error {
|
|||
return cli.Err("%s: %w", i18n.T("i18n.fail.get", "working directory"), err)
|
||||
}
|
||||
|
||||
return runCIReleaseInitInDir(cwd)
|
||||
}
|
||||
|
||||
func runCIReleaseInitInDir(cwd string) error {
|
||||
cli.Print("%s %s\n\n", dimStyle.Render(i18n.Label("init")), i18n.T("cmd.ci.init.initializing"))
|
||||
|
||||
if release.ConfigExists(cwd) {
|
||||
|
|
@ -164,7 +168,7 @@ func runCIReleaseInit() error {
|
|||
return nil
|
||||
}
|
||||
|
||||
cfg := release.DefaultConfig()
|
||||
cfg := release.ScaffoldConfig()
|
||||
if err := release.WriteConfig(cfg, cwd); err != nil {
|
||||
return cli.Err("%s: %w", i18n.T("i18n.fail.create", "config"), err)
|
||||
}
|
||||
|
|
|
|||
26
cmd/ci/ci_test.go
Normal file
26
cmd/ci/ci_test.go
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
package ci
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"dappco.re/go/core/build/internal/ax"
|
||||
"dappco.re/go/core/build/pkg/release"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestCI_runCIReleaseInitInDir_Good(t *testing.T) {
|
||||
projectDir := t.TempDir()
|
||||
|
||||
err := runCIReleaseInitInDir(projectDir)
|
||||
require.NoError(t, err)
|
||||
|
||||
configPath := release.ConfigPath(projectDir)
|
||||
content, err := ax.ReadFile(configPath)
|
||||
require.NoError(t, err)
|
||||
|
||||
assert.Contains(t, string(content), "sdk:")
|
||||
assert.Contains(t, string(content), "spec: api/openapi.yaml")
|
||||
assert.Contains(t, string(content), "languages:")
|
||||
assert.Contains(t, string(content), "- typescript")
|
||||
}
|
||||
|
|
@ -277,6 +277,23 @@ func DefaultConfig() *Config {
|
|||
}
|
||||
}
|
||||
|
||||
// ScaffoldConfig returns the config shape written by `core ci init`.
|
||||
//
|
||||
// cfg := release.ScaffoldConfig()
|
||||
func ScaffoldConfig() *Config {
|
||||
cfg := DefaultConfig()
|
||||
cfg.SDK = &SDKConfig{
|
||||
Spec: "api/openapi.yaml",
|
||||
Languages: []string{"typescript", "python", "go", "php"},
|
||||
Output: "sdk",
|
||||
Diff: SDKDiffConfig{
|
||||
Enabled: true,
|
||||
FailOnBreaking: false,
|
||||
},
|
||||
}
|
||||
return cfg
|
||||
}
|
||||
|
||||
// applyDefaults fills in default values for any empty fields in the config.
|
||||
func applyDefaults(cfg *Config) {
|
||||
defaults := DefaultConfig()
|
||||
|
|
|
|||
|
|
@ -232,6 +232,19 @@ func TestConfig_DefaultConfig_Good(t *testing.T) {
|
|||
})
|
||||
}
|
||||
|
||||
func TestConfig_ScaffoldConfig_Good(t *testing.T) {
|
||||
t.Run("returns documented init scaffold", func(t *testing.T) {
|
||||
cfg := ScaffoldConfig()
|
||||
|
||||
require.NotNil(t, cfg.SDK)
|
||||
assert.Equal(t, "api/openapi.yaml", cfg.SDK.Spec)
|
||||
assert.Equal(t, []string{"typescript", "python", "go", "php"}, cfg.SDK.Languages)
|
||||
assert.Equal(t, "sdk", cfg.SDK.Output)
|
||||
assert.True(t, cfg.SDK.Diff.Enabled)
|
||||
assert.False(t, cfg.SDK.Diff.FailOnBreaking)
|
||||
})
|
||||
}
|
||||
|
||||
func TestConfig_ConfigPath_Good(t *testing.T) {
|
||||
t.Run("returns correct path", func(t *testing.T) {
|
||||
path := ConfigPath("/project/root")
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue