1 | #!/usr/bin/env node
|
2 |
|
3 | const program = require( 'commander' );
|
4 | const fs = require( 'fs' );
|
5 | const fetch = require( 'node-fetch' );
|
6 | const nconf = require( 'nconf' );
|
7 | const config = require( './lib/config' );
|
8 | const banner = require( './lib/banner' );
|
9 | const app = require( './lib/app' );
|
10 | const clone = require( './commands/clone' );
|
11 | const create = require( './commands/create' );
|
12 | const list = require( './commands/list' );
|
13 | const 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 | })();
|