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
JavaScript
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();
}