UNPKG

gojs

Version:

Interactive diagrams, charts, and graphs, such as trees, flowcharts, orgcharts, UML, BPMN, or business diagrams

105 lines (98 loc) 3.41 kB
const child_process = require('child_process'); const fs = require('fs'); const readline = require('readline'); const stream = require('stream'); const mkdirp = require('mkdirp'); const path = require('path'); const rimraf = require('rimraf'); const TYPEDOC_CMD = path.join('..', '..', 'main', 'buildTS', 'typedoc', 'bin', 'typedoc'); console.log("Generating API Documentation:"); // Part 1: Clean existing documentation console.log("Removing existing docs..."); rimraf.sync('./api'); // Part 2: Build the custom theme console.log("Building custom theme..."); try { if (!fs.existsSync('../../main/buildTS/typedoc-default-themes/node_modules')) { child_process.execSync("npm install", { cwd: "../../main/buildTS/typedoc-default-themes", stdio: [0,1,2] }); } else { child_process.execSync("npm run prepublish", { cwd: "../../main/buildTS/typedoc-default-themes", stdio: [0,1,2] }); } } catch (e) {} // Part 2: Move bootstrap and api.js to /out/ console.log("Moving assets to out folder..."); try { if (!fs.existsSync('./assets/css/bootstrap.min.css')) { mkdirp('./assets/css', function(err) { if (err) { console.error(err); } else { fs.writeFileSync('./assets/css/bootstrap.min.css', fs.readFileSync('../assets/css/bootstrap.min.css')); } }); } if (!fs.existsSync('./assets/js/bootstrap.min.js')) { mkdirp('./api/assets/js', function(err) { if (err) { console.error(err); } else { fs.writeFileSync('./assets/js/bootstrap.min.js', fs.readFileSync('../assets/js/bootstrap.min.js')); } }); } if (!fs.existsSync('./assets/js/api.js')) { mkdirp('./assets/js', function(err) { if (err) { console.error(err); } else { fs.writeFileSync('./assets/js/api.js', fs.readFileSync('../assets/js/api.js')); } }); } } catch (e) { console.log(e); } // Part 3: Run typedoc console.log("Executing typedoc command..."); try { if (!fs.existsSync('../../main/buildTS/typedoc/dist')) { child_process.execSync("npm install", { cwd: "../../main/buildTS/typedoc", stdio: [0,1,2] }); } child_process.execSync('node ' + TYPEDOC_CMD + ' --options typedoc.json' + ' --tsconfig tsconfig.typedoc.json', { stdio: [0,1,2] } ); } catch (e) {} // Part 4: Build webpack bundle console.log("Building gcs.js"); try { child_process.execSync("tsc"); child_process.execSync("webpack"); } catch (e) {} console.log("Building gcs.d.ts"); try { // Concat all d.ts files in src into one big gcs.d.ts file var files = fs.readdirSync(__dirname + '/src'); var dtsFileData = ""; for (var i in files) { var file = files[i]; if (file.includes(".d.ts")) { var fileData = ''; var lines = fs.readFileSync(__dirname + '/src/' + file, 'utf-8').split('\n'); for (var j in lines) { var line = lines[j]; if (line.substr(0, 6) !== "import") { fileData += line; } } dtsFileData += fileData; } } fs.writeFileSync(__dirname + '/lib/' + 'gcs.d.ts', dtsFileData); // Remove all individual d.ts files in src for (var i in files) { var file = files[i]; if (file.includes('.d.ts') || file.includes('.js')) { fs.unlink(__dirname + '/src/' + file); } } } catch (e) {console.log(e);}