# README
package generator
import ( "context" "html/template" "io/ioutil" "os" "path/filepath"
"github.com/swipe-io/swipe/pkg/domain/model"
"github.com/swipe-io/swipe/pkg/writer"
)
const defaultTemplate = `# {{.ServiceName}} : A short description of the service. {{ .GIT.LastTag.Name }}
A complete description of the service and what it does.
Example
go run ./cmd/service
Docs
ToDo.
Contributing
ToDo.
Contributors
ToDo.
Author
ToDo.
Changelog
ToDo.
Versions
{{range $index, $tag := .GIT.Tags -}} {{if gt $index 0 -}}, {{end -}} {{$tag.Name}} {{end -}} `
type readme struct { writer.BaseWriter info model.GenerateInfo o model.ServiceOption outputDir string markdownOutput string t *template.Template }
func (g *readme) Prepare(ctx context.Context) (err error) { g.outputDir, err = filepath.Abs(filepath.Join(g.info.BasePath, g.o.Readme.OutputDir)) if err != nil { return err } g.markdownOutput, err = filepath.Abs(filepath.Join(g.info.BasePath, g.o.Transport.MarkdownDoc.OutputDir)) if err != nil { return err } var templatePath string if templatePath == "" { templatePath, err = filepath.Abs(filepath.Join(g.info.BasePath, ".swipe")) if err != nil { return err } if _, err := os.Stat(templatePath); err != nil { if err = os.MkdirAll(templatePath, 0755); err != nil { return err } } } else { templatePath, err = filepath.Abs(filepath.Join(g.info.BasePath, g.o.Readme.TemplatePath)) if err != nil { return err } } templateFilepath := filepath.Join(templatePath, "README.md.tpl") if _, err := os.Stat(templateFilepath); err != nil { err = ioutil.WriteFile(templateFilepath, []byte(defaultTemplate), 0755) if err != nil { return err } } data, err := ioutil.ReadFile(templateFilepath) if err != nil { return err } t, err := template.New("readme").Parse(string(data)) if err != nil { return err } g.t = t return nil }
func (g *readme) Process(ctx context.Context) (err error) { return g.t.Execute(g, map[string]interface{}{ "ID": g.o.RawID, "ServiceName": g.o.ID, "BasePkgPath": g.info.BasePkgPath, "GIT": map[string]interface{}{ "Tags": g.info.GitTags, }, }) }
func (g *readme) PkgName() string { return "" }
func (g *readme) OutputDir() string { return g.outputDir }
func (g *readme) Filename() string { return "README.md" }
func NewReadme(info model.GenerateInfo, o model.ServiceOption) Generator { return &readme{info: info, o: o} }