UNPKG

fractive

Version:

Fractive is a hypertext authoring tool, primarily intended for the creation of interactive fiction.

143 lines 12.7 kB
#!/usr/bin/env node "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); require("source-map-support").install(); var cp = require("child_process"); var fs = require("fs"); var path = require("path"); var clc = require("cli-color"); var Compiler_1 = require("./Compiler"); var isWindows = /^win/.test(process.platform); function Compile(args) { if (!args || args.length < 1) { Compiler_1.Compiler.ShowUsage(); process.exit(1); } else { var buildPath = args[0]; if (fs.lstatSync(buildPath).isDirectory()) { buildPath = path.join(buildPath, "fractive.json"); } if (fs.existsSync(buildPath)) { var options = {}; for (var i = 1; i < args.length; i++) { switch (args[i]) { case "--dry-run": { options.dryRun = true; break; } case "--verbose": { options.verbose = true; break; } case "--debug": { options.debug = true; break; } } } Compiler_1.Compiler.Compile(buildPath, options); } else { console.error(clc.red("Couldn't find project config \"" + buildPath + "\"")); process.exit(1); } } } function Create(args) { if (!args || args.length < 1) { console.log(""); console.log("Usage:"); console.log(clc.green("node lib/CLI.js create") + " " + clc.blue("<storyDirectory>")); console.log(""); console.log(clc.blue("storyDirectory:") + " The folder path where the new story project should be created."); console.log(""); console.log("" + clc.green("node lib/CLI.js create /Users/Desktop/MyStory")); console.log(""); process.exit(1); } var projectDir = args[0]; if (fs.existsSync(projectDir)) { var files = fs.readdirSync(projectDir, "utf8"); if (files.length > 0) { console.error(clc.red("Target directory \"" + projectDir + "\" already exists and is not empty")); process.exit(1); } } else { fs.mkdirSync(projectDir); } var projectFilePath = path.resolve(projectDir, "fractive.json"); fs.writeFileSync(projectFilePath, JSON.stringify(Compiler_1.ProjectDefaults, null, 4), "utf8"); var sourceDir = path.resolve(projectDir, "source"); fs.mkdirSync(sourceDir); fs.writeFileSync(path.resolve(sourceDir, "text.md"), "{{Start}}\n\nYour story begins here.", "utf8"); fs.writeFileSync(path.resolve(sourceDir, "script.js"), "// Your Javascript goes here", "utf8"); fs.mkdirSync(path.resolve(projectDir, "assets")); fs.copyFileSync(path.resolve(__dirname, "../templates/basic.html"), path.resolve(projectDir, "template.html")); console.log(clc.green("Project created at " + projectDir)); } function HandleArgs() { for (var i = 2; i < process.argv.length; i++) { switch (process.argv[i]) { case "compile": { Compile(process.argv.slice(i + 1)); return; } case "create": { Create(process.argv.slice(i + 1)); return; } case "help": { var docPath = path.join(__dirname, "../doc/build/index.html"); if (isWindows) { cp.execSync("start \"\" \"" + docPath + "\""); } else { cp.execSync("open " + docPath); } return; } case "examples": { var examplesPath = path.join(__dirname, "../examples"); if (isWindows) { cp.execSync("start \"\" \"" + examplesPath + "\""); } else { cp.execSync("open " + examplesPath); } return; } default: { var message = "Unrecognized argument '" + process.argv[i] + "'"; console.log("\n" + clc.red(message)); ShowUsage(); process.exit(1); } } } } function ShowUsage() { console.log(""); console.log("Usage:"); console.log(clc.green("fractive") + " " + clc.blue("<command>") + " " + clc.yellow("[options]")); console.log(""); console.log(clc.blue("help") + " Launch the Fractive user guide"); console.log(clc.blue("compile") + " Compile an existing Fractive project"); console.log(clc.blue("create") + " Create a new Fractive project"); console.log(clc.blue("examples") + " Browse Fractive example projects"); console.log(""); console.log("Enter a command without " + clc.yellow("options") + " to see usage instructions for that command"); console.log(""); } if (process.argv.length < 3) { ShowUsage(); process.exit(1); } else { HandleArgs(); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ0xJLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0NMSS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUF3QkEsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7QUFFeEMsa0NBQW9DO0FBQ3BDLHVCQUF5QjtBQUN6QiwyQkFBNkI7QUFDN0IsK0JBQWlDO0FBRWpDLHVDQUF3RTtBQUd4RSxJQUFJLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQU05QyxpQkFBaUIsSUFBb0I7SUFFcEMsRUFBRSxDQUFBLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FDNUIsQ0FBQztRQUNBLG1CQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDckIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQixDQUFDO0lBQ0QsSUFBSSxDQUNKLENBQUM7UUFDQSxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFHeEIsRUFBRSxDQUFBLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFBQyxDQUFDO1FBRWhHLEVBQUUsQ0FBQSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FDNUIsQ0FBQztZQUNBLElBQUksT0FBTyxHQUFxQixFQUFFLENBQUM7WUFDbkMsR0FBRyxDQUFBLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUNuQyxDQUFDO2dCQUNBLE1BQU0sQ0FBQSxDQUFDLElBQUksQ0FBQyxD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