(targetExecutable, verifyWorkflow = false)
| 203 | } |
| 204 | |
| 205 | function signSEA(targetExecutable, verifyWorkflow = false) { |
| 206 | if (process.platform === 'darwin') { |
| 207 | try { |
| 208 | spawnSyncAndExitWithoutError('codesign', [ '--sign', '-', targetExecutable ]); |
| 209 | spawnSyncAndExitWithoutError('codesign', [ '--verify', targetExecutable ]); |
| 210 | } catch (e) { |
| 211 | const message = `Cannot sign ${targetExecutable}: ${inspect(e)}`; |
| 212 | if (verifyWorkflow) { |
| 213 | throw new Error(message, { cause: e }); |
| 214 | } |
| 215 | common.skip(message); |
| 216 | } |
| 217 | console.log(`Signed ${targetExecutable}`); |
| 218 | } else if (process.platform === 'win32') { |
| 219 | try { |
| 220 | spawnSyncAndExitWithoutError('where', [ 'signtool' ]); |
| 221 | } catch (e) { |
| 222 | const message = `Cannot find signtool: ${inspect(e)}`; |
| 223 | if (verifyWorkflow) { |
| 224 | throw new Error(message, { cause: e }); |
| 225 | } |
| 226 | common.skip(message); |
| 227 | } |
| 228 | let stderr; |
| 229 | try { |
| 230 | ({ stderr } = spawnSyncAndExitWithoutError('signtool', [ 'sign', '/fd', 'SHA256', targetExecutable ])); |
| 231 | spawnSyncAndExitWithoutError('signtool', ['verify', '/pa', 'SHA256', targetExecutable]); |
| 232 | } catch (e) { |
| 233 | const message = `Cannot sign ${targetExecutable}: ${inspect(e)}\n${stderr}`; |
| 234 | if (verifyWorkflow) { |
| 235 | throw new Error(message, { cause: e }); |
| 236 | } |
| 237 | common.skip(message); |
| 238 | } |
| 239 | console.log(`Signed ${targetExecutable}`); |
| 240 | } |
| 241 | } |
| 242 | |
| 243 | module.exports = { |
| 244 | skipIfBuildSEAIsNotSupported, |
no test coverage detected
searching dependent graphs…