keycloakify 7.1.0 → 7.1.2
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/bin/initialize-email-theme.d.ts +3 -1
- package/bin/initialize-email-theme.js +68 -35
- package/bin/initialize-email-theme.js.map +1 -1
- package/bin/keycloakify/generateKeycloakThemeResources.d.ts +1 -1
- package/bin/keycloakify/generateKeycloakThemeResources.js +4 -10
- package/bin/keycloakify/generateKeycloakThemeResources.js.map +1 -1
- package/bin/keycloakify/keycloakify.d.ts +0 -1
- package/bin/keycloakify/keycloakify.js +3 -3
- package/bin/keycloakify/keycloakify.js.map +1 -1
- package/package.json +1 -1
- package/src/bin/initialize-email-theme.ts +51 -11
- package/src/bin/keycloakify/generateKeycloakThemeResources.ts +4 -13
- package/src/bin/keycloakify/keycloakify.ts +3 -3
@@ -60,48 +60,81 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
60
60
|
}
|
61
61
|
};
|
62
62
|
Object.defineProperty(exports, "__esModule", { value: true });
|
63
|
+
exports.getEmailThemeSrcDirPath = void 0;
|
63
64
|
var download_builtin_keycloak_theme_1 = require("./download-builtin-keycloak-theme");
|
64
|
-
var keycloakify_1 = require("./keycloakify");
|
65
65
|
var path_1 = require("path");
|
66
66
|
var transformCodebase_1 = require("./tools/transformCodebase");
|
67
67
|
var promptKeycloakVersion_1 = require("./promptKeycloakVersion");
|
68
68
|
var fs = __importStar(require("fs"));
|
69
69
|
var cliOptions_1 = require("./tools/cliOptions");
|
70
70
|
var logger_1 = require("./tools/logger");
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
return [4 /*yield*/, (0, promptKeycloakVersion_1.promptKeycloakVersion)()];
|
83
|
-
case 1:
|
84
|
-
keycloakVersion = (_a.sent()).keycloakVersion;
|
85
|
-
builtinKeycloakThemeTmpDirPath = (0, path_1.join)(keycloakify_1.keycloakThemeEmailDirPath, "..", "tmp_xIdP3_builtin_keycloak_theme");
|
86
|
-
return [4 /*yield*/, (0, download_builtin_keycloak_theme_1.downloadBuiltinKeycloakTheme)({
|
87
|
-
keycloakVersion: keycloakVersion,
|
88
|
-
"destDirPath": builtinKeycloakThemeTmpDirPath,
|
89
|
-
isSilent: isSilent
|
90
|
-
})];
|
91
|
-
case 2:
|
92
|
-
_a.sent();
|
93
|
-
(0, transformCodebase_1.transformCodebase)({
|
94
|
-
"srcDirPath": (0, path_1.join)(builtinKeycloakThemeTmpDirPath, "base", "email"),
|
95
|
-
"destDirPath": keycloakify_1.keycloakThemeEmailDirPath
|
96
|
-
});
|
97
|
-
{
|
98
|
-
themePropertyFilePath = (0, path_1.join)(keycloakify_1.keycloakThemeEmailDirPath, "theme.properties");
|
99
|
-
fs.writeFileSync(themePropertyFilePath, Buffer.from("parent=base\n".concat(fs.readFileSync(themePropertyFilePath).toString("utf8")), "utf8"));
|
100
|
-
}
|
101
|
-
logger.log("".concat((0, path_1.relative)(process.cwd(), keycloakify_1.keycloakThemeEmailDirPath), " ready to be customized, feel free to remove every file you do not customize"));
|
102
|
-
fs.rmSync(builtinKeycloakThemeTmpDirPath, { "recursive": true, "force": true });
|
103
|
-
return [2 /*return*/];
|
71
|
+
var crawl_1 = require("./tools/crawl");
|
72
|
+
var exclude_1 = require("tsafe/exclude");
|
73
|
+
var reactProjectDirPath = process.cwd();
|
74
|
+
var themeSrcDirBasename = "keycloak-theme";
|
75
|
+
function getThemeSrcDirPath() {
|
76
|
+
var srcDirPath = (0, path_1.join)(reactProjectDirPath, "src");
|
77
|
+
var themeSrcDirPath = (0, crawl_1.crawl)(srcDirPath)
|
78
|
+
.map(function (fileRelativePath) {
|
79
|
+
var split = fileRelativePath.split(themeSrcDirBasename);
|
80
|
+
if (split.length !== 2) {
|
81
|
+
return undefined;
|
104
82
|
}
|
83
|
+
return (0, path_1.join)(srcDirPath, split[0] + themeSrcDirBasename);
|
84
|
+
})
|
85
|
+
.filter((0, exclude_1.exclude)(undefined))[0];
|
86
|
+
return { themeSrcDirPath: themeSrcDirPath };
|
87
|
+
}
|
88
|
+
function getEmailThemeSrcDirPath() {
|
89
|
+
var themeSrcDirPath = getThemeSrcDirPath().themeSrcDirPath;
|
90
|
+
var emailThemeSrcDirPath = themeSrcDirPath === undefined ? undefined : (0, path_1.join)(themeSrcDirPath, "email");
|
91
|
+
return { emailThemeSrcDirPath: emailThemeSrcDirPath };
|
92
|
+
}
|
93
|
+
exports.getEmailThemeSrcDirPath = getEmailThemeSrcDirPath;
|
94
|
+
function main() {
|
95
|
+
return __awaiter(this, void 0, void 0, function () {
|
96
|
+
var isSilent, logger, emailThemeSrcDirPath, keycloakVersion, builtinKeycloakThemeTmpDirPath, themePropertyFilePath;
|
97
|
+
return __generator(this, function (_a) {
|
98
|
+
switch (_a.label) {
|
99
|
+
case 0:
|
100
|
+
isSilent = (0, cliOptions_1.getCliOptions)(process.argv.slice(2)).isSilent;
|
101
|
+
logger = (0, logger_1.getLogger)({ isSilent: isSilent });
|
102
|
+
emailThemeSrcDirPath = getEmailThemeSrcDirPath().emailThemeSrcDirPath;
|
103
|
+
if (emailThemeSrcDirPath === undefined) {
|
104
|
+
logger.warn("Couldn't locate you ".concat(themeSrcDirBasename, " directory"));
|
105
|
+
process.exit(-1);
|
106
|
+
}
|
107
|
+
if (fs.existsSync(emailThemeSrcDirPath)) {
|
108
|
+
logger.warn("There is already a ".concat((0, path_1.relative)(process.cwd(), emailThemeSrcDirPath), " directory in your project. Aborting."));
|
109
|
+
process.exit(-1);
|
110
|
+
}
|
111
|
+
return [4 /*yield*/, (0, promptKeycloakVersion_1.promptKeycloakVersion)()];
|
112
|
+
case 1:
|
113
|
+
keycloakVersion = (_a.sent()).keycloakVersion;
|
114
|
+
builtinKeycloakThemeTmpDirPath = (0, path_1.join)(emailThemeSrcDirPath, "..", "tmp_xIdP3_builtin_keycloak_theme");
|
115
|
+
return [4 /*yield*/, (0, download_builtin_keycloak_theme_1.downloadBuiltinKeycloakTheme)({
|
116
|
+
keycloakVersion: keycloakVersion,
|
117
|
+
"destDirPath": builtinKeycloakThemeTmpDirPath,
|
118
|
+
isSilent: isSilent
|
119
|
+
})];
|
120
|
+
case 2:
|
121
|
+
_a.sent();
|
122
|
+
(0, transformCodebase_1.transformCodebase)({
|
123
|
+
"srcDirPath": (0, path_1.join)(builtinKeycloakThemeTmpDirPath, "base", "email"),
|
124
|
+
"destDirPath": emailThemeSrcDirPath
|
125
|
+
});
|
126
|
+
{
|
127
|
+
themePropertyFilePath = (0, path_1.join)(emailThemeSrcDirPath, "theme.properties");
|
128
|
+
fs.writeFileSync(themePropertyFilePath, Buffer.from("parent=base\n".concat(fs.readFileSync(themePropertyFilePath).toString("utf8")), "utf8"));
|
129
|
+
}
|
130
|
+
logger.log("".concat((0, path_1.relative)(process.cwd(), emailThemeSrcDirPath), " ready to be customized, feel free to remove every file you do not customize"));
|
131
|
+
fs.rmSync(builtinKeycloakThemeTmpDirPath, { "recursive": true, "force": true });
|
132
|
+
return [2 /*return*/];
|
133
|
+
}
|
134
|
+
});
|
105
135
|
});
|
106
|
-
}
|
136
|
+
}
|
137
|
+
if (require.main === module) {
|
138
|
+
main();
|
139
|
+
}
|
107
140
|
//# sourceMappingURL=initialize-email-theme.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"initialize-email-theme.js","sourceRoot":"","sources":["../src/bin/initialize-email-theme.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"initialize-email-theme.js","sourceRoot":"","sources":["../src/bin/initialize-email-theme.ts"],"names":[],"mappings":"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"}
|
@@ -29,7 +29,7 @@ export declare namespace BuildOptionsLike {
|
|
29
29
|
export declare function generateKeycloakThemeResources(params: {
|
30
30
|
reactAppBuildDirPath: string;
|
31
31
|
keycloakThemeBuildingDirPath: string;
|
32
|
-
|
32
|
+
emailThemeSrcDirPath: string | undefined;
|
33
33
|
keycloakVersion: string;
|
34
34
|
buildOptions: BuildOptionsLike;
|
35
35
|
}): Promise<{
|
@@ -118,7 +118,6 @@ var mockTestingResourcesPath_1 = require("../mockTestingResourcesPath");
|
|
118
118
|
var isInside_1 = require("../tools/isInside");
|
119
119
|
var assert_1 = require("tsafe/assert");
|
120
120
|
var Reflect_1 = require("tsafe/Reflect");
|
121
|
-
var logger_1 = require("../tools/logger");
|
122
121
|
{
|
123
122
|
var buildOptions = (0, Reflect_1.Reflect)();
|
124
123
|
(0, assert_1.assert)();
|
@@ -126,13 +125,12 @@ var logger_1 = require("../tools/logger");
|
|
126
125
|
function generateKeycloakThemeResources(params) {
|
127
126
|
var _a, _b;
|
128
127
|
return __awaiter(this, void 0, void 0, function () {
|
129
|
-
var reactAppBuildDirPath, keycloakThemeBuildingDirPath,
|
128
|
+
var reactAppBuildDirPath, keycloakThemeBuildingDirPath, emailThemeSrcDirPath, keycloakVersion, buildOptions, getThemeDirPath, allCssGlobalsToDefine, generateFtlFilesCode_glob, _loop_1, themeTypes_1, themeTypes_1_1, themeType, e_1_1, doBundlesEmailTemplate;
|
130
129
|
var e_1, _c;
|
131
130
|
return __generator(this, function (_d) {
|
132
131
|
switch (_d.label) {
|
133
132
|
case 0:
|
134
|
-
reactAppBuildDirPath = params.reactAppBuildDirPath, keycloakThemeBuildingDirPath = params.keycloakThemeBuildingDirPath,
|
135
|
-
logger = (0, logger_1.getLogger)({ isSilent: buildOptions.isSilent });
|
133
|
+
reactAppBuildDirPath = params.reactAppBuildDirPath, keycloakThemeBuildingDirPath = params.keycloakThemeBuildingDirPath, emailThemeSrcDirPath = params.emailThemeSrcDirPath, keycloakVersion = params.keycloakVersion, buildOptions = params.buildOptions;
|
136
134
|
getThemeDirPath = function (themeType) {
|
137
135
|
return (0, path_1.join)(keycloakThemeBuildingDirPath, "src", "main", "resources", "theme", buildOptions.themeName, themeType);
|
138
136
|
};
|
@@ -280,17 +278,13 @@ function generateKeycloakThemeResources(params) {
|
|
280
278
|
return [7 /*endfinally*/];
|
281
279
|
case 8:
|
282
280
|
email: {
|
283
|
-
if (
|
284
|
-
logger.log([
|
285
|
-
"Not bundling email template because ".concat((0, path_1.basename)(keycloakThemeEmailDirPath), " does not exist"),
|
286
|
-
"To start customizing the email template, run: \uD83D\uDC49 npx create-keycloak-email-directory \uD83D\uDC48"
|
287
|
-
].join("\n"));
|
281
|
+
if (emailThemeSrcDirPath === undefined) {
|
288
282
|
doBundlesEmailTemplate = false;
|
289
283
|
break email;
|
290
284
|
}
|
291
285
|
doBundlesEmailTemplate = true;
|
292
286
|
(0, transformCodebase_1.transformCodebase)({
|
293
|
-
"srcDirPath":
|
287
|
+
"srcDirPath": emailThemeSrcDirPath,
|
294
288
|
"destDirPath": getThemeDirPath("email")
|
295
289
|
});
|
296
290
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"generateKeycloakThemeResources.js","sourceRoot":"","sources":["../../src/bin/keycloakify/generateKeycloakThemeResources.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gEAA+D;AAC/D,qCAAyB;AACzB,6BAAkE;AAClE,iGAAgG;AAChG,+EAA8E;AAC9E,6CAAgI;AAChI,sFAAkF;AAClF,wEAA6I;AAC7I,8CAA6C;AAE7C,uCAAsC;AACtC,yCAAwC;
|
1
|
+
{"version":3,"file":"generateKeycloakThemeResources.js","sourceRoot":"","sources":["../../src/bin/keycloakify/generateKeycloakThemeResources.ts"],"names":[],"mappings":"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"}
|
@@ -62,7 +62,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
62
62
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
63
63
|
};
|
64
64
|
Object.defineProperty(exports, "__esModule", { value: true });
|
65
|
-
exports.main = exports.
|
65
|
+
exports.main = exports.keycloakThemeBuildingDirPath = void 0;
|
66
66
|
var generateKeycloakThemeResources_1 = require("./generateKeycloakThemeResources");
|
67
67
|
var generateJavaStackFiles_1 = require("./generateJavaStackFiles");
|
68
68
|
var path_1 = require("path");
|
@@ -74,9 +74,9 @@ var logger_1 = require("../tools/logger");
|
|
74
74
|
var cliOptions_1 = require("../tools/cliOptions");
|
75
75
|
var jar_1 = __importDefault(require("../tools/jar"));
|
76
76
|
var assert_1 = require("tsafe/assert");
|
77
|
+
var initialize_email_theme_1 = require("../initialize-email-theme");
|
77
78
|
var reactProjectDirPath = process.cwd();
|
78
79
|
exports.keycloakThemeBuildingDirPath = (0, path_1.join)(reactProjectDirPath, "build_keycloak");
|
79
|
-
exports.keycloakThemeEmailDirPath = (0, path_1.join)(reactProjectDirPath, "src", "keycloak-theme", "email");
|
80
80
|
function main() {
|
81
81
|
return __awaiter(this, void 0, void 0, function () {
|
82
82
|
var _a, isSilent, hasExternalAssets, logger, buildOptions, doBundlesEmailTemplate, jarFilePath, _b, containerKeycloakVersion;
|
@@ -100,7 +100,7 @@ function main() {
|
|
100
100
|
});
|
101
101
|
return [4 /*yield*/, (0, generateKeycloakThemeResources_1.generateKeycloakThemeResources)({
|
102
102
|
keycloakThemeBuildingDirPath: exports.keycloakThemeBuildingDirPath,
|
103
|
-
|
103
|
+
"emailThemeSrcDirPath": (0, initialize_email_theme_1.getEmailThemeSrcDirPath)().emailThemeSrcDirPath,
|
104
104
|
"reactAppBuildDirPath": (0, path_1.join)(reactProjectDirPath, "build"),
|
105
105
|
buildOptions: buildOptions,
|
106
106
|
//We have to leave it at that otherwise we break our default theme.
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"keycloakify.js","sourceRoot":"","sources":["../../src/bin/keycloakify/keycloakify.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mFAAkF;AAClF,mEAAkE;AAClE,6BAA4G;AAC5G,2DAA+C;AAC/C,iGAAgG;AAChG,qCAAyB;AACzB,+CAAkD;AAClD,0CAA4C;AAC5C,kDAAoD;AACpD,qDAA+B;AAC/B,uCAAsC;
|
1
|
+
{"version":3,"file":"keycloakify.js","sourceRoot":"","sources":["../../src/bin/keycloakify/keycloakify.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,27 +1,65 @@
|
|
1
1
|
#!/usr/bin/env node
|
2
2
|
|
3
3
|
import { downloadBuiltinKeycloakTheme } from "./download-builtin-keycloak-theme";
|
4
|
-
import { keycloakThemeEmailDirPath } from "./keycloakify";
|
5
4
|
import { join as pathJoin, relative as pathRelative } from "path";
|
6
5
|
import { transformCodebase } from "./tools/transformCodebase";
|
7
6
|
import { promptKeycloakVersion } from "./promptKeycloakVersion";
|
8
7
|
import * as fs from "fs";
|
9
8
|
import { getCliOptions } from "./tools/cliOptions";
|
10
9
|
import { getLogger } from "./tools/logger";
|
10
|
+
import { crawl } from "./tools/crawl";
|
11
|
+
import { exclude } from "tsafe/exclude";
|
11
12
|
|
12
|
-
|
13
|
+
const reactProjectDirPath = process.cwd();
|
14
|
+
|
15
|
+
const themeSrcDirBasename = "keycloak-theme";
|
16
|
+
|
17
|
+
function getThemeSrcDirPath() {
|
18
|
+
const srcDirPath = pathJoin(reactProjectDirPath, "src");
|
19
|
+
|
20
|
+
const themeSrcDirPath: string | undefined = crawl(srcDirPath)
|
21
|
+
.map(fileRelativePath => {
|
22
|
+
const split = fileRelativePath.split(themeSrcDirBasename);
|
23
|
+
|
24
|
+
if (split.length !== 2) {
|
25
|
+
return undefined;
|
26
|
+
}
|
27
|
+
|
28
|
+
return pathJoin(srcDirPath, split[0] + themeSrcDirBasename);
|
29
|
+
})
|
30
|
+
.filter(exclude(undefined))[0];
|
31
|
+
return { themeSrcDirPath };
|
32
|
+
}
|
33
|
+
|
34
|
+
export function getEmailThemeSrcDirPath() {
|
35
|
+
const { themeSrcDirPath } = getThemeSrcDirPath();
|
36
|
+
|
37
|
+
const emailThemeSrcDirPath = themeSrcDirPath === undefined ? undefined : pathJoin(themeSrcDirPath, "email");
|
38
|
+
|
39
|
+
return { emailThemeSrcDirPath };
|
40
|
+
}
|
41
|
+
|
42
|
+
async function main() {
|
13
43
|
const { isSilent } = getCliOptions(process.argv.slice(2));
|
14
44
|
const logger = getLogger({ isSilent });
|
15
45
|
|
16
|
-
|
17
|
-
|
46
|
+
const { emailThemeSrcDirPath } = getEmailThemeSrcDirPath();
|
47
|
+
|
48
|
+
if (emailThemeSrcDirPath === undefined) {
|
49
|
+
logger.warn(`Couldn't locate you ${themeSrcDirBasename} directory`);
|
50
|
+
|
51
|
+
process.exit(-1);
|
52
|
+
}
|
53
|
+
|
54
|
+
if (fs.existsSync(emailThemeSrcDirPath)) {
|
55
|
+
logger.warn(`There is already a ${pathRelative(process.cwd(), emailThemeSrcDirPath)} directory in your project. Aborting.`);
|
18
56
|
|
19
57
|
process.exit(-1);
|
20
58
|
}
|
21
59
|
|
22
60
|
const { keycloakVersion } = await promptKeycloakVersion();
|
23
61
|
|
24
|
-
const builtinKeycloakThemeTmpDirPath = pathJoin(
|
62
|
+
const builtinKeycloakThemeTmpDirPath = pathJoin(emailThemeSrcDirPath, "..", "tmp_xIdP3_builtin_keycloak_theme");
|
25
63
|
|
26
64
|
await downloadBuiltinKeycloakTheme({
|
27
65
|
keycloakVersion,
|
@@ -31,18 +69,20 @@ import { getLogger } from "./tools/logger";
|
|
31
69
|
|
32
70
|
transformCodebase({
|
33
71
|
"srcDirPath": pathJoin(builtinKeycloakThemeTmpDirPath, "base", "email"),
|
34
|
-
"destDirPath":
|
72
|
+
"destDirPath": emailThemeSrcDirPath
|
35
73
|
});
|
36
74
|
|
37
75
|
{
|
38
|
-
const themePropertyFilePath = pathJoin(
|
76
|
+
const themePropertyFilePath = pathJoin(emailThemeSrcDirPath, "theme.properties");
|
39
77
|
|
40
78
|
fs.writeFileSync(themePropertyFilePath, Buffer.from(`parent=base\n${fs.readFileSync(themePropertyFilePath).toString("utf8")}`, "utf8"));
|
41
79
|
}
|
42
80
|
|
43
|
-
logger.log(
|
44
|
-
`${pathRelative(process.cwd(), keycloakThemeEmailDirPath)} ready to be customized, feel free to remove every file you do not customize`
|
45
|
-
);
|
81
|
+
logger.log(`${pathRelative(process.cwd(), emailThemeSrcDirPath)} ready to be customized, feel free to remove every file you do not customize`);
|
46
82
|
|
47
83
|
fs.rmSync(builtinKeycloakThemeTmpDirPath, { "recursive": true, "force": true });
|
48
|
-
}
|
84
|
+
}
|
85
|
+
|
86
|
+
if (require.main === module) {
|
87
|
+
main();
|
88
|
+
}
|
@@ -10,7 +10,6 @@ import { isInside } from "../tools/isInside";
|
|
10
10
|
import type { BuildOptions } from "./BuildOptions";
|
11
11
|
import { assert } from "tsafe/assert";
|
12
12
|
import { Reflect } from "tsafe/Reflect";
|
13
|
-
import { getLogger } from "../tools/logger";
|
14
13
|
|
15
14
|
export type BuildOptionsLike = BuildOptionsLike.Standalone | BuildOptionsLike.ExternalAssets;
|
16
15
|
|
@@ -56,13 +55,11 @@ export namespace BuildOptionsLike {
|
|
56
55
|
export async function generateKeycloakThemeResources(params: {
|
57
56
|
reactAppBuildDirPath: string;
|
58
57
|
keycloakThemeBuildingDirPath: string;
|
59
|
-
|
58
|
+
emailThemeSrcDirPath: string | undefined;
|
60
59
|
keycloakVersion: string;
|
61
60
|
buildOptions: BuildOptionsLike;
|
62
61
|
}): Promise<{ doBundlesEmailTemplate: boolean }> {
|
63
|
-
const { reactAppBuildDirPath, keycloakThemeBuildingDirPath,
|
64
|
-
|
65
|
-
const logger = getLogger({ isSilent: buildOptions.isSilent });
|
62
|
+
const { reactAppBuildDirPath, keycloakThemeBuildingDirPath, emailThemeSrcDirPath, keycloakVersion, buildOptions } = params;
|
66
63
|
|
67
64
|
const getThemeDirPath = (themeType: ThemeType | "email") =>
|
68
65
|
pathJoin(keycloakThemeBuildingDirPath, "src", "main", "resources", "theme", buildOptions.themeName, themeType);
|
@@ -228,13 +225,7 @@ export async function generateKeycloakThemeResources(params: {
|
|
228
225
|
let doBundlesEmailTemplate: boolean;
|
229
226
|
|
230
227
|
email: {
|
231
|
-
if (
|
232
|
-
logger.log(
|
233
|
-
[
|
234
|
-
`Not bundling email template because ${pathBasename(keycloakThemeEmailDirPath)} does not exist`,
|
235
|
-
`To start customizing the email template, run: 👉 npx create-keycloak-email-directory 👈`
|
236
|
-
].join("\n")
|
237
|
-
);
|
228
|
+
if (emailThemeSrcDirPath === undefined) {
|
238
229
|
doBundlesEmailTemplate = false;
|
239
230
|
break email;
|
240
231
|
}
|
@@ -242,7 +233,7 @@ export async function generateKeycloakThemeResources(params: {
|
|
242
233
|
doBundlesEmailTemplate = true;
|
243
234
|
|
244
235
|
transformCodebase({
|
245
|
-
"srcDirPath":
|
236
|
+
"srcDirPath": emailThemeSrcDirPath,
|
246
237
|
"destDirPath": getThemeDirPath("email")
|
247
238
|
});
|
248
239
|
}
|
@@ -9,12 +9,12 @@ import { getLogger } from "../tools/logger";
|
|
9
9
|
import { getCliOptions } from "../tools/cliOptions";
|
10
10
|
import jar from "../tools/jar";
|
11
11
|
import { assert } from "tsafe/assert";
|
12
|
-
import
|
12
|
+
import { Equals } from "tsafe";
|
13
|
+
import { getEmailThemeSrcDirPath } from "../initialize-email-theme";
|
13
14
|
|
14
15
|
const reactProjectDirPath = process.cwd();
|
15
16
|
|
16
17
|
export const keycloakThemeBuildingDirPath = pathJoin(reactProjectDirPath, "build_keycloak");
|
17
|
-
export const keycloakThemeEmailDirPath = pathJoin(reactProjectDirPath, "src", "keycloak-theme", "email");
|
18
18
|
|
19
19
|
export async function main() {
|
20
20
|
const { isSilent, hasExternalAssets } = getCliOptions(process.argv.slice(2));
|
@@ -38,7 +38,7 @@ export async function main() {
|
|
38
38
|
|
39
39
|
const { doBundlesEmailTemplate } = await generateKeycloakThemeResources({
|
40
40
|
keycloakThemeBuildingDirPath,
|
41
|
-
|
41
|
+
"emailThemeSrcDirPath": getEmailThemeSrcDirPath().emailThemeSrcDirPath,
|
42
42
|
"reactAppBuildDirPath": pathJoin(reactProjectDirPath, "build"),
|
43
43
|
buildOptions,
|
44
44
|
//We have to leave it at that otherwise we break our default theme.
|