'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;
  tmp.ignoredub = undefined;

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