@@ -2,7 +2,6 @@ import * as clc from "colorette";
2
2
import { confirm , input , select } from "../../prompt" ;
3
3
import { logger } from "../../logger" ;
4
4
import * as utils from "../../utils" ;
5
- import * as fsutils from "../../fsutils" ;
6
5
import { Config } from "../../config" ;
7
6
import {
8
7
createInstance ,
@@ -51,18 +50,10 @@ async function getDBRules(instanceDetails: DatabaseInstance): Promise<string> {
51
50
return await response . response . text ( ) ;
52
51
}
53
52
54
- function writeDBRules (
55
- rules : string ,
56
- logMessagePrefix : string ,
57
- filename : string ,
58
- config : Config ,
59
- ) : void {
53
+ function writeDBRules ( rules : string , filename : string , config : Config ) : void {
60
54
config . writeProjectFile ( filename , rules ) ;
61
- utils . logSuccess ( `${ logMessagePrefix } have been written to ${ clc . bold ( filename ) } .` ) ;
62
55
logger . info (
63
- `Future modifications to ${ clc . bold (
64
- filename ,
65
- ) } will update Realtime Database Security Rules when you run`,
56
+ `Future modifications to ${ clc . bold ( filename ) } will update Realtime Database Security Rules when you run` ,
66
57
) ;
67
58
logger . info ( clc . bold ( "firebase deploy" ) + "." ) ;
68
59
}
@@ -142,12 +133,7 @@ async function initializeDatabaseInstance(projectId: string): Promise<DatabaseIn
142
133
* @param setup information helpful for database setup
143
134
* @param config legacy config parameter. not used for database setup.
144
135
*/
145
- export async function askQuestions ( setup : Setup ) : Promise < void > {
146
- let instanceDetails : DatabaseInstance | null = null ;
147
- if ( setup . projectId ) {
148
- instanceDetails = await initializeDatabaseInstance ( setup . projectId ) ;
149
- }
150
-
136
+ export async function askQuestions ( setup : Setup , config : Config ) : Promise < void > {
151
137
logger . info ( ) ;
152
138
logger . info (
153
139
"Firebase Realtime Database Security Rules allow you to define how your data should be" ,
@@ -167,20 +153,16 @@ export async function askQuestions(setup: Setup): Promise<void> {
167
153
rules : DEFAULT_RULES ,
168
154
writeRules : true ,
169
155
} ;
170
- if ( fsutils . fileExistsSync ( rulesFilename ) ) {
171
- const rulesDescription = instanceDetails
172
- ? `the Realtime Database Security Rules for ${ clc . bold ( instanceDetails . name ) } from the Firebase console`
173
- : "default rules" ;
174
- const msg = `File ${ clc . bold (
175
- rulesFilename ,
176
- ) } already exists. Do you want to overwrite it with ${ rulesDescription } ?`;
177
-
178
- info . writeRules = await confirm ( msg ) ;
179
- }
180
- if ( info . writeRules && instanceDetails ) {
181
- info . rules = await getDBRules ( instanceDetails ) ;
156
+ if ( setup . projectId ) {
157
+ const instanceDetails = await initializeDatabaseInstance ( setup . projectId ) ;
158
+ if ( instanceDetails ) {
159
+ info . rules = await getDBRules ( instanceDetails ) ;
160
+ utils . logBullet (
161
+ `Downloaded the existing Realtime Database Security Rules of database ${ clc . bold ( instanceDetails . name ) } from the Firebase console` ,
162
+ ) ;
163
+ }
182
164
}
183
-
165
+ info . writeRules = await config . confirmWriteProjectFile ( rulesFilename , info . rules ) ;
184
166
// Populate featureInfo for the actuate step later.
185
167
setup . featureInfo = setup . featureInfo || { } ;
186
168
setup . featureInfo . database = info ;
@@ -198,9 +180,9 @@ export async function actuate(setup: Setup, config: Config): Promise<void> {
198
180
199
181
if ( info . writeRules ) {
200
182
if ( info . rules === DEFAULT_RULES ) {
201
- writeDBRules ( info . rules , `Default rules for ${ setup . projectId } ` , info . rulesFilename , config ) ;
183
+ writeDBRules ( info . rules , info . rulesFilename , config ) ;
202
184
} else {
203
- writeDBRules ( info . rules , `Database Rules for ${ setup . projectId } ` , info . rulesFilename , config ) ;
185
+ writeDBRules ( info . rules , info . rulesFilename , config ) ;
204
186
}
205
187
} else {
206
188
logger . info ( "Skipping overwrite of Realtime Database Security Rules." ) ;
0 commit comments