dartsass: Fix nilpointer on Close when Dart Sass isn't installed

Fixes #13076
This commit is contained in:
Bjørn Erik Pedersen 2024-11-21 09:48:54 +01:00
parent 8fcd3c1487
commit 8d017a60fb
2 changed files with 10 additions and 7 deletions

View file

@ -70,7 +70,7 @@ hello:
other: "Bonjour" other: "Bonjour"
-- layouts/index.html -- -- layouts/index.html --
{{ $options := dict "inlineImports" true }} {{ $options := dict "inlineImports" true }}
{{ $styles := resources.Get "css/styles.css" | resources.PostCSS $options }} {{ $styles := resources.Get "css/styles.css" | css.PostCSS $options }}
Styles RelPermalink: {{ $styles.RelPermalink }} Styles RelPermalink: {{ $styles.RelPermalink }}
{{ $cssContent := $styles.Content }} {{ $cssContent := $styles.Content }}
Styles Content: Len: {{ len $styles.Content }}| Styles Content: Len: {{ len $styles.Content }}|

View file

@ -44,7 +44,7 @@ const dartSassStdinPrefix = "hugostdin:"
func New(fs *filesystems.SourceFilesystem, rs *resources.Spec) (*Client, error) { func New(fs *filesystems.SourceFilesystem, rs *resources.Spec) (*Client, error) {
if !Supports() { if !Supports() {
return &Client{dartSassNotAvailable: true}, nil return &Client{}, nil
} }
if hugo.DartSassBinaryName == "" { if hugo.DartSassBinaryName == "" {
@ -89,22 +89,25 @@ func New(fs *filesystems.SourceFilesystem, rs *resources.Spec) (*Client, error)
} }
type Client struct { type Client struct {
dartSassNotAvailable bool rs *resources.Spec
rs *resources.Spec sfs *filesystems.SourceFilesystem
sfs *filesystems.SourceFilesystem workFs afero.Fs
workFs afero.Fs
// This may be nil if Dart Sass is not available.
transpiler *godartsass.Transpiler transpiler *godartsass.Transpiler
} }
func (c *Client) ToCSS(res resources.ResourceTransformer, args map[string]any) (resource.Resource, error) { func (c *Client) ToCSS(res resources.ResourceTransformer, args map[string]any) (resource.Resource, error) {
if c.dartSassNotAvailable { if c.transpiler == nil {
return res.Transform(resources.NewFeatureNotAvailableTransformer(transformationName, args)) return res.Transform(resources.NewFeatureNotAvailableTransformer(transformationName, args))
} }
return res.Transform(&transform{c: c, optsm: args}) return res.Transform(&transform{c: c, optsm: args})
} }
func (c *Client) Close() error { func (c *Client) Close() error {
if c.transpiler == nil {
return nil
}
return c.transpiler.Close() return c.transpiler.Close()
} }