@@ -8,25 +8,32 @@ import { queueTask, runTasks } from '../utils/tasks.js';
88import { removeFiles } from '../utils/file.js' ;
99import { replaceAll } from '../utils/replace.js' ;
1010import { exec , withDir } from '../utils/shell.js' ;
11+ import { exit } from '../utils/flow.js' ;
1112import { getEnvironments , updateServiceYamlEnv } from '../cloud/utils.js' ;
1213
1314const BEDROCK_REPO = 'bedrockio/bedrock-core' ;
1415
1516export default async function create ( options ) {
16- const { project } = options ;
17+ let {
18+ project,
19+ domain,
20+ repository,
21+ address,
22+ staging : stagingId ,
23+ production : productionId ,
24+ password : adminPassword ,
25+ } = options ;
1726
27+ if ( ! domain ) {
28+ exit ( 'Domain required.' ) ;
29+ }
1830 // "project" will accept any casing
1931 const kebab = kebabCase ( project ) ;
2032 const under = snakeCase ( project ) ;
2133
22- const {
23- domain = '' ,
24- repository = '' ,
25- address = '' ,
26- stagingProjectId = `${ kebab } -staging` ,
27- productionProjectId = `${ kebab } -production` ,
28- 'admin-password' : adminPassword = '' ,
29- } = options ;
34+ repository ||= kebab ;
35+ stagingId ||= `${ kebab } -staging` ;
36+ productionId ||= `${ kebab } -production` ;
3037
3138 queueTask ( 'Clone Repository' , async ( ) => {
3239 await cloneRepository ( kebab , BEDROCK_REPO ) ;
@@ -35,15 +42,19 @@ export default async function create(options) {
3542
3643 queueTask ( 'Configure' , async ( ) => {
3744 const appName = startCase ( project ) ;
45+
3846 const JWT_SECRET = await exec ( 'openssl rand -base64 30' ) ;
3947 const ADMIN_PASSWORD = adminPassword || randomBytes ( 8 ) . toString ( 'hex' ) ;
4048
41- await replaceAll ( '*.{js,md,yml,tf,conf,json,env}' , ( str ) => {
49+ await replaceAll ( '**/*.{js,md,yml,tf,conf,json,env}' , ( str , basename ) => {
50+ if ( basename !== '.env' ) {
51+ str = str . replace ( / A D M I N _ P A S S W O R D = ( .+ ) / g, `ADMIN_PASSWORD=${ ADMIN_PASSWORD } ` ) ;
52+ }
53+
4254 str = str . replace ( / A P P _ C O M P A N Y _ A D D R E S S = ( .+ ) / g, `APP_COMPANY_ADDRESS=${ address } ` ) ;
4355 str = str . replace ( / J W T _ S E C R E T = ( .+ ) / g, `JWT_SECRET=${ JWT_SECRET } ` ) ;
44- str = str . replace ( / A D M I N _ P A S S W O R D = ( .+ ) / g, `ADMIN_PASSWORD=${ ADMIN_PASSWORD } ` ) ;
45- str = str . replace ( / b e d r o c k - f o u n d a t i o n - p r o d u c t i o n / g, productionProjectId ) ;
46- str = str . replace ( / b e d r o c k - f o u n d a t i o n - s t a g i n g / g, stagingProjectId ) ;
56+ str = str . replace ( / b e d r o c k - f o u n d a t i o n - p r o d u c t i o n / g, productionId ) ;
57+ str = str . replace ( / b e d r o c k - f o u n d a t i o n - s t a g i n g / g, stagingId ) ;
4758 str = str . replace ( / b e d r o c k i o \/ b e d r o c k - c o r e / g, repository ) ;
4859 str = str . replace ( / b e d r o c k - f o u n d a t i o n / g, kebab ) ;
4960 str = str . replace ( / b e d r o c k \. f o u n d a t i o n / g, domain ) ;
0 commit comments