UNPKG

@shockpkg/dir-projector

Version:

Package for creating Shockwave Director projectors

1 lines 30.2 kB
{"version":3,"sources":["projector/mac/app.ts"],"names":["join","pathJoin","basename","fse","PathType","pathRelativeBase","pathRelativeBaseMatch","trimExtension","plistRead","plistParse","infoPlistBundleExecutableSet","infoPlistBundleIconFileSet","infoPlistBundleNameSet","ProjectorMac","ProjectorMacApp","constructor","path","binaryName","intel","iconFile","iconData","infoPlistFile","infoPlistData","infoPlistDocument","pkgInfoFile","pkgInfoData","bundleName","nestXtrasContents","extension","configNewline","lingoNewline","hasIcon","hasInfoPlist","hasPkgInfo","projectorResourcesDirectoryName","appBinaryNameDefault","appBinaryNameCustom","appBinaryName","appIconNameDefault","appIconNameCustom","n","appIconName","appRsrcNameDefault","appRsrcNameCustom","appRsrcName","appPathInfoPlist","appPathPkgInfo","appPathFrameworks","appPathXtras","xtrasName","appPathBinaryDefault","appPathBinaryCustom","appPathBinary","appPathIconDefault","appPathIconCustom","appPathIcon","appPathRsrcDefault","appPathRsrcCustom","appPathRsrc","iconPath","infoPlistPath","pkgInfoPath","binaryPath","xtrasPath","getIconData","readFile","getInfoPlistDocument","xml","toXml","Array","isArray","toString","getPkgInfoData","Buffer","from","getBundleName","_writeSkeleton","skeleton","shockwave","xtrasMappings","getIncludeXtrasMappings","foundProjectorResourcesDirectory","foundFrameworks","foundBinary","foundInfoPlist","foundPkgInfo","foundIcon","foundRsrc","foundXtras","xtrasHandler","entry","xtrasRel","volumePath","dest","includeXtrasMappingsDest","extract","projectorResourcesHandler","projectorRel","archive","getSkeletonArchive","read","type","RESOURCE_FORK","Error","d","_modifySkeleton","_writeIcon","_writePkgInfo","_updateInfoPlist","data","outputFile","customPlist","plist","_readInfoPlist","_writeInfoPlist","remove"],"mappings":"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","sourcesContent":["import {\n\tjoin as pathJoin,\n\tbasename\n} from 'path';\n\nimport fse from 'fs-extra';\nimport {\n\tPathType,\n\tEntry\n} from '@shockpkg/archive-files';\nimport {\n\tPlist\n} from '@shockpkg/plist-dom';\n\nimport {\n\tpathRelativeBase,\n\tpathRelativeBaseMatch,\n\ttrimExtension\n} from '../../util';\nimport {\n\tplistRead,\n\tplistParse,\n\tinfoPlistBundleExecutableSet,\n\tinfoPlistBundleIconFileSet,\n\tinfoPlistBundleNameSet\n} from '../../util/mac';\nimport {\n\tProjectorMac\n} from '../mac';\n\n/**\n * ProjectorMacApp constructor.\n *\n * @param path Output path.\n */\nexport class ProjectorMacApp extends ProjectorMac {\n\t/**\n\t * Binary name.\n\t *\n\t * @default null\n\t */\n\tpublic binaryName: string | null = null;\n\n\t/**\n\t * Intel binary package, not universal binary.\n\t *\n\t * @default false\n\t */\n\tpublic intel = false;\n\n\t/**\n\t * Icon file.\n\t *\n\t * @default null\n\t */\n\tpublic iconFile: string | null = null;\n\n\t/**\n\t * Icon data.\n\t *\n\t * @default null\n\t */\n\tpublic iconData: Readonly<Buffer> | null = null;\n\n\t/**\n\t * Info.plist file.\n\t * Currently only supports XML plist.\n\t */\n\tpublic infoPlistFile: string | null = null;\n\n\t/**\n\t * Info.plist data.\n\t * Currently only supports XML plist.\n\t */\n\tpublic infoPlistData: (\n\t\tstring | Readonly<string[]> | Readonly<Buffer> | null\n\t) = null;\n\n\t/**\n\t * Info.plist document.\n\t */\n\tpublic infoPlistDocument: Plist | null = null;\n\n\t/**\n\t * PkgInfo file.\n\t *\n\t * @default null\n\t */\n\tpublic pkgInfoFile: string | null = null;\n\n\t/**\n\t * PkgInfo data.\n\t *\n\t * @default null\n\t */\n\tpublic pkgInfoData: string | Readonly<Buffer> | null = null;\n\n\t/**\n\t * Update the bundle name in Info.plist.\n\t * Possible values:\n\t * - false: Leave untouched.\n\t * - true: Output name.\n\t * - null: Remove value.\n\t * - string: Custom value.\n\t */\n\tpublic bundleName: boolean | string | null = false;\n\n\t/**\n\t * Nest Xtras at *.app/Contents/xtras.\n\t *\n\t * @default false\n\t */\n\tpublic nestXtrasContents = false;\n\n\tconstructor(path: string) {\n\t\tsuper(path);\n\t}\n\n\t/**\n\t * Projector file extension.\n\t *\n\t * @returns File extension.\n\t */\n\tpublic get extension() {\n\t\treturn '.app';\n\t}\n\n\t/**\n\t * Config file newline characters.\n\t *\n\t * @returns Newline characters.\n\t */\n\tpublic get configNewline() {\n\t\treturn '\\n';\n\t}\n\n\t/**\n\t * Config file newline characters.\n\t *\n\t * @returns Newline characters.\n\t */\n\tpublic get lingoNewline() {\n\t\treturn '\\n';\n\t}\n\n\t/**\n\t * If icon is specified.\n\t *\n\t * @returns Has icon.\n\t */\n\tpublic get hasIcon() {\n\t\treturn !!(this.iconData || this.iconFile);\n\t}\n\n\t/**\n\t * If Info.plist is specified.\n\t *\n\t * @returns Has Info.plist.\n\t */\n\tpublic get hasInfoPlist() {\n\t\treturn !!(this.infoPlistData || this.infoPlistFile);\n\t}\n\n\t/**\n\t * If PkgInfo is specified.\n\t *\n\t * @returns Has PkgInfo.\n\t */\n\tpublic get hasPkgInfo() {\n\t\treturn !!(this.pkgInfoData || this.pkgInfoFile);\n\t}\n\n\t/**\n\t * Get the Projector Resources directory name.\n\t *\n\t * @returns Directory name.\n\t */\n\tpublic get projectorResourcesDirectoryName() {\n\t\treturn this.intel ? 'Projector Intel Resources' : 'Projector Resources';\n\t}\n\n\t/**\n\t * Get app binary name, default.\n\t *\n\t * @returns File name.\n\t */\n\tpublic get appBinaryNameDefault() {\n\t\treturn 'Projector';\n\t}\n\n\t/**\n\t * Get app binary name, custom.\n\t *\n\t * @returns File name.\n\t */\n\tpublic get appBinaryNameCustom() {\n\t\treturn this.binaryName;\n\t}\n\n\t/**\n\t * Get app binary name.\n\t *\n\t * @returns File name.\n\t */\n\tpublic get appBinaryName() {\n\t\treturn this.appBinaryNameCustom || this.appBinaryNameDefault;\n\t}\n\n\t/**\n\t * Get app icon name, default.\n\t *\n\t * @returns File name.\n\t */\n\tpublic get appIconNameDefault() {\n\t\treturn 'projector.icns';\n\t}\n\n\t/**\n\t * Get app icon name, custom.\n\t *\n\t * @returns File name.\n\t */\n\tpublic get appIconNameCustom() {\n\t\tconst n = this.binaryName;\n\t\treturn n ? `${n}.icns` : null;\n\t}\n\n\t/**\n\t * Get app icon name.\n\t *\n\t * @returns File name.\n\t */\n\tpublic get appIconName() {\n\t\treturn this.appIconNameCustom || this.appIconNameDefault;\n\t}\n\n\t/**\n\t * Get app rsrc name, default.\n\t *\n\t * @returns File name.\n\t */\n\tpublic get appRsrcNameDefault() {\n\t\treturn 'Projector.rsrc';\n\t}\n\n\t/**\n\t * Get app rsrc name, custom.\n\t *\n\t * @returns File name.\n\t */\n\tpublic get appRsrcNameCustom() {\n\t\tconst n = this.binaryName;\n\t\treturn n ? `${n}.rsrc` : null;\n\t}\n\n\t/**\n\t * Get app rsrc name.\n\t *\n\t * @returns File name.\n\t */\n\tpublic get appRsrcName() {\n\t\treturn this.appRsrcNameCustom || this.appRsrcNameDefault;\n\t}\n\n\t/**\n\t * Get app Info.plist path.\n\t *\n\t * @returns File path.\n\t */\n\tpublic get appPathInfoPlist() {\n\t\treturn 'Contents/Info.plist';\n\t}\n\n\t/**\n\t * Get app PkgInfo path.\n\t *\n\t * @returns File path.\n\t */\n\tpublic get appPathPkgInfo() {\n\t\treturn 'Contents/PkgInfo';\n\t}\n\n\t/**\n\t * Get app Frameworks path.\n\t *\n\t * @returns File path.\n\t */\n\tpublic get appPathFrameworks() {\n\t\treturn 'Contents/Frameworks';\n\t}\n\n\t/**\n\t * Get app Xtras path.\n\t *\n\t * @returns Directory path.\n\t */\n\tpublic get appPathXtras() {\n\t\treturn `Contents/${this.xtrasName}`;\n\t}\n\n\t/**\n\t * Get app binary path, default.\n\t *\n\t * @returns File path.\n\t */\n\tpublic get appPathBinaryDefault() {\n\t\treturn `Contents/MacOS/${this.appBinaryNameDefault}`;\n\t}\n\n\t/**\n\t * Get app binary path, custom.\n\t *\n\t * @returns File path.\n\t */\n\tpublic get appPathBinaryCustom() {\n\t\tconst n = this.appBinaryNameCustom;\n\t\treturn n ? `Contents/MacOS/${n}` : null;\n\t}\n\n\t/**\n\t * Get app binary path.\n\t *\n\t * @returns File path.\n\t */\n\tpublic get appPathBinary() {\n\t\treturn this.appPathBinaryCustom || this.appPathBinaryDefault;\n\t}\n\n\t/**\n\t * Get app icon path, default.\n\t *\n\t * @returns File path.\n\t */\n\tpublic get appPathIconDefault() {\n\t\treturn `Contents/Resources/${this.appIconNameDefault}`;\n\t}\n\n\t/**\n\t * Get app icon path, custom.\n\t *\n\t * @returns File path.\n\t */\n\tpublic get appPathIconCustom() {\n\t\tconst n = this.appIconNameCustom;\n\t\treturn n ? `Contents/Resources/${n}` : null;\n\t}\n\n\t/**\n\t * Get app icon path.\n\t *\n\t * @returns File path.\n\t */\n\tpublic get appPathIcon() {\n\t\treturn this.appPathIconCustom || this.appPathIconDefault;\n\t}\n\n\t/**\n\t * Get app rsrc path, default.\n\t *\n\t * @returns File path.\n\t */\n\tpublic get appPathRsrcDefault() {\n\t\treturn `Contents/Resources/${this.appRsrcNameDefault}`;\n\t}\n\n\t/**\n\t * Get app rsrc path, custom.\n\t *\n\t * @returns File path.\n\t */\n\tpublic get appPathRsrcCustom() {\n\t\tconst n = this.appRsrcNameCustom;\n\t\treturn n ? `Contents/Resources/${n}` : null;\n\t}\n\n\t/**\n\t * Get app rsrc path.\n\t *\n\t * @returns File path.\n\t */\n\tpublic get appPathRsrc() {\n\t\treturn this.appPathRsrcCustom || this.appPathRsrcDefault;\n\t}\n\n\t/**\n\t * Get the icon path.\n\t *\n\t * @returns Icon path.\n\t */\n\tpublic get iconPath() {\n\t\treturn pathJoin(this.path, this.appPathIcon);\n\t}\n\n\t/**\n\t * Get the Info.plist path.\n\t *\n\t * @returns Info.plist path.\n\t */\n\tpublic get infoPlistPath() {\n\t\treturn pathJoin(this.path, this.appPathInfoPlist);\n\t}\n\n\t/**\n\t * Get the PkgInfo path.\n\t *\n\t * @returns PkgInfo path.\n\t */\n\tpublic get pkgInfoPath() {\n\t\treturn pathJoin(this.path, this.appPathPkgInfo);\n\t}\n\n\t/**\n\t * Get the binary path.\n\t *\n\t * @returns Binary path.\n\t */\n\tpublic get binaryPath() {\n\t\treturn pathJoin(this.path, this.appPathBinary);\n\t}\n\n\t/**\n\t * Get outout Xtras path.\n\t *\n\t * @returns Output path.\n\t */\n\tpublic get xtrasPath() {\n\t\tif (this.nestXtrasContents) {\n\t\t\treturn `${this.path}/${this.appPathXtras}`;\n\t\t}\n\t\treturn super.xtrasPath;\n\t}\n\n\t/**\n\t * Get icon data if any specified, from data or file.\n\t *\n\t * @returns Icon data or null.\n\t */\n\tpublic async getIconData() {\n\t\tconst {iconData, iconFile} = this;\n\t\treturn iconData || (iconFile ? fse.readFile(iconFile) : null);\n\t}\n\n\t/**\n\t * Get Info.plist data if any specified, document, data, or file.\n\t *\n\t * @returns Info.plist data or null.\n\t */\n\tpublic async getInfoPlistDocument() {\n\t\tconst {\n\t\t\tinfoPlistDocument,\n\t\t\tinfoPlistData,\n\t\t\tinfoPlistFile\n\t\t} = this;\n\t\tlet xml;\n\t\tif (infoPlistDocument) {\n\t\t\txml = infoPlistDocument.toXml();\n\t\t}\n\t\telse if (typeof infoPlistData === 'string') {\n\t\t\txml = infoPlistData;\n\t\t}\n\t\telse if (Array.isArray(infoPlistData)) {\n\t\t\txml = infoPlistData.join('\\n');\n\t\t}\n\t\telse if (infoPlistData) {\n\t\t\txml = (infoPlistData as Readonly<Buffer>).toString('utf8');\n\t\t}\n\t\telse if (infoPlistFile) {\n\t\t\txml = await fse.readFile(infoPlistFile, 'utf8');\n\t\t}\n\t\telse {\n\t\t\treturn null;\n\t\t}\n\t\treturn plistParse(xml);\n\t}\n\n\t/**\n\t * Get PkgInfo data if any specified, from data or file.\n\t *\n\t * @returns PkgInfo data or null.\n\t */\n\tpublic async getPkgInfoData() {\n\t\tconst {pkgInfoData, pkgInfoFile} = this;\n\t\tif (typeof pkgInfoData === 'string') {\n\t\t\treturn Buffer.from(pkgInfoData, 'ascii');\n\t\t}\n\t\treturn pkgInfoData || (pkgInfoFile ? fse.readFile(pkgInfoFile) : null);\n\t}\n\n\t/**\n\t * Get configured bundle name, or null to remove.\n\t *\n\t * @returns New name or null.\n\t */\n\tpublic getBundleName() {\n\t\tconst {bundleName} = this;\n\t\treturn bundleName === true ?\n\t\t\ttrimExtension(basename(this.path), this.extension, true) :\n\t\t\tbundleName;\n\t}\n\n\t/**\n\t * Write the projector skeleton from archive.\n\t *\n\t * @param skeleton Skeleton path.\n\t */\n\tprotected async _writeSkeleton(skeleton: string) {\n\t\tconst {\n\t\t\tpath,\n\n\t\t\thasIcon,\n\t\t\thasInfoPlist,\n\t\t\thasPkgInfo,\n\t\t\tshockwave,\n\n\t\t\tappPathInfoPlist,\n\t\t\tappPathPkgInfo,\n\t\t\tappPathFrameworks,\n\n\t\t\tappPathBinaryDefault,\n\t\t\tappPathBinaryCustom,\n\n\t\t\tappPathIconDefault,\n\t\t\tappPathIconCustom,\n\n\t\t\tappPathRsrcDefault,\n\t\t\tappPathRsrcCustom,\n\n\t\t\txtrasName,\n\t\t\txtrasPath,\n\n\t\t\tprojectorResourcesDirectoryName\n\t\t} = this;\n\n\t\tconst xtrasMappings = this.getIncludeXtrasMappings();\n\n\t\tlet foundProjectorResourcesDirectory = false;\n\t\tlet foundFrameworks = false;\n\t\tlet foundBinary = false;\n\t\tlet foundInfoPlist = false;\n\t\tlet foundPkgInfo = false;\n\t\tlet foundIcon = false;\n\t\tlet foundRsrc = false;\n\t\tlet foundXtras = false;\n\n\t\tconst xtrasHandler = async (entry: Entry) => {\n\t\t\t// Check if Xtras path.\n\t\t\tconst xtrasRel = pathRelativeBase(\n\t\t\t\tentry.volumePath,\n\t\t\t\txtrasName,\n\t\t\t\ttrue\n\t\t\t);\n\t\t\tif (xtrasRel === null) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfoundXtras = true;\n\n\t\t\t// Find output path if being included, else skip.\n\t\t\tconst dest = this.includeXtrasMappingsDest(\n\t\t\t\txtrasMappings,\n\t\t\t\txtrasRel\n\t\t\t);\n\t\t\tif (!dest) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tawait entry.extract(pathJoin(xtrasPath, dest));\n\t\t\treturn true;\n\t\t};\n\n\t\tconst projectorResourcesHandler = async (entry: Entry) => {\n\t\t\t// Check if projector path.\n\t\t\tconst projectorRel = pathRelativeBase(\n\t\t\t\tentry.volumePath,\n\t\t\t\tprojectorResourcesDirectoryName,\n\t\t\t\ttrue\n\t\t\t);\n\t\t\tif (projectorRel === null) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfoundProjectorResourcesDirectory = true;\n\n\t\t\tif (pathRelativeBaseMatch(\n\t\t\t\tprojectorRel,\n\t\t\t\tappPathFrameworks,\n\t\t\t\ttrue\n\t\t\t)) {\n\t\t\t\tfoundFrameworks = true;\n\n\t\t\t\t// Exclude Frameworks directory for Shockwave projectors.\n\t\t\t\tif (shockwave) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Exclude Info.plist if using custom one.\n\t\t\tif (pathRelativeBaseMatch(\n\t\t\t\tprojectorRel,\n\t\t\t\tappPathInfoPlist,\n\t\t\t\ttrue\n\t\t\t)) {\n\t\t\t\tfoundInfoPlist = true;\n\n\t\t\t\tif (hasInfoPlist) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Exclude PkgInfo if using custom one.\n\t\t\tif (pathRelativeBaseMatch(\n\t\t\t\tprojectorRel,\n\t\t\t\tappPathPkgInfo,\n\t\t\t\ttrue\n\t\t\t)) {\n\t\t\t\tfoundPkgInfo = true;\n\n\t\t\t\tif (hasPkgInfo) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet dest = projectorRel;\n\n\t\t\t// Possibly rename the binary.\n\t\t\tif (pathRelativeBaseMatch(\n\t\t\t\tprojectorRel,\n\t\t\t\tappPathBinaryDefault,\n\t\t\t\ttrue\n\t\t\t)) {\n\t\t\t\tfoundBinary = true;\n\n\t\t\t\tif (appPathBinaryCustom) {\n\t\t\t\t\tdest = appPathBinaryCustom;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Special case for icon.\n\t\t\tif (pathRelativeBaseMatch(\n\t\t\t\tprojectorRel,\n\t\t\t\tappPathIconDefault,\n\t\t\t\ttrue\n\t\t\t)) {\n\t\t\t\tfoundIcon = true;\n\n\t\t\t\t// Skip extracting icon if custom one.\n\t\t\t\tif (hasIcon) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\t// Possible rename the icon.\n\t\t\t\tif (appPathIconCustom) {\n\t\t\t\t\tdest = appPathIconCustom;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Special case for rsrc.\n\t\t\tif (pathRelativeBaseMatch(\n\t\t\t\tprojectorRel,\n\t\t\t\tappPathRsrcDefault,\n\t\t\t\ttrue\n\t\t\t)) {\n\t\t\t\tfoundRsrc = true;\n\n\t\t\t\tif (appPathRsrcCustom) {\n\t\t\t\t\tdest = appPathRsrcCustom;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tawait entry.extract(pathJoin(path, dest));\n\t\t\treturn true;\n\t\t};\n\n\t\tconst archive = await this.getSkeletonArchive(skeleton);\n\t\tawait archive.read(async entry => {\n\t\t\tif (entry.type === PathType.RESOURCE_FORK) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (await xtrasHandler(entry)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (await projectorResourcesHandler(entry)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t});\n\n\t\tif (!foundProjectorResourcesDirectory) {\n\t\t\tthrow new Error(\n\t\t\t\t`Failed to locate: ${projectorResourcesDirectoryName}`\n\t\t\t);\n\t\t}\n\n\t\tif (!foundFrameworks) {\n\t\t\tconst d = projectorResourcesDirectoryName;\n\t\t\tthrow new Error(`Failed to locate: ${d}/${appPathFrameworks}`);\n\t\t}\n\n\t\tif (!foundBinary) {\n\t\t\tconst d = projectorResourcesDirectoryName;\n\t\t\tthrow new Error(`Failed to locate: ${d}/${appPathBinaryDefault}`);\n\t\t}\n\n\t\tif (!foundInfoPlist) {\n\t\t\tconst d = projectorResourcesDirectoryName;\n\t\t\tthrow new Error(`Failed to locate: ${d}/${appPathInfoPlist}`);\n\t\t}\n\n\t\tif (!foundPkgInfo) {\n\t\t\t// Some projector skeletons lack this file.\n\t\t\t// const d = projectorResourcesDirectoryName;\n\t\t\t// throw new Error(`Failed to locate: ${d}/${appPathPkgInfo}`);\n\t\t}\n\n\t\tif (!foundIcon) {\n\t\t\tconst d = projectorResourcesDirectoryName;\n\t\t\tthrow new Error(`Failed to locate: ${d}/${appPathIconDefault}`);\n\t\t}\n\n\t\tif (!foundRsrc) {\n\t\t\tconst d = projectorResourcesDirectoryName;\n\t\t\tthrow new Error(`Failed to locate: ${d}/${appPathRsrcDefault}`);\n\t\t}\n\n\t\tif (!foundXtras) {\n\t\t\tthrow new Error(`Failed to locate: ${xtrasName}`);\n\t\t}\n\t}\n\n\t/**\n\t * Modify the projector skeleton.\n\t */\n\tprotected async _modifySkeleton() {\n\t\tawait this._writeIcon();\n\t\tawait this._writePkgInfo();\n\t\tawait this._updateInfoPlist();\n\t}\n\n\t/**\n\t * Write out the projector icon file.\n\t */\n\tprotected async _writeIcon() {\n\t\tconst data = await this.getIconData();\n\t\tif (data) {\n\t\t\tawait fse.outputFile(this.iconPath, data);\n\t\t}\n\t}\n\n\t/**\n\t * Write out the projector PkgInfo file.\n\t */\n\tprotected async _writePkgInfo() {\n\t\tconst data = await this.getPkgInfoData();\n\t\tif (data) {\n\t\t\tawait fse.outputFile(this.pkgInfoPath, data);\n\t\t}\n\t}\n\n\t/**\n\t * Update the projector Info.plist if needed.\n\t */\n\tprotected async _updateInfoPlist() {\n\t\tconst customPlist = await this.getInfoPlistDocument();\n\t\tconst bundleName = this.getBundleName();\n\t\tconst {\n\t\t\tappBinaryNameCustom,\n\t\t\tappIconNameCustom\n\t\t} = this;\n\t\tif (!(\n\t\t\tcustomPlist ||\n\t\t\tappIconNameCustom ||\n\t\t\tappBinaryNameCustom ||\n\t\t\tbundleName !== false\n\t\t)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Use a custom plist or the existing one.\n\t\tconst plist = customPlist || (await this._readInfoPlist());\n\n\t\t// Update values.\n\t\tif (appIconNameCustom) {\n\t\t\tinfoPlistBundleIconFileSet(plist, appIconNameCustom);\n\t\t}\n\t\tif (appBinaryNameCustom) {\n\t\t\tinfoPlistBundleExecutableSet(plist, appBinaryNameCustom);\n\t\t}\n\t\tif (bundleName !== false) {\n\t\t\tinfoPlistBundleNameSet(plist, bundleName);\n\t\t}\n\n\t\t// Write out the plist.\n\t\tawait this._writeInfoPlist(plist);\n\t}\n\n\t/**\n\t * Read the projector Info.plist file.\n\t *\n\t * @returns Plist document.\n\t */\n\tprotected async _readInfoPlist() {\n\t\treturn plistRead(this.infoPlistPath);\n\t}\n\n\t/**\n\t * Write the projector Info.plist file.\n\t *\n\t * @param plist Plist document.\n\t */\n\tprotected async _writeInfoPlist(plist: Plist) {\n\t\tconst path = this.infoPlistPath;\n\t\tawait fse.remove(path);\n\t\tawait fse.outputFile(path, plist.toXml(), 'utf8');\n\t}\n}\n"],"file":"app.mjs","sourceRoot":"../../../src"}