UNPKG

1.58 kBJavaScriptView Raw
1#!/usr/bin/env node
2
3const program = require( 'commander' );
4const fs = require( 'fs' );
5const fetch = require( 'node-fetch' );
6const nconf = require( 'nconf' );
7const config = require( './lib/config' );
8const banner = require( './lib/banner' );
9const app = require( './lib/app' );
10const clone = require( './commands/clone' );
11const create = require( './commands/create' );
12const list = require( './commands/list' );
13const destroy = require( './commands/destroy' );
14
15( async () => {
16 const noSlabArgs = await !process.argv.slice( 2 ).length;
17 const configExists = await fs.existsSync( app.config );
18
19 if ( !configExists ) {
20 config.create();
21 } else {
22 config.load();
23
24 const response = await fetch( nconf.get( 'data' ) );
25 const data = await response.json();
26
27 if ( noSlabArgs ) {
28 console.log( banner );
29 process.exit( 0 );
30 }
31
32 program.on( 'command:*', () => {
33 console.error( 'Invalid command.' );
34 process.exit( 1 );
35 });
36
37 program
38 .version( app.version )
39 .usage( '<command>' )
40 .description( app.description );
41
42 program
43 .command( 'clone' )
44 .description( 'Locally replicate an existing project.' )
45 .action( () => clone( data ) );
46
47 program
48 .command( 'create' )
49 .description( 'Create a new local project.' )
50 .action( () => create() );
51
52 program
53 .command( 'list' )
54 .description( 'List local slab projects.' )
55 .action( () => list() );
56
57 program
58 .command( 'destroy' )
59 .description( 'Destroy a local project.' )
60 .action( () => destroy() );
61
62 program.parse( process.argv );
63 }
64})();