@@ -8,23 +8,18 @@ import (
88 "io/ioutil"
99 "os"
1010 "path"
11- "strings"
1211
13- "golang.org/x/exp/maps"
1412 "gopkg.in/yaml.v3"
1513 appsv1 "k8s.io/api/apps/v1"
1614 "k8s.io/cli-runtime/pkg/printers"
1715 "k8s.io/client-go/kubernetes/scheme"
1816
19- "github.com/manifoldco/promptui"
2017 log "github.com/sirupsen/logrus"
2118
2219 "github.com/Azure/draft/pkg/config"
2320 "github.com/Azure/draft/pkg/embedutils"
2421 "github.com/Azure/draft/pkg/osutil"
25- "github.com/Azure/draft/pkg/prompts"
2622 "github.com/Azure/draft/pkg/templatewriter"
27- "github.com/Azure/draft/template"
2823)
2924
3025const (
@@ -39,50 +34,6 @@ type Workflows struct {
3934 workflowTemplates fs.FS
4035}
4136
42- func CreateWorkflows (dest string , deployType string , flagVariables []string , templateWriter templatewriter.TemplateWriter , flagValuesMap map [string ]string ) error {
43- if flagValuesMap == nil {
44- return fmt .Errorf ("flagValuesMap is nil" )
45- }
46- var err error
47- for _ , flagVar := range flagVariables {
48- flagVarName , flagVarValue , ok := strings .Cut (flagVar , "=" )
49- if ! ok {
50- return fmt .Errorf ("invalid variable format: %s" , flagVar )
51- }
52- flagValuesMap [flagVarName ] = flagVarValue
53- log .Debugf ("flag variable %s=%s" , flagVarName , flagVarValue )
54- }
55-
56- if deployType == "" {
57- selection := & promptui.Select {
58- Label : "Select k8s Deployment Type" ,
59- Items : []string {"helm" , "kustomize" , "manifests" },
60- }
61-
62- _ , deployType , err = selection .Run ()
63- if err != nil {
64- return err
65- }
66- }
67-
68- workflow := createWorkflowsFromEmbedFS (template .Workflows , dest )
69- workflowConfig , ok := workflow .configs [deployType ]
70- if ! ok {
71- return errors .New ("invalid deployment type" )
72- }
73- customInputs , err := prompts .RunPromptsFromConfigWithSkips (workflowConfig , maps .Keys (flagValuesMap ))
74- if err != nil {
75- return err
76- }
77-
78- maps .Copy (customInputs , flagValuesMap )
79-
80- if err = updateProductionDeployments (deployType , dest , customInputs , templateWriter ); err != nil {
81- return err
82- }
83- return workflow .createWorkflowFiles (deployType , customInputs , templateWriter )
84- }
85-
8637func updateProductionDeployments (deployType , dest string , flagValuesMap map [string ]string , templateWriter templatewriter.TemplateWriter ) error {
8738 productionImage := fmt .Sprintf ("%s.azurecr.io/%s" , flagValuesMap ["AZURECONTAINERREGISTRY" ], flagValuesMap ["CONTAINERNAME" ])
8839 switch deployType {
@@ -176,7 +127,15 @@ func (w *Workflows) loadConfig(deployType string) (*config.DraftConfig, error) {
176127 return & draftConfig , nil
177128}
178129
179- func createWorkflowsFromEmbedFS (workflowTemplates embed.FS , dest string ) * Workflows {
130+ func (w * Workflows ) GetConfig (deployType string ) (* config.DraftConfig , error ) {
131+ val , ok := w .configs [deployType ]
132+ if ! ok {
133+ return nil , fmt .Errorf ("deploy type %s unsupported" , deployType )
134+ }
135+ return val , nil
136+ }
137+
138+ func CreateWorkflowsFromEmbedFS (workflowTemplates embed.FS , dest string ) * Workflows {
180139 deployMap , err := embedutils .EmbedFStoMap (workflowTemplates , parentDirName )
181140 if err != nil {
182141 log .Fatal (err )
@@ -204,7 +163,7 @@ func (w *Workflows) populateConfigs() {
204163 }
205164}
206165
207- func (w * Workflows ) createWorkflowFiles (deployType string , customInputs map [string ]string , templateWriter templatewriter.TemplateWriter ) error {
166+ func (w * Workflows ) CreateWorkflowFiles (deployType string , customInputs map [string ]string , templateWriter templatewriter.TemplateWriter ) error {
208167 val , ok := w .workflows [deployType ]
209168 if ! ok {
210169 return fmt .Errorf ("deployment type: %s is not currently supported" , deployType )
@@ -214,6 +173,12 @@ func (w *Workflows) createWorkflowFiles(deployType string, customInputs map[stri
214173 workflowConfig , ok := w .configs [deployType ]
215174 if ! ok {
216175 workflowConfig = nil
176+ } else {
177+ workflowConfig .ApplyDefaultVariables (customInputs )
178+ }
179+
180+ if err := updateProductionDeployments (deployType , w .dest , customInputs , templateWriter ); err != nil {
181+ return fmt .Errorf ("update production deployments: %w" , err )
217182 }
218183
219184 if err := osutil .CopyDir (w .workflowTemplates , srcDir , w .dest , workflowConfig , customInputs , templateWriter ); err != nil {
0 commit comments