in ecs-cli/modules/cli/configure/configure.go [39:109]
func Migrate(context *cli.Context) error {
oldConfig := &config.LocalConfig{}
dest, err := config.NewDefaultDestination()
if err != nil {
return errors.Wrap(err, "Error reading old configuration file.")
}
// Check if config file is YAML; if it is, no need to migrate.
// This is needed because the ini library does not throw parse errors
clusterConfig, err := config.ReadClusterFile(config.ConfigFilePath(dest))
if err == nil && clusterConfig.Version != "" {
// Is a new style config file
logrus.Errorf("No need to migrate; found a YAML formatted configuration file at %s", config.ConfigFilePath(dest))
return nil
}
iniReadWriter, err := config.NewINIReadWriter(dest)
if err != nil {
return errors.Wrap(err, "Error reading old configuration file.")
}
if err = iniReadWriter.GetConfig(oldConfig); err != nil {
return errors.Wrap(err, "Error reading old configuration file.")
}
if oldConfig.CFNStackNamePrefix == flags.CFNStackNamePrefixDefaultValue {
// if CFNStackName is default; don't store it.
oldConfig.CFNStackName = ""
} else {
oldConfig.CFNStackName = oldConfig.CFNStackNamePrefix + oldConfig.Cluster
}
if !context.Bool(flags.ForceFlag) {
if err = migrateWarning(*oldConfig); err != nil {
return err
}
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
input := scanner.Text()
if !strings.HasPrefix(input, "y") && !strings.HasPrefix(input, "Y") {
logrus.Info("Aborting Migration.")
return nil
}
}
cluster := &config.Cluster{
Cluster: oldConfig.Cluster,
Region: oldConfig.Region,
CFNStackName: oldConfig.CFNStackName,
ComposeServiceNamePrefix: oldConfig.ComposeServiceNamePrefix,
}
rdwr, err := config.NewReadWriter()
if err != nil {
return errors.Wrap(err, "Error saving cluster configuration")
}
if err = rdwr.SaveCluster(defaultConfigName, cluster); err != nil {
return errors.Wrap(err, "Error saving cluster configuration")
}
if oldConfig.AWSSecretKey != "" {
profile := &config.Profile{
AWSAccessKey: oldConfig.AWSAccessKey,
AWSSecretKey: oldConfig.AWSSecretKey,
}
if err = rdwr.SaveProfile(defaultConfigName, profile); err != nil {
return errors.Wrap(err, "Error saving profile")
}
}
logrus.Info("Migrated ECS CLI configuration.")
return nil
}