func configureCreateCredentials()

in cobra/controller/configure.go [147:191]


func configureCreateCredentials(cmd *cobra.Command, mode string) error {
	created, err := aid.HasCreatedAppDir(cmd)
	if err != nil {
		return err
	}

	if created {
		var creds model.Credentials
		if mode == "interactive" {
			creds = view.CreateCredentials(cmd, profile, model.Credentials{})
		} else if mode == "non-interactive" {
			c := aid.GetCredentialProfileFlags(cmd)
			creds.Profiles = append(creds.Profiles, c)
		}

		return dao.SaveCredentials(creds)
	}

	creds, err := dao.GetCredentials()
	if err != nil {
		logrus.Fatalf("unable to get credentials\n%v", err)
	}

	found := false
	for _, p := range creds.Profiles {
		if p.Name == profile {
			found = true
		}
	}

	if found {
		// don't add duplicates
		return fmt.Errorf("profile %s already exist\nprofile names must be unique", profile)
	}

	// append new cred to credentials file
	if mode == "interactive" {
		creds = view.CreateCredentials(cmd, profile, creds)
	} else if mode == "non-interactive" {
		c := aid.GetCredentialProfileFlags(cmd)
		creds.Profiles = append(creds.Profiles, c)
	}

	return dao.SaveCredentials(creds)
}