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      // Aliases
16      '-h': '--help',
17    },
18    argv ?? []
19  );
20
21  if (args['--help']) {
22    Log.exit(
23      chalk`
24{bold Description}
25Configure expo-updates code signing for this project and verify setup
26
27{bold Usage}
28  {dim $} npx expo-updates codesigning:configure --certificate-input-directory <dir> --key-input-directory <dir>
29
30  Options
31  --certificate-input-directory <string>     Directory containing code signing certificate
32  --key-input-directory <string>             Directory containing private and public keys
33  -h, --help                                 Output usage information
34    `,
35      0
36    );
37  }
38
39  const { configureCodeSigningAsync } = await import('./configureCodeSigningAsync');
40
41  const certificateInput = requireArg(args, '--certificate-input-directory');
42  const keyInput = requireArg(args, '--key-input-directory');
43
44  return await configureCodeSigningAsync(getProjectRoot(args), {
45    certificateInput,
46    keyInput,
47  });
48};
49