create-authenik8-app 1.0.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.
- package/dist/bin/index.d.ts +3 -0
- package/dist/bin/index.d.ts.map +1 -0
- package/dist/bin/index.js +110 -0
- package/dist/bin/index.js.map +1 -0
- package/package.json +25 -0
- package/templates/express-ts/prisma/schema.prisma +6 -0
- package/templates/express-ts/src/.env.example +3 -0
- package/templates/express-ts/src/package-lock.json +2427 -0
- package/templates/express-ts/src/package.json +19 -0
- package/templates/express-ts/src/server.ts +36 -0
- package/templates/express-ts/src/tsconfig.json +47 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bin/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import fs from "fs-extra";
|
|
3
|
+
import path from "path";
|
|
4
|
+
import chalk from "chalk";
|
|
5
|
+
import inquirer from "inquirer";
|
|
6
|
+
import ora from "ora";
|
|
7
|
+
import { execSync } from "child_process";
|
|
8
|
+
import { fileURLToPath } from "url";
|
|
9
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
10
|
+
const __dirname = path.dirname(__filename);
|
|
11
|
+
const projectName = process.argv[2];
|
|
12
|
+
if (!projectName) {
|
|
13
|
+
console.log(chalk.red("ā Please provide a project name"));
|
|
14
|
+
process.exit(1);
|
|
15
|
+
}
|
|
16
|
+
const targetDir = path.join(process.cwd(), projectName);
|
|
17
|
+
async function main() {
|
|
18
|
+
console.log(chalk.blue.bold("\nš Authenik8 App Generator\n"));
|
|
19
|
+
// š„ PROMPTS
|
|
20
|
+
const answers = await inquirer.prompt([
|
|
21
|
+
{
|
|
22
|
+
type: "list",
|
|
23
|
+
name: "framework",
|
|
24
|
+
message: "Choose framework:",
|
|
25
|
+
choices: ["Express", "Fastify (coming soon)"],
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
type: "confirm",
|
|
29
|
+
name: "usePrisma",
|
|
30
|
+
message: "Use Prisma?",
|
|
31
|
+
default: true,
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
type: "confirm",
|
|
35
|
+
name: "useGit",
|
|
36
|
+
message: "Initialize git?",
|
|
37
|
+
default: true,
|
|
38
|
+
},
|
|
39
|
+
]);
|
|
40
|
+
// š« Prevent overwrite
|
|
41
|
+
if (fs.existsSync(targetDir)) {
|
|
42
|
+
console.log(chalk.red("\nā Folder already exists"));
|
|
43
|
+
process.exit(1);
|
|
44
|
+
}
|
|
45
|
+
console.log(chalk.cyan("\nāļø Setting things up...\n"));
|
|
46
|
+
const templateRoot = path.resolve(__dirname, "../../templates");
|
|
47
|
+
const templatePath = answers.framework === "Express"
|
|
48
|
+
? path.join(templateRoot, "express-ts")
|
|
49
|
+
: path.join(templateRoot, "express-ts"); // fallback for now
|
|
50
|
+
// š Create project (SPINNER)
|
|
51
|
+
const createSpinner = ora("Creating project structure...").start();
|
|
52
|
+
try {
|
|
53
|
+
await fs.copy(templatePath, targetDir);
|
|
54
|
+
createSpinner.succeed("Project files created");
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
createSpinner.fail("Failed to create project");
|
|
58
|
+
console.error(err);
|
|
59
|
+
process.exit(1);
|
|
60
|
+
}
|
|
61
|
+
if (answers.usePrisma) {
|
|
62
|
+
const prismaSpinner = ora("Adding Prisma setup...").start();
|
|
63
|
+
try {
|
|
64
|
+
await fs.copy(path.join(__dirname, "../../templates"), path.join(targetDir, "prisma"));
|
|
65
|
+
prismaSpinner.succeed("Prisma configured");
|
|
66
|
+
}
|
|
67
|
+
catch (err) {
|
|
68
|
+
prismaSpinner.fail("Failed to setup Prisma");
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//
|
|
72
|
+
const installSpinner = ora("Installing dependencies...").start();
|
|
73
|
+
try {
|
|
74
|
+
execSync("npm install", {
|
|
75
|
+
cwd: targetDir,
|
|
76
|
+
stdio: "ignore",
|
|
77
|
+
});
|
|
78
|
+
installSpinner.succeed("Dependencies installed");
|
|
79
|
+
}
|
|
80
|
+
catch (err) {
|
|
81
|
+
installSpinner.fail("Failed to install dependencies");
|
|
82
|
+
console.error(err);
|
|
83
|
+
process.exit(1);
|
|
84
|
+
}
|
|
85
|
+
if (answers.useGit) {
|
|
86
|
+
const gitSpinner = ora("Initializing git...").start();
|
|
87
|
+
try {
|
|
88
|
+
execSync("git init", {
|
|
89
|
+
cwd: targetDir,
|
|
90
|
+
stdio: "ignore",
|
|
91
|
+
});
|
|
92
|
+
gitSpinner.succeed("Git initialized");
|
|
93
|
+
}
|
|
94
|
+
catch (err) {
|
|
95
|
+
gitSpinner.fail("Git init failed");
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
console.log(chalk.green.bold("\nš Authenik8 app created successfully!\n"));
|
|
99
|
+
console.log(chalk.white(`
|
|
100
|
+
Next steps:
|
|
101
|
+
|
|
102
|
+
cd ${projectName}
|
|
103
|
+
cp .env.example .env
|
|
104
|
+
npm run dev
|
|
105
|
+
|
|
106
|
+
š„ Your Authenik8 server is ready to go!
|
|
107
|
+
`));
|
|
108
|
+
}
|
|
109
|
+
main();
|
|
110
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bin/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "create-authenik8-app",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"bin": {
|
|
5
|
+
"create-authenik8-app": "dist/bin/index.js"
|
|
6
|
+
},
|
|
7
|
+
"type": "module",
|
|
8
|
+
"dependencies": {
|
|
9
|
+
"authenik8-core": "^0.1.4",
|
|
10
|
+
"chalk": "^5.6.2",
|
|
11
|
+
"fs-extra": "^11.3.4",
|
|
12
|
+
"inquirer": "^13.3.2",
|
|
13
|
+
"ora": "^9.3.0",
|
|
14
|
+
"tsx": "^4.21.0"
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"dist",
|
|
18
|
+
"templates"
|
|
19
|
+
],
|
|
20
|
+
"devDependencies": {
|
|
21
|
+
"@types/express": "^5.0.6",
|
|
22
|
+
"@types/fs-extra": "^11.0.4",
|
|
23
|
+
"@types/node": "^25.5.0"
|
|
24
|
+
}
|
|
25
|
+
}
|