UNPKG

dmg-builder

Version:
98 lines 4.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.addLicenseToDmg = addLicenseToDmg; const license_1 = require("app-builder-lib/out/util/license"); const builder_util_1 = require("builder-util"); const fs_extra_1 = require("fs-extra"); const js_yaml_1 = require("js-yaml"); const licenseButtons_1 = require("./licenseButtons"); async function addLicenseToDmg(packager, explicitLicense) { // null = explicitly disabled; skip both explicit and convention paths if (explicitLicense === null) { return null; } // Explicit config overrides file-naming convention if (explicitLicense !== undefined) { return buildExplicitLicenseConfig(packager, explicitLicense); } // File-naming convention: license_LANG.{rtf,txt,html} return buildConventionLicenseConfig(packager); } async function buildExplicitLicenseConfig(packager, license) { if (typeof license === "string") { const resolvedPath = await packager.getResource(license); if (resolvedPath == null) { throw new builder_util_1.InvalidConfigurationError(`dmg.license file not found: "${license}"`); } return { "default-language": "en_US", licenses: { en_US: resolvedPath } }; } // Record<langCode, filePath> const licenses = {}; for (const [lang, filePath] of Object.entries(license)) { const resolvedPath = await packager.getResource(filePath); if (resolvedPath == null) { throw new builder_util_1.InvalidConfigurationError(`dmg.license file not found for language "${lang}": "${filePath}"`); } licenses[lang] = resolvedPath; } if (Object.keys(licenses).length === 0) { return null; } return { "default-language": Object.keys(licenses)[0], licenses, }; } async function buildConventionLicenseConfig(packager) { var _a; const licenseFiles = await (0, license_1.getLicenseFiles)(packager); if (licenseFiles.length === 0) { return null; } const licenseButtonFiles = await (0, licenseButtons_1.getLicenseButtonsFile)(packager); packager.debugLogger.add("dmg.licenseFiles", licenseFiles); packager.debugLogger.add("dmg.licenseButtons", licenseButtonFiles); const licenses = {}; for (const file of licenseFiles) { if (licenses[file.langWithRegion] != null) { throw new builder_util_1.InvalidConfigurationError(`Multiple license files found for language "${file.langWithRegion}": "${licenses[file.langWithRegion]}" and "${file.file}". Only one license file per language is supported.`); } licenses[file.langWithRegion] = file.file; } const result = { "default-language": licenseFiles[0].langWithRegion, licenses, }; if (licenseButtonFiles.length > 0) { const buttons = {}; for (const button of licenseButtonFiles) { const filepath = button.file; const raw = filepath.endsWith(".yml") ? (0, js_yaml_1.load)(await (0, fs_extra_1.readFile)(filepath, "utf-8"), { schema: js_yaml_1.CORE_SCHEMA }) : await (0, fs_extra_1.readJson)(filepath); const entry = {}; if (raw.languageName != null) { entry.language = raw.languageName; } if (raw.agree != null) { entry.agree = raw.agree; } if (raw.disagree != null) { entry.disagree = raw.disagree; } if (raw.print != null) { entry.print = raw.print; } if (raw.save != null) { entry.save = raw.save; } // support legacy `description` field as well as `message` const msg = (_a = raw.message) !== null && _a !== void 0 ? _a : raw.description; if (msg != null) { entry.message = msg; } buttons[button.langWithRegion] = entry; } result.buttons = buttons; } return result; } //# sourceMappingURL=dmgLicense.js.map