Godzil/Crunchy

View on GitHub
src/config.ts

Summary

Maintainability
A
1 hr
Test Coverage
'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;
  tmp.parent = undefined;
  tmp._scriptPath = undefined;
  tmp._optionValues = undefined;
  tmp._storeOptionsAsProperties = undefined;
  tmp._passCommandToAction = undefined;
  tmp._actionResults = undefined;
  tmp._actionHandler = undefined;
  tmp._executableHandler = undefined;
  tmp._executableFile = undefined;
  tmp._defaultCommandName = undefined;
  tmp._exitCallback = undefined;
  tmp._alias = undefined;
  tmp._noHelp = undefined;
  tmp._helpFlags = undefined;
  tmp._helpDescription = undefined;
  tmp._helpShortFlag = undefined;
  tmp._helpLongFlag = undefined;
  tmp._hasImplicitHelpCommand = undefined;
  tmp._helpCommandName = undefined;
  tmp._helpCommandnameAndArgs = undefined;
  tmp._helpCommandDescription = undefined;

  // Things we don't want to save
  tmp.cache = undefined;
  tmp.episodes = undefined;
  tmp.series = undefined;
  tmp.rebuildcrp = undefined;
  tmp.batch = undefined;
  tmp.verbose = undefined;
  tmp.debug = undefined;
  tmp.unlog = undefined;
  tmp.ignoredub = undefined;

  fs.writeFileSync(configFile, JSON.stringify(tmp, null, '  '));
}