Home Reference Source Test

source/index.js

  1. #! /usr/bin/env node
  2.  
  3. import '@babel/polyfill';
  4.  
  5. import Commander from 'commander';
  6.  
  7. import { spawn } from '@tech_query/node-toolkit';
  8.  
  9. import { folderOf } from './utility';
  10.  
  11. import { createCell, createRouter, pack } from './command';
  12.  
  13. import PuppeteerBrowser from 'puppeteer-browser';
  14.  
  15. import config from '../package.json';
  16.  
  17.  
  18. const meta = JSON.parse( config ), folder = folderOf();
  19.  
  20.  
  21. async function safePack(exit) {
  22. try {
  23. await pack( folder.lib );
  24.  
  25. } catch (error) {
  26.  
  27. console.error( error );
  28.  
  29. if (exit === true) process.exit( 1 );
  30. }
  31. }
  32.  
  33. Commander
  34. .name('web-cell')
  35. .version( meta.version )
  36. .description( meta.description )
  37. .command('boot [path] [options]', 'Boot a directory as a WebCell project')
  38. .on(
  39. 'command:boot',
  40. parameter => spawn(
  41. 'npm', ['init', 'web-cell'].concat( parameter ), {stdio: 'inherit'}
  42. )
  43. )
  44. .command(
  45. 'new <name> [attributes]',
  46. `Create a Component from Code template
  47. (Attributes should be separated by commas)`
  48. )
  49. .on('command:new', ([name, keys]) =>
  50. createCell(name, folder.lib, (keys || '').split(','), true)
  51. )
  52. .command(
  53. 'new-router <name> [pages]',
  54. `Create a Router from Code template
  55. (Pages should be separated by commas)`
  56. )
  57. .on(
  58. 'command:new-router',
  59. ([name, page]) => createRouter(name, folder.lib, (page || '').split(','))
  60. )
  61. .command('pack', 'Bundle components to a package with JS modules in it')
  62. .on('command:pack', safePack.bind(null, true))
  63. .command('preview', 'Real-time preview during development')
  64. .on('command:preview', async () => {
  65.  
  66. await safePack( true );
  67.  
  68. await PuppeteerBrowser.getPage(
  69. '.', folder.test || 'test/', safePack
  70. );
  71. })
  72. .parse( process.argv );