"use strict";

const fs   = require('fs');
const Path = require('path');

 class LocalData {

   constructor(path) {
    this.path = path
    try {
      this.data = JSON.parse(fs.readFileSync(this.path, 'utf8'))
    } catch(_) {
      this.data = { list: [] }
    }
  }

  add(name) {
    if (this.data.list.indexOf(name) === -1) {
      this.data.list.push(name)
      this.sync()
    }
  }

  remove(name) {
    const i = this.data.list.indexOf(name)
    if (i !== -1) {
      this.data.list.splice(i, 1)
    }
    this.sync()
  }

  get() {
    return this.data.list
  }

  sync() {
    // Uses sync to prevent ugly race condition
    try {
      require('mkdirp').sync(Path.dirname(this.path))
    } catch(err) {}
    fs.writeFileSync(this.path, JSON.stringify(this.data))
  }

}

module.exports = LocalData;