]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
dartsass: Fix nilpointer on Close when Dart Sass isn't installed
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Thu, 21 Nov 2024 08:48:54 +0000 (09:48 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Thu, 21 Nov 2024 19:00:36 +0000 (20:00 +0100)
Fixes #13076

resources/resource_transformers/cssjs/postcss_integration_test.go
resources/resource_transformers/tocss/dartsass/client.go

index e8f52326cf3ccdd5337f9087d2c723fcc187ad07..8f2132789ad8f622dafbaf18535234043648e227 100644 (file)
@@ -70,7 +70,7 @@ hello:
    other: "Bonjour"
 -- layouts/index.html --
 {{ $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 }}
 {{ $cssContent := $styles.Content }}
 Styles Content: Len: {{ len $styles.Content }}|
index 470c18b97df10fcd42410730b5a69d2409d913ed..4ab958c01c2a50da52c59ac1d25554e73d864594 100644 (file)
@@ -44,7 +44,7 @@ const dartSassStdinPrefix = "hugostdin:"
 
 func New(fs *filesystems.SourceFilesystem, rs *resources.Spec) (*Client, error) {
        if !Supports() {
-               return &Client{dartSassNotAvailable: true}, nil
+               return &Client{}, nil
        }
 
        if hugo.DartSassBinaryName == "" {
@@ -89,22 +89,25 @@ func New(fs *filesystems.SourceFilesystem, rs *resources.Spec) (*Client, error)
 }
 
 type Client struct {
-       dartSassNotAvailable bool
-       rs                   *resources.Spec
-       sfs                  *filesystems.SourceFilesystem
-       workFs               afero.Fs
+       rs     *resources.Spec
+       sfs    *filesystems.SourceFilesystem
+       workFs afero.Fs
 
+       // This may be nil if Dart Sass is not available.
        transpiler *godartsass.Transpiler
 }
 
 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(&transform{c: c, optsm: args})
 }
 
 func (c *Client) Close() error {
+       if c.transpiler == nil {
+               return nil
+       }
        return c.transpiler.Close()
 }