Add empty prototype commands.

This commit is contained in:
Daniel Scalzi
2019-07-29 22:31:11 -04:00
parent 55afd5fb04
commit 077fd12ec3

View File

@@ -2,31 +2,117 @@
import { resolve } from 'path'
import yargs from 'yargs'
function positionalRoot(yargs: yargs.Argv) {
return yargs.positional('root', {
describe: 'File structure root',
type: 'string'
function rootOption(yargs: yargs.Argv) {
return yargs.option('root', {
describe: 'File structure root.',
type: 'string',
demandOption: true,
global: true
})
.coerce({
root: resolve
})
}
// -------------
// Init Commands
const initRootCommand: yargs.CommandModule = {
command: 'root',
describe: 'Generate an empty standard file structure.',
builder: (yargs) => {
yargs = rootOption(yargs)
return yargs
},
handler: (argv) => {
console.log(`Root set to ${argv.root}`)
console.log('Invoked init root.')
}
}
const initCommand: yargs.CommandModule = {
command: 'init',
aliases: ['i'],
describe: 'Base init command.',
builder: (yargs) => {
return yargs
.command(initRootCommand)
},
handler: (argv) => {
argv._handled = true
}
}
// -----------------
// Generate Commands
const generateServerCommand: yargs.CommandModule = {
command: 'server <id> <version>',
describe: 'Generate a new server configuration.',
builder: (yargs) => {
yargs = rootOption(yargs)
return yargs
.positional('id', {
describe: 'Server id.',
type: 'string'
})
.positional('version', {
describe: 'Minecraft version.',
type: 'string'
})
.option('forge', {
describe: 'Include Forge.',
type: 'boolean',
default: true
})
.option('liteloader', {
describe: 'Include liteloader.',
type: 'boolean',
default: false
})
},
handler: (argv) => {
console.log(`Root set to ${argv.root}`)
console.log(`Generating server ${argv.id} for Minecraft ${argv.version}.`,
`\n\t├ Include forge: ${argv.forge}`,
`\n\t└ Include liteloader: ${argv.liteloader}`)
}
}
const generateDistroCommand: yargs.CommandModule = {
command: 'distro',
describe: 'Generate a distribution index from the root file structure.',
builder: (yargs) => {
yargs = rootOption(yargs)
return yargs
},
handler: (argv) => {
console.log(`Root set to ${argv.root}`)
console.log('Invoked generate distro.')
}
}
const generateCommand: yargs.CommandModule = {
command: 'generate',
aliases: ['g'],
describe: 'Base generate command.',
builder: (yargs) => {
return yargs
.command(generateServerCommand)
.command(generateDistroCommand)
},
handler: (argv) => {
argv._handled = true
}
}
// Registering yargs configuration.
// tslint:disable-next-line:no-unused-expression
yargs
.version(false)
.scriptName('')
.coerce({
root: resolve
})
.command({
command: 'generate server <root>',
aliases: ['g'],
describe: 'Generate a distribution.json',
builder: (yargs) => {
return positionalRoot(yargs)
},
handler: (argv) => {
console.log(`got generate with root=${argv.root}`)
}
})
.command(initCommand)
.command(generateCommand)
.demandCommand()
.help()
.argv