trySkipCurrentStep is the core hybrid-mode method. It loops forward through steps, auto-filling each one from presets if the preset value is valid given the current config state. Called after every step transition.
()
| 177 | // steps, auto-filling each one from presets if the preset value is valid given |
| 178 | // the current config state. Called after every step transition. |
| 179 | func (m *createModel) trySkipCurrentStep() tea.Cmd { |
| 180 | for { |
| 181 | skipped := false |
| 182 | |
| 183 | switch m.step { |
| 184 | case stepGPU: |
| 185 | if m.presets != nil && m.presets.GPUType != nil { |
| 186 | canonical, ok := resolveGPU(*m.presets.GPUType) |
| 187 | if ok && m.specs.IsGPUTypeAvailable(canonical) { |
| 188 | m.config.GPUType = canonical |
| 189 | m.skippedSteps[stepGPU] = true |
| 190 | skipped = true |
| 191 | } |
| 192 | } |
| 193 | |
| 194 | case stepCompute: |
| 195 | skipped = m.trySkipCompute() |
| 196 | |
| 197 | case stepTemplate: |
| 198 | return m.trySkipTemplate() |
| 199 | |
| 200 | case stepDiskSize: |
| 201 | if m.presets != nil && m.presets.DiskSizeGB != nil { |
| 202 | v := *m.presets.DiskSizeGB |
| 203 | minDisk, maxDisk := m.specs.StorageRange(m.config.GPUType, m.config.NumGPUs) |
| 204 | if v >= minDisk && v <= maxDisk { |
| 205 | m.config.DiskSizeGB = v |
| 206 | m.skippedSteps[stepDiskSize] = true |
| 207 | skipped = true |
| 208 | } |
| 209 | } |
| 210 | |
| 211 | case stepConfirmation: |
| 212 | m.initStep() |
| 213 | return nil |
| 214 | } |
| 215 | |
| 216 | if !skipped { |
| 217 | m.initStep() |
| 218 | return nil |
| 219 | } |
| 220 | |
| 221 | m.step++ |
| 222 | } |
| 223 | } |
| 224 | |
| 225 | // trySkipCompute handles the complex compute step with its sub-phases. |
| 226 | func (m *createModel) trySkipCompute() bool { |
no test coverage detected