UNPKG

iam-keycloakify

Version:
82 lines (70 loc) 2.88 kB
import * as url from "url"; import * as fs from "fs"; import { join as pathJoin, dirname as pathDirname } from "path"; export function generateJavaStackFiles(params: { version: string; themeName: string; homepage?: string; keycloakThemeBuildingDirPath: string }): { jarFilePath: string; } { const { themeName, version, homepage, keycloakThemeBuildingDirPath } = params; { const { pomFileCode } = (function generatePomFileCode(): { pomFileCode: string; } { const groupId = (() => { const fallbackGroupId = `there.was.no.homepage.field.in.the.package.json.${themeName}`; return ( (!homepage ? fallbackGroupId : url .parse(homepage) .host?.replace(/:[0-9]+$/, "") ?.split(".") .reverse() .join(".") ?? fallbackGroupId) + ".keycloak" ); })(); const artefactId = `${themeName}-keycloak-theme`; const pomFileCode = [ `<?xml version="1.0"?>`, `<project xmlns="http://maven.apache.org/POM/4.0.0"`, ` xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"`, ` xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">`, ` <modelVersion>4.0.0</modelVersion>`, ` <groupId>${groupId}</groupId>`, ` <artifactId>${artefactId}</artifactId>`, ` <version>${version}</version>`, ` <name>${artefactId}</name>`, ` <description />`, `</project>`, ].join("\n"); return { pomFileCode }; })(); fs.writeFileSync(pathJoin(keycloakThemeBuildingDirPath, "pom.xml"), Buffer.from(pomFileCode, "utf8")); } { const themeManifestFilePath = pathJoin(keycloakThemeBuildingDirPath, "src", "main", "resources", "META-INF", "keycloak-themes.json"); try { fs.mkdirSync(pathDirname(themeManifestFilePath)); } catch {} fs.writeFileSync( themeManifestFilePath, Buffer.from( JSON.stringify( { "themes": [ { "name": themeName, "types": ["login"], }, ], }, null, 2, ), "utf8", ), ); } return { "jarFilePath": pathJoin(keycloakThemeBuildingDirPath, "target", `${themeName}-${version}.jar`), }; }