Have got publishing to Netlify

This commit is contained in:
Leon Mika 2025-01-27 15:45:53 +11:00
parent 8e0ffb6c24
commit 7ef6725bdb
23 changed files with 667 additions and 109 deletions

View file

@ -14,10 +14,11 @@ import (
type Provider struct {
stagingDir string
scratchDir string
tmpls *template.Template
}
func New(stagingDir string) (*Provider, error) {
func New(stagingDir, scratchDir string) (*Provider, error) {
ts, err := template.ParseFS(tmpls.FS, "*.tmpl")
if err != nil {
return nil, err
@ -25,6 +26,7 @@ func New(stagingDir string) (*Provider, error) {
return &Provider{
stagingDir: stagingDir,
scratchDir: scratchDir,
tmpls: ts,
}, nil
}
@ -52,6 +54,37 @@ func (p *Provider) NewSite(ctx context.Context, site models.Site) error {
return nil
}
func (p *Provider) PublishSite(ctx context.Context, site models.Site, target models.PublishTarget) (outDir string, clean func(), err error) {
if err := os.MkdirAll(p.scratchDir, 0755); err != nil {
return "", nil, err
}
outDir, err = os.MkdirTemp(p.scratchDir, site.Name+"-*")
if err != nil {
return "", nil, err
}
clean = func() {
os.RemoveAll(outDir)
}
outDir, err = filepath.Abs(outDir)
if err != nil {
return "", nil, err
}
cmd := exec.CommandContext(ctx, "hugo",
"--source", p.SiteStagingDir(site, BaseSiteDir),
"--destination", outDir,
"--baseURL", target.URL)
cmd.Stderr = os.Stderr
cmd.Stdout = os.Stdout
if err := cmd.Run(); err != nil {
return "", clean, err
}
return outDir, clean, nil
}
func (p *Provider) ReconfigureSite(ctx context.Context, site models.Site) error {
// Reconfigure the site
var hugoCfg bytes.Buffer