diff --git a/src/config.ts b/src/config.ts new file mode 100644 index 0000000..ebde062 --- /dev/null +++ b/src/config.ts @@ -0,0 +1,62 @@ +'use strict'; +import os = require('os'); +import fs = require('fs-extra'); +import path = require('path'); + +const configFile = path.join(process.cwd(), "config.json"); + +function fileExist(path: string) +{ + try + { + fs.statSync(path); + return true; + } catch (e) + { + return false; + } +} + +export function load(): IConfigLine +{ + if (fileExist(configFile)) + { + const data = fs.readFileSync(configFile, 'utf8'); + return JSON.parse(data); + } + + return {args: undefined}; +} + +export function save(config: IConfig) +{ + const tmp = JSON.parse(JSON.stringify(config)); + + // Things added by the command line parser + tmp.rawArgs = undefined; + tmp.options = undefined; + tmp._execs = undefined; + tmp._args = undefined; + tmp._name = undefined; + tmp._version = undefined; + tmp._versionOptionName = undefined; + tmp._events = undefined; + tmp._eventsCount = undefined; + tmp.args = undefined; + tmp.commands = undefined; + tmp._allowUnknownOption = undefined; + + // Things we don't want to save + tmp.cache = undefined; + tmp.episodes = undefined; + tmp.series = undefined; + tmp.video_format = undefined; + tmp.video_quality = undefined; + tmp.rebuildcrp = undefined; + tmp.batch = undefined; + tmp.verbose = undefined; + tmp.debug = undefined; + tmp.unlog = undefined; + + fs.writeFileSync(configFile, JSON.stringify(tmp, null, ' ')); +} \ No newline at end of file diff --git a/src/interface/IConfig.d.ts b/src/interface/IConfig.d.ts index 798d2ce..7875e0d 100644 --- a/src/interface/IConfig.d.ts +++ b/src/interface/IConfig.d.ts @@ -20,4 +20,15 @@ interface IConfig { verbose?: boolean; debug?: boolean; retry?: number; + // Login options + logUsingApi?: boolean; + crSessionUrl?: string; + crDeviceType?: string; + crAPIVersion?: string; + crLocale?: string; + crSessionKey?: string; + crLoginUrl?: string; + // Generated values + crDeviceId?: string; + crSessionId?: string; }