mukan-ignite/ignite/config/chain/convert.go
Mukan Erkin Törük c32551b6f7
Some checks failed
Docs Deploy / build_and_deploy (push) Has been cancelled
Generate Docs / cli (push) Has been cancelled
Generate Config Doc / cli (push) Has been cancelled
Go formatting / go-formatting (push) Has been cancelled
Check links / markdown-link-check (push) Has been cancelled
Integration / pre-test (push) Has been cancelled
Integration / test on (push) Has been cancelled
Integration / status (push) Has been cancelled
Lint / Lint Go code (push) Has been cancelled
Test / test (ubuntu-latest) (push) Has been cancelled
refactor: replace all github.com upstream refs with git.cw.tr/mukan-network
2026-05-11 03:36:24 +03:00

42 lines
1.1 KiB
Go

package chain
import (
"io"
"gopkg.in/yaml.v3"
"git.cw.tr/mukan-network/mukan-ignite/ignite/config/chain/version"
)
// Build time check for the latest config version type.
// This is required to be sure that conversion to latest
// doesn't break when a new config version is added without
// updating the references to the previous version.
var _ = Versions[LatestVersion].(*Config)
// ConvertLatest converts a config to the latest version.
func ConvertLatest(c version.Converter) (_ *Config, err error) {
for c.GetVersion() < LatestVersion {
c, err = c.ConvertNext()
if err != nil {
return nil, err
}
}
// Cast to the latest version type.
// This is safe because there is a build time check that makes sure
// the type for the latest config version is the right one here.
return c.(*Config), nil
}
// MigrateLatest migrates a config file to the latest version.
func MigrateLatest(current io.Reader, latest io.Writer) error {
cfg, err := Parse(current)
if err != nil {
return err
}
encoder := yaml.NewEncoder(latest)
encoder.SetIndent(2)
return encoder.Encode(cfg)
}