func Migrate()

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
}