35 lines
921 B
TypeScript
35 lines
921 B
TypeScript
/* eslint-disable no-console */
|
|
import fs from "fs";
|
|
import prompt, { Schema } from "prompt";
|
|
import { $ } from "execa";
|
|
|
|
console.log("What demo do you wish to run? (Enter a number)");
|
|
|
|
const schema: Schema = {
|
|
properties: {
|
|
demoNumber: {
|
|
pattern: /^[0-9]+$/,
|
|
message: "Please enter a number.",
|
|
required: true,
|
|
},
|
|
},
|
|
};
|
|
|
|
prompt.start();
|
|
|
|
prompt.get(schema, async (_, result) => {
|
|
const demoNumber = result.demoNumber as string;
|
|
const files = fs.readdirSync("./demo").filter((fn) => fn.startsWith(demoNumber));
|
|
|
|
if (files.length === 0) {
|
|
console.error(`demo number ${demoNumber} does not exist`);
|
|
return;
|
|
}
|
|
|
|
const filePath = `./demo/${files[0]}`;
|
|
|
|
console.log(`Running demo ${demoNumber}: ${files[0]}`);
|
|
await $`ts-node --project demo/tsconfig.json ${filePath}`;
|
|
console.log("Successfully created document!");
|
|
});
|