1{"version":3,"file":"Paths.js","names":["getProjectFilePath","projectRoot","name","filePath","globSync","path","join","assert","getLanguage","extension","extname","UnexpectedError","getFileInfo","normalize","contents","fs","readFileSync","language","getMainApplicationAsync","getMainActivityAsync","getGradleFilePath","gradleName","groovyPath","resolve","ktPath","isGroovy","existsSync","isKotlin","Error","getProjectBuildGradleFilePath","getProjectBuildGradleAsync","getSettingsGradleFilePath","getSettingsGradleAsync","getAppBuildGradleFilePath","getAppBuildGradleAsync","getProjectPathOrThrowAsync","projectPath","directoryExistsAsync","getAndroidManifestAsync","getResourceFolderAsync","getResourceXMLPathAsync","kind","resourcePath"],"sources":["../../src/android/Paths.ts"],"sourcesContent":["import assert from 'assert';\nimport fs from 'fs';\nimport { sync as globSync } from 'glob';\nimport * as path from 'path';\n\nimport { UnexpectedError } from '../utils/errors';\nimport { directoryExistsAsync } from '../utils/modules';\nimport { ResourceKind } from './Resources';\n\nexport interface ProjectFile<L extends string = string> {\n  path: string;\n  language: L;\n  contents: string;\n}\n\nexport type ApplicationProjectFile = ProjectFile<'java' | 'kt'>;\nexport type GradleProjectFile = ProjectFile<'groovy' | 'kt'>;\n\nexport function getProjectFilePath(projectRoot: string, name: string): string {\n  const filePath = globSync(\n    path.join(projectRoot, `android/app/src/main/java/**/${name}.@(java|kt)`)\n  )[0];\n  assert(\n    filePath,\n    `Project file \"${name}\" does not exist in android project for root \"${projectRoot}\"`\n  );\n\n  return filePath;\n}\n\nfunction getLanguage(filePath: string): 'java' | 'groovy' | 'kt' {\n  const extension = path.extname(filePath);\n  switch (extension) {\n    case '.java':\n      return 'java';\n    case '.kts':\n    case '.kt':\n      return 'kt';\n    case '.groovy':\n    case '.gradle':\n      return 'groovy';\n    default:\n      throw new UnexpectedError(`Unexpected Android file extension: ${extension}`);\n  }\n}\n\nexport function getFileInfo(filePath: string) {\n  return {\n    path: path.normalize(filePath),\n    contents: fs.readFileSync(filePath, 'utf8'),\n    language: getLanguage(filePath) as any,\n  };\n}\n\nexport async function getMainApplicationAsync(\n  projectRoot: string\n): Promise<ApplicationProjectFile> {\n  const filePath = getProjectFilePath(projectRoot, 'MainApplication');\n  return getFileInfo(filePath);\n}\n\nexport async function getMainActivityAsync(projectRoot: string): Promise<ApplicationProjectFile> {\n  const filePath = getProjectFilePath(projectRoot, 'MainActivity');\n  return getFileInfo(filePath);\n}\n\nexport function getGradleFilePath(projectRoot: string, gradleName: string): string {\n  const groovyPath = path.resolve(projectRoot, `${gradleName}.gradle`);\n  const ktPath = path.resolve(projectRoot, `${gradleName}.gradle.kts`);\n\n  const isGroovy = fs.existsSync(groovyPath);\n  const isKotlin = !isGroovy && fs.existsSync(ktPath);\n\n  if (!isGroovy && !isKotlin) {\n    throw new Error(`Failed to find '${gradleName}.gradle' file for project: ${projectRoot}.`);\n  }\n  const filePath = isGroovy ? groovyPath : ktPath;\n  return filePath;\n}\n\nexport function getProjectBuildGradleFilePath(projectRoot: string): string {\n  return getGradleFilePath(path.join(projectRoot, 'android'), 'build');\n}\n\nexport async function getProjectBuildGradleAsync(projectRoot: string): Promise<GradleProjectFile> {\n  return getFileInfo(getProjectBuildGradleFilePath(projectRoot));\n}\n\nexport function getSettingsGradleFilePath(projectRoot: string): string {\n  return getGradleFilePath(path.join(projectRoot, 'android'), 'settings');\n}\n\nexport async function getSettingsGradleAsync(projectRoot: string): Promise<GradleProjectFile> {\n  return getFileInfo(getSettingsGradleFilePath(projectRoot));\n}\n\nexport function getAppBuildGradleFilePath(projectRoot: string): string {\n  return getGradleFilePath(path.join(projectRoot, 'android', 'app'), 'build');\n}\n\nexport async function getAppBuildGradleAsync(projectRoot: string): Promise<GradleProjectFile> {\n  return getFileInfo(getAppBuildGradleFilePath(projectRoot));\n}\n\nexport async function getProjectPathOrThrowAsync(projectRoot: string): Promise<string> {\n  const projectPath = path.join(projectRoot, 'android');\n  if (await directoryExistsAsync(projectPath)) {\n    return projectPath;\n  }\n  throw new Error(`Android project folder is missing in project: ${projectRoot}`);\n}\n\nexport async function getAndroidManifestAsync(projectRoot: string): Promise<string> {\n  const projectPath = await getProjectPathOrThrowAsync(projectRoot);\n  const filePath = path.join(projectPath, 'app/src/main/AndroidManifest.xml');\n  return filePath;\n}\n\nexport async function getResourceFolderAsync(projectRoot: string): Promise<string> {\n  const projectPath = await getProjectPathOrThrowAsync(projectRoot);\n  return path.join(projectPath, `app/src/main/res`);\n}\n\nexport async function getResourceXMLPathAsync(\n  projectRoot: string,\n  { kind = 'values', name }: { kind?: ResourceKind; name: 'colors' | 'strings' | 'styles' | string }\n): Promise<string> {\n  const resourcePath = await getResourceFolderAsync(projectRoot);\n\n  const filePath = path.join(resourcePath, `${kind}/${name}.xml`);\n  return filePath;\n}\n"],"mappings":"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"}