1#!/usr/bin/env node
2import chalk from 'chalk';
3
4import { Command } from './cli';
5import { requireArg, assertArgs, getProjectRoot } from './utils/args';
6import * as Log from './utils/log';
7
8export const configureCodeSigning: Command = async (argv) => {
9  const args = assertArgs(
10    {
11      // Types
12      '--help': Boolean,
13      '--certificate-input-directory': String,
14      '--key-input-directory': String,
15      '--keyid': String,
16      // Aliases
17      '-h': '--help',
18    },
19    argv ?? []
20  );
21
22  if (args['--help']) {
23    Log.exit(
24      chalk`
25{bold Description}
26Configure expo-updates code signing for this project and verify setup
27
28{bold Usage}
29  {dim $} npx expo-updates codesigning:configure --certificate-input-directory <dir> --key-input-directory <dir>
30
31  Options
32  --certificate-input-directory <string>     Directory containing code signing certificate
33  --key-input-directory <string>             Directory containing private and public keys
34  -h, --help                                 Output usage information
35    `,
36      0
37    );
38  }
39
40  const { configureCodeSigningAsync } = await import('./configureCodeSigningAsync.js');
41
42  const certificateInput = requireArg(args, '--certificate-input-directory');
43  const keyInput = requireArg(args, '--key-input-directory');
44  const keyid = args['--keyid'];
45
46  return await configureCodeSigningAsync(getProjectRoot(args), {
47    certificateInput,
48    keyInput,
49    keyid,
50  });
51};
52