This repository has been archived on 2022-03-12. You can view files and clone it, but cannot push or open issues or pull requests.
2021-04-02 02:24:13 +03:00

99 lines
4.7 KiB
JavaScript

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const fs_extra_1 = __importDefault(require("fs-extra"));
const glob_1 = require("glob");
const path = __importStar(require("path"));
const errors_1 = require("../utils/errors");
const modules_1 = require("../utils/modules");
async function getProjectFileAsync(projectRoot, name) {
const mainActivityJavaPath = glob_1.sync(path.join(projectRoot, `android/app/src/main/java/**/${name}.@(java|kt)`))[0];
errors_1.assert(mainActivityJavaPath, `Project file "${name}" does not exist in android project for root "${projectRoot}"`);
const mainActivityPathJava = path.resolve(mainActivityJavaPath, `../${name}.java`);
const mainActivityPathKotlin = path.resolve(mainActivityJavaPath, `../${name}.kt`);
const isJava = await fs_extra_1.default.pathExists(mainActivityPathJava);
const isKotlin = !isJava && (await fs_extra_1.default.pathExists(mainActivityPathKotlin));
if (!isJava && !isKotlin) {
throw new Error(`Failed to find '${name}' file for project: ${projectRoot}.`);
}
const filePath = isJava ? mainActivityPathJava : mainActivityPathKotlin;
return {
path: path.normalize(filePath),
contents: fs_extra_1.default.readFileSync(filePath, 'utf8'),
language: isJava ? 'java' : 'kt',
};
}
async function getMainApplicationAsync(projectRoot) {
return getProjectFileAsync(projectRoot, 'MainApplication');
}
exports.getMainApplicationAsync = getMainApplicationAsync;
async function getMainActivityAsync(projectRoot) {
return getProjectFileAsync(projectRoot, 'MainActivity');
}
exports.getMainActivityAsync = getMainActivityAsync;
async function getGradleFileAsync(projectRoot, gradleName) {
const groovyPath = path.resolve(projectRoot, `${gradleName}.gradle`);
const ktPath = path.resolve(projectRoot, `${gradleName}.gradle.kts`);
const isGroovy = await fs_extra_1.default.pathExists(groovyPath);
const isKotlin = !isGroovy && (await fs_extra_1.default.pathExists(ktPath));
if (!isGroovy && !isKotlin) {
throw new Error(`Failed to find '${gradleName}.gradle' file for project: ${projectRoot}.`);
}
const filePath = isGroovy ? groovyPath : ktPath;
return {
path: path.normalize(filePath),
contents: fs_extra_1.default.readFileSync(filePath, 'utf8'),
language: isGroovy ? 'groovy' : 'kt',
};
}
async function getProjectBuildGradleAsync(projectRoot) {
return getGradleFileAsync(path.join(projectRoot, 'android'), 'build');
}
exports.getProjectBuildGradleAsync = getProjectBuildGradleAsync;
async function getSettingsGradleAsync(projectRoot) {
return getGradleFileAsync(path.join(projectRoot, 'android'), 'settings');
}
exports.getSettingsGradleAsync = getSettingsGradleAsync;
async function getAppBuildGradleAsync(projectRoot) {
return getGradleFileAsync(path.join(projectRoot, 'android', 'app'), 'build');
}
exports.getAppBuildGradleAsync = getAppBuildGradleAsync;
function getAppBuildGradle(projectRoot) {
return path.join(projectRoot, 'android', 'app', 'build.gradle');
}
exports.getAppBuildGradle = getAppBuildGradle;
async function getProjectPathOrThrowAsync(projectRoot) {
const projectPath = path.join(projectRoot, 'android');
if (await modules_1.directoryExistsAsync(projectPath)) {
return projectPath;
}
throw new Error(`Android project folder is missing in project: ${projectRoot}`);
}
exports.getProjectPathOrThrowAsync = getProjectPathOrThrowAsync;
async function getAndroidManifestAsync(projectRoot) {
const projectPath = await getProjectPathOrThrowAsync(projectRoot);
const filePath = path.join(projectPath, 'app/src/main/AndroidManifest.xml');
return filePath;
}
exports.getAndroidManifestAsync = getAndroidManifestAsync;
async function getResourceFolderAsync(projectRoot) {
const projectPath = await getProjectPathOrThrowAsync(projectRoot);
return path.join(projectPath, `app/src/main/res`);
}
exports.getResourceFolderAsync = getResourceFolderAsync;
async function getResourceXMLPathAsync(projectRoot, { kind = 'values', name }) {
const resourcePath = await getResourceFolderAsync(projectRoot);
const filePath = path.join(resourcePath, `${kind}/${name}.xml`);
return filePath;
}
exports.getResourceXMLPathAsync = getResourceXMLPathAsync;
//# sourceMappingURL=Paths.js.map