Skip to content

Commit fbdabd3

Browse files
committed
dev: make puterfs storage controller configurable
1 parent 4c5c145 commit fbdabd3

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

extensions/puterfs/main.js

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,16 @@ import PuterFSProvider from './PuterFSProvider.js';
2222
import LocalDiskStorageController from './storage/LocalDiskStorageController.js';
2323
import ProxyStorageController from './storage/ProxyStorageController.js';
2424

25+
const svc_event = extension.import('service:event');
26+
2527
const fsEntryController = new FSEntryController();
2628
const storageController = new ProxyStorageController();
2729

2830
extension.on('init', async () => {
2931
fsEntryController.init();
3032

3133
// Keep track of possible storage strategies for puterfs here
34+
let defaultStorage = 'flat-files';
3235
const storageStrategies = {
3336
'flat-files': new LocalDiskStorageController(),
3437
};
@@ -37,13 +40,22 @@ extension.on('init', async () => {
3740
const event = {
3841
createStorageStrategy (name, implementation) {
3942
storageStrategies[name] = implementation;
43+
if ( implementation === undefined ) {
44+
throw new Error('createStorageStrategy was called wrong');
45+
}
46+
if ( implementation.forceDefault ) {
47+
defaultStorage = name;
48+
}
4049
},
4150
};
4251
// Awaiting the event ensures all the storage strategies are registered
43-
await extension.emit('puterfs.storage.create', event);
52+
await svc_event.emit('puterfs.storage.create', event);
53+
54+
let configuredStorage = defaultStorage;
55+
if ( config.storage ) configuredStorage = config.storage;
4456

4557
// Not we can select the configured strategy
46-
const storageToUse = storageStrategies['flat-files'];
58+
const storageToUse = storageStrategies[configuredStorage];
4759
storageController.setDelegate(storageToUse);
4860

4961
// The StorageController may need to await some asynchronous operations

0 commit comments

Comments
 (0)