@@ -80,20 +80,18 @@ func (m *Manager) GetInstance(name string) (Instance, bool) {
8080func (m * Manager ) CreateInstance (name string ) error {
8181 instance := m .newInstance (name )
8282
83- if err := instance .CreateConfig (); err != nil {
84- return err
85- }
86-
87- err := command .WithOptions (
83+ cmd := command .WithOptions (
8884 command .WithTermOutput (),
8985 command .WithLogging (m .ui ),
90- ).Cmd ("limactl" , []string {"start " , "--tty=false" , "--name=" + instance .Name , instance . ConfigFile }). Run ( )
86+ ).Cmd ("limactl" , []string {"create " , "--tty=false" , "--name=" + instance .Name , "-" } )
9187
88+ configContents , err := instance .GenerateConfig ()
9289 if err != nil {
9390 return err
9491 }
9592
96- return postStart (m , instance )
93+ cmd .Stdin = configContents
94+ return cmd .Run ()
9795}
9896
9997func (m * Manager ) DeleteInstance (name string ) error {
@@ -114,10 +112,6 @@ func (m *Manager) DeleteInstance(name string) error {
114112 return err
115113 }
116114
117- if err := instance .DeleteConfig (); err != nil {
118- return err
119- }
120-
121115 return nil
122116 } else {
123117 return fmt .Errorf ("Error: VM is running. Run `trellis vm stop` to stop it." )
@@ -158,6 +152,10 @@ func (m *Manager) StartInstance(name string) error {
158152 return nil
159153 }
160154
155+ if err := instance .UpdateConfig (); err != nil {
156+ return err
157+ }
158+
161159 err := command .WithOptions (
162160 command .WithTermOutput (),
163161 command .WithLogging (m .ui ),
@@ -167,7 +165,24 @@ func (m *Manager) StartInstance(name string) error {
167165 return err
168166 }
169167
170- return postStart (m , instance )
168+ user , err := instance .getUsername ()
169+ if err != nil {
170+ return fmt .Errorf ("Could not get username: %v" , err )
171+ }
172+
173+ instance .Username = string (user )
174+
175+ // Hydrate instance with data from limactl that is only available after starting (mainly the forwarded SSH local port)
176+ err = m .hydrateInstance (& instance )
177+ if err != nil {
178+ return err
179+ }
180+
181+ if err = m .addHosts (instance ); err != nil {
182+ return err
183+ }
184+
185+ return nil
171186}
172187
173188func (m * Manager ) StopInstance (name string ) error {
@@ -213,7 +228,6 @@ func (m *Manager) hydrateInstance(instance *Instance) error {
213228}
214229
215230func (m * Manager ) initInstance (instance * Instance ) {
216- instance .ConfigFile = filepath .Join (m .ConfigPath , instance .Name + ".yml" )
217231 instance .InventoryFile = m .InventoryPath ()
218232 instance .Sites = m .Sites
219233}
@@ -281,27 +295,6 @@ func (m *Manager) removeHosts(instance Instance) error {
281295 return m .HostsResolver .RemoveHosts (instance .Name )
282296}
283297
284- func postStart (manager * Manager , instance Instance ) error {
285- user , err := instance .getUsername ()
286- if err != nil {
287- return fmt .Errorf ("Could not get username: %v" , err )
288- }
289-
290- instance .Username = string (user )
291-
292- // Hydrate instance with data from limactl that is only available after starting (mainly the forwarded SSH local port)
293- err = manager .hydrateInstance (& instance )
294- if err != nil {
295- return err
296- }
297-
298- if err = manager .addHosts (instance ); err != nil {
299- return err
300- }
301-
302- return nil
303- }
304-
305298func getMacOSVersion () (string , error ) {
306299 cmd := command .Cmd ("sw_vers" , []string {"-productVersion" })
307300 b , err := cmd .Output ()
0 commit comments