const fs = require('fs-extra');
const path = require('path');
const {idx} = require('../utils');

module.exports = function loadSidebars({siteDir, env}) {
  let allSidebars = {};

  // current sidebars
  const sidebarsJSONFile = path.join(siteDir, 'sidebars.json');
  if (fs.existsSync(sidebarsJSONFile)) {
    allSidebars = require(sidebarsJSONFile); // eslint-disable-line
  }

  // versioned sidebars
  if (idx(env, ['versioning', 'enabled'])) {
    const versions = idx(env, ['versioning', 'versions']);
    if (Array.isArray(versions)) {
      versions.forEach(version => {
        const versionedSidebarsJSONFile = path.join(
          siteDir,
          'versioned_sidebars',
          `version-${version}-sidebars.json`
        );
        if (fs.existsSync(versionedSidebarsJSONFile)) {
          const sidebar = require(versionedSidebarsJSONFile); // eslint-disable-line
          Object.assign(allSidebars, sidebar);
        } else {
          const missingFile = path.relative(siteDir, versionedSidebarsJSONFile);
          throw new Error(`Failed to load ${missingFile}. It does not exist.`);
        }
      });
    }
  }
  return allSidebars;
};