Feat: Initialize account theme (before debug)

This commit is contained in:
Joseph Garrone
2024-07-25 18:16:43 +02:00
parent b9ee0afe7f
commit 77249d8a58
23 changed files with 769 additions and 119 deletions

View File

@ -5,12 +5,15 @@ import type { BuildContext } from "../shared/buildContext";
import chalk from "chalk";
import { sep as pathSep, join as pathJoin } from "path";
import { getAbsoluteAndInOsFormatPath } from "../tools/getAbsoluteAndInOsFormatPath";
import * as fs from "fs";
import { dirname as pathDirname, relative as pathRelative } from "path";
export type BuildContextLike = {
projectDirPath: string;
keycloakifyBuildDirPath: string;
bundler: BuildContext["bundler"];
projectBuildDirPath: string;
packageJsonFilePath: string;
};
assert<BuildContext extends BuildContextLike ? true : false>();
@ -20,7 +23,7 @@ export async function appBuild(params: {
}): Promise<{ isAppBuildSuccess: boolean }> {
const { buildContext } = params;
switch (buildContext.bundler.type) {
switch (buildContext.bundler) {
case "vite":
return appBuild_vite({ buildContext });
case "webpack":
@ -33,7 +36,7 @@ async function appBuild_vite(params: {
}): Promise<{ isAppBuildSuccess: boolean }> {
const { buildContext } = params;
assert(buildContext.bundler.type === "vite");
assert(buildContext.bundler === "vite");
const dIsSuccess = new Deferred<boolean>();
@ -66,17 +69,18 @@ async function appBuild_webpack(params: {
}): Promise<{ isAppBuildSuccess: boolean }> {
const { buildContext } = params;
assert(buildContext.bundler.type === "webpack");
assert(buildContext.bundler === "webpack");
const entries = Object.entries(buildContext.bundler.packageJsonScripts).filter(
([, scriptCommand]) => scriptCommand.includes("keycloakify build")
);
const entries = Object.entries(
(JSON.parse(fs.readFileSync(buildContext.packageJsonFilePath).toString("utf8"))
.scripts ?? {}) as Record<string, string>
).filter(([, scriptCommand]) => scriptCommand.includes("keycloakify build"));
if (entries.length === 0) {
console.log(
chalk.red(
[
`You should have a script in your package.json at ${buildContext.bundler.packageJsonDirPath}`,
`You should have a script in your package.json at ${pathRelative(process.cwd(), pathDirname(buildContext.packageJsonFilePath))}`,
`that includes the 'keycloakify build' command`
].join(" ")
)
@ -123,7 +127,7 @@ async function appBuild_webpack(params: {
process.exit(-1);
}
let commandCwd = buildContext.bundler.packageJsonDirPath;
let commandCwd = pathDirname(buildContext.packageJsonFilePath);
for (const subCommand of appBuildSubCommands) {
const dIsSuccess = new Deferred<boolean>();
@ -152,7 +156,7 @@ async function appBuild_webpack(params: {
return [
pathJoin(
buildContext.bundler.packageJsonDirPath,
pathDirname(buildContext.packageJsonFilePath),
"node_modules",
".bin"
),