diff --git a/cli.js b/cli.js index 5e98580..1b3c9a9 100755 --- a/cli.js +++ b/cli.js @@ -162,15 +162,18 @@ async function init() { ora.text = 'Code signing DMG'; let identity; - const {stdout} = await execa('/usr/bin/security', ['find-identity', '-v', '-p', 'codesigning']); - if (cli.flags.identity && stdout.includes(`"${cli.flags.identity}"`)) { + if (cli.flags.identity) { + // We skip identity validation to support both named and SHA-1 formats; let system validate. identity = cli.flags.identity; - } else if (!cli.flags.identity && stdout.includes('Developer ID Application:')) { - identity = 'Developer ID Application'; - } else if (!cli.flags.identity && stdout.includes('Mac Developer:')) { - identity = 'Mac Developer'; - } else if (!cli.flags.identity && stdout.includes('Apple Development:')) { - identity = 'Apple Development'; + } else { + const {stdout} = await execa('/usr/bin/security', ['find-identity', '-v', '-p', 'codesigning']); + if (!cli.flags.identity && stdout.includes('Developer ID Application:')) { + identity = 'Developer ID Application'; + } else if (!cli.flags.identity && stdout.includes('Mac Developer:')) { + identity = 'Mac Developer'; + } else if (!cli.flags.identity && stdout.includes('Apple Development:')) { + identity = 'Apple Development'; + } } if (!identity) { diff --git a/test.js b/test.js index 3ae3ecc..d31ae28 100644 --- a/test.js +++ b/test.js @@ -14,7 +14,7 @@ test('main', async t => { await execa(path.join(__dirname, 'cli.js'), ['--identity=0', path.join(__dirname, 'fixtures/Fixture.app')], {cwd}); } catch (error) { // Silence code signing failure - if (!error.message.includes('No suitable code signing')) { + if (!error.message.includes('The specified item could not be found in the keychain')) { throw error; } } @@ -29,7 +29,7 @@ test('binary plist', async t => { await execa(path.join(__dirname, 'cli.js'), ['--identity=0', path.join(__dirname, 'fixtures/Fixture-with-binary-plist.app')], {cwd}); } catch (error) { // Silence code signing failure - if (!error.message.includes('No suitable code signing')) { + if (!error.message.includes('The specified item could not be found in the keychain')) { throw error; } } @@ -44,7 +44,7 @@ test('app without icon', async t => { await execa(path.join(__dirname, 'cli.js'), ['--identity=0', path.join(__dirname, 'fixtures/Fixture-no-icon.app')], {cwd}); } catch (error) { // Silence code signing failure - if (!error.message.includes('No suitable code signing')) { + if (!error.message.includes('The specified item could not be found in the keychain')) { throw error; } }