async function setPermissions()

in scripts/download-chromium.js [105:150]


async function setPermissions(directory) {
  let files = [];
  try {
    files = await fs.readdir(directory);
  } catch (err) {
    if (err) {
      // eslint-disable-next-line no-console
      console.error(`Error reading directory ${directory}: ${err}`);
      return;
    }
  }

  for (const file of files) {
    const filePath = path.join(directory, file);
    let stats;
    try {
      stats = await fs.stat(filePath);
    } catch (err) {
      if (err) {
        // eslint-disable-next-line no-console
        console.error(`Cannot access file ${filePath}: ${err}`);
        return;
      }
    }
    if (stats.isDirectory()) {
      setPermissions(filePath);
    } else {
      let permissionsOk = true;
      try {
        await fs.access(filePath, fs.constants.R_OK | fs.constants.W_OK);
      } catch (_e) {
        permissionsOk = false;
      }
      if (!permissionsOk) {
        try {
          // eslint-disable-next-line no-console
          console.log(`Updating permissions: ${filePath}`);
          return fs.chmod(filePath, 0o755);
        } catch (_err) {
          // eslint-disable-next-line no-console
          console.error(`Could not update permissions for "${filePath}", build may fail`);
        }
      }
    }
  }
}