summaryrefslogtreecommitdiff
path: root/desktop/node_modules/@electron/osx-sign/dist/esm/util.js
diff options
context:
space:
mode:
Diffstat (limited to 'desktop/node_modules/@electron/osx-sign/dist/esm/util.js')
-rw-r--r--desktop/node_modules/@electron/osx-sign/dist/esm/util.js145
1 files changed, 145 insertions, 0 deletions
diff --git a/desktop/node_modules/@electron/osx-sign/dist/esm/util.js b/desktop/node_modules/@electron/osx-sign/dist/esm/util.js
new file mode 100644
index 0000000..76eef43
--- /dev/null
+++ b/desktop/node_modules/@electron/osx-sign/dist/esm/util.js
@@ -0,0 +1,145 @@
+import * as child from 'child_process';
+import * as fs from 'fs-extra';
+import { isBinaryFile } from 'isbinaryfile';
+import * as path from 'path';
+import debug from 'debug';
+export const debugLog = debug('electron-osx-sign');
+debugLog.log = console.log.bind(console);
+export const debugWarn = debug('electron-osx-sign:warn');
+debugWarn.log = console.warn.bind(console);
+const removePassword = function (input) {
+ return input.replace(/(-P |pass:|\/p|-pass )([^ ]+)/, function (_, p1) {
+ return `${p1}***`;
+ });
+};
+export async function execFileAsync(file, args, options = {}) {
+ if (debugLog.enabled) {
+ debugLog('Executing...', file, args && Array.isArray(args) ? removePassword(args.join(' ')) : '');
+ }
+ return new Promise(function (resolve, reject) {
+ child.execFile(file, args, options, function (err, stdout, stderr) {
+ if (err) {
+ debugLog('Error executing file:', '\n', '> Stdout:', stdout, '\n', '> Stderr:', stderr);
+ reject(err);
+ return;
+ }
+ resolve(stdout);
+ });
+ });
+}
+export function compactFlattenedList(list) {
+ const result = [];
+ function populateResult(list) {
+ if (!Array.isArray(list)) {
+ if (list)
+ result.push(list);
+ }
+ else if (list.length > 0) {
+ for (const item of list)
+ if (item)
+ populateResult(item);
+ }
+ }
+ populateResult(list);
+ return result;
+}
+/**
+ * Returns the path to the "Contents" folder inside the application bundle
+ */
+export function getAppContentsPath(opts) {
+ return path.join(opts.app, 'Contents');
+}
+/**
+ * Returns the path to app "Frameworks" within contents.
+ */
+export function getAppFrameworksPath(opts) {
+ return path.join(getAppContentsPath(opts), 'Frameworks');
+}
+export async function detectElectronPlatform(opts) {
+ const appFrameworksPath = getAppFrameworksPath(opts);
+ if (await fs.pathExists(path.resolve(appFrameworksPath, 'Squirrel.framework'))) {
+ return 'darwin';
+ }
+ else {
+ return 'mas';
+ }
+}
+/**
+ * This function returns a promise resolving the file path if file binary.
+ */
+async function getFilePathIfBinary(filePath) {
+ if (await isBinaryFile(filePath)) {
+ return filePath;
+ }
+ return null;
+}
+/**
+ * This function returns a promise validating opts.app, the application to be signed or flattened.
+ */
+export async function validateOptsApp(opts) {
+ if (!opts.app) {
+ throw new Error('Path to application must be specified.');
+ }
+ if (path.extname(opts.app) !== '.app') {
+ throw new Error('Extension of application must be `.app`.');
+ }
+ if (!(await fs.pathExists(opts.app))) {
+ throw new Error(`Application at path "${opts.app}" could not be found`);
+ }
+}
+/**
+ * This function returns a promise validating opts.platform, the platform of Electron build. It allows auto-discovery if no opts.platform is specified.
+ */
+export async function validateOptsPlatform(opts) {
+ if (opts.platform) {
+ if (opts.platform === 'mas' || opts.platform === 'darwin') {
+ return opts.platform;
+ }
+ else {
+ debugWarn('`platform` passed in arguments not supported, checking Electron platform...');
+ }
+ }
+ else {
+ debugWarn('No `platform` passed in arguments, checking Electron platform...');
+ }
+ return await detectElectronPlatform(opts);
+}
+/**
+ * This function returns a promise resolving all child paths within the directory specified.
+ * @function
+ * @param {string} dirPath - Path to directory.
+ * @returns {Promise} Promise resolving child paths needing signing in order.
+ */
+export async function walkAsync(dirPath) {
+ debugLog('Walking... ' + dirPath);
+ async function _walkAsync(dirPath) {
+ const children = await fs.readdir(dirPath);
+ return await Promise.all(children.map(async (child) => {
+ const filePath = path.resolve(dirPath, child);
+ const stat = await fs.stat(filePath);
+ if (stat.isFile()) {
+ switch (path.extname(filePath)) {
+ case '.cstemp': // Temporary file generated from past codesign
+ debugLog('Removing... ' + filePath);
+ await fs.remove(filePath);
+ return null;
+ default:
+ return await getFilePathIfBinary(filePath);
+ }
+ }
+ else if (stat.isDirectory() && !stat.isSymbolicLink()) {
+ const walkResult = await _walkAsync(filePath);
+ switch (path.extname(filePath)) {
+ case '.app': // Application
+ case '.framework': // Framework
+ walkResult.push(filePath);
+ }
+ return walkResult;
+ }
+ return null;
+ }));
+ }
+ const allPaths = await _walkAsync(dirPath);
+ return compactFlattenedList(allPaths);
+}
+//# sourceMappingURL=util.js.map \ No newline at end of file