MCPcopy Create free account
hub / github.com/cli/cli / Migrate

Method Migrate

internal/config/config.go:183–210  ·  view source on GitHub ↗
(m gh.Migration)

Source from the content-addressed store, hash-verified

181}
182
183func (c *cfg) Migrate(m gh.Migration) error {
184 // If there is no version entry we must never have applied a migration, and the following conditional logic
185 // handles the version as an empty string correctly.
186 version := c.Version().UnwrapOrZero()
187
188 // If migration has already occurred then do not attempt to migrate again.
189 if m.PostVersion() == version {
190 return nil
191 }
192
193 // If migration is incompatible with current version then return an error.
194 if m.PreVersion() != version {
195 return fmt.Errorf("failed to migrate as %q pre migration version did not match config version %q", m.PreVersion(), version)
196 }
197
198 if err := m.Do(c.cfg); err != nil {
199 return fmt.Errorf("failed to migrate config: %s", err)
200 }
201
202 c.Set("", versionKey, m.PostVersion())
203
204 // Then write out our migrated config.
205 if err := c.Write(); err != nil {
206 return fmt.Errorf("failed to write config after migration: %s", err)
207 }
208
209 return nil
210}
211
212func (c *cfg) CacheDir() string {
213 return ghConfig.CacheDir()

Calls 8

VersionMethod · 0.95
SetMethod · 0.95
WriteMethod · 0.95
UnwrapOrZeroMethod · 0.80
PostVersionMethod · 0.65
PreVersionMethod · 0.65
ErrorfMethod · 0.65
DoMethod · 0.65