Repository: gohugoio/hugo (language: go)

Issue:
commands: Validate style argument passed to hugo gen chromastyles
Reference: <https://discourse.gohugo.io/t/github-light-chroma-styles-are-broken/53438/2>

Today, if you pass an invalid style we use Chroma's hardcoded fallback ("swapoff") but we don't notify the user. 


Discussion / hints:

Fix patch:
diff --git a/commands/gen.go b/commands/gen.go
index 67aa7a89665..3cb05927d43 100644
--- a/commands/gen.go
+++ b/commands/gen.go
@@ -21,6 +21,7 @@ import (
 	"os"
 	"path"
 	"path/filepath"
+	"slices"
 	"strings"
 
 	"github.com/alecthomas/chroma/v2"
@@ -60,6 +61,10 @@ func newGenCommand() *genCommand {
 See https://xyproto.github.io/splash/docs/all.html for a preview of the available styles`,
 
 			run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error {
+				style = strings.ToLower(style)
+				if !slices.Contains(styles.Names(), style) {
+					return fmt.Errorf("invalid style: %s", style)
+				}
 				builder := styles.Get(style).Builder()
 				if highlightStyle != "" {
 					builder.Add(chroma.LineHighlight, highlightStyle)


Test patch:
diff --git a/testscripts/commands/gen.txt b/testscripts/commands/gen.txt
index 092b4e12920..2d57c8ec0ad 100644
--- a/testscripts/commands/gen.txt
+++ b/testscripts/commands/gen.txt
@@ -11,4 +11,6 @@ hugo gen man --dir manpages
 hugo gen chromastyles -h
 stdout 'Generate CSS stylesheet for the Chroma code highlighter'
 hugo gen chromastyles --style monokai
-stdout '/\* LineHighlight \*/ \.chroma \.hl \{ background-color:#3c3d38 \}'
+stdout 'Generated using: hugo gen chromastyles --style monokai'
+! hugo gen chromastyles --style __invalid_style__
+stderr 'invalid style: __invalid_style__'