create-vobase 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +26 -11
  2. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -1,16 +1,20 @@
1
- #!/usr/bin/env node
1
+ #!/usr/bin/env bun
2
+ // @bun
2
3
 
3
4
  // index.ts
5
+ var {$ } = globalThis.Bun;
4
6
  import { downloadTemplate } from "giget";
5
- import { execFileSync, execSync } from "node:child_process";
6
- import { readFileSync, writeFileSync } from "node:fs";
7
- import { resolve } from "node:path";
7
+ import { existsSync, readFileSync, writeFileSync } from "fs";
8
+ import { randomBytes } from "crypto";
9
+ import { basename, resolve } from "path";
10
+ import { mkdirSync } from "fs";
8
11
  var name = process.argv[2];
9
12
  if (!name) {
10
- console.error("Usage: create-vobase <project-name>");
13
+ console.error("Usage: bun create vobase <project-name>");
11
14
  process.exit(1);
12
15
  }
13
16
  var dest = resolve(process.cwd(), name);
17
+ var projectName = basename(dest);
14
18
  console.log(`Creating vobase project in ${dest}...`);
15
19
  await downloadTemplate("github:vobase/vobase/packages/template", {
16
20
  dir: dest,
@@ -18,7 +22,7 @@ await downloadTemplate("github:vobase/vobase/packages/template", {
18
22
  });
19
23
  var pkgPath = resolve(dest, "package.json");
20
24
  var pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
21
- pkg.name = name;
25
+ pkg.name = projectName;
22
26
  delete pkg.private;
23
27
  for (const depField of ["dependencies", "devDependencies"]) {
24
28
  const deps = pkg[depField];
@@ -26,18 +30,29 @@ for (const depField of ["dependencies", "devDependencies"]) {
26
30
  continue;
27
31
  for (const [dep, version] of Object.entries(deps)) {
28
32
  if (typeof version === "string" && version.startsWith("workspace:")) {
29
- const latest = execFileSync("npm", ["view", dep, "version"], {
30
- encoding: "utf8"
31
- }).trim();
33
+ const latest = (await $`npm view ${dep} version`.text()).trim();
32
34
  deps[dep] = `^${latest}`;
33
- console.log(` ${dep}: workspace:* ^${latest}`);
35
+ console.log(` ${dep}: workspace:* \u2192 ^${latest}`);
34
36
  }
35
37
  }
36
38
  }
37
39
  writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + `
38
40
  `);
41
+ var envExample = resolve(dest, ".env.example");
42
+ var envFile = resolve(dest, ".env");
43
+ if (existsSync(envExample) && !existsSync(envFile)) {
44
+ let env = readFileSync(envExample, "utf8");
45
+ const secret = randomBytes(32).toString("base64url");
46
+ env = env.replace(/AUTH_SECRET=.*/, `AUTH_SECRET=${secret}`);
47
+ writeFileSync(envFile, env);
48
+ }
49
+ mkdirSync(resolve(dest, "data"), { recursive: true });
39
50
  console.log("Installing dependencies...");
40
- execSync("bun install", { cwd: dest, stdio: "inherit" });
51
+ await $`bun install`.cwd(dest);
52
+ console.log("Generating routes...");
53
+ await $`bun run scripts/generate.ts`.cwd(dest);
54
+ console.log("Setting up database...");
55
+ await $`bun run db:push`.cwd(dest);
41
56
  console.log(`
42
57
  Done! Your vobase project is ready.
43
58
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-vobase",
3
- "version": "0.1.2",
3
+ "version": "0.2.0",
4
4
  "description": "Create a new vobase project",
5
5
  "repository": {
6
6
  "type": "git",
@@ -15,7 +15,7 @@
15
15
  "dist"
16
16
  ],
17
17
  "scripts": {
18
- "build": "bun build ./index.ts --outdir ./dist --target=node --packages=external"
18
+ "build": "bun build ./index.ts --outdir ./dist --target=bun --packages=external"
19
19
  },
20
20
  "dependencies": {
21
21
  "giget": "^2.0.0"