From dc6dd47a23bae758a2574b5b58bf13402849f231 Mon Sep 17 00:00:00 2001 From: Pascal Hartig Date: Wed, 3 Nov 2021 05:38:56 -0700 Subject: [PATCH] Make openssl check async Summary: This was the last eslint warning for `flipper-server-core` and the only call-site was async already. Reviewed By: mweststrate Differential Revision: D32026626 fbshipit-source-id: 0d6f06086c33707b26f58f668ad533daca9de7dd --- .../src/utils/CertificateProvider.tsx | 6 +++--- .../src/utils/openssl-wrapper-with-promises.tsx | 11 ++++++++--- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/desktop/flipper-server-core/src/utils/CertificateProvider.tsx b/desktop/flipper-server-core/src/utils/CertificateProvider.tsx index b477c8a4b..8ed5cf20f 100644 --- a/desktop/flipper-server-core/src/utils/CertificateProvider.tsx +++ b/desktop/flipper-server-core/src/utils/CertificateProvider.tsx @@ -173,7 +173,7 @@ export default class CertificateProvider { if (csr === '') { return Promise.reject(new Error(`Received empty CSR from ${os} device`)); } - this.ensureOpenSSLIsAvailable(); + await this.ensureOpenSSLIsAvailable(); const rootFolder = await promisify(tmp.dir)(); const certFolder = rootFolder + '/FlipperCerts/'; const certsZipPath = rootFolder + '/certs.zip'; @@ -249,8 +249,8 @@ export default class CertificateProvider { return Promise.resolve('unknown'); } - private ensureOpenSSLIsAvailable(): void { - if (!opensslInstalled()) { + private async ensureOpenSSLIsAvailable(): Promise { + if (!(await opensslInstalled())) { const e = Error( "It looks like you don't have OpenSSL installed. Please install it to continue.", ); diff --git a/desktop/flipper-server-core/src/utils/openssl-wrapper-with-promises.tsx b/desktop/flipper-server-core/src/utils/openssl-wrapper-with-promises.tsx index df07004ac..93ca843e4 100644 --- a/desktop/flipper-server-core/src/utils/openssl-wrapper-with-promises.tsx +++ b/desktop/flipper-server-core/src/utils/openssl-wrapper-with-promises.tsx @@ -8,7 +8,7 @@ */ import {exec as opensslWithCallback, Action} from 'openssl-wrapper'; -import child_process from 'child_process'; +import {spawn} from 'promisify-child-process'; export function openssl(action: Action, options: {}): Promise { return new Promise((resolve, reject) => { @@ -22,6 +22,11 @@ export function openssl(action: Action, options: {}): Promise { }); } -export function isInstalled(): boolean { - return !child_process.spawnSync('openssl', ['version']).error; +export async function isInstalled(): Promise { + try { + const result = await spawn('openssl', ['version']); + return result.code === 0; + } catch (_e) { + return false; + } }