-
Notifications
You must be signed in to change notification settings - Fork 0
/
bootstrap.ts
74 lines (61 loc) · 2.09 KB
/
bootstrap.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import { ensureDir, move } from "https://deno.land/std@0.146.0/fs/mod.ts";
import { join, resolve } from "https://deno.land/std@0.146.0/path/mod.ts";
import { checkExists } from "./utils.ts";
// this is fugly but eh...
export const readme = `<%~ include("HEADER.template.md", {...it}) %>
<% it.javascripted = 13 + 12 %>
<%= it.javascripted %>
<% it.asyncJavascripted = await fetch("https://jsonplaceholder.typicode.com/todos/1").then(r => r.json()) %>
<%= it.asyncJavascripted.title %>
<%= it.readme %>
<%~ include("FOOTER.template.md", {...it}) %>`;
export const header = `# <%= it.name %>
hello world
---
`;
export const footer = `---
made with k by love
`;
export const bootstrap = async (
templateDirectory: string,
error: (message: string, error?: Error) => void,
) => {
if (await checkExists(templateDirectory, error)) {
console.log("You ran bootstrap mode with present templates, backing up.");
try {
await move(templateDirectory, `${templateDirectory}.old`, {
overwrite: true,
});
} catch (e) {
error("Something went wrong backing up your templates.", e);
}
}
try {
await ensureDir(templateDirectory);
} catch (e) {
error(
`Something went wrong trying to create the templates directory at ${templateDirectory}.`,
e,
);
}
const readmePath = resolve(join(templateDirectory, "README.template.md"));
try {
await Deno.writeTextFile(readmePath, readme);
} catch (e) {
error(`Something went wrong trying to boostrap ${readmePath}.`, e);
}
const headerPath = resolve(join(templateDirectory, "HEADER.template.md"));
try {
await Deno.writeTextFile(headerPath, header);
} catch (e) {
error(`Something went wrong trying to boostrap ${headerPath}.`, e);
}
const footerPath = resolve(join(templateDirectory, "FOOTER.template.md"));
try {
await Deno.writeTextFile(footerPath, footer);
} catch (e) {
error(`Something went wrong trying to boostrap ${footerPath}.`, e);
}
console.log(`Template bootstrapping done in ${templateDirectory}.`);
console.log("Feel free to edit anything to your liking.");
};