@@ -19,7 +19,6 @@ const checker = require("npm-license"),
1919 path = require ( "node:path" ) ,
2020 semver = require ( "semver" ) ,
2121 ejs = require ( "ejs" ) ,
22- { CLIEngine } = require ( "./lib/cli-engine" ) ,
2322 builtinRules = require ( "./lib/rules" ) ,
2423 childProcess = require ( "node:child_process" ) ;
2524
@@ -154,24 +153,19 @@ function generateBlogPost(releaseInfo, prereleaseMajorVersion) {
154153
155154/**
156155 * Generates a doc page with formatter result examples
157- * @param {Object } formatterInfo Linting results from each formatter
158156 * @returns {void }
159157 */
160- function generateFormatterExamples ( formatterInfo ) {
161- const output = ejs . render (
162- cat ( "./templates/formatter-examples.md.ejs" ) ,
163- formatterInfo ,
164- ) ;
165- const outputDir = path . join ( DOCS_SRC_DIR , "use/formatters/" ) ,
166- filename = path . join ( outputDir , "index.md" ) ,
167- htmlFilename = path . join ( outputDir , "html-formatter-example.html" ) ;
168-
169- if ( ! test ( "-d" , outputDir ) ) {
170- mkdir ( outputDir ) ;
158+ function generateFormatterExamples ( ) {
159+ // We don't need the stack trace of execFileSync if the command fails.
160+ try {
161+ childProcess . execFileSync (
162+ process . execPath ,
163+ [ "tools/generate-formatter-examples.js" ] ,
164+ { stdio : "inherit" } ,
165+ ) ;
166+ } catch {
167+ exit ( 1 ) ;
171168 }
172-
173- output . to ( filename ) ;
174- formatterInfo . formatterResults . html . result . to ( htmlFilename ) ;
175169}
176170
177171/**
@@ -523,70 +517,6 @@ function getFirstVersionOfDeletion(filePath) {
523517 . sort ( semver . compare ) [ 0 ] ;
524518}
525519
526- /**
527- * Gets linting results from every formatter, based on a hard-coded snippet and config
528- * @returns {Object } Output from each formatter
529- */
530- function getFormatterResults ( ) {
531- const util = require ( "node:util" ) ;
532- const formattersMetadata = require ( "./lib/cli-engine/formatters/formatters-meta.json" ) ;
533-
534- const formatterFiles = fs
535- . readdirSync ( "./lib/cli-engine/formatters/" )
536- . filter ( fileName => ! fileName . includes ( "formatters-meta.json" ) ) ,
537- rules = {
538- "no-else-return" : "warn" ,
539- indent : [ "warn" , 4 ] ,
540- "space-unary-ops" : "error" ,
541- semi : [ "warn" , "always" ] ,
542- "consistent-return" : "error" ,
543- } ,
544- cli = new CLIEngine ( {
545- useEslintrc : false ,
546- baseConfig : { extends : "eslint:recommended" } ,
547- rules,
548- } ) ,
549- codeString = [
550- "function addOne(i) {" ,
551- " if (i != NaN) {" ,
552- " return i ++" ,
553- " } else {" ,
554- " return" ,
555- " }" ,
556- "};" ,
557- ] . join ( "\n" ) ,
558- rawMessages = cli . executeOnText ( codeString , "fullOfProblems.js" , true ) ,
559- rulesMap = cli . getRules ( ) ,
560- rulesMeta = { } ;
561-
562- Object . keys ( rules ) . forEach ( ruleId => {
563- rulesMeta [ ruleId ] = rulesMap . get ( ruleId ) . meta ;
564- } ) ;
565-
566- return formatterFiles . reduce (
567- ( data , filename ) => {
568- const fileExt = path . extname ( filename ) ,
569- name = path . basename ( filename , fileExt ) ;
570-
571- if ( fileExt === ".js" ) {
572- const formattedOutput = cli . getFormatter ( name ) (
573- rawMessages . results ,
574- { rulesMeta } ,
575- ) ;
576-
577- data . formatterResults [ name ] = {
578- result : util . stripVTControlCharacters ( formattedOutput ) ,
579- description : formattersMetadata . find (
580- formatter => formatter . name === name ,
581- ) . description ,
582- } ;
583- }
584- return data ;
585- } ,
586- { formatterResults : { } } ,
587- ) ;
588- }
589-
590520/**
591521 * Gets a path to an executable in node_modules/.bin
592522 * @param {string } command The executable name
@@ -745,7 +675,7 @@ target.gensite = function () {
745675
746676 // 3. Create Example Formatter Output Page
747677 echo ( "> Creating the formatter examples (Step 3)" ) ;
748- generateFormatterExamples ( getFormatterResults ( ) ) ;
678+ generateFormatterExamples ( ) ;
749679
750680 echo ( "Done generating documentation" ) ;
751681} ;
0 commit comments