xref: /expo/packages/@expo/cli/src/utils/dir.ts (revision 8010f0ca)
18d307f52SEvan Baconimport fs from 'fs-extra';
28d307f52SEvan Bacon
3*8010f0caSEvan Baconexport function directoryExistsSync(file: string): boolean {
4*8010f0caSEvan Bacon  try {
5*8010f0caSEvan Bacon    return fs.statSync(file)?.isDirectory() ?? false;
6*8010f0caSEvan Bacon  } catch {
7*8010f0caSEvan Bacon    return false;
8*8010f0caSEvan Bacon  }
9*8010f0caSEvan Bacon}
10*8010f0caSEvan Bacon
118d307f52SEvan Baconexport async function directoryExistsAsync(file: string): Promise<boolean> {
128d307f52SEvan Bacon  return (await fs.promises.stat(file).catch(() => null))?.isDirectory() ?? false;
138d307f52SEvan Bacon}
148d307f52SEvan Bacon
158d307f52SEvan Baconexport async function fileExistsAsync(file: string): Promise<boolean> {
168d307f52SEvan Bacon  return (await fs.promises.stat(file).catch(() => null))?.isFile() ?? false;
178d307f52SEvan Bacon}
188d307f52SEvan Bacon
198d307f52SEvan Baconexport const ensureDirectoryAsync = (path: string) => fs.promises.mkdir(path, { recursive: true });
208d307f52SEvan Bacon
21c4ef02aeSEvan Baconexport const ensureDirectory = (path: string) => fs.mkdirSync(path, { recursive: true });
22c4ef02aeSEvan Bacon
238d307f52SEvan Baconexport const copySync = fs.copySync;
24dc51e206SEvan Bacon
25dc51e206SEvan Baconexport const copyAsync = fs.copy;
26dc51e206SEvan Bacon
27dc51e206SEvan Baconexport const removeAsync = fs.remove;
28