build-docs.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #!/usr/bin/env node
  2. /**
  3. * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
  4. * For licensing, see LICENSE.md.
  5. */
  6. /* eslint-env node */
  7. 'use strict';
  8. const assertIsInstalled = require( './../utils/assertisinstalled' );
  9. const buildApiDocs = require( './buildapi' );
  10. const skipLiveSnippets = process.argv.includes( '--skip-snippets' );
  11. const skipApi = process.argv.includes( '--skip-api' );
  12. const skipValidation = process.argv.includes( '--skip-validation' );
  13. const production = process.argv.includes( '--production' );
  14. buildDocs();
  15. function buildDocs() {
  16. if ( skipApi ) {
  17. const fs = require( 'fs' );
  18. const apiJsonPath = './docs/api/output.json';
  19. if ( fs.existsSync( apiJsonPath ) ) {
  20. fs.unlinkSync( apiJsonPath );
  21. }
  22. runUmberto( {
  23. skipLiveSnippets,
  24. skipApi,
  25. skipValidation,
  26. production
  27. } ).then( () => process.exit() );
  28. return;
  29. }
  30. // Simple way to reuse existing api/output.json:
  31. // return Promise.resolve()
  32. buildApiDocs()
  33. .then( () => {
  34. return runUmberto( {
  35. skipLiveSnippets,
  36. skipValidation,
  37. production
  38. } );
  39. } );
  40. }
  41. function runUmberto( options ) {
  42. assertIsInstalled( 'umberto' );
  43. const umberto = require( 'umberto' );
  44. return umberto.buildSingleProject( {
  45. configDir: 'docs',
  46. clean: true,
  47. skipLiveSnippets: options.skipLiveSnippets,
  48. skipValidation: options.skipValidation,
  49. snippetOptions: {
  50. production: options.production
  51. },
  52. skipApi: options.skipApi
  53. } );
  54. }