amis-rpc-design/node_modules/@react-native-community/cli-clean/build/clean.js.map

1 line
12 KiB
Plaintext
Raw Normal View History

2023-10-07 19:42:30 +08:00
{"version":3,"names":["DEFAULT_GROUPS","rmdirAsync","promisify","rmdir","cleanDir","directory","fileExists","Promise","resolve","maxRetries","recursive","findPath","startPath","files","file","filename","path","undefined","promptForCaches","groups","caches","prompts","type","name","message","choices","Object","entries","map","cmd","group","title","chalk","dim","description","value","selected","includes","min","clean","_argv","_config","cleanOptions","include","projectRoot","verifyCache","Error","COMMANDS","android","tasks","label","action","candidates","os","platform","gradlew","script","basename","execa","cwd","dirname","cocoapods","metro","tmpdir","npm","watchman","yarn","split","length","spinner","getLoader","commands","warn","start","then","succeed","catch","e","fail","func","options","default","process"],"sources":["../src/clean.ts"],"sourcesContent":["import {getLoader} from '@react-native-community/cli-tools';\nimport type {Config as CLIConfig} from '@react-native-community/cli-types';\nimport chalk from 'chalk';\nimport execa from 'execa';\nimport {existsSync as fileExists, rmdir} from 'fs';\nimport os from 'os';\nimport path from 'path';\nimport prompts from 'prompts';\nimport {promisify} from 'util';\n\ntype Args = {\n include?: string;\n projectRoot: string;\n verifyCache?: boolean;\n};\n\ntype Task = {\n label: string;\n action: () => Promise<void>;\n};\n\ntype CleanGroups = {\n [key: string]: {\n description: string;\n tasks: Task[];\n };\n};\n\nconst DEFAULT_GROUPS = ['metro', 'watchman'];\n\nconst rmdirAsync = promisify(rmdir);\n\nfunction cleanDir(directory: string): Promise<void> {\n if (!fileExists(directory)) {\n return Promise.resolve();\n }\n\n return rmdirAsync(directory, {maxRetries: 3, recursive: true});\n}\n\nfunction findPath(startPath: string, files: string[]): string | undefined {\n // TODO: Find project files via `@react-native-community/cli`\n for (const file of files) {\n const filename = path.resolve(startPath, file);\n if (fileExists(filename)) {\n return filename;\n }\n }\n\n return undefined;\n}\n\nasync function promptForCaches(\n groups: CleanGroups,\n): Promise<string[] | undefined> {\n const {caches} = await prompts({\n type: 'multiselect',\n name: 'caches',\n message: 'Select all caches to clean',\n choices: Object.entries(groups).map(([cmd, group]) => ({\n title: `${cmd} ${chalk.dim(`(${group.description})`)}`,\n value: cmd,\n selected: DEFAULT_GROUPS.includes(cmd),\n })),\n min: 1,\n });\n return caches;\n}\n\nexport async function clean(\n _argv: string[],\n _config: CLIConfig,\n cleanOptions: Args,\n): Promise<void> {\n const {include, projectRoot, verifyCache} = cleanOptions;\n if (!fileExists(projectRoot)) {\n throw new Error(`Invalid path provided! ${projectRoot}`);\n }\n\n const COMMANDS: CleanGroups = {\n android: {\n description: 'Android build caches, e.g. Gradle',\n tasks: [\n {\n label: 'Clean Gradle cache',\n action: async () => {\n const candidates =\n os.platform() === 'win32'\n ? ['android/gradlew.bat', 'gradlew.bat']\n : ['android/gradlew', 'gradlew'];\n const gradlew = findPath(projectRoot, candidates);\n if (gradlew) {\n const script = path.basename(gradlew);\n await execa(\n os.platform() === 'win32' ? script : `./${script}`,\n ['clean'],\n {cwd: path.dirname(gradlew)},\n );\n }\n },\n },\n ],\n },\n ...(os.platform() === 'darwin'\n ? {\n cocoapods: {\n description: 'CocoaPods cache',\n tasks: [\n {\n label: 'Clean CocoaPods pod cache',\n action: async () => {\n await execa('pod', ['cache', 'clean', '--all'], {\n cwd: projectRoot,\n });\n },\n },\n {\n label: 'Re