Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions cmd/deploy_preview.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ var deployPreviewCmd = &cobra.Command{

defer func() {
if previewKeep {
LogSuccess("preview environment kept: " + name)
LogSuccess("preview environment kept: %s", name)
return
}
// best-effort cleanup
Expand All @@ -68,7 +68,7 @@ var deployPreviewCmd = &cobra.Command{
return LogErrorf("preview deploy failed: %v", err)
}

LogSuccess("preview deployment complete: " + name)
LogSuccess("preview deployment complete: %s", name)
return nil
},
}
Expand Down
64 changes: 62 additions & 2 deletions pkg/env/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"path/filepath"

"github.com/aryansharma9917/codewise-cli/pkg/config"
survey "github.com/AlecAivazis/survey/v2"
"gopkg.in/yaml.v3"
)

Expand All @@ -15,12 +16,71 @@ type CreateOptions struct {

func CreateEnv(name string, opts CreateOptions) error {
if opts.Interactive {
// handled at CLI layer
return fmt.Errorf("interactive mode not implemented in CreateEnv")
cfg, _ := config.ReadConfig()

defaultNs := inferOrDefault(cfg.Defaults.Namespace, name)
defaultCtx := inferOrDefault(cfg.Defaults.Context, "")
defaultRepo := inferOrDefault(cfg.Defaults.RepoURL, "")
defaultBranch := inferOrDefault(cfg.Defaults.Branch, "main")
defaultImage := inferOrDefault(cfg.Defaults.Image, "codewise")
defaultTag := inferOrDefault(cfg.Defaults.ImageTag, "latest")

answers := struct {
Namespace string
Context string
Repo string
Branch string
Image string
Tag string
}{}

qs := []*survey.Question{
{Name: "Namespace", Prompt: &survey.Input{Message: fmt.Sprintf("Namespace (default: %s)", defaultNs)}},
{Name: "Context", Prompt: &survey.Input{Message: fmt.Sprintf("Kubernetes context (default: %s)", defaultCtx)}},
{Name: "Repo", Prompt: &survey.Input{Message: fmt.Sprintf("GitOps repo (default: %s)", defaultRepo)}},
{Name: "Branch", Prompt: &survey.Input{Message: fmt.Sprintf("GitOps branch (default: %s)", defaultBranch)}},
{Name: "Image", Prompt: &survey.Input{Message: fmt.Sprintf("Image repository (default: %s)", defaultImage)}},
{Name: "Tag", Prompt: &survey.Input{Message: fmt.Sprintf("Image tag (default: %s)", defaultTag)}},
}

if err := survey.Ask(qs, &answers); err != nil {
return err
}

k8s := K8sConfig{
Namespace: firstNonEmpty(answers.Namespace, defaultNs),
Context: firstNonEmpty(answers.Context, defaultCtx),
}

helm := HelmConfig{
Release: name,
Chart: "./helm/chart",
Values: "./values.yaml",
}

gitops := GitOpsConfig{
Repo: firstNonEmpty(answers.Repo, defaultRepo),
Path: "",
Branch: firstNonEmpty(answers.Branch, defaultBranch),
}

values := ValuesConfig{}
values.Image.Repository = firstNonEmpty(answers.Image, defaultImage)
values.Image.Tag = firstNonEmpty(answers.Tag, defaultTag)

return CreateEnvFromParts(name, k8s, helm, gitops, values)
}

return createSilent(name)
}

func firstNonEmpty(a, b string) string {
if a != "" {
return a
}
return b
}

func createSilent(name string) error {
if err := ensureBaseDir(); err != nil {
return err
Expand Down
Loading