52 lines
1.1 KiB
Go
52 lines
1.1 KiB
Go
package recipe
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"os"
|
|
"path"
|
|
"strings"
|
|
|
|
"coopcloud.tech/abra/pkg/envfile"
|
|
"coopcloud.tech/abra/pkg/formatter"
|
|
"coopcloud.tech/abra/pkg/i18n"
|
|
)
|
|
|
|
func (r Recipe) SampleEnv() (map[string]string, error) {
|
|
sampleEnv, err := envfile.ReadEnv(r.SampleEnvPath)
|
|
if err != nil {
|
|
return sampleEnv, errors.New(i18n.G("unable to discover .env.sample for %s", r.Name))
|
|
}
|
|
return sampleEnv, nil
|
|
}
|
|
|
|
// GetReleaseNotes prints release notes for the recipe version
|
|
func (r Recipe) GetReleaseNotes(version, appDomain string) (string, error) {
|
|
if version == "" {
|
|
return "", nil
|
|
}
|
|
|
|
fpath := path.Join(r.Dir, "release", version)
|
|
|
|
if _, err := os.Stat(fpath); !os.IsNotExist(err) {
|
|
releaseNotes, err := os.ReadFile(fpath)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
title := formatter.BoldStyle.Render(i18n.G("%s release notes:", version))
|
|
withTitle := fmt.Sprintf("%s\n%s\n", title, releaseNotes)
|
|
|
|
templatedDomain := strings.Replace(
|
|
withTitle,
|
|
fmt.Sprintf("%s.example.com", r.Name),
|
|
appDomain,
|
|
-1,
|
|
)
|
|
|
|
return templatedDomain, nil
|
|
}
|
|
|
|
return "", nil
|
|
}
|