1*082815dcSEvan Baconimport fs from 'fs';
2*082815dcSEvan Baconimport path from 'path';
3*082815dcSEvan Bacon
4*082815dcSEvan Bacon/** A basic function that copies a single file to another file location. */
5*082815dcSEvan Baconexport async function copyFilePathToPathAsync(src: string, dest: string): Promise<void> {
6*082815dcSEvan Bacon  const srcFile = await fs.promises.readFile(src);
7*082815dcSEvan Bacon  await fs.promises.mkdir(path.dirname(dest), { recursive: true });
8*082815dcSEvan Bacon  await fs.promises.writeFile(dest, srcFile);
9*082815dcSEvan Bacon}
10*082815dcSEvan Bacon
11*082815dcSEvan Bacon/** Remove a single file (not directory). Returns `true` if a file was actually deleted. */
12*082815dcSEvan Baconexport function removeFile(filePath: string): boolean {
13*082815dcSEvan Bacon  try {
14*082815dcSEvan Bacon    fs.unlinkSync(filePath);
15*082815dcSEvan Bacon    return true;
16*082815dcSEvan Bacon  } catch (error: any) {
17*082815dcSEvan Bacon    // Skip if the remove did nothing.
18*082815dcSEvan Bacon    if (error.code === 'ENOENT') {
19*082815dcSEvan Bacon      return false;
20*082815dcSEvan Bacon    }
21*082815dcSEvan Bacon    throw error;
22*082815dcSEvan Bacon  }
23*082815dcSEvan Bacon}
24