202 lines
5.5 KiB
JavaScript
202 lines
5.5 KiB
JavaScript
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.filterCFBundleIdentifier = filterCFBundleIdentifier;
|
|
exports.smarten = smarten;
|
|
exports.AppInfo = void 0;
|
|
|
|
function _builderUtil() {
|
|
const data = require("builder-util");
|
|
|
|
_builderUtil = function () {
|
|
return data;
|
|
};
|
|
|
|
return data;
|
|
}
|
|
|
|
function _sanitizeFilename() {
|
|
const data = _interopRequireDefault(require("sanitize-filename"));
|
|
|
|
_sanitizeFilename = function () {
|
|
return data;
|
|
};
|
|
|
|
return data;
|
|
}
|
|
|
|
function _semver() {
|
|
const data = require("semver");
|
|
|
|
_semver = function () {
|
|
return data;
|
|
};
|
|
|
|
return data;
|
|
}
|
|
|
|
function _macroExpander() {
|
|
const data = require("./util/macroExpander");
|
|
|
|
_macroExpander = function () {
|
|
return data;
|
|
};
|
|
|
|
return data;
|
|
}
|
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
|
|
class AppInfo {
|
|
constructor(info, buildVersion, platformSpecificOptions = null) {
|
|
this.info = info;
|
|
this.platformSpecificOptions = platformSpecificOptions;
|
|
this.description = smarten(this.info.metadata.description || "");
|
|
this.version = info.metadata.version;
|
|
|
|
if (buildVersion == null) {
|
|
buildVersion = info.config.buildVersion;
|
|
}
|
|
|
|
this.buildNumber = process.env.BUILD_NUMBER || process.env.TRAVIS_BUILD_NUMBER || process.env.APPVEYOR_BUILD_NUMBER || process.env.CIRCLE_BUILD_NUM || process.env.BUILD_BUILDNUMBER || process.env.CI_PIPELINE_IID;
|
|
|
|
if (buildVersion == null) {
|
|
buildVersion = this.version;
|
|
|
|
if (!(0, _builderUtil().isEmptyOrSpaces)(this.buildNumber)) {
|
|
buildVersion += `.${this.buildNumber}`;
|
|
}
|
|
}
|
|
|
|
this.buildVersion = buildVersion;
|
|
this.productName = info.config.productName || info.metadata.productName || info.metadata.name;
|
|
this.productFilename = (0, _sanitizeFilename().default)(this.productName);
|
|
}
|
|
|
|
get channel() {
|
|
const prereleaseInfo = (0, _semver().prerelease)(this.version);
|
|
|
|
if (prereleaseInfo != null && prereleaseInfo.length > 0) {
|
|
return prereleaseInfo[0];
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
getVersionInWeirdWindowsForm(isSetBuildNumber = true) {
|
|
const parsedVersion = new (_semver().SemVer)(this.version); // https://github.com/electron-userland/electron-builder/issues/2635#issuecomment-371792272
|
|
|
|
let buildNumber = isSetBuildNumber ? this.buildNumber : null;
|
|
|
|
if (buildNumber == null || !/^\d+$/.test(buildNumber)) {
|
|
buildNumber = "0";
|
|
}
|
|
|
|
return `${parsedVersion.major}.${parsedVersion.minor}.${parsedVersion.patch}.${buildNumber}`;
|
|
}
|
|
|
|
get notNullDevMetadata() {
|
|
return this.info.devMetadata || {};
|
|
}
|
|
|
|
get companyName() {
|
|
const author = this.info.metadata.author || this.notNullDevMetadata.author;
|
|
return author == null ? null : author.name;
|
|
}
|
|
|
|
get id() {
|
|
let appId = null;
|
|
|
|
for (const options of [this.platformSpecificOptions, this.info.config]) {
|
|
if (options != null && appId == null) {
|
|
appId = options.appId;
|
|
}
|
|
}
|
|
|
|
const generateDefaultAppId = () => {
|
|
const info = this.info;
|
|
return `${info.framework.defaultAppIdPrefix}${info.metadata.name.toLowerCase()}`;
|
|
};
|
|
|
|
if (appId != null && (appId === "your.id" || (0, _builderUtil().isEmptyOrSpaces)(appId))) {
|
|
const incorrectAppId = appId;
|
|
appId = generateDefaultAppId();
|
|
|
|
_builderUtil().log.warn(`do not use "${incorrectAppId}" as appId, "${appId}" will be used instead`);
|
|
}
|
|
|
|
return appId == null ? generateDefaultAppId() : appId;
|
|
}
|
|
|
|
get macBundleIdentifier() {
|
|
return filterCFBundleIdentifier(this.id);
|
|
}
|
|
|
|
get name() {
|
|
return this.info.metadata.name;
|
|
}
|
|
|
|
get linuxPackageName() {
|
|
const name = this.name; // https://github.com/electron-userland/electron-builder/issues/2963
|
|
|
|
return name.startsWith("@") ? this.productFilename : name;
|
|
}
|
|
|
|
get sanitizedName() {
|
|
return (0, _sanitizeFilename().default)(this.name);
|
|
}
|
|
|
|
get updaterCacheDirName() {
|
|
return this.sanitizedName.toLowerCase() + "-updater";
|
|
}
|
|
|
|
get copyright() {
|
|
const copyright = this.info.config.copyright;
|
|
|
|
if (copyright != null) {
|
|
return (0, _macroExpander().expandMacro)(copyright, null, this);
|
|
}
|
|
|
|
return `Copyright © ${new Date().getFullYear()} ${this.companyName || this.productName}`;
|
|
}
|
|
|
|
async computePackageUrl() {
|
|
const url = this.info.metadata.homepage || this.notNullDevMetadata.homepage;
|
|
|
|
if (url != null) {
|
|
return url;
|
|
}
|
|
|
|
const info = await this.info.repositoryInfo;
|
|
return info == null || info.type !== "github" ? null : `https://${info.domain}/${info.user}/${info.project}`;
|
|
}
|
|
|
|
}
|
|
/** @internal */
|
|
|
|
|
|
exports.AppInfo = AppInfo;
|
|
|
|
function filterCFBundleIdentifier(identifier) {
|
|
// Remove special characters and allow only alphanumeric (A-Z,a-z,0-9), hyphen (-), and period (.)
|
|
// Apple documentation: https://developer.apple.com/library/mac/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/20001431-102070
|
|
return identifier.replace(/ /g, "-").replace(/[^a-zA-Z0-9.-]/g, "");
|
|
} // fpm bug - rpm build --description is not escaped, well... decided to replace quite to smart quote
|
|
// http://leancrew.com/all-this/2010/11/smart-quotes-in-javascript/
|
|
|
|
|
|
function smarten(s) {
|
|
// opening singles
|
|
s = s.replace(/(^|[-\u2014\s(\["])'/g, "$1\u2018"); // closing singles & apostrophes
|
|
|
|
s = s.replace(/'/g, "\u2019"); // opening doubles
|
|
|
|
s = s.replace(/(^|[-\u2014/\[(\u2018\s])"/g, "$1\u201c"); // closing doubles
|
|
|
|
s = s.replace(/"/g, "\u201d");
|
|
return s;
|
|
}
|
|
// __ts-babel@6.0.4
|
|
//# sourceMappingURL=appInfo.js.map
|