UNPKG

@gravityforms/gulp-tasks

Version:
78 lines (65 loc) 2.24 kB
#!/usr/bin/env node import fs from 'node:fs'; import getConfig from '../../config.js'; import { asyncForEach, copyFolderSync, execShellCommand, extractCommentsToFiles, generateHTMLFiles, trailingSlashIt, } from './util.js'; const { config } = getConfig(); const jsDocConfigNames = config?.generateDocs?.js?.docConfigNames || []; const cssDocConfigs = config?.generateDocs?.css?.configs || []; const generateJSDocs = async () => { if ( ! jsDocConfigNames.length ) { return; } await copyIndexFiles(); const configPath = trailingSlashIt( config.paths.root ); await asyncForEach( jsDocConfigNames, async ( docKey ) => { const docConfigPath = `${ configPath }/jsdoc.${ docKey }.conf.json`; const docConfig = JSON.parse( fs.readFileSync( docConfigPath, 'utf8' ) ); if ( docConfig?.gf_opts?.static_dirs && docConfig?.gf_opts?.output_dir ) { await asyncForEach( docConfig.gf_opts.static_dirs, ( dir ) => { const dirNames = dir.split( '/' ); copyFolderSync( `${ configPath }${ dir }`, `${ configPath }${ trailingSlashIt( docConfig.gf_opts.output_dir ) }${ dirNames[ dirNames.length - 1 ] }`, ); } ); } await execShellCommand( `jsdoc -c '${ configPath }jsdoc.${ docKey }.conf.json'` ); } ); }; const copyIndexFiles = async () => { const jsIndexPageDestDir = config?.generateDocs?.js?.indexPage.destDir || ''; const jsIndexPageFiles = config?.generateDocs?.js?.indexPage.files || []; const jsIndexPageDirs = config?.generateDocs?.js?.indexPage.directories || []; if ( ! jsIndexPageFiles.length && ! jsIndexPageDirs.length ) { return; } fs.mkdir( jsIndexPageDestDir, { recursive: true }, ( err ) => { if ( err ) { throw err; } jsIndexPageFiles.forEach( ( { src, dest } ) => copyFile( src, dest ) ); jsIndexPageDirs.forEach( ( { src, dest } ) => copyFolderSync( src, dest ) ); } ); }; const copyFile = ( source, dest ) => { fs.copyFile( source, dest, ( err ) => { if ( err ) { console.log( 'Error copying ' + source, err ); } } ); }; const init = async () => { await extractCommentsToFiles( cssDocConfigs ); await generateJSDocs(); await generateHTMLFiles( cssDocConfigs ); }; init().then( () => { console.log( 'Generated docs sites for all configs.' ); } );