1*c4ef02aeSEvan Baconimport spawnAsync from '@expo/spawn-async';
2*c4ef02aeSEvan Bacon
3*c4ef02aeSEvan Baconimport { Prerequisite, PrerequisiteCommandError } from './Prerequisite';
4*c4ef02aeSEvan Bacon
5*c4ef02aeSEvan Baconexport class SecurityBinPrerequisite extends Prerequisite {
6*c4ef02aeSEvan Bacon  static instance = new SecurityBinPrerequisite();
7*c4ef02aeSEvan Bacon
8*c4ef02aeSEvan Bacon  async assertImplementation(): Promise<void> {
9*c4ef02aeSEvan Bacon    try {
10*c4ef02aeSEvan Bacon      // make sure we can run security
11*c4ef02aeSEvan Bacon      await spawnAsync('which', ['security']);
12*c4ef02aeSEvan Bacon    } catch {
13*c4ef02aeSEvan Bacon      throw new PrerequisiteCommandError(
14*c4ef02aeSEvan Bacon        'SECURITY_BIN',
15*c4ef02aeSEvan Bacon        "Cannot code sign project because the CLI `security` is not available on your computer.\nPlease ensure it's installed and try again."
16*c4ef02aeSEvan Bacon      );
17*c4ef02aeSEvan Bacon    }
18*c4ef02aeSEvan Bacon  }
19*c4ef02aeSEvan Bacon}
20