source/index.js
- #! /usr/bin/env node
-
- import '@babel/polyfill';
-
- import Commander from 'commander';
-
- import { spawn } from '@tech_query/node-toolkit';
-
- import { folderOf } from './utility';
-
- import { createCell, createRouter, pack } from './command';
-
- import PuppeteerBrowser from 'puppeteer-browser';
-
- import config from '../package.json';
-
-
- const meta = JSON.parse( config ), folder = folderOf();
-
-
- async function safePack(exit) {
- try {
- await pack( folder.lib );
-
- } catch (error) {
-
- console.error( error );
-
- if (exit === true) process.exit( 1 );
- }
- }
-
- Commander
- .name('web-cell')
- .version( meta.version )
- .description( meta.description )
- .command('boot [path] [options]', 'Boot a directory as a WebCell project')
- .on(
- 'command:boot',
- parameter => spawn(
- 'npm', ['init', 'web-cell'].concat( parameter ), {stdio: 'inherit'}
- )
- )
- .command(
- 'new <name> [attributes]',
- `Create a Component from Code template
- (Attributes should be separated by commas)`
- )
- .on('command:new', ([name, keys]) =>
- createCell(name, folder.lib, (keys || '').split(','), true)
- )
- .command(
- 'new-router <name> [pages]',
- `Create a Router from Code template
- (Pages should be separated by commas)`
- )
- .on(
- 'command:new-router',
- ([name, page]) => createRouter(name, folder.lib, (page || '').split(','))
- )
- .command('pack', 'Bundle components to a package with JS modules in it')
- .on('command:pack', safePack.bind(null, true))
- .command('preview', 'Real-time preview during development')
- .on('command:preview', async () => {
-
- await safePack( true );
-
- await PuppeteerBrowser.getPage(
- '.', folder.test || 'test/', safePack
- );
- })
- .parse( process.argv );