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":";;;;;;;;;;;;;;;;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAAwD;AAAA;AAAA;AAYjD,SAASA,kBAAkB,CAACC,WAAmB,EAAEC,IAAY,EAAU;EAC5E,MAAMC,QAAQ,GAAG,IAAAC,YAAQ,EACvBC,IAAI,GAACC,IAAI,CAACL,WAAW,EAAG,gCAA+BC,IAAK,aAAY,CAAC,CAC1E,CAAC,CAAC,CAAC;EACJ,IAAAK,iBAAM,EACJJ,QAAQ,EACP,iBAAgBD,IAAK,iDAAgDD,WAAY,GAAE,CACrF;EAED,OAAOE,QAAQ;AACjB;AAEA,SAASK,WAAW,CAACL,QAAgB,EAA4B;EAC/D,MAAMM,SAAS,GAAGJ,IAAI,GAACK,OAAO,CAACP,QAAQ,CAAC;EACxC,QAAQM,SAAS;IACf,KAAK,OAAO;MACV,OAAO,MAAM;IACf,KAAK,MAAM;IACX,KAAK,KAAK;MACR,OAAO,IAAI;IACb,KAAK,SAAS;IACd,KAAK,SAAS;MACZ,OAAO,QAAQ;IACjB;MACE,MAAM,KAAIE,yBAAe,EAAE,sCAAqCF,SAAU,EAAC,CAAC;EAAC;AAEnF;AAEO,SAASG,WAAW,CAACT,QAAgB,EAAE;EAC5C,OAAO;IACLE,IAAI,EAAEA,IAAI,GAACQ,SAAS,CAACV,QAAQ,CAAC;IAC9BW,QAAQ,EAAEC,aAAE,CAACC,YAAY,CAACb,QAAQ,EAAE,MAAM,CAAC;IAC3Cc,QAAQ,EAAET,WAAW,CAACL,QAAQ;EAChC,CAAC;AACH;AAEO,eAAee,uBAAuB,CAC3CjB,WAAmB,EACc;EACjC,MAAME,QAAQ,GAAGH,kBAAkB,CAACC,WAAW,EAAE,iBAAiB,CAAC;EACnE,OAAOW,WAAW,CAACT,QAAQ,CAAC;AAC9B;AAEO,eAAegB,oBAAoB,CAAClB,WAAmB,EAAmC;EAC/F,MAAME,QAAQ,GAAGH,kBAAkB,CAACC,WAAW,EAAE,cAAc,CAAC;EAChE,OAAOW,WAAW,CAACT,QAAQ,CAAC;AAC9B;AAEO,SAASiB,iBAAiB,CAACnB,WAAmB,EAAEoB,UAAkB,EAAU;EACjF,MAAMC,UAAU,GAAGjB,IAAI,GAACkB,OAAO,CAACtB,WAAW,EAAG,GAAEoB,UAAW,SAAQ,CAAC;EACpE,MAAMG,MAAM,GAAGnB,IAAI,GAACkB,OAAO,CAACtB,WAAW,EAAG,GAAEoB,UAAW,aAAY,CAAC;EAEpE,MAAMI,QAAQ,GAAGV,aAAE,CAACW,UAAU,CAACJ,UAAU,CAAC;EAC1C,MAAMK,QAAQ,GAAG,CAACF,QAAQ,IAAIV,aAAE,CAACW,UAAU,CAACF,MAAM,CAAC;EAEnD,IAAI,CAACC,QAAQ,IAAI,CAACE,QAAQ,EAAE;IAC1B,MAAM,IAAIC,KAAK,CAAE,mBAAkBP,UAAW,8BAA6BpB,WAAY,GAAE,CAAC;EAC5F;EACA,MAAME,QAAQ,GAAGsB,QAAQ,GAAGH,UAAU,GAAGE,MAAM;EAC/C,OAAOrB,QAAQ;AACjB;AAEO,SAAS0B,6BAA6B,CAAC5B,WAAmB,EAAU;EACzE,OAAOmB,iBAAiB,CAACf,IAAI,GAACC,IAAI,CAACL,WAAW,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC;AACtE;AAEO,eAAe6B,0BAA0B,CAAC7B,WAAmB,EAA8B;EAChG,OAAOW,WAAW,CAACiB,6BAA6B,CAAC5B,WAAW,CAAC,CAAC;AAChE;AAEO,SAAS8B,yBAAyB,CAAC9B,WAAmB,EAAU;EACrE,OAAOmB,iBAAiB,CAACf,IAAI,GAACC,IAAI,CAACL,WAAW,EAAE,SAAS,CAAC,EAAE,UAAU,CAAC;AACzE;AAEO,eAAe+B,sBAAsB,CAAC/B,WAAmB,EAA8B;EAC5F,OAAOW,WAAW,CAACmB,yBAAyB,CAAC9B,WAAW,CAAC,CAAC;AAC5D;AAEO,SAASgC,yBAAyB,CAAChC,WAAmB,EAAU;EACrE,OAAOmB,iBAAiB,CAACf,IAAI,GAACC,IAAI,CAACL,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC;AAC7E;AAEO,eAAeiC,sBAAsB,CAACjC,WAAmB,EAA8B;EAC5F,OAAOW,WAAW,CAACqB,yBAAyB,CAAChC,WAAW,CAAC,CAAC;AAC5D;AAEO,eAAekC,0BAA0B,CAAClC,WAAmB,EAAmB;EACrF,MAAMmC,WAAW,GAAG/B,IAAI,GAACC,IAAI,CAACL,WAAW,EAAE,SAAS,CAAC;EACrD,IAAI,MAAM,IAAAoC,+BAAoB,EAACD,WAAW,CAAC,EAAE;IAC3C,OAAOA,WAAW;EACpB;EACA,MAAM,IAAIR,KAAK,CAAE,iDAAgD3B,WAAY,EAAC,CAAC;AACjF;AAEO,eAAeqC,uBAAuB,CAACrC,WAAmB,EAAmB;EAClF,MAAMmC,WAAW,GAAG,MAAMD,0BAA0B,CAAClC,WAAW,CAAC;EACjE,MAAME,QAAQ,GAAGE,IAAI,GAACC,IAAI,CAAC8B,WAAW,EAAE,kCAAkC,CAAC;EAC3E,OAAOjC,QAAQ;AACjB;AAEO,eAAeoC,sBAAsB,CAACtC,WAAmB,EAAmB;EACjF,MAAMmC,WAAW,GAAG,MAAMD,0BAA0B,CAAClC,WAAW,CAAC;EACjE,OAAOI,IAAI,GAACC,IAAI,CAAC8B,WAAW,EAAG,kBAAiB,CAAC;AACnD;AAEO,eAAeI,uBAAuB,CAC3CvC,WAAmB,EACnB;EAAEwC,IAAI,GAAG,QAAQ;EAAEvC;AAA8E,CAAC,EACjF;EACjB,MAAMwC,YAAY,GAAG,MAAMH,sBAAsB,CAACtC,WAAW,CAAC;EAE9D,MAAME,QAAQ,GAAGE,IAAI,GAACC,IAAI,CAACoC,YAAY,EAAG,GAAED,IAAK,IAAGvC,IAAK,MAAK,CAAC;EAC/D,OAAOC,QAAQ;AACjB"}