@@ -39,82 +39,6 @@ if (workflowFiles.length === 0) {
3939 process . exit ( 1 ) ;
4040}
4141
42- /**
43- * Simple YAML parser for basic validation
44- * This is a basic implementation - in production you might want to use a proper YAML library
45- */
46- function parseYAML ( yamlString ) {
47- const lines = yamlString . split ( '\n' ) ;
48- const result = { } ;
49- const stack = [ result ] ;
50- const indentStack = [ 0 ] ;
51-
52- for ( let i = 0 ; i < lines . length ; i ++ ) {
53- const line = lines [ i ] ;
54- const trimmedLine = line . trim ( ) ;
55-
56- if ( trimmedLine === '' || trimmedLine . startsWith ( '#' ) ) {
57- continue ;
58- }
59-
60- const indent = line . length - line . trimStart ( ) . length ;
61-
62- // Find the appropriate level in the stack
63- while ( indent <= indentStack [ indentStack . length - 1 ] && stack . length > 1 ) {
64- stack . pop ( ) ;
65- indentStack . pop ( ) ;
66- }
67-
68- if ( indent > indentStack [ indentStack . length - 1 ] ) {
69- // New nested level
70- const lastKey = Object . keys ( stack [ stack . length - 1 ] ) . pop ( ) ;
71- if ( lastKey ) {
72- stack [ stack . length - 1 ] [ lastKey ] = { } ;
73- stack . push ( stack [ stack . length - 1 ] [ lastKey ] ) ;
74- indentStack . push ( indent ) ;
75- }
76- }
77-
78- // Parse key-value pair
79- const colonIndex = trimmedLine . indexOf ( ':' ) ;
80- if ( colonIndex !== - 1 ) {
81- const key = trimmedLine . substring ( 0 , colonIndex ) . trim ( ) ;
82- const value = trimmedLine . substring ( colonIndex + 1 ) . trim ( ) ;
83-
84- if ( value === '' ) {
85- // This is a key with nested content
86- stack [ stack . length - 1 ] [ key ] = { } ;
87- stack . push ( stack [ stack . length - 1 ] [ key ] ) ;
88- indentStack . push ( indent ) ;
89- } else {
90- // This is a key-value pair
91- stack [ stack . length - 1 ] [ key ] = value ;
92- }
93- }
94- }
95-
96- return result ;
97- }
98-
99- /**
100- * Convert YAML back to string
101- */
102- function stringifyYAML ( obj , indent = 0 ) {
103- const spaces = ' ' . repeat ( indent ) ;
104- let result = '' ;
105-
106- for ( const [ key , value ] of Object . entries ( obj ) ) {
107- if ( typeof value === 'object' && value !== null && Object . keys ( value ) . length > 0 ) {
108- result += `${ spaces } ${ key } :\n` ;
109- result += stringifyYAML ( value , indent + 1 ) ;
110- } else {
111- result += `${ spaces } ${ key } : ${ value } \n` ;
112- }
113- }
114-
115- return result ;
116- }
117-
11842/**
11943 * Check if actions/setup-dotnet is already included
12044 */
@@ -191,17 +115,6 @@ async function processWorkflow(filePath) {
191115 // Remove nuget/setup-nuget@v1 action as it's no longer needed
192116 content = content . replace ( / - u s e s : n u g e t \/ s e t u p - n u g e t @ v 1 \n / g, '' ) ;
193117
194- // Validate YAML syntax
195- try {
196- parseYAML ( content ) ;
197- console . log ( '✅ YAML syntax validation passed' ) ;
198- } catch ( error ) {
199- console . error ( '❌ YAML syntax validation failed:' , error . message ) ;
200- // Restore from backup
201- content = readFileSync ( `${ filePath } .bak` , 'utf8' ) ;
202- console . log ( 'Restored original content due to YAML syntax error' ) ;
203- }
204-
205118 // Check for changes
206119 if ( content !== originalContent ) {
207120 console . log ( `Modified ${ filePath } to use dotnet CLI instead of nuget.exe` ) ;
@@ -219,17 +132,8 @@ async function processWorkflow(filePath) {
219132 // Add actions/setup-dotnet if not present
220133 if ( ! hasSetupDotnet ( content ) ) {
221134 content = addSetupDotnet ( content ) ;
222-
223- // Validate YAML syntax again after adding setup-dotnet
224- try {
225- parseYAML ( content ) ;
226- console . log ( '✅ YAML syntax validation passed after adding setup-dotnet' ) ;
227- writeFileSync ( filePath , content ) ;
228- console . log ( `Added actions/setup-dotnet@v4 to ${ filePath } ` ) ;
229- } catch ( error ) {
230- console . error ( '❌ YAML syntax validation failed after adding setup-dotnet:' , error . message ) ;
231- console . log ( 'Skipping setup-dotnet addition due to YAML syntax error' ) ;
232- }
135+ writeFileSync ( filePath , content ) ;
136+ console . log ( `Added actions/setup-dotnet@v4 to ${ filePath } ` ) ;
233137 }
234138}
235139
0 commit comments