bananass
Version:
Baekjoon Framework for JavaScript.🍌
91 lines (79 loc) • 2.49 kB
JavaScript
/**
* @fileoverview CLI `build` command.
*/
// --------------------------------------------------------------------------------
// Import
// --------------------------------------------------------------------------------
import logger from 'bananass-utils-console/logger';
import { build as buildCmd } from '../commands/index.js';
import { configLoader } from '../core/conf/index.js';
import { build as buildDesc } from '../core/cli/descriptions.js';
import { problems as problemsArg } from '../core/cli/arguments.js';
import {
global as globalGroup,
console as consoleGroup,
build as buildGroup,
} from '../core/cli/groups.js';
import {
cwd as cwdOpt,
entryDir as entryDirOpt,
outDir as outDirOpt,
debug as debugOpt,
quiet as quietOpt,
clean as cleanOpt,
templateType as templateTypeOpt,
} from '../core/cli/options.js';
// --------------------------------------------------------------------------------
// Typedefs
// --------------------------------------------------------------------------------
/**
* @import { Command } from 'commander';
*/
// --------------------------------------------------------------------------------
// Export
// --------------------------------------------------------------------------------
/**
* Build: `npx bananass build` command.
* @param {Command} program The `commander` package's `program`.
*/
export default function build(program) {
program
.command('build')
.description(buildDesc)
.argument(...problemsArg)
.optionsGroup(globalGroup)
.option(...cwdOpt)
.option(...entryDirOpt)
.option(...outDirOpt)
.optionsGroup(consoleGroup)
.option(...debugOpt)
.option(...quietOpt)
.optionsGroup(buildGroup)
.option(...cleanOpt)
.option(...templateTypeOpt)
.action(async (problems, options, command) => {
const { cwd, entryDir, outDir, debug, quiet, clean, templateType } = options;
const configObject = await configLoader({
cliConfigObject: {
cwd,
entryDir,
outDir,
console: {
debug,
quiet,
},
build: {
clean,
templateType,
},
},
});
logger(configObject.console)
.debug('command:', command.name())
.debug('problems:', problems)
.debug('cli options:', options)
.debug('config object:', configObject)
.eol();
await buildCmd(problems, configObject);
});
}