@@ -175,10 +175,12 @@ module.exports = async (args: BootstrapArgs) => {
175
175
data
176
176
` )
177
177
}
178
-
178
+ const cacheDirectory = ` ${ program . directory } /.cache`
179
179
if ( ! oldPluginsHash || pluginsHash !== oldPluginsHash ) {
180
180
try {
181
- await fs . remove ( `${ program . directory } /.cache` )
181
+ // Attempt to empty dir if remove fails,
182
+ // like when directory is mount point
183
+ await fs . remove ( cacheDirectory ) . catch ( ( ) => fs . emptyDir ( cacheDirectory ) )
182
184
} catch ( e ) {
183
185
report . error ( `Failed to remove .cache files.` , e )
184
186
}
@@ -197,7 +199,7 @@ module.exports = async (args: BootstrapArgs) => {
197
199
198
200
// Now that we know the .cache directory is safe, initialize the cache
199
201
// directory.
200
- await fs . ensureDir ( ` ${ program . directory } /.cache` )
202
+ await fs . ensureDir ( cacheDirectory )
201
203
202
204
// Ensure the public/static directory
203
205
await fs . ensureDir ( `${ program . directory } /public/static` )
@@ -213,7 +215,7 @@ module.exports = async (args: BootstrapArgs) => {
213
215
parentSpan : bootstrapSpan ,
214
216
} )
215
217
activity . start ( )
216
- const dbSaveFile = `${ program . directory } /.cache /loki/loki.db`
218
+ const dbSaveFile = `${ cacheDirectory } /loki/loki.db`
217
219
try {
218
220
await loki . start ( {
219
221
saveFile : dbSaveFile ,
@@ -236,7 +238,7 @@ module.exports = async (args: BootstrapArgs) => {
236
238
} )
237
239
activity . start ( )
238
240
const srcDir = `${ __dirname } /../../cache-dir`
239
- const siteDir = ` ${ program . directory } /.cache`
241
+ const siteDir = cacheDirectory
240
242
const tryRequire = `${ __dirname } /../utils/test-require-error.js`
241
243
try {
242
244
await fs . copy ( srcDir , siteDir , {
@@ -245,12 +247,12 @@ module.exports = async (args: BootstrapArgs) => {
245
247
await fs . copy ( tryRequire , `${ siteDir } /test-require-error.js` , {
246
248
clobber : true ,
247
249
} )
248
- await fs . ensureDirSync ( `${ program . directory } /.cache /json` )
250
+ await fs . ensureDirSync ( `${ cacheDirectory } /json` )
249
251
250
252
// Ensure .cache/fragments exists and is empty. We want fragments to be
251
253
// added on every run in response to data as fragments can only be added if
252
254
// the data used to create the schema they're dependent on is available.
253
- await fs . emptyDir ( `${ program . directory } /.cache /fragments` )
255
+ await fs . emptyDir ( `${ cacheDirectory } /fragments` )
254
256
} catch ( err ) {
255
257
report . panic ( `Unable to copy site files to .cache` , err )
256
258
}
0 commit comments