eas-cli
Version:
EAS command line tool
51 lines (50 loc) • 2.6 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.getCustomBuildConfigPathForJob = exports.getCustomBuildConfigPath = exports.validateCustomBuildConfigAsync = void 0;
const tslib_1 = require("tslib");
const steps_1 = require("@expo/steps");
const chalk_1 = tslib_1.__importDefault(require("chalk"));
const fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
const path_1 = tslib_1.__importDefault(require("path"));
async function validateCustomBuildConfigAsync({ profile, projectDir, vcsClient, }) {
if (!profile.config) {
return undefined;
}
const relativeConfigPath = getCustomBuildConfigPath(profile.config);
const configPath = path_1.default.join(projectDir, relativeConfigPath);
if (!(await fs_extra_1.default.pathExists(configPath))) {
throw new Error(`Custom build configuration file ${chalk_1.default.bold(relativeConfigPath)} does not exist.`);
}
const rootDir = path_1.default.normalize(await vcsClient.getRootPathAsync());
if (await vcsClient.isFileIgnoredAsync(path_1.default.relative(rootDir, configPath))) {
throw new Error(`Custom build configuration file ${chalk_1.default.bold(relativeConfigPath)} is ignored by your version control system. Remove it from the ignore list to successfully create custom build.`);
}
try {
const config = await (0, steps_1.readAndValidateBuildConfigFromPathAsync)(configPath, {
skipNamespacedFunctionsOrFunctionGroupsCheck: true,
});
return {
workflowName: config.build.name,
};
}
catch (err) {
if (err instanceof steps_1.errors.BuildConfigYAMLError) {
throw new Error(`Custom build configuration file ${chalk_1.default.bold(relativeConfigPath)} contains invalid YAML.\n\n${err.message}`);
}
else if (err instanceof steps_1.errors.BuildConfigError) {
throw new Error(`Custom build configuration file ${chalk_1.default.bold(relativeConfigPath)} contains invalid configuration. Please check the docs!\n${err.message}`);
}
else {
throw err;
}
}
}
exports.validateCustomBuildConfigAsync = validateCustomBuildConfigAsync;
function getCustomBuildConfigPath(configFilename) {
return path_1.default.join('.eas/build', configFilename);
}
exports.getCustomBuildConfigPath = getCustomBuildConfigPath;
function getCustomBuildConfigPathForJob(configFilename) {
return path_1.default.posix.join('.eas/build', configFilename);
}
exports.getCustomBuildConfigPathForJob = getCustomBuildConfigPathForJob;
;