Fix vite quitting if custom handler implemented
This commit is contained in:
parent
a40810b364
commit
dc4f386e7a
@ -1,16 +1,96 @@
|
|||||||
import { copyKeycloakResourcesToPublic } from "./shared/copyKeycloakResourcesToPublic";
|
|
||||||
import type { BuildContext } from "./shared/buildContext";
|
|
||||||
import { maybeDelegateCommandToCustomHandler } from "./shared/customHandler_delegate";
|
import { maybeDelegateCommandToCustomHandler } from "./shared/customHandler_delegate";
|
||||||
|
import { join as pathJoin, dirname as pathDirname } from "path";
|
||||||
|
import { WELL_KNOWN_DIRECTORY_BASE_NAME } from "./shared/constants";
|
||||||
|
import { readThisNpmPackageVersion } from "./tools/readThisNpmPackageVersion";
|
||||||
|
import * as fs from "fs";
|
||||||
|
import { rmSync } from "./tools/fs.rmSync";
|
||||||
|
import type { BuildContext } from "./shared/buildContext";
|
||||||
|
import { transformCodebase } from "./tools/transformCodebase";
|
||||||
|
import { getThisCodebaseRootDirPath } from "./tools/getThisCodebaseRootDirPath";
|
||||||
|
|
||||||
export async function command(params: { buildContext: BuildContext }) {
|
export async function command(params: { buildContext: BuildContext }) {
|
||||||
const { buildContext } = params;
|
const { buildContext } = params;
|
||||||
|
|
||||||
maybeDelegateCommandToCustomHandler({
|
const { hasBeenHandled } = maybeDelegateCommandToCustomHandler({
|
||||||
commandName: "copy-keycloak-resources-to-public",
|
commandName: "copy-keycloak-resources-to-public",
|
||||||
buildContext
|
buildContext
|
||||||
});
|
});
|
||||||
|
|
||||||
copyKeycloakResourcesToPublic({
|
if (hasBeenHandled) {
|
||||||
buildContext
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const destDirPath = pathJoin(
|
||||||
|
buildContext.publicDirPath,
|
||||||
|
WELL_KNOWN_DIRECTORY_BASE_NAME.KEYCLOAKIFY_DEV_RESOURCES
|
||||||
|
);
|
||||||
|
|
||||||
|
const keycloakifyBuildinfoFilePath = pathJoin(destDirPath, "keycloakify.buildinfo");
|
||||||
|
|
||||||
|
const keycloakifyBuildinfoRaw = JSON.stringify(
|
||||||
|
{
|
||||||
|
keycloakifyVersion: readThisNpmPackageVersion()
|
||||||
|
},
|
||||||
|
null,
|
||||||
|
2
|
||||||
|
);
|
||||||
|
|
||||||
|
skip_if_already_done: {
|
||||||
|
if (!fs.existsSync(keycloakifyBuildinfoFilePath)) {
|
||||||
|
break skip_if_already_done;
|
||||||
|
}
|
||||||
|
|
||||||
|
const keycloakifyBuildinfoRaw_previousRun = fs
|
||||||
|
.readFileSync(keycloakifyBuildinfoFilePath)
|
||||||
|
.toString("utf8");
|
||||||
|
|
||||||
|
if (keycloakifyBuildinfoRaw_previousRun !== keycloakifyBuildinfoRaw) {
|
||||||
|
break skip_if_already_done;
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
rmSync(destDirPath, { force: true, recursive: true });
|
||||||
|
|
||||||
|
// NOTE: To remove in a while, remove the legacy keycloak-resources directory
|
||||||
|
rmSync(pathJoin(pathDirname(destDirPath), "keycloak-resources"), {
|
||||||
|
force: true,
|
||||||
|
recursive: true
|
||||||
});
|
});
|
||||||
|
rmSync(pathJoin(pathDirname(destDirPath), ".keycloakify"), {
|
||||||
|
force: true,
|
||||||
|
recursive: true
|
||||||
|
});
|
||||||
|
|
||||||
|
fs.mkdirSync(destDirPath, { recursive: true });
|
||||||
|
|
||||||
|
fs.writeFileSync(pathJoin(destDirPath, ".gitignore"), Buffer.from("*", "utf8"));
|
||||||
|
|
||||||
|
transformCodebase({
|
||||||
|
srcDirPath: pathJoin(
|
||||||
|
getThisCodebaseRootDirPath(),
|
||||||
|
"res",
|
||||||
|
"public",
|
||||||
|
WELL_KNOWN_DIRECTORY_BASE_NAME.KEYCLOAKIFY_DEV_RESOURCES
|
||||||
|
),
|
||||||
|
destDirPath
|
||||||
|
});
|
||||||
|
|
||||||
|
fs.writeFileSync(
|
||||||
|
pathJoin(destDirPath, "README.txt"),
|
||||||
|
Buffer.from(
|
||||||
|
// prettier-ignore
|
||||||
|
[
|
||||||
|
"This directory is only used in dev mode by Keycloakify",
|
||||||
|
"It won't be included in your final build.",
|
||||||
|
"Do not modify anything in this directory.",
|
||||||
|
].join("\n")
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
fs.writeFileSync(
|
||||||
|
keycloakifyBuildinfoFilePath,
|
||||||
|
Buffer.from(keycloakifyBuildinfoRaw, "utf8")
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
@ -27,11 +27,15 @@ import { maybeDelegateCommandToCustomHandler } from "./shared/customHandler_dele
|
|||||||
export async function command(params: { buildContext: BuildContext }) {
|
export async function command(params: { buildContext: BuildContext }) {
|
||||||
const { buildContext } = params;
|
const { buildContext } = params;
|
||||||
|
|
||||||
maybeDelegateCommandToCustomHandler({
|
const { hasBeenHandled } = maybeDelegateCommandToCustomHandler({
|
||||||
commandName: "eject-page",
|
commandName: "eject-page",
|
||||||
buildContext
|
buildContext
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (hasBeenHandled) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
console.log(chalk.cyan("Theme type:"));
|
console.log(chalk.cyan("Theme type:"));
|
||||||
|
|
||||||
const themeType = await (async () => {
|
const themeType = await (async () => {
|
||||||
|
@ -11,11 +11,15 @@ import { maybeDelegateCommandToCustomHandler } from "../shared/customHandler_del
|
|||||||
export async function command(params: { buildContext: BuildContext }) {
|
export async function command(params: { buildContext: BuildContext }) {
|
||||||
const { buildContext } = params;
|
const { buildContext } = params;
|
||||||
|
|
||||||
maybeDelegateCommandToCustomHandler({
|
const { hasBeenHandled } = maybeDelegateCommandToCustomHandler({
|
||||||
commandName: "initialize-account-theme",
|
commandName: "initialize-account-theme",
|
||||||
buildContext
|
buildContext
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (hasBeenHandled) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const accountThemeSrcDirPath = pathJoin(buildContext.themeSrcDirPath, "account");
|
const accountThemeSrcDirPath = pathJoin(buildContext.themeSrcDirPath, "account");
|
||||||
|
|
||||||
if (
|
if (
|
||||||
|
@ -9,11 +9,15 @@ import { maybeDelegateCommandToCustomHandler } from "./shared/customHandler_dele
|
|||||||
export async function command(params: { buildContext: BuildContext }) {
|
export async function command(params: { buildContext: BuildContext }) {
|
||||||
const { buildContext } = params;
|
const { buildContext } = params;
|
||||||
|
|
||||||
maybeDelegateCommandToCustomHandler({
|
const { hasBeenHandled } = maybeDelegateCommandToCustomHandler({
|
||||||
commandName: "initialize-email-theme",
|
commandName: "initialize-email-theme",
|
||||||
buildContext
|
buildContext
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (hasBeenHandled) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const emailThemeSrcDirPath = pathJoin(buildContext.themeSrcDirPath, "email");
|
const emailThemeSrcDirPath = pathJoin(buildContext.themeSrcDirPath, "email");
|
||||||
|
|
||||||
if (
|
if (
|
||||||
|
@ -1,95 +0,0 @@
|
|||||||
import { join as pathJoin, dirname as pathDirname } from "path";
|
|
||||||
import { WELL_KNOWN_DIRECTORY_BASE_NAME } from "../shared/constants";
|
|
||||||
import { readThisNpmPackageVersion } from "../tools/readThisNpmPackageVersion";
|
|
||||||
import { assert } from "tsafe/assert";
|
|
||||||
import * as fs from "fs";
|
|
||||||
import { rmSync } from "../tools/fs.rmSync";
|
|
||||||
import type { BuildContext } from "./buildContext";
|
|
||||||
import { transformCodebase } from "../tools/transformCodebase";
|
|
||||||
import { getThisCodebaseRootDirPath } from "../tools/getThisCodebaseRootDirPath";
|
|
||||||
|
|
||||||
export type BuildContextLike = {
|
|
||||||
publicDirPath: string;
|
|
||||||
};
|
|
||||||
|
|
||||||
assert<BuildContext extends BuildContextLike ? true : false>();
|
|
||||||
|
|
||||||
export function copyKeycloakResourcesToPublic(params: {
|
|
||||||
buildContext: BuildContextLike;
|
|
||||||
}) {
|
|
||||||
const { buildContext } = params;
|
|
||||||
|
|
||||||
const destDirPath = pathJoin(
|
|
||||||
buildContext.publicDirPath,
|
|
||||||
WELL_KNOWN_DIRECTORY_BASE_NAME.KEYCLOAKIFY_DEV_RESOURCES
|
|
||||||
);
|
|
||||||
|
|
||||||
const keycloakifyBuildinfoFilePath = pathJoin(destDirPath, "keycloakify.buildinfo");
|
|
||||||
|
|
||||||
const keycloakifyBuildinfoRaw = JSON.stringify(
|
|
||||||
{
|
|
||||||
keycloakifyVersion: readThisNpmPackageVersion()
|
|
||||||
},
|
|
||||||
null,
|
|
||||||
2
|
|
||||||
);
|
|
||||||
|
|
||||||
skip_if_already_done: {
|
|
||||||
if (!fs.existsSync(keycloakifyBuildinfoFilePath)) {
|
|
||||||
break skip_if_already_done;
|
|
||||||
}
|
|
||||||
|
|
||||||
const keycloakifyBuildinfoRaw_previousRun = fs
|
|
||||||
.readFileSync(keycloakifyBuildinfoFilePath)
|
|
||||||
.toString("utf8");
|
|
||||||
|
|
||||||
if (keycloakifyBuildinfoRaw_previousRun !== keycloakifyBuildinfoRaw) {
|
|
||||||
break skip_if_already_done;
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
rmSync(destDirPath, { force: true, recursive: true });
|
|
||||||
|
|
||||||
// NOTE: To remove in a while, remove the legacy keycloak-resources directory
|
|
||||||
rmSync(pathJoin(pathDirname(destDirPath), "keycloak-resources"), {
|
|
||||||
force: true,
|
|
||||||
recursive: true
|
|
||||||
});
|
|
||||||
rmSync(pathJoin(pathDirname(destDirPath), ".keycloakify"), {
|
|
||||||
force: true,
|
|
||||||
recursive: true
|
|
||||||
});
|
|
||||||
|
|
||||||
fs.mkdirSync(destDirPath, { recursive: true });
|
|
||||||
|
|
||||||
fs.writeFileSync(pathJoin(destDirPath, ".gitignore"), Buffer.from("*", "utf8"));
|
|
||||||
|
|
||||||
transformCodebase({
|
|
||||||
srcDirPath: pathJoin(
|
|
||||||
getThisCodebaseRootDirPath(),
|
|
||||||
"res",
|
|
||||||
"public",
|
|
||||||
WELL_KNOWN_DIRECTORY_BASE_NAME.KEYCLOAKIFY_DEV_RESOURCES
|
|
||||||
),
|
|
||||||
destDirPath
|
|
||||||
});
|
|
||||||
|
|
||||||
fs.writeFileSync(
|
|
||||||
pathJoin(destDirPath, "README.txt"),
|
|
||||||
Buffer.from(
|
|
||||||
// prettier-ignore
|
|
||||||
[
|
|
||||||
"This directory is only used in dev mode by Keycloakify",
|
|
||||||
"It won't be included in your final build.",
|
|
||||||
"Do not modify anything in this directory.",
|
|
||||||
].join("\n")
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
fs.writeFileSync(
|
|
||||||
keycloakifyBuildinfoFilePath,
|
|
||||||
Buffer.from(keycloakifyBuildinfoRaw, "utf8")
|
|
||||||
);
|
|
||||||
}
|
|
@ -16,11 +16,11 @@ assert<Equals<ApiVersion, "v1">>();
|
|||||||
export function maybeDelegateCommandToCustomHandler(params: {
|
export function maybeDelegateCommandToCustomHandler(params: {
|
||||||
commandName: CommandName;
|
commandName: CommandName;
|
||||||
buildContext: BuildContext;
|
buildContext: BuildContext;
|
||||||
}) {
|
}): { hasBeenHandled: boolean } {
|
||||||
const { commandName, buildContext } = params;
|
const { commandName, buildContext } = params;
|
||||||
|
|
||||||
if (!fs.readdirSync(pathDirname(process.argv[1])).includes(BIN_NAME)) {
|
if (!fs.readdirSync(pathDirname(process.argv[1])).includes(BIN_NAME)) {
|
||||||
return;
|
return { hasBeenHandled: false };
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@ -36,11 +36,11 @@ export function maybeDelegateCommandToCustomHandler(params: {
|
|||||||
const status = error.status;
|
const status = error.status;
|
||||||
|
|
||||||
if (status === NOT_IMPLEMENTED_EXIT_CODE) {
|
if (status === NOT_IMPLEMENTED_EXIT_CODE) {
|
||||||
return;
|
return { hasBeenHandled: false };
|
||||||
}
|
}
|
||||||
|
|
||||||
process.exit(status);
|
process.exit(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
process.exit(0);
|
return { hasBeenHandled: true };
|
||||||
}
|
}
|
||||||
|
@ -7,11 +7,15 @@ import { maybeDelegateCommandToCustomHandler } from "./shared/customHandler_dele
|
|||||||
export async function command(params: { buildContext: BuildContext }) {
|
export async function command(params: { buildContext: BuildContext }) {
|
||||||
const { buildContext } = params;
|
const { buildContext } = params;
|
||||||
|
|
||||||
maybeDelegateCommandToCustomHandler({
|
const { hasBeenHandled } = maybeDelegateCommandToCustomHandler({
|
||||||
commandName: "update-kc-gen",
|
commandName: "update-kc-gen",
|
||||||
buildContext
|
buildContext
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (hasBeenHandled) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const filePath = pathJoin(buildContext.themeSrcDirPath, `kc.gen.tsx`);
|
const filePath = pathJoin(buildContext.themeSrcDirPath, `kc.gen.tsx`);
|
||||||
|
|
||||||
const currentContent = (await existsAsync(filePath))
|
const currentContent = (await existsAsync(filePath))
|
||||||
|
@ -6,7 +6,7 @@ import {
|
|||||||
} from "../bin/shared/constants";
|
} from "../bin/shared/constants";
|
||||||
import { id } from "tsafe/id";
|
import { id } from "tsafe/id";
|
||||||
import { rm } from "../bin/tools/fs.rm";
|
import { rm } from "../bin/tools/fs.rm";
|
||||||
import { copyKeycloakResourcesToPublic } from "../bin/shared/copyKeycloakResourcesToPublic";
|
import { command as copyKeycloakResourcesToPublicCommand } from "../bin/copy-keycloak-resources-to-public";
|
||||||
import { assert } from "tsafe/assert";
|
import { assert } from "tsafe/assert";
|
||||||
import {
|
import {
|
||||||
getBuildContext,
|
getBuildContext,
|
||||||
@ -125,7 +125,7 @@ export function keycloakify(params: keycloakify.Params) {
|
|||||||
projectDirPath
|
projectDirPath
|
||||||
});
|
});
|
||||||
|
|
||||||
copyKeycloakResourcesToPublic({ buildContext });
|
await copyKeycloakResourcesToPublicCommand({ buildContext });
|
||||||
|
|
||||||
await updateKcGenCommand({ buildContext });
|
await updateKcGenCommand({ buildContext });
|
||||||
},
|
},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user