44const fs = require ( 'fs' )
55const path = require ( 'path' )
66const minimist = require ( 'minimist' )
7- const { init } = require ( 'datahub-client' ) . init
7+ const { Init } = require ( 'datahub-client' )
88
99// Ours
1010const { customMarked} = require ( '../lib/utils/tools.js' )
11+ const info = require ( '../lib/utils/output/info.js' )
1112
1213const argv = minimist ( process . argv . slice ( 2 ) , {
1314 string : [ 'init' ] ,
14- boolean : [ 'help' ] ,
15+ boolean : [ 'help' , 'interactive' ] ,
1516 alias : {
16- help : 'h'
17+ help : 'h' ,
18+ interactive : 'i'
1719 }
1820} )
1921
@@ -27,4 +29,40 @@ if (argv.help) {
2729 process . exit ( 0 )
2830}
2931
30- init ( )
32+
33+ const checkDpIsThere = ( path_ = process . cwd ( ) ) => {
34+ const files = fs . readdirSync ( path_ )
35+ return files . indexOf ( 'datapackage.json' ) > - 1
36+ }
37+
38+
39+ ( async ( ) => {
40+
41+ const initializer = new Init ( { interactive : argv . interactive } )
42+ // Listen for events:
43+ initializer . on ( 'message' , ( message ) => {
44+ if ( message . constructor . name === 'String' ) {
45+ info ( message )
46+ } else {
47+ info ( message . name + ': ' + message . status )
48+ }
49+ } )
50+
51+ // Get a descriptor generated:
52+ let descriptor = { }
53+ if ( checkDpIsThere ( ) ) {
54+ descriptor = await initializer . updateDataset ( )
55+ } else {
56+ descriptor = await initializer . createDataset ( )
57+ }
58+ // Now save the generated descriptor:
59+ const content = JSON . stringify ( descriptor , null , 2 )
60+ fs . writeFile ( './datapackage.json' , content , 'utf8' , err => {
61+ if ( err ) {
62+ throw new Error ( err )
63+ }
64+ const cwd = path . join ( process . cwd ( ) , 'datapackage.json' )
65+ info ( `datapackage.json file is saved in ${ cwd } ` )
66+ } )
67+
68+ } ) ( )
0 commit comments