typedraft
Version:
TypeDraft is a superset of typescript with built-in support for DSL extension and literate programming.
77 lines (76 loc) • 2.6 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const program = require("commander");
const literator_1 = require("./literator");
const path_1 = require("path");
const fs_extra_1 = require("fs-extra");
const cli_common_1 = require("cli-common");
const cosmiconfig_1 = require("./cosmiconfig");
const package_json = fs_extra_1.readJSONSync(path_1.resolve(__dirname, "../../package.json"));
program.version(package_json.version);
program.command("help").action(() => {
program.help();
});
program.command("dev").action(() => {
cosmiconfig_1.withConfig(config => {
config.Targets.forEach(({ src, dest, baseDir, extension = ".ts" }) => {
const devConfig = {
rename: {
extension,
},
transform(path, code) {
if (path.endsWith(".tsx")) {
let result = "";
try {
result = literator_1.ComposeFile(code, config);
}
catch (error) {
console.trace(error);
}
return result;
}
else {
return code;
}
},
};
if (baseDir) {
devConfig.baseDir = baseDir;
}
cli_common_1.dev(src, dest, devConfig);
});
});
});
program.command("build").action(() => {
cosmiconfig_1.withConfig(config => {
config.Targets.forEach(({ src, dest, baseDir, extension = ".ts" }) => {
const devConfig = {
rename: {
extension,
},
transform(path, code) {
if (path.endsWith(".tsx")) {
const result = literator_1.ComposeFile(code, config);
return result;
}
else {
return code;
}
},
};
if (baseDir) {
devConfig.baseDir = baseDir;
}
cli_common_1.build(src, dest, devConfig);
});
});
});
program.command("clean").action(() => {
cosmiconfig_1.withConfig(config => {
config.Targets.forEach(({ dest }) => {
cli_common_1.clean(dest);
});
});
});
program.parse(process.argv);