refactor(v2): cli and loads (#1317)

* refactor(v2): cli, load

* nits
This commit is contained in:
Endilie Yacop Sucipto 2019-03-29 16:45:20 +07:00 committed by Yangshun Tay
parent d279836c40
commit f96ba2d381
5 changed files with 26 additions and 23 deletions

View file

@ -42,13 +42,11 @@ program
.command('build [siteDir]') .command('build [siteDir]')
.description('Build website') .description('Build website')
.option( .option(
'-sic, --skip-image-compression <skipImageCompression>', '--skip-next-release',
'Skip compression of image assets (default: false)', 'Skip documents from next release (default = false)',
) )
.option('--skip-next-release', 'Skip documents from next release') .action((siteDir = '.', {skipNextRelease}) => {
.action((siteDir = '.', {skipImageCompression, skipNextRelease}) => {
wrapCommand(build)(path.resolve(siteDir), { wrapCommand(build)(path.resolve(siteDir), {
skipImageCompression,
skipNextRelease, skipNextRelease,
}); });
}); });

View file

@ -38,11 +38,11 @@ function compile(config) {
}); });
} }
module.exports = async function build(siteDir, options) { module.exports = async function build(siteDir, cliOptions = {}) {
process.env.NODE_ENV = 'production'; process.env.NODE_ENV = 'production';
console.log('Build command invoked ...'); console.log('Build command invoked ...');
const props = await load(siteDir, options.skipNextRelease); const props = await load(siteDir, cliOptions);
// Apply user webpack config. // Apply user webpack config.
const {outDir, plugins} = props; const {outDir, plugins} = props;

View file

@ -12,10 +12,13 @@ const createOrder = require('./order');
const loadSidebars = require('./sidebars'); const loadSidebars = require('./sidebars');
const processMetadata = require('./metadata'); const processMetadata = require('./metadata');
async function loadDocs( async function loadDocs({
{siteDir, docsDir, env, siteConfig}, siteDir,
docsDir,
env,
siteConfig,
skipNextRelease = false, skipNextRelease = false,
) { }) {
// @tested - load all sidebars including versioned sidebars // @tested - load all sidebars including versioned sidebars
const docsSidebars = loadSidebars({siteDir, env}); const docsSidebars = loadSidebars({siteDir, env});

View file

@ -17,7 +17,7 @@ const loadRoutes = require('./routes');
const loadPlugins = require('./plugins'); const loadPlugins = require('./plugins');
const constants = require('../constants'); const constants = require('../constants');
module.exports = async function load(siteDir, skipNextRelease = false) { module.exports = async function load(siteDir, cliOptions = {}) {
const generatedFilesDir = path.resolve( const generatedFilesDir = path.resolve(
siteDir, siteDir,
constants.GENERATED_FILES_DIR_NAME, constants.GENERATED_FILES_DIR_NAME,
@ -42,15 +42,14 @@ module.exports = async function load(siteDir, skipNextRelease = false) {
// Docs // Docs
const docsDir = path.resolve(siteDir, '..', siteConfig.customDocsPath); const docsDir = path.resolve(siteDir, '..', siteConfig.customDocsPath);
const {docsMetadatas, docsSidebars} = await loadDocs( const {skipNextRelease} = cliOptions;
{ const {docsMetadatas, docsSidebars} = await loadDocs({
siteDir, siteDir,
docsDir, docsDir,
env, env,
siteConfig, siteConfig,
},
skipNextRelease, skipNextRelease,
); });
await generate( await generate(
generatedFilesDir, generatedFilesDir,
'docsMetadatas.js', 'docsMetadatas.js',

View file

@ -177,10 +177,13 @@ describe('loadDocs', () => {
test('versioned website with skip next release', async () => { test('versioned website with skip next release', async () => {
const props = await loadSetup('versioned'); const props = await loadSetup('versioned');
const {siteDir, docsDir, versionedDir, env, siteConfig} = props; const {siteDir, docsDir, versionedDir, env, siteConfig} = props;
const {docsMetadatas} = await loadDocs( const {docsMetadatas} = await loadDocs({
{siteDir, docsDir, env, siteConfig}, siteDir,
true, docsDir,
); env,
siteConfig,
skipNextRelease: true,
});
expect(docsMetadatas['version-1.0.0-foo/bar']).toEqual({ expect(docsMetadatas['version-1.0.0-foo/bar']).toEqual({
category: 'Test', category: 'Test',
id: 'version-1.0.0-foo/bar', id: 'version-1.0.0-foo/bar',