xweb-templating
Version:
A cli tool for converting 'tags' to regular html, php or some other format
42 lines (37 loc) • 1.74 kB
text/typescript
import { XwebConfig, read_config } from "./config/config.js";
import { info, status } from "./log.js";
import { save_tagsets } from "./tagset/util.js";
import { run as run_create_config } from "./config/create.js";
import { confirm } from "./log.js";
import { ArgumentsCamelCase } from "yargs";
import path from "path";
import fs from "fs";
export default async function run(argv: ArgumentsCamelCase<{
y: boolean;
}>) {
let config: XwebConfig;
let created_config = false;
if (argv.yes || await confirm(argv, "Create 'xwebconfig.json' file?")) {
created_config = true;
const CONFIG_RESULT = await run_create_config(argv);
if (CONFIG_RESULT == null) return;
config = CONFIG_RESULT as XwebConfig;
info("init/tags_folder", "Using tags folder from config file");
} else {
info("init/tags_folder", "Detecting tags folder based on config file or defaults");
config = read_config("init/tags_folder");
}
if (argv.yes || await confirm(argv, `Create folder '${config.folder.tags}' for tags?`)) {
const TAGS_FOLDER_PATH = path.join(process.cwd(), config.folder.tags);
fs.mkdirSync(TAGS_FOLDER_PATH);
status("init/tags_folder", `Created folder '${config.folder.tags}'`);
}
if (argv.yes || await confirm(argv, "Create '.xwebignore' file")) {
const IGNORE_FILE_PATH = path.join(process.cwd(), ".xwebignore");
fs.writeFileSync(IGNORE_FILE_PATH, "");
status("init/ignores", "Created file '.xwebignore'");
}
if (created_config && config.tags.length > 0 && (argv.yes || await confirm(argv, "Fetch all tagsets from the public github repo?"))) {
save_tagsets("init/fetch", config.tags, config);
}
}