@@ -6,16 +6,20 @@ import (
66 "github.com/github/gh-aw/pkg/logger"
77)
88
9+ type migrateEngineFieldToTopLevelOptions struct {
10+ engineField string
11+ targetTopLevelField string
12+ preserveTopLevelFields []string
13+ log * logger.Logger
14+ skipInlineMessage string
15+ removedMessage string
16+ migratedMessage string
17+ }
18+
919func migrateEngineFieldToTopLevel (
1020 content string ,
1121 frontmatter map [string ]any ,
12- engineField string ,
13- targetTopLevelField string ,
14- preserveTopLevelFields []string ,
15- log * logger.Logger ,
16- skipInlineMessage string ,
17- removedMessage string ,
18- migratedMessage string ,
22+ opts migrateEngineFieldToTopLevelOptions ,
1923) (string , bool , error ) {
2024 engineValue , hasEngine := frontmatter ["engine" ]
2125 if ! hasEngine {
@@ -25,12 +29,12 @@ func migrateEngineFieldToTopLevel(
2529 if ! ok {
2630 return content , false , nil
2731 }
28- if _ , hasEngineField := engineMap [engineField ]; ! hasEngineField {
32+ if _ , hasEngineField := engineMap [opts . engineField ]; ! hasEngineField {
2933 return content , false , nil
3034 }
3135
3236 hasPreservedTopLevelField := false
33- for _ , field := range preserveTopLevelFields {
37+ for _ , field := range opts . preserveTopLevelFields {
3438 if _ , exists := frontmatter [field ]; exists {
3539 hasPreservedTopLevelField = true
3640 break
@@ -44,9 +48,9 @@ func migrateEngineFieldToTopLevel(
4448 continue
4549 }
4650 inlineValue := strings .TrimSpace (strings .TrimPrefix (trimmed , "engine:" ))
47- if strings .HasPrefix (inlineValue , "{" ) && strings .Contains (inlineValue , engineField + ":" ) {
48- if log != nil {
49- log .Print (skipInlineMessage )
51+ if strings .HasPrefix (inlineValue , "{" ) && strings .Contains (inlineValue , opts . engineField + ":" ) {
52+ if opts . log != nil {
53+ opts . log .Print (opts . skipInlineMessage )
5054 }
5155 return lines , false
5256 }
@@ -55,7 +59,7 @@ func migrateEngineFieldToTopLevel(
5559 fieldSuffix := ""
5660 inEngineBlock := false
5761 engineIndent := ""
58- engineFieldPrefix := engineField + ":"
62+ engineFieldPrefix := opts . engineField + ":"
5963 for _ , line := range lines {
6064 trimmed := strings .TrimSpace (line )
6165 if isTopLevelKey (line ) && strings .HasPrefix (trimmed , "engine:" ) {
@@ -75,14 +79,14 @@ func migrateEngineFieldToTopLevel(
7579 }
7680 }
7781
78- result , removed := removeFieldFromBlock (lines , engineField , "engine" )
82+ result , removed := removeFieldFromBlock (lines , opts . engineField , "engine" )
7983 if ! removed {
8084 return lines , false
8185 }
8286
8387 if hasPreservedTopLevelField {
84- if log != nil {
85- log .Print (removedMessage )
88+ if opts . log != nil {
89+ opts . log .Print (opts . removedMessage )
8690 }
8791 return result , true
8892 }
@@ -95,14 +99,14 @@ func migrateEngineFieldToTopLevel(
9599 }
96100 }
97101
98- topLevelLine := targetTopLevelField + ":" + fieldSuffix
102+ topLevelLine := opts . targetTopLevelField + ":" + fieldSuffix
99103 withTopLevel := make ([]string , 0 , len (result )+ 1 )
100104 withTopLevel = append (withTopLevel , result [:insertAt ]... )
101105 withTopLevel = append (withTopLevel , topLevelLine )
102106 withTopLevel = append (withTopLevel , result [insertAt :]... )
103107
104- if log != nil {
105- log .Print (migratedMessage )
108+ if opts . log != nil {
109+ opts . log .Print (opts . migratedMessage )
106110 }
107111 return withTopLevel , true
108112 })
0 commit comments