@@ -37,27 +37,67 @@ func (s *stageMenu) menuCreateStage(env string) (*project.Stage, error) {
3737 Properties : map [string ]string {},
3838 Actions : project.Actions {},
3939 Clusters : map [string ]* project.Cluster {},
40+ Addons : map [string ]* project.ClusterAddon {},
4041 }
4142
42- properties , err : = s .menuProperties (stage )
43+ err = s .menuSettings (stage )
4344 if err != nil {
4445 return nil , err
4546 }
46- stage .Properties = properties
4747
4848 return stage , nil
4949}
5050
5151func (s * stageMenu ) menuUpdateStage (envName , stageName string ) (* project.Stage , error ) {
5252 stage := s .config .Environments [envName ].Stages [stageName ]
53- properties , err := s .menuProperties (stage )
53+ stage .Name = stageName
54+ if stage .Addons == nil {
55+ stage .Addons = map [string ]* project.ClusterAddon {}
56+ }
57+ err := s .menuSettings (stage )
5458 if err != nil {
5559 return nil , err
5660 }
57- stage .Properties = properties
5861 return stage , nil
5962}
6063
64+ // menuSettings creates a context menu to manage the settings of a cluster
65+ func (s * stageMenu ) menuSettings (stage * project.Stage ) error {
66+ for {
67+ prompt := promptui.Select {
68+ Label : "Settings" ,
69+ Items : []string {"Addons" , "Properties" , "Done" },
70+ }
71+ _ , result , err := prompt .Run ()
72+ if err != nil {
73+ return err
74+ }
75+
76+ switch result {
77+ case "Addons" :
78+ addon := addonClusterMenu {
79+ writer : s .writer ,
80+ reader : s .reader ,
81+ config : s .config ,
82+ }
83+ err := addon .menuManageAddons (stage )
84+ if err != nil {
85+ return err
86+ }
87+ case "Properties" :
88+ properties , err := s .menuProperties (stage )
89+ if err != nil {
90+ return err
91+ }
92+ stage .Properties = properties
93+ case "Done" :
94+ return nil
95+ default :
96+ return fmt .Errorf ("invalid option %s" , result )
97+ }
98+ }
99+ }
100+
61101func (s * stageMenu ) menuDeleteStage (env , stage string ) error {
62102 // TODO: menu is missing to delete the stage (cascade delete)
63103 return errors .New ("not implemented" )
0 commit comments