@@ -22,13 +22,16 @@ import PuterFSProvider from './PuterFSProvider.js';
2222import LocalDiskStorageController from './storage/LocalDiskStorageController.js' ;
2323import ProxyStorageController from './storage/ProxyStorageController.js' ;
2424
25+ const svc_event = extension . import ( 'service:event' ) ;
26+
2527const fsEntryController = new FSEntryController ( ) ;
2628const storageController = new ProxyStorageController ( ) ;
2729
2830extension . 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