fractive
Version:
Fractive is a hypertext authoring tool, primarily intended for the creation of interactive fiction.
143 lines • 12.7 kB
JavaScript
;
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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