1import { searchFilesAsync } from '../Utils';
2import { copyVendoredFilesAsync } from './common';
3import { VendoringModuleConfig } from './types';
4
5export async function vendorAsync(
6  sourceDirectory: string,
7  targetDirectory: string,
8  config: VendoringModuleConfig['android'] = {}
9): Promise<void> {
10  // Get a list of source files for Android. Usually we'll just fall back to `android` directory.
11  const files = await searchFilesAsync(sourceDirectory, config.includeFiles ?? 'android/**', {
12    ignore: config.excludeFiles,
13  });
14
15  await copyVendoredFilesAsync(files, {
16    sourceDirectory,
17    targetDirectory,
18    transforms: config?.transforms ?? {},
19  });
20
21  await config.postCopyFilesHookAsync?.(sourceDirectory, targetDirectory);
22}
23