diff --git a/ts/00_commitinfo_data.ts b/ts/00_commitinfo_data.ts index 7d6c447..ad21bcb 100644 --- a/ts/00_commitinfo_data.ts +++ b/ts/00_commitinfo_data.ts @@ -3,6 +3,6 @@ */ export const commitinfo = { name: '@push.rocks/npmextra', - version: '4.0.7', + version: '4.0.8', description: 'do more with npm' } diff --git a/ts/npmextra.classes.appdata.ts b/ts/npmextra.classes.appdata.ts index da1a25d..0d70324 100644 --- a/ts/npmextra.classes.appdata.ts +++ b/ts/npmextra.classes.appdata.ts @@ -2,6 +2,11 @@ import * as plugins from './npmextra.plugins.js'; import * as paths from './npmextra.paths.js'; import { KeyValueStore } from './npmextra.classes.keyvaluestore.js'; +export interface IAppDataOptions { + dirPath?: string; + requiredKeys?: string[]; +} + export class AppData { /** * creates appdata. If no pathArg is given, data will be stored here: @@ -9,18 +14,18 @@ export class AppData { * @param pathArg * @returns */ - public static async createAndInit(pathArg?: string) { - const appData = new AppData(pathArg); + public static async createAndInit(optionsArg: IAppDataOptions = {}) { + const appData = new AppData(optionsArg); await appData.readyDeferred.promise; return appData; } // instance public readyDeferred = plugins.smartpromise.defer(); - public dirPathArg: string; + public options: IAppDataOptions; private kvStore: KeyValueStore; - constructor(pathArg?: string) { - this.dirPathArg = pathArg; + constructor(optionsArg: IAppDataOptions = {}) { + this.options = optionsArg; this.init(); } @@ -29,7 +34,7 @@ export class AppData { * @param pathArg */ private async init(pathArg?: string) { - if (this.dirPathArg) { + if (this.options.dirPath) { // ok, nothing to do here; } else { const appDataDir = '/app/data'; @@ -38,15 +43,15 @@ export class AppData { const appDataExists = plugins.smartfile.fs.isDirectory(appDataDir); const dataExists = plugins.smartfile.fs.isDirectory(dataDir); if (appDataExists) { - this.dirPathArg = appDataDir; + this.options.dirPath = appDataDir; } else if (dataExists) { - this.dirPathArg = dataDir; + this.options.dirPath = dataDir; } else { await plugins.smartfile.fs.ensureDir(nogitAppData); - this.dirPathArg = nogitAppData; + this.options.dirPath = nogitAppData; } } - this.kvStore = new KeyValueStore('custom', 'appkv', this.dirPathArg); + this.kvStore = new KeyValueStore('custom', 'appkv', this.options.dirPath); this.readyDeferred.resolve(); }