app/app.go
func (app *App) SetEnvs(setEnvs bind.SetEnvArgs) error {
	if len(setEnvs.Envs) == 0 {
		return nil
	}
	for _, env := range setEnvs.Envs {
		err := validateEnv(env.Name)
		if err != nil {
			return err
		}
	}
	if setEnvs.Writer != nil {
		fmt.Fprintf(setEnvs.Writer, "---- Setting %d new environment variables ----\n", len(setEnvs.Envs))
	}
	for _, env := range setEnvs.Envs {
		app.setEnv(env)
	}
	conn, err := db.Conn()
	if err != nil {
		return err
	}
	defer conn.Close()
	err = conn.Apps().Update(bson.M{"name": app.Name}, bson.M{"$set": bson.M{"env": app.Env}})
	if err != nil {
		return err
	}
	if setEnvs.ShouldRestart {
		return app.restartIfUnits(setEnvs.Writer)
	}
	return nil
}
func (app *App) SetEnvs(setEnvs bind.SetEnvArgs) error {
	if len(setEnvs.Envs) == 0 {
		return nil
	}
	for _, env := range setEnvs.Envs {
		err := validateEnv(env.Name)
		if err != nil {
			return err
		}
	}
	if setEnvs.Writer != nil {
		fmt.Fprintf(setEnvs.Writer, "---- Setting %d new environment variables ----\n", len(setEnvs.Envs))
	}
	for _, env := range setEnvs.Envs {
		app.setEnv(env)
	}
	conn, err := db.Conn()
	if err != nil {
		return err
	}
	defer conn.Close()
	err = conn.Apps().Update(bson.M{"name": app.Name}, bson.M{"$set": bson.M{"env": app.Env}})
	if err != nil {
		return err
	}
	if setEnvs.ShouldRestart {
		return app.restartIfUnits(setEnvs.Writer)
	}
	return nil
}
// SetEnvs saves a list of environment variables in the app.