{"version":3,"file":"clear-cache.js","sourceRoot":"","sources":["../../src/cli/clear-cache.ts"],"names":[],"mappings":";;AAMA,gCAoCC;AA1CD,sEAAwE;AACxE,+CAAkC;AAClC,0CAAmD;AACnD,gDAAmD;AACnD,6BAA4B;AAErB,KAAK,UAAU,UAAU;IAC9B,MAAM,QAAQ,GAAG,IAAA,+BAAiB,EAAC,EAAE,sBAAsB,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC,CAAA;IAEjG,IAAI,QAAQ,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3C,kBAAG,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,0DAA0D,CAAC,CAAA;QACnF,OAAM;IACR,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAA,iBAAM,EAAC,QAAQ,EAAE,oBAAS,CAAC,IAAI,GAAG,oBAAS,CAAC,IAAI,CAAC,CAAA;IACzD,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC1B,kBAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,kDAAkD,CAAC,CAAA;QAC5E,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACzD,kBAAG,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,iCAAiC,CAAC,CAAA;QAC5D,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,CAAA;QACX,CAAC;QACD,OAAM;IACR,CAAC;IAED,MAAM,EAAE,GAAG,IAAA,0BAAe,EAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAC5E,IAAI,MAAc,CAAA;IAClB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,QAAQ,UAAU,CAAC,CAAA;IAClE,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAA;IACZ,CAAC;IACD,IAAI,MAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,MAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE,CAAC;QACnF,kBAAG,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;QACzB,OAAM;IACR,CAAC;IAED,kBAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,gBAAgB,CAAC,CAAA;IACxC,MAAM,IAAA,aAAE,EAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACvC,kBAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,eAAe,CAAC,CAAA;AACzC,CAAC","sourcesContent":["import { getCacheDirectory } from \"app-builder-lib/out/util/electronGet\"\nimport { log } from \"builder-util\"\nimport { access, constants, rm } from \"fs/promises\"\nimport { createInterface } from \"readline/promises\"\nimport * as path from \"path\"\n\nexport async function clearCache(): Promise<void> {\n  const cacheDir = getCacheDirectory({ isAvoidSystemOnWindows: false, allowEnvVarOverride: false })\n\n  if (cacheDir === path.parse(cacheDir).root) {\n    log.error({ cacheDir }, \"cache directory resolves to a filesystem root — aborting\")\n    return\n  }\n\n  try {\n    await access(cacheDir, constants.F_OK | constants.W_OK)\n  } catch (err: any) {\n    if (err.code === \"ENOENT\") {\n      log.info({ cacheDir }, \"cache directory does not exist, nothing to clear\")\n    } else if (err.code === \"EACCES\" || err.code === \"EPERM\") {\n      log.error({ cacheDir }, \"cache directory is not writable\")\n    } else {\n      throw err\n    }\n    return\n  }\n\n  const rl = createInterface({ input: process.stdin, output: process.stdout })\n  let answer: string\n  try {\n    answer = await rl.question(`Clear cache at ${cacheDir}? [y/N] `)\n  } finally {\n    rl.close()\n  }\n  if (answer!.trim().toLowerCase() !== \"y\" && answer!.trim().toLowerCase() !== \"yes\") {\n    log.info(null, \"aborted\")\n    return\n  }\n\n  log.info({ cacheDir }, \"clearing cache\")\n  await rm(cacheDir, { recursive: true })\n  log.info({ cacheDir }, \"cache cleared\")\n}\n"]}