UNPKG

v3mt

Version:

A CLI toolkit for managing and deploying Victoria 3 mods, including sending mod files to the game, launching the game, and more.

73 lines (72 loc) 2.84 kB
import fs from 'fs'; import { confirm } from '@inquirer/prompts'; import { Config } from '../../utils/config/config.js'; import requestModSourceFolder from './sections/request-mod-source-folder.js'; import requestGameFolder from './sections/request-game-folder.js'; import requestGameModFolder from './sections/request-game-mod-folder.js'; import requestErrorLog from './sections/request-error-log.js'; import displayIntro from './sections/display-intro.js'; import requestOSConfirmation from './sections/request-os-confirmation.js'; import requestOverwriteConfirmation from './sections/request-overwrite-confirmation.js'; import createVSCTasks from '../setup-vsc-tasks/setup-vsc-tasks.js'; import displayOutro from './sections/display-outro.js'; import setupModFolders from '../setup-mod-folders/setup-mod-folders.js'; import Logger from '../../utils/logger/logger.js'; const command = 'init'; const use = (program) => { return program .command(command) .description('Initializes project. Created v3mt.config.json. Creates folder hierarchy.') .option('-s, --skip-intro', 'Skip Intro') .option('-o, --yes-os-warning', 'Auto confirm OS warning') .option('-y, --yes-overwrite', 'Auto confirm Overwrite warning') .action(task); }; const init = { use, command }; export default init; async function task(options) { const configPath = Config.getConfigPath(); if (!options.skipIntro) { await displayIntro(); } if (!options.yesOsWarning && process.platform !== 'win32') { const confirmed = await requestOSConfirmation(); if (!confirmed) return; } let overwriteConfig = true; if (!options.yesOverwrite && fs.existsSync(configPath)) { overwriteConfig = await requestOverwriteConfirmation(configPath); } if (overwriteConfig) { const MOD_SOURCE_FOLDER = await requestModSourceFolder(); const GAME_FOLDER = await requestGameFolder(); const GAME_MOD_FOLDER = await requestGameModFolder(); const ERROR_LOG = await requestErrorLog(); const newConfig = new Config({ MOD_SOURCE_FOLDER, GAME_FOLDER, GAME_MOD_FOLDER, ERROR_LOG, }); newConfig.saveToFile(configPath); Logger.info(`Config file created at: ${configPath}`); Logger.text(JSON.stringify(newConfig, null, 2)); } const confirmSetupModFolders = await confirm({ message: `Setup Mod Folders?`, default: true, }); if (confirmSetupModFolders) { await setupModFolders.task(); } const confirmSetupVSCTasks = await confirm({ message: `Setup VS Code Tasks?`, default: true, }); if (confirmSetupVSCTasks) { await createVSCTasks.task(); } //outro await displayOutro(); }