const _ = require('lodash')
const path = require('path')
const CSON = require('@rokt33r/season')
const migrateFromV6Storage = require('./migrateFromV6Storage')

function resolveStorageData (storageCache) {
  const storage = {
    key: storageCache.key,
    name: storageCache.name,
    type: storageCache.type,
    path: storageCache.path
  }

  const boostnoteJSONPath = path.join(storageCache.path, 'boostnote.json')
  try {
    const jsonData = CSON.readFileSync(boostnoteJSONPath)
    if (!_.isArray(jsonData.folders)) throw new Error('folders should be an array.')
    storage.folders = jsonData.folders
    storage.version = jsonData.version
  } catch (err) {
    if (err.code === 'ENOENT') {
      console.warn('boostnote.json file doesn\'t exist the given path')
      CSON.writeFileSync(boostnoteJSONPath, {folders: [], version: '1.0'})
    } else {
      console.error(err)
    }
    storage.folders = []
    storage.version = '1.0'
  }

  const version = parseInt(storage.version, 10)
  if (version >= 1) {
    if (version > 1) {
      console.log('The repository version is newer than one of current app.')
    }
    return Promise.resolve(storage)
  }

  console.log('Transform Legacy storage', storage.path)
  return migrateFromV6Storage(storage.path)
    .then(() => storage)
}

module.exports = resolveStorageData
