create-authenik8-app 2.4.13 → 2.4.15
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/README.md +34 -516
- package/dist/src/bin/cli.d.ts +3 -0
- package/dist/src/bin/cli.d.ts.map +1 -0
- package/dist/src/bin/cli.js +112 -0
- package/dist/src/bin/cli.js.map +1 -0
- package/dist/src/bin/index.js +108 -23
- package/dist/src/bin/index.js.map +1 -1
- package/dist/src/commands/add/apply.d.ts +6 -0
- package/dist/src/commands/add/apply.d.ts.map +1 -0
- package/dist/src/commands/add/apply.js +123 -0
- package/dist/src/commands/add/apply.js.map +1 -0
- package/dist/src/commands/add/ci.d.ts +6 -0
- package/dist/src/commands/add/ci.d.ts.map +1 -0
- package/dist/src/commands/add/ci.js +108 -0
- package/dist/src/commands/add/ci.js.map +1 -0
- package/dist/src/commands/add/context.d.ts +5 -0
- package/dist/src/commands/add/context.d.ts.map +1 -0
- package/dist/src/commands/add/context.js +19 -0
- package/dist/src/commands/add/context.js.map +1 -0
- package/dist/src/commands/add/diff.d.ts +4 -0
- package/dist/src/commands/add/diff.d.ts.map +1 -0
- package/dist/src/commands/add/diff.js +114 -0
- package/dist/src/commands/add/diff.js.map +1 -0
- package/dist/src/commands/add/index.d.ts +6 -0
- package/dist/src/commands/add/index.d.ts.map +1 -0
- package/dist/src/commands/add/index.js +61 -0
- package/dist/src/commands/add/index.js.map +1 -0
- package/dist/src/commands/add/output.d.ts +5 -0
- package/dist/src/commands/add/output.d.ts.map +1 -0
- package/dist/src/commands/add/output.js +58 -0
- package/dist/src/commands/add/output.js.map +1 -0
- package/dist/src/commands/add/plan.d.ts +6 -0
- package/dist/src/commands/add/plan.d.ts.map +1 -0
- package/dist/src/commands/add/plan.js +93 -0
- package/dist/src/commands/add/plan.js.map +1 -0
- package/dist/src/commands/add/registry.d.ts +4 -0
- package/dist/src/commands/add/registry.d.ts.map +1 -0
- package/dist/src/commands/add/registry.js +37 -0
- package/dist/src/commands/add/registry.js.map +1 -0
- package/dist/src/commands/add/types.d.ts +37 -0
- package/dist/src/commands/add/types.d.ts.map +1 -0
- package/dist/src/commands/add/types.js +2 -0
- package/dist/src/commands/add/types.js.map +1 -0
- package/dist/src/commands/doctor/checks.d.ts +3 -0
- package/dist/src/commands/doctor/checks.d.ts.map +1 -0
- package/dist/src/commands/doctor/checks.js +353 -0
- package/dist/src/commands/doctor/checks.js.map +1 -0
- package/dist/src/commands/doctor/context.d.ts +5 -0
- package/dist/src/commands/doctor/context.d.ts.map +1 -0
- package/dist/src/commands/doctor/context.js +134 -0
- package/dist/src/commands/doctor/context.js.map +1 -0
- package/dist/src/commands/doctor/index.d.ts +9 -0
- package/dist/src/commands/doctor/index.d.ts.map +1 -0
- package/dist/src/commands/doctor/index.js +80 -0
- package/dist/src/commands/doctor/index.js.map +1 -0
- package/dist/src/commands/doctor/output.d.ts +4 -0
- package/dist/src/commands/doctor/output.d.ts.map +1 -0
- package/dist/src/commands/doctor/output.js +53 -0
- package/dist/src/commands/doctor/output.js.map +1 -0
- package/dist/src/commands/doctor/postGeneration.d.ts +7 -0
- package/dist/src/commands/doctor/postGeneration.d.ts.map +1 -0
- package/dist/src/commands/doctor/postGeneration.js +22 -0
- package/dist/src/commands/doctor/postGeneration.js.map +1 -0
- package/dist/src/commands/doctor/services.d.ts +5 -0
- package/dist/src/commands/doctor/services.d.ts.map +1 -0
- package/dist/src/commands/doctor/services.js +80 -0
- package/dist/src/commands/doctor/services.js.map +1 -0
- package/dist/src/commands/doctor/types.d.ts +69 -0
- package/dist/src/commands/doctor/types.d.ts.map +1 -0
- package/dist/src/commands/doctor/types.js +2 -0
- package/dist/src/commands/doctor/types.js.map +1 -0
- package/dist/src/commands/upgrade/context.d.ts +5 -0
- package/dist/src/commands/upgrade/context.d.ts.map +1 -0
- package/dist/src/commands/upgrade/context.js +57 -0
- package/dist/src/commands/upgrade/context.js.map +1 -0
- package/dist/src/commands/upgrade/index.d.ts +7 -0
- package/dist/src/commands/upgrade/index.d.ts.map +1 -0
- package/dist/src/commands/upgrade/index.js +35 -0
- package/dist/src/commands/upgrade/index.js.map +1 -0
- package/dist/src/commands/upgrade/migrations.d.ts +4 -0
- package/dist/src/commands/upgrade/migrations.d.ts.map +1 -0
- package/dist/src/commands/upgrade/migrations.js +22 -0
- package/dist/src/commands/upgrade/migrations.js.map +1 -0
- package/dist/src/commands/upgrade/output.d.ts +4 -0
- package/dist/src/commands/upgrade/output.d.ts.map +1 -0
- package/dist/src/commands/upgrade/output.js +52 -0
- package/dist/src/commands/upgrade/output.js.map +1 -0
- package/dist/src/commands/upgrade/plan.d.ts +3 -0
- package/dist/src/commands/upgrade/plan.d.ts.map +1 -0
- package/dist/src/commands/upgrade/plan.js +119 -0
- package/dist/src/commands/upgrade/plan.js.map +1 -0
- package/dist/src/commands/upgrade/types.d.ts +48 -0
- package/dist/src/commands/upgrade/types.d.ts.map +1 -0
- package/dist/src/commands/upgrade/types.js +2 -0
- package/dist/src/commands/upgrade/types.js.map +1 -0
- package/dist/src/lib/args.d.ts +21 -0
- package/dist/src/lib/args.d.ts.map +1 -1
- package/dist/src/lib/args.js +119 -1
- package/dist/src/lib/args.js.map +1 -1
- package/dist/src/lib/constants.d.ts +1 -1
- package/dist/src/lib/constants.d.ts.map +1 -1
- package/dist/src/lib/constants.js +3 -1
- package/dist/src/lib/constants.js.map +1 -1
- package/dist/src/lib/expressOAuth.d.ts +10 -0
- package/dist/src/lib/expressOAuth.d.ts.map +1 -0
- package/dist/src/lib/expressOAuth.js +164 -0
- package/dist/src/lib/expressOAuth.js.map +1 -0
- package/dist/src/lib/interruption.d.ts +14 -0
- package/dist/src/lib/interruption.d.ts.map +1 -0
- package/dist/src/lib/interruption.js +16 -0
- package/dist/src/lib/interruption.js.map +1 -0
- package/dist/src/lib/nonInteractive.d.ts +8 -0
- package/dist/src/lib/nonInteractive.d.ts.map +1 -0
- package/dist/src/lib/nonInteractive.js +111 -0
- package/dist/src/lib/nonInteractive.js.map +1 -0
- package/dist/src/lib/oauth.d.ts +9 -0
- package/dist/src/lib/oauth.d.ts.map +1 -0
- package/dist/src/lib/oauth.js +62 -0
- package/dist/src/lib/oauth.js.map +1 -0
- package/dist/src/lib/onboarding.d.ts +8 -0
- package/dist/src/lib/onboarding.d.ts.map +1 -0
- package/dist/src/lib/onboarding.js +35 -0
- package/dist/src/lib/onboarding.js.map +1 -0
- package/dist/src/lib/packageManagerCommands.d.ts +11 -0
- package/dist/src/lib/packageManagerCommands.d.ts.map +1 -0
- package/dist/src/lib/packageManagerCommands.js +34 -0
- package/dist/src/lib/packageManagerCommands.js.map +1 -0
- package/dist/src/lib/process.d.ts.map +1 -1
- package/dist/src/lib/process.js +9 -0
- package/dist/src/lib/process.js.map +1 -1
- package/dist/src/lib/projectManifest.d.ts +67 -0
- package/dist/src/lib/projectManifest.d.ts.map +1 -0
- package/dist/src/lib/projectManifest.js +134 -0
- package/dist/src/lib/projectManifest.js.map +1 -0
- package/dist/src/lib/release.d.ts +9 -0
- package/dist/src/lib/release.d.ts.map +1 -0
- package/dist/src/lib/release.js +48 -0
- package/dist/src/lib/release.js.map +1 -0
- package/dist/src/lib/rootCommand.d.ts +15 -0
- package/dist/src/lib/rootCommand.d.ts.map +1 -0
- package/dist/src/lib/rootCommand.js +17 -0
- package/dist/src/lib/rootCommand.js.map +1 -0
- package/dist/src/lib/schemas.d.ts +15 -6
- package/dist/src/lib/schemas.d.ts.map +1 -1
- package/dist/src/lib/schemas.js +8 -1
- package/dist/src/lib/schemas.js.map +1 -1
- package/dist/src/lib/semver.d.ts +10 -0
- package/dist/src/lib/semver.d.ts.map +1 -0
- package/dist/src/lib/semver.js +51 -0
- package/dist/src/lib/semver.js.map +1 -0
- package/dist/src/lib/types.d.ts +5 -1
- package/dist/src/lib/types.d.ts.map +1 -1
- package/dist/src/steps/configurePrisma.d.ts.map +1 -1
- package/dist/src/steps/configurePrisma.js +18 -23
- package/dist/src/steps/configurePrisma.js.map +1 -1
- package/dist/src/steps/configureReadme.d.ts +4 -0
- package/dist/src/steps/configureReadme.d.ts.map +1 -0
- package/dist/src/steps/configureReadme.js +22 -0
- package/dist/src/steps/configureReadme.js.map +1 -0
- package/dist/src/steps/createProject.d.ts.map +1 -1
- package/dist/src/steps/createProject.js +16 -170
- package/dist/src/steps/createProject.js.map +1 -1
- package/dist/src/steps/finalSetup.d.ts +3 -2
- package/dist/src/steps/finalSetup.d.ts.map +1 -1
- package/dist/src/steps/finalSetup.js +14 -9
- package/dist/src/steps/finalSetup.js.map +1 -1
- package/dist/src/steps/installDeps.d.ts +1 -0
- package/dist/src/steps/installDeps.d.ts.map +1 -1
- package/dist/src/steps/installDeps.js +11 -0
- package/dist/src/steps/installDeps.js.map +1 -1
- package/dist/src/steps/prompts.d.ts.map +1 -1
- package/dist/src/steps/prompts.js +32 -13
- package/dist/src/steps/prompts.js.map +1 -1
- package/dist/src/utils/output.d.ts.map +1 -1
- package/dist/src/utils/output.js +23 -11
- package/dist/src/utils/output.js.map +1 -1
- package/package.json +4 -3
- package/templates/express-auth/README.md +21 -12
- package/templates/express-auth/package.json +11 -7
- package/templates/express-auth/src/config/redis.ts +109 -0
- package/templates/express-auth/src/server.ts +2 -0
- package/templates/express-auth+/README.md +25 -18
- package/templates/express-auth+/package.json +11 -7
- package/templates/express-auth+/src/auth/auth.ts +2 -0
- package/templates/express-auth+/src/auth/controllers/password.controller.ts +12 -1
- package/templates/express-auth+/src/auth/routes/password.route.ts +1 -0
- package/templates/express-auth+/src/config/redis.ts +109 -0
- package/templates/express-auth+/src/utils/security.ts +12 -0
- package/templates/express-base/README.md +21 -12
- package/templates/express-base/package.json +11 -8
- package/templates/express-base/src/.env.example +1 -1
- package/templates/express-base/src/config/redis.ts +109 -0
- package/templates/express-base/src/server.ts +2 -0
- package/templates/fullstack/.env.example +3 -2
- package/templates/fullstack/PRESET_CONTRACT.md +7 -3
- package/templates/fullstack/README.md +45 -7
- package/templates/fullstack/apps/api/package.json +6 -4
- package/templates/fullstack/apps/api/prisma/migrations/20260721000000_init/migration.sql +163 -0
- package/templates/fullstack/apps/api/prisma/migrations/migration_lock.toml +3 -0
- package/templates/fullstack/apps/api/src/auth/authenik8.ts +13 -4
- package/templates/fullstack/apps/api/src/config/env.ts +9 -1
- package/templates/fullstack/apps/api/src/config/logger.ts +21 -11
- package/templates/fullstack/apps/api/tests/logger.test.ts +43 -0
- package/templates/fullstack/apps/web/package.json +3 -1
- package/templates/fullstack/apps/web/src/App.tsx +1 -1
- package/templates/fullstack/apps/web/src/auth/RouteGuards.tsx +1 -1
- package/templates/fullstack/apps/web/src/components/AppShell.tsx +90 -45
- package/templates/fullstack/apps/web/src/components/AuthShell.tsx +10 -7
- package/templates/fullstack/apps/web/src/components/Page.tsx +6 -3
- package/templates/fullstack/apps/web/src/features/projects/ProjectPages.tsx +1 -1
- package/templates/fullstack/apps/web/src/main.tsx +13 -6
- package/templates/fullstack/apps/web/src/pages/DashboardPage.tsx +163 -23
- package/templates/fullstack/apps/web/src/pages/StatusPages.tsx +1 -1
- package/templates/fullstack/apps/web/src/pages/auth/LoginPage.tsx +93 -17
- package/templates/fullstack/apps/web/src/pages/auth/OAuthCallbackPage.tsx +1 -1
- package/templates/fullstack/apps/web/src/pages/auth/RecoveryPages.tsx +1 -1
- package/templates/fullstack/apps/web/src/pages/auth/RegisterPage.tsx +1 -1
- package/templates/fullstack/apps/web/src/pages/auth/VerifyEmailPage.tsx +1 -1
- package/templates/fullstack/apps/web/src/styles.css +119 -43
- package/templates/fullstack/apps/web/vite.config.ts +12 -0
- package/templates/fullstack/docker-compose.yml +2 -2
- package/templates/fullstack/gitignore.template +1 -0
- package/templates/fullstack/package.json +17 -8
- package/templates/fullstack/scripts/run-local.mjs +157 -0
- package/templates/prisma/postgresql/.env.example +1 -2
- package/templates/prisma/sqlite/.env.example +1 -2
- package/templates/prisma/sqlite/client.ts +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/bin/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/src/bin/index.js
CHANGED
|
@@ -5,16 +5,21 @@ import chalk from "chalk";
|
|
|
5
5
|
import { ExitPromptError } from "@inquirer/core";
|
|
6
6
|
import { fileURLToPath } from "url";
|
|
7
7
|
import { parseCliArguments } from "../lib/args.js";
|
|
8
|
+
import { resolveNonInteractiveAnswers } from "../lib/nonInteractive.js";
|
|
9
|
+
import { writeProjectManifest } from "../lib/projectManifest.js";
|
|
10
|
+
import { runPostGenerationDoctor } from "../commands/doctor/postGeneration.js";
|
|
8
11
|
import { initState, saveState, loadState, clearState, hasReachedStep, getState } from "../lib/state.js";
|
|
9
12
|
import { dockerComposeAvailable, dockerDaemonAvailable, killAllProcesses, } from "../lib/process.js";
|
|
10
13
|
import { assertPresetRequirements } from "../lib/preflight.js";
|
|
11
14
|
import { projectNameError } from "../lib/projectName.js";
|
|
12
15
|
import { configuredCliStateSchema, firstZodIssue } from "../lib/schemas.js";
|
|
16
|
+
import { canResumeSetup, interruptionExitCode, restartCommand, } from "../lib/interruption.js";
|
|
13
17
|
import { completeStep, finishSteps, formatDuration, renderConfiguration, showBootLogo, skipStep, spinner, startStep, } from "../lib/ui.js";
|
|
14
18
|
import { runPrompts } from "../steps/prompts.js";
|
|
15
19
|
import { createProject, configurePackageJson } from "../steps/createProject.js";
|
|
16
20
|
import { installAuth } from "../steps/installAuth.js";
|
|
17
21
|
import { configurePrisma } from "../steps/configurePrisma.js";
|
|
22
|
+
import { configureGeneratedReadme } from "../steps/configureReadme.js";
|
|
18
23
|
import { installDependencies, isPackageManagerAvailable, resolvePackageManagerForPreset, } from "../steps/installDeps.js";
|
|
19
24
|
import { configureProduction, initGit, appendProductionReadme, resolveRuntime } from "../steps/finalSetup.js";
|
|
20
25
|
import { printSummary } from "../utils/output.js";
|
|
@@ -51,9 +56,25 @@ Secure application scaffolding
|
|
|
51
56
|
|
|
52
57
|
Usage:
|
|
53
58
|
create-authenik8-app <project-name> [options]
|
|
59
|
+
create-authenik8-app create <project-name> [options]
|
|
60
|
+
create-authenik8-app doctor [directory] [--json] [--skip-services]
|
|
61
|
+
create-authenik8-app add <recipe> [directory] [--dry-run]
|
|
62
|
+
create-authenik8-app upgrade [directory] [--check] [--json]
|
|
54
63
|
|
|
55
64
|
Options:
|
|
56
65
|
--package-manager <npm|pnpm|bun> Select the installer for Express presets
|
|
66
|
+
--non-interactive, --yes Generate without prompts (requires --preset)
|
|
67
|
+
--preset <base|auth|auth-oauth|fullstack>
|
|
68
|
+
Select a preset non-interactively
|
|
69
|
+
--prisma, --no-prisma Choose Prisma for the base preset
|
|
70
|
+
--database <sqlite|postgresql> Select a database where applicable
|
|
71
|
+
--oauth <google|github|google,github>
|
|
72
|
+
--no-oauth Explicitly disable OAuth for fullstack
|
|
73
|
+
--git, --no-git Choose Git initialization (defaults off)
|
|
74
|
+
--runtime <node|bun> Runtime for --production-ready Express apps
|
|
75
|
+
|
|
76
|
+
--package-manager <npm|pnpm|bun> Select the installer for Express presets
|
|
77
|
+
|
|
57
78
|
--resume Resume an interrupted setup
|
|
58
79
|
--no-install Generate without installing dependencies
|
|
59
80
|
--production-ready Configure PM2 for Express API presets
|
|
@@ -61,13 +82,22 @@ Options:
|
|
|
61
82
|
-h, --help Show this help message
|
|
62
83
|
|
|
63
84
|
Presets:
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
85
|
+
|
|
86
|
+
fullstack Recommended connected React + Express app
|
|
87
|
+
Requires npm; local PostgreSQL and Redis run in process
|
|
88
|
+
base JWT boundary for applications with their own identity source
|
|
89
|
+
Requires Redis; Prisma and a database are optional
|
|
90
|
+
auth Email/password Express API
|
|
91
|
+
Requires Redis, Prisma, and SQLite or PostgreSQL
|
|
92
|
+
auth-oauth Password + Google/GitHub Express API
|
|
93
|
+
Requires provider credentials, Redis, Prisma, and a database
|
|
94
|
+
|
|
95
|
+
Requirements:
|
|
96
|
+
Node.js 20.19+, 22.12+, or 24+. Fullstack uses npm workspaces.
|
|
68
97
|
|
|
69
98
|
Example:
|
|
70
99
|
npx create-authenik8-app my-app
|
|
100
|
+
npx create-authenik8-app my-api --yes --preset auth --database postgresql --no-git
|
|
71
101
|
|
|
72
102
|
Full-stack applications use npm workspaces. Set AUTHENIK8_VERBOSE=1 to show installer output.
|
|
73
103
|
`);
|
|
@@ -93,7 +123,7 @@ if (invalidProjectName) {
|
|
|
93
123
|
process.exit(1);
|
|
94
124
|
}
|
|
95
125
|
const skipInstall = cliArguments.skipInstall;
|
|
96
|
-
|
|
126
|
+
let isProduction = cliArguments.productionReady;
|
|
97
127
|
const isResume = cliArguments.resume;
|
|
98
128
|
const targetDir = path.resolve(process.cwd(), projectName);
|
|
99
129
|
const templateRoot = [
|
|
@@ -103,7 +133,7 @@ const templateRoot = [
|
|
|
103
133
|
const globalStateDir = path.join(process.cwd(), ".authenik8");
|
|
104
134
|
const stateFile = path.join(globalStateDir, `${projectName}.json`);
|
|
105
135
|
let shuttingDown = false;
|
|
106
|
-
const handleShutdown =
|
|
136
|
+
const handleShutdown = (signal) => {
|
|
107
137
|
if (shuttingDown)
|
|
108
138
|
return;
|
|
109
139
|
shuttingDown = true;
|
|
@@ -111,19 +141,36 @@ const handleShutdown = async () => {
|
|
|
111
141
|
spinner.stop();
|
|
112
142
|
killAllProcesses();
|
|
113
143
|
console.log(chalk.yellow("Setup interrupted."));
|
|
144
|
+
let canResume = false;
|
|
145
|
+
let restartPackageManager = cliArguments.packageManager;
|
|
146
|
+
let restartWithoutInstall = skipInstall;
|
|
147
|
+
let restartProductionReady = isProduction;
|
|
114
148
|
try {
|
|
115
149
|
const current = getState();
|
|
116
|
-
|
|
117
|
-
|
|
150
|
+
const saved = current.step === "start" ? loadState(stateFile) : null;
|
|
151
|
+
const restartState = saved ?? current;
|
|
152
|
+
canResume = canResumeSetup(restartState.step);
|
|
153
|
+
restartPackageManager ??= restartState.packageManager;
|
|
154
|
+
restartWithoutInstall ||= restartState.installDeps === false;
|
|
155
|
+
restartProductionReady ||= restartState.productionReady === true;
|
|
156
|
+
if (canResume) {
|
|
157
|
+
saveState({ ...restartState });
|
|
118
158
|
}
|
|
119
159
|
}
|
|
120
160
|
catch (_) { }
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
161
|
+
const command = restartCommand({
|
|
162
|
+
projectName,
|
|
163
|
+
productionReady: restartProductionReady,
|
|
164
|
+
resume: canResume,
|
|
165
|
+
skipInstall: restartWithoutInstall,
|
|
166
|
+
...(restartPackageManager ? { packageManager: restartPackageManager } : {}),
|
|
167
|
+
});
|
|
168
|
+
console.log(chalk.gray(canResume ? "Resume with:" : "Start again with:"));
|
|
169
|
+
console.log(chalk.cyan(` ${command}`));
|
|
170
|
+
process.exit(interruptionExitCode(signal));
|
|
124
171
|
};
|
|
125
|
-
process.prependListener("SIGINT", handleShutdown);
|
|
126
|
-
process.prependListener("SIGTERM", handleShutdown);
|
|
172
|
+
process.prependListener("SIGINT", () => handleShutdown("SIGINT"));
|
|
173
|
+
process.prependListener("SIGTERM", () => handleShutdown("SIGTERM"));
|
|
127
174
|
process.on("exit", () => {
|
|
128
175
|
killAllProcesses();
|
|
129
176
|
});
|
|
@@ -132,6 +179,7 @@ initState({
|
|
|
132
179
|
step: "start",
|
|
133
180
|
projectName,
|
|
134
181
|
installDeps: !skipInstall,
|
|
182
|
+
productionReady: isProduction,
|
|
135
183
|
...(cliArguments.packageManager ? { packageManager: cliArguments.packageManager } : {}),
|
|
136
184
|
}, stateFile);
|
|
137
185
|
async function cleanupIncompleteProject() {
|
|
@@ -165,7 +213,8 @@ async function main() {
|
|
|
165
213
|
writeLine(process.stderr, chalk.red(`Error: No saved setup state found for "${projectName}".`));
|
|
166
214
|
process.exit(1);
|
|
167
215
|
}
|
|
168
|
-
|
|
216
|
+
isProduction = isProduction || savedState.productionReady === true;
|
|
217
|
+
initState({ ...savedState, productionReady: isProduction }, stateFile);
|
|
169
218
|
if (skipInstall) {
|
|
170
219
|
saveState({ installDeps: false });
|
|
171
220
|
}
|
|
@@ -179,7 +228,11 @@ async function main() {
|
|
|
179
228
|
console.log(chalk.yellow(`\nResuming ${projectName} from "${currentStep}".\n`));
|
|
180
229
|
}
|
|
181
230
|
else {
|
|
182
|
-
const promptAnswers =
|
|
231
|
+
const promptAnswers = cliArguments.nonInteractive
|
|
232
|
+
? resolveNonInteractiveAnswers(cliArguments, {
|
|
233
|
+
bunAvailable: isPackageManagerAvailable("bun"),
|
|
234
|
+
})
|
|
235
|
+
: await runPrompts(getState(), isProduction);
|
|
183
236
|
saveState({ ...promptAnswers, step: "prompts" });
|
|
184
237
|
currentStep = "prompts";
|
|
185
238
|
}
|
|
@@ -199,7 +252,7 @@ async function main() {
|
|
|
199
252
|
if (state.installDeps !== false && !isPackageManagerAvailable(packageManager)) {
|
|
200
253
|
throw new Error(`${packageManager} is not available on PATH. Install it or choose another package manager.`);
|
|
201
254
|
}
|
|
202
|
-
saveState({ packageManager });
|
|
255
|
+
saveState({ packageManager, runtime });
|
|
203
256
|
if (state.usePrisma) {
|
|
204
257
|
if (!state.database)
|
|
205
258
|
saveState({ database: "sqlite" });
|
|
@@ -260,11 +313,23 @@ async function main() {
|
|
|
260
313
|
else {
|
|
261
314
|
skipStep("prisma-configured", "already completed");
|
|
262
315
|
}
|
|
316
|
+
const manifestState = configuredCliStateSchema.parse(getState());
|
|
317
|
+
await writeProjectManifest(targetDir, {
|
|
318
|
+
projectName,
|
|
319
|
+
generatorVersion: readCliVersion(),
|
|
320
|
+
preset: manifestState.authMode,
|
|
321
|
+
packageManager: manifestState.packageManager,
|
|
322
|
+
runtime: manifestState.runtime ?? "node",
|
|
323
|
+
...(manifestState.database ? { database: manifestState.database } : {}),
|
|
324
|
+
usePrisma: manifestState.usePrisma,
|
|
325
|
+
oauthProviders: manifestState.oauthProviders ?? [],
|
|
326
|
+
productionReady: isProduction && manifestState.authMode !== "fullstack",
|
|
327
|
+
});
|
|
263
328
|
if (isProduction
|
|
264
329
|
&& getState().authMode !== "fullstack"
|
|
265
330
|
&& !hasReachedStep(currentStep, "production-configured")) {
|
|
266
331
|
startStep("production-configured");
|
|
267
|
-
await configureProduction(targetDir, projectName, runtime);
|
|
332
|
+
await configureProduction(targetDir, projectName, runtime, packageManager);
|
|
268
333
|
saveState({
|
|
269
334
|
step: "production-configured",
|
|
270
335
|
...(getState().authMode !== "base" && { hashLib: selectedHash }),
|
|
@@ -272,6 +337,10 @@ async function main() {
|
|
|
272
337
|
currentStep = "production-configured";
|
|
273
338
|
completeStep(currentStep);
|
|
274
339
|
}
|
|
340
|
+
if (isProduction && getState().authMode !== "fullstack") {
|
|
341
|
+
appendProductionReadme(targetDir, projectName, packageManager);
|
|
342
|
+
}
|
|
343
|
+
await configureGeneratedReadme(targetDir, packageManager);
|
|
275
344
|
// Install dependencies
|
|
276
345
|
if (!hasReachedStep(currentStep, "deps-installed")) {
|
|
277
346
|
configurePackageJson(targetDir, getState().usePrisma ?? false, packageManager);
|
|
@@ -316,11 +385,24 @@ async function main() {
|
|
|
316
385
|
else {
|
|
317
386
|
skipStep("git-initialized", "already completed");
|
|
318
387
|
}
|
|
388
|
+
if (!hasReachedStep(currentStep, "project-validated")) {
|
|
389
|
+
startStep("project-validated");
|
|
390
|
+
const validation = await runPostGenerationDoctor(targetDir, getState().installDeps !== false);
|
|
391
|
+
completeStep("project-validated", `${validation.passed} checks passed`);
|
|
392
|
+
if (validation.warnings > 0) {
|
|
393
|
+
console.log(chalk.yellow(`! Static Doctor warnings: ${validation.warningLabels.join(", ")}`));
|
|
394
|
+
}
|
|
395
|
+
saveState({
|
|
396
|
+
step: "project-validated",
|
|
397
|
+
...(getState().authMode !== "base" && { hashLib: selectedHash }),
|
|
398
|
+
});
|
|
399
|
+
currentStep = "project-validated";
|
|
400
|
+
}
|
|
401
|
+
else {
|
|
402
|
+
skipStep("project-validated", "already completed");
|
|
403
|
+
}
|
|
319
404
|
finishSteps();
|
|
320
405
|
// Done
|
|
321
|
-
if (isProduction && getState().authMode !== "fullstack") {
|
|
322
|
-
appendProductionReadme(targetDir, projectName);
|
|
323
|
-
}
|
|
324
406
|
const hasDockerCompose = dockerComposeAvailable();
|
|
325
407
|
printSummary(getState(), isProduction, hasDockerCompose, hasDockerCompose && dockerDaemonAvailable());
|
|
326
408
|
saveState({ step: "done", ...(getState().authMode !== "base" && { hashLib: selectedHash }) });
|
|
@@ -335,15 +417,18 @@ async function main() {
|
|
|
335
417
|
process.exit(1);
|
|
336
418
|
}
|
|
337
419
|
}
|
|
338
|
-
|
|
420
|
+
try {
|
|
421
|
+
await main();
|
|
422
|
+
}
|
|
423
|
+
catch (err) {
|
|
339
424
|
if (err instanceof ExitPromptError) {
|
|
340
425
|
console.log(chalk.yellow("\nSetup cancelled. No project files were changed."));
|
|
341
426
|
killAllProcesses();
|
|
342
427
|
await cleanupIncompleteProject();
|
|
343
|
-
process.exit(
|
|
428
|
+
process.exit(130);
|
|
344
429
|
}
|
|
345
430
|
writeLine(process.stderr, chalk.red(`\nUnexpected error: ${errorMessage(err)}`));
|
|
346
431
|
await cleanupIncompleteProject();
|
|
347
432
|
process.exit(1);
|
|
348
|
-
}
|
|
433
|
+
}
|
|
349
434
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/bin/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/bin/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { PlannedFileChange } from "./types.js";
|
|
2
|
+
export declare class ConcurrentRecipeChangeError extends Error {
|
|
3
|
+
}
|
|
4
|
+
/** Apply a plan as one guarded transaction, rolling back if commit or verification fails. */
|
|
5
|
+
export declare function applyPlannedChanges(rootDir: string, changes: readonly PlannedFileChange[], verify: () => Promise<void>): Promise<void>;
|
|
6
|
+
//# sourceMappingURL=apply.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../../src/commands/add/apply.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,qBAAa,2BAA4B,SAAQ,KAAK;CAAG;AA2FzD,6FAA6F;AAC7F,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,SAAS,iBAAiB,EAAE,EACrC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAC1B,OAAO,CAAC,IAAI,CAAC,CAqCf"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import fs from "fs-extra";
|
|
4
|
+
export class ConcurrentRecipeChangeError extends Error {
|
|
5
|
+
}
|
|
6
|
+
async function absolutePath(rootDir, relativePath) {
|
|
7
|
+
const resolved = path.resolve(rootDir, relativePath);
|
|
8
|
+
const relative = path.relative(rootDir, resolved);
|
|
9
|
+
if (relative.startsWith("..") || path.isAbsolute(relative)) {
|
|
10
|
+
throw new Error(`Recipe path escapes the project: ${relativePath}`);
|
|
11
|
+
}
|
|
12
|
+
const realRoot = await fs.realpath(rootDir);
|
|
13
|
+
let existing = resolved;
|
|
14
|
+
while (!(await fs.pathExists(existing))) {
|
|
15
|
+
const parent = path.dirname(existing);
|
|
16
|
+
if (parent === existing)
|
|
17
|
+
break;
|
|
18
|
+
existing = parent;
|
|
19
|
+
}
|
|
20
|
+
const realExisting = await fs.realpath(existing);
|
|
21
|
+
const realRelative = path.relative(realRoot, realExisting);
|
|
22
|
+
if (realRelative.startsWith("..") || path.isAbsolute(realRelative)) {
|
|
23
|
+
throw new Error(`Recipe path resolves outside the project: ${relativePath}`);
|
|
24
|
+
}
|
|
25
|
+
return resolved;
|
|
26
|
+
}
|
|
27
|
+
async function atomicWrite(filename, source) {
|
|
28
|
+
await fs.ensureDir(path.dirname(filename));
|
|
29
|
+
const temporary = path.join(path.dirname(filename), `.${path.basename(filename)}.authenik8-${process.pid}-${randomUUID()}.tmp`);
|
|
30
|
+
const mode = await fs.pathExists(filename) ? (await fs.stat(filename)).mode : 0o644;
|
|
31
|
+
try {
|
|
32
|
+
await fs.writeFile(temporary, source, { mode });
|
|
33
|
+
await fs.move(temporary, filename, { overwrite: true });
|
|
34
|
+
}
|
|
35
|
+
finally {
|
|
36
|
+
await fs.remove(temporary);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
async function sourceAt(filename) {
|
|
40
|
+
return await fs.pathExists(filename) ? fs.readFile(filename, "utf8") : null;
|
|
41
|
+
}
|
|
42
|
+
async function commitChange(rootDir, change) {
|
|
43
|
+
const filename = await absolutePath(rootDir, change.relativePath);
|
|
44
|
+
const current = await sourceAt(filename);
|
|
45
|
+
if (current !== change.before) {
|
|
46
|
+
throw new ConcurrentRecipeChangeError(`${change.relativePath} changed after the recipe was planned; nothing further was written.`);
|
|
47
|
+
}
|
|
48
|
+
if (change.sensitive) {
|
|
49
|
+
if (change.before === null) {
|
|
50
|
+
throw new Error(`Sensitive recipe changes cannot create files: ${change.relativePath}`);
|
|
51
|
+
}
|
|
52
|
+
if (!change.after.startsWith(change.before)) {
|
|
53
|
+
throw new Error(`Sensitive recipe changes must be append-only: ${change.relativePath}`);
|
|
54
|
+
}
|
|
55
|
+
await fs.appendFile(filename, change.after.slice(change.before.length));
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
try {
|
|
59
|
+
await atomicWrite(filename, change.after);
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
if (change.before === null)
|
|
63
|
+
await pruneEmptyParents(rootDir, filename);
|
|
64
|
+
throw error;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
async function pruneEmptyParents(rootDir, filename) {
|
|
68
|
+
let directory = path.dirname(filename);
|
|
69
|
+
while (directory !== rootDir) {
|
|
70
|
+
try {
|
|
71
|
+
await fs.rmdir(directory);
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
directory = path.dirname(directory);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
async function restoreChange(rootDir, change) {
|
|
80
|
+
const filename = await absolutePath(rootDir, change.relativePath);
|
|
81
|
+
if (change.before === null) {
|
|
82
|
+
await fs.remove(filename);
|
|
83
|
+
await pruneEmptyParents(rootDir, filename);
|
|
84
|
+
}
|
|
85
|
+
else if (change.sensitive)
|
|
86
|
+
await fs.writeFile(filename, change.before);
|
|
87
|
+
else
|
|
88
|
+
await atomicWrite(filename, change.before);
|
|
89
|
+
}
|
|
90
|
+
/** Apply a plan as one guarded transaction, rolling back if commit or verification fails. */
|
|
91
|
+
export async function applyPlannedChanges(rootDir, changes, verify) {
|
|
92
|
+
for (const change of changes) {
|
|
93
|
+
const current = await sourceAt(await absolutePath(rootDir, change.relativePath));
|
|
94
|
+
if (current !== change.before) {
|
|
95
|
+
throw new ConcurrentRecipeChangeError(`${change.relativePath} changed after the recipe was planned; no files were written.`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
const ordered = [...changes].sort((left, right) => Number(left.sensitive) - Number(right.sensitive));
|
|
99
|
+
const committed = [];
|
|
100
|
+
try {
|
|
101
|
+
for (const change of ordered) {
|
|
102
|
+
await commitChange(rootDir, change);
|
|
103
|
+
committed.push(change);
|
|
104
|
+
}
|
|
105
|
+
await verify();
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
const rollbackErrors = [];
|
|
109
|
+
for (const change of committed.reverse()) {
|
|
110
|
+
try {
|
|
111
|
+
await restoreChange(rootDir, change);
|
|
112
|
+
}
|
|
113
|
+
catch (rollbackError) {
|
|
114
|
+
rollbackErrors.push(rollbackError instanceof Error ? rollbackError.message : String(rollbackError));
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
if (rollbackErrors.length > 0) {
|
|
118
|
+
throw new Error(`Recipe failed and rollback was incomplete: ${rollbackErrors.join("; ")}`, { cause: error });
|
|
119
|
+
}
|
|
120
|
+
throw error;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=apply.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../../src/commands/add/apply.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,UAAU,CAAC;AAI1B,MAAM,OAAO,2BAA4B,SAAQ,KAAK;CAAG;AAEzD,KAAK,UAAU,YAAY,CAAC,OAAe,EAAE,YAAoB;IAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAClD,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,oCAAoC,YAAY,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,QAAQ,GAAG,QAAQ,CAAC;IACxB,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,MAAM,KAAK,QAAQ;YAAE,MAAM;QAC/B,QAAQ,GAAG,MAAM,CAAC;IACpB,CAAC;IACD,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACjD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC3D,IAAI,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CAAC,6CAA6C,YAAY,EAAE,CAAC,CAAC;IAC/E,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,QAAgB,EAAE,MAAc;IACzD,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CACzB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EACtB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,OAAO,CAAC,GAAG,IAAI,UAAU,EAAE,MAAM,CAC3E,CAAC;IACF,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IACpF,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,QAAgB;IACtC,OAAO,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9E,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,OAAe,EAAE,MAAyB;IACpE,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;IAClE,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,OAAO,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;QAC9B,MAAM,IAAI,2BAA2B,CACnC,GAAG,MAAM,CAAC,YAAY,qEAAqE,CAC5F,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,iDAAiD,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;QAC1F,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,iDAAiD,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;QAC1F,CAAC;QACD,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QACxE,OAAO;IACT,CAAC;IACD,IAAI,CAAC;QACH,MAAM,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI;YAAE,MAAM,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACvE,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,OAAe,EAAE,QAAgB;IAChE,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,OAAO,SAAS,KAAK,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,MAAM;QACR,CAAC;QACD,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,OAAe,EAAE,MAAyB;IACrE,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;IAClE,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QAC3B,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1B,MAAM,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;SAAM,IAAI,MAAM,CAAC,SAAS;QAAE,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;;QACpE,MAAM,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AAClD,CAAC;AAED,6FAA6F;AAC7F,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAe,EACf,OAAqC,EACrC,MAA2B;IAE3B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;QACjF,IAAI,OAAO,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;YAC9B,MAAM,IAAI,2BAA2B,CACnC,GAAG,MAAM,CAAC,YAAY,+DAA+D,CACtF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IACrG,MAAM,SAAS,GAAwB,EAAE,CAAC;IAC1C,IAAI,CAAC;QACH,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACpC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC;QACD,MAAM,MAAM,EAAE,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,cAAc,GAAa,EAAE,CAAC;QACpC,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;YACzC,IAAI,CAAC;gBACH,MAAM,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACvC,CAAC;YAAC,OAAO,aAAa,EAAE,CAAC;gBACvB,cAAc,CAAC,IAAI,CACjB,aAAa,YAAY,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAC/E,CAAC;YACJ,CAAC;QACH,CAAC;QACD,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CACb,8CAA8C,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EACzE,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { PackageManager } from "../../lib/types.js";
|
|
2
|
+
import type { AddContext, PlannedFileChange } from "./types.js";
|
|
3
|
+
export declare const githubCiWorkflowPath = ".github/workflows/authenik8.yml";
|
|
4
|
+
export declare function renderGithubCiWorkflow(packageManager: PackageManager, cliVersion: string): string;
|
|
5
|
+
export declare function planGithubCi(context: AddContext): Promise<PlannedFileChange[]>;
|
|
6
|
+
//# sourceMappingURL=ci.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ci.d.ts","sourceRoot":"","sources":["../../../../src/commands/add/ci.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEhE,eAAO,MAAM,oBAAoB,oCAAoC,CAAC;AA6BtE,wBAAgB,sBAAsB,CACpC,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,MAAM,GACjB,MAAM,CA0CR;AAkBD,wBAAsB,YAAY,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAwBpF"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import fs from "fs-extra";
|
|
3
|
+
import { currentToolRelease } from "../../lib/release.js";
|
|
4
|
+
import { AddRecipeError } from "./plan.js";
|
|
5
|
+
export const githubCiWorkflowPath = ".github/workflows/authenik8.yml";
|
|
6
|
+
const workflowSchemaVersion = 1;
|
|
7
|
+
const pnpmVersion = "10.12.1";
|
|
8
|
+
const bunVersion = "1.3.14";
|
|
9
|
+
function packageManagerSetup(packageManager) {
|
|
10
|
+
if (packageManager === "pnpm") {
|
|
11
|
+
return [
|
|
12
|
+
" - name: Install pinned pnpm",
|
|
13
|
+
` run: npm install --global pnpm@${pnpmVersion}`,
|
|
14
|
+
"",
|
|
15
|
+
];
|
|
16
|
+
}
|
|
17
|
+
if (packageManager === "bun") {
|
|
18
|
+
return [
|
|
19
|
+
" - name: Install pinned Bun",
|
|
20
|
+
` run: npm install --global bun@${bunVersion}`,
|
|
21
|
+
"",
|
|
22
|
+
];
|
|
23
|
+
}
|
|
24
|
+
return [];
|
|
25
|
+
}
|
|
26
|
+
function installCommand(packageManager) {
|
|
27
|
+
if (packageManager === "pnpm")
|
|
28
|
+
return "pnpm install --frozen-lockfile";
|
|
29
|
+
if (packageManager === "bun")
|
|
30
|
+
return "bun install --frozen-lockfile";
|
|
31
|
+
return "npm ci --no-audit --no-fund";
|
|
32
|
+
}
|
|
33
|
+
export function renderGithubCiWorkflow(packageManager, cliVersion) {
|
|
34
|
+
return [
|
|
35
|
+
"# Managed by create-authenik8-app. Re-run `create-authenik8-app add ci-github` to update safely.",
|
|
36
|
+
`# authenik8-ci-schema: ${workflowSchemaVersion}`,
|
|
37
|
+
`# authenik8-cli: ${cliVersion}`,
|
|
38
|
+
"name: Authenik8 security boundary",
|
|
39
|
+
"",
|
|
40
|
+
"on:",
|
|
41
|
+
" pull_request:",
|
|
42
|
+
" push:",
|
|
43
|
+
" branches: [main, master]",
|
|
44
|
+
" workflow_dispatch:",
|
|
45
|
+
"",
|
|
46
|
+
"permissions:",
|
|
47
|
+
" contents: read",
|
|
48
|
+
"",
|
|
49
|
+
"jobs:",
|
|
50
|
+
" auth-boundary:",
|
|
51
|
+
" runs-on: ubuntu-latest",
|
|
52
|
+
" timeout-minutes: 10",
|
|
53
|
+
" steps:",
|
|
54
|
+
" - name: Check out repository",
|
|
55
|
+
" uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5",
|
|
56
|
+
" with:",
|
|
57
|
+
" persist-credentials: false",
|
|
58
|
+
"",
|
|
59
|
+
" - name: Set up Node.js",
|
|
60
|
+
" uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020",
|
|
61
|
+
" with:",
|
|
62
|
+
" node-version: 22.12.x",
|
|
63
|
+
"",
|
|
64
|
+
...packageManagerSetup(packageManager),
|
|
65
|
+
" - name: Install locked dependencies",
|
|
66
|
+
` run: ${installCommand(packageManager)}`,
|
|
67
|
+
"",
|
|
68
|
+
" - name: Validate the Authenik8 boundary",
|
|
69
|
+
` run: npx --yes create-authenik8-app@${cliVersion} doctor --json --skip-services`,
|
|
70
|
+
"",
|
|
71
|
+
" - name: Enforce the Authenik8 upgrade policy",
|
|
72
|
+
` run: npx --yes create-authenik8-app@${cliVersion} upgrade --check --json`,
|
|
73
|
+
"",
|
|
74
|
+
].join("\n");
|
|
75
|
+
}
|
|
76
|
+
async function requireLockfile(context) {
|
|
77
|
+
const candidates = {
|
|
78
|
+
npm: ["package-lock.json"],
|
|
79
|
+
pnpm: ["pnpm-lock.yaml"],
|
|
80
|
+
bun: ["bun.lock", "bun.lockb"],
|
|
81
|
+
};
|
|
82
|
+
const found = await Promise.all(candidates[context.manifest.packageManager].map((filename) => fs.pathExists(path.join(context.rootDir, filename))));
|
|
83
|
+
if (!found.some(Boolean)) {
|
|
84
|
+
throw new AddRecipeError(`ci-github requires a committed ${context.manifest.packageManager} lockfile so CI cannot resolve an unaudited dependency graph. Run the project's package manager install first.`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
export async function planGithubCi(context) {
|
|
88
|
+
await requireLockfile(context);
|
|
89
|
+
const cliVersion = currentToolRelease().generatorVersion;
|
|
90
|
+
const filename = path.join(context.rootDir, githubCiWorkflowPath);
|
|
91
|
+
const before = await fs.pathExists(filename) ? await fs.readFile(filename, "utf8") : null;
|
|
92
|
+
const after = renderGithubCiWorkflow(context.manifest.packageManager, cliVersion);
|
|
93
|
+
if (before === after)
|
|
94
|
+
return [];
|
|
95
|
+
if (before !== null) {
|
|
96
|
+
const schema = before.match(/^# authenik8-ci-schema: (\d+)$/m)?.[1];
|
|
97
|
+
const previousVersion = before.match(/^# authenik8-cli: (\S+)$/m)?.[1];
|
|
98
|
+
if (schema !== String(workflowSchemaVersion) || !previousVersion) {
|
|
99
|
+
throw new AddRecipeError(`${githubCiWorkflowPath} already exists and is not a recognized managed workflow; refusing to overwrite it.`);
|
|
100
|
+
}
|
|
101
|
+
const expected = renderGithubCiWorkflow(context.manifest.packageManager, previousVersion);
|
|
102
|
+
if (before !== expected) {
|
|
103
|
+
throw new AddRecipeError(`${githubCiWorkflowPath} has local changes; refusing to overwrite the customized security workflow.`);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return [{ relativePath: githubCiWorkflowPath, before, after }];
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=ci.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ci.js","sourceRoot":"","sources":["../../../../src/commands/add/ci.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/commands/add/context.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,qBAAa,eAAgB,SAAQ,KAAK;CAAG;AAE7C,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAe7E"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import fs from "fs-extra";
|
|
3
|
+
import { readProjectManifest } from "../../lib/projectManifest.js";
|
|
4
|
+
export class AddProjectError extends Error {
|
|
5
|
+
}
|
|
6
|
+
export async function createAddContext(directory) {
|
|
7
|
+
const rootDir = path.resolve(directory);
|
|
8
|
+
if (!(await fs.pathExists(path.join(rootDir, "package.json")))) {
|
|
9
|
+
throw new AddProjectError(`No package.json found in ${rootDir}.`);
|
|
10
|
+
}
|
|
11
|
+
const result = await readProjectManifest(rootDir);
|
|
12
|
+
if (result.status === "missing") {
|
|
13
|
+
throw new AddProjectError("authenik8.json is required for safe recipe changes. Regenerate or migrate this legacy project first.");
|
|
14
|
+
}
|
|
15
|
+
if (result.status === "invalid")
|
|
16
|
+
throw new AddProjectError(result.message);
|
|
17
|
+
return { rootDir, manifest: result.manifest };
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=context.js.map
|