@@ -11,6 +11,7 @@ const os = require('os');
11
11
const chalk = require ( 'chalk' ) ;
12
12
const spawn = require ( 'cross-spawn' ) ;
13
13
const crypto = require ( 'crypto' ) ;
14
+ const inquirer = require ( 'inquirer' ) ;
14
15
15
16
const Config = require ( './Config' ) ;
16
17
const templates = require ( './templates' ) ;
@@ -52,15 +53,9 @@ const logStage = (stage) => {
52
53
const createApp = async ( projectName , options ) => {
53
54
const template = options . template || 'express' ;
54
55
const createAppOptions = { projectName, dbType : options . dbType , template } ;
56
+
55
57
event ( 'Create App' , createAppOptions ) ;
56
- if ( ! options . dbType ) {
57
- await displayError ( [
58
- 'You must pass an application name and a database type (-d).' ,
59
- '' ,
60
- 'Example: ' ,
61
- ' $ cubejs create hello-world -d postgres'
62
- ] , createAppOptions ) ;
63
- }
58
+
64
59
if ( await fs . pathExists ( projectName ) ) {
65
60
await displayError (
66
61
`We cannot create a project called ${ chalk . green (
@@ -91,6 +86,18 @@ const createApp = async (projectName, options) => {
91
86
logStage ( 'Installing server dependencies' ) ;
92
87
await npmInstall ( [ '@cubejs-backend/server' ] ) ;
93
88
89
+ if ( ! options . dbType ) {
90
+ const Drivers = await requireFromPackage ( '@cubejs-backend/server-core/core/DriverDependencies.js' ) ;
91
+ const prompt = await inquirer . prompt ( [ {
92
+ type : 'list' ,
93
+ name : 'dbType' ,
94
+ message : 'Select database' ,
95
+ choices : Object . keys ( Drivers )
96
+ } ] ) ;
97
+
98
+ options . dbType = prompt . dbType ;
99
+ }
100
+
94
101
logStage ( 'Installing DB driver dependencies' ) ;
95
102
const CubejsServer = await requireFromPackage ( '@cubejs-backend/server' ) ;
96
103
let driverDependencies = CubejsServer . driverDependencies ( options . dbType ) ;
0 commit comments