You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
352 lines
9.3 KiB
352 lines
9.3 KiB
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.findSchemeNames = findSchemeNames;
|
|
exports.findSchemePaths = findSchemePaths;
|
|
exports.getAllEntitlementsPaths = getAllEntitlementsPaths;
|
|
exports.getAllInfoPlistPaths = getAllInfoPlistPaths;
|
|
exports.getAllPBXProjectPaths = getAllPBXProjectPaths;
|
|
exports.getAllXcodeProjectPaths = getAllXcodeProjectPaths;
|
|
exports.getAppDelegate = getAppDelegate;
|
|
exports.getAppDelegateFilePath = getAppDelegateFilePath;
|
|
exports.getAppDelegateHeaderFilePath = getAppDelegateHeaderFilePath;
|
|
exports.getAppDelegateObjcHeaderFilePath = getAppDelegateObjcHeaderFilePath;
|
|
exports.getEntitlementsPath = getEntitlementsPath;
|
|
exports.getExpoPlistPath = getExpoPlistPath;
|
|
exports.getFileInfo = getFileInfo;
|
|
exports.getInfoPlistPath = getInfoPlistPath;
|
|
exports.getPBXProjectPath = getPBXProjectPath;
|
|
exports.getSourceRoot = getSourceRoot;
|
|
exports.getSupportingPath = getSupportingPath;
|
|
exports.getXcodeProjectPath = getXcodeProjectPath;
|
|
|
|
function _fs() {
|
|
const data = require("fs");
|
|
|
|
_fs = function () {
|
|
return data;
|
|
};
|
|
|
|
return data;
|
|
}
|
|
|
|
function _glob() {
|
|
const data = require("glob");
|
|
|
|
_glob = function () {
|
|
return data;
|
|
};
|
|
|
|
return data;
|
|
}
|
|
|
|
function path() {
|
|
const data = _interopRequireWildcard(require("path"));
|
|
|
|
path = function () {
|
|
return data;
|
|
};
|
|
|
|
return data;
|
|
}
|
|
|
|
function _errors() {
|
|
const data = require("../utils/errors");
|
|
|
|
_errors = function () {
|
|
return data;
|
|
};
|
|
|
|
return data;
|
|
}
|
|
|
|
function _warnings() {
|
|
const data = require("../utils/warnings");
|
|
|
|
_warnings = function () {
|
|
return data;
|
|
};
|
|
|
|
return data;
|
|
}
|
|
|
|
function Entitlements() {
|
|
const data = _interopRequireWildcard(require("./Entitlements"));
|
|
|
|
Entitlements = function () {
|
|
return data;
|
|
};
|
|
|
|
return data;
|
|
}
|
|
|
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
|
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
|
|
const ignoredPaths = ['**/@(Carthage|Pods|vendor|node_modules)/**'];
|
|
|
|
function getAppDelegateHeaderFilePath(projectRoot) {
|
|
const [using, ...extra] = (0, _glob().sync)('ios/*/AppDelegate.h', {
|
|
absolute: true,
|
|
cwd: projectRoot,
|
|
ignore: ignoredPaths
|
|
});
|
|
|
|
if (!using) {
|
|
throw new (_errors().UnexpectedError)(`Could not locate a valid AppDelegate header at root: "${projectRoot}"`);
|
|
}
|
|
|
|
if (extra.length) {
|
|
warnMultipleFiles({
|
|
tag: 'app-delegate-header',
|
|
fileName: 'AppDelegate',
|
|
projectRoot,
|
|
using,
|
|
extra
|
|
});
|
|
}
|
|
|
|
return using;
|
|
}
|
|
|
|
function getAppDelegateFilePath(projectRoot) {
|
|
const [using, ...extra] = (0, _glob().sync)('ios/*/AppDelegate.@(m|mm|swift)', {
|
|
absolute: true,
|
|
cwd: projectRoot,
|
|
ignore: ignoredPaths
|
|
});
|
|
|
|
if (!using) {
|
|
throw new (_errors().UnexpectedError)(`Could not locate a valid AppDelegate at root: "${projectRoot}"`);
|
|
}
|
|
|
|
if (extra.length) {
|
|
warnMultipleFiles({
|
|
tag: 'app-delegate',
|
|
fileName: 'AppDelegate',
|
|
projectRoot,
|
|
using,
|
|
extra
|
|
});
|
|
}
|
|
|
|
return using;
|
|
}
|
|
|
|
function getAppDelegateObjcHeaderFilePath(projectRoot) {
|
|
const [using, ...extra] = (0, _glob().sync)('ios/*/AppDelegate.h', {
|
|
absolute: true,
|
|
cwd: projectRoot,
|
|
ignore: ignoredPaths
|
|
});
|
|
|
|
if (!using) {
|
|
throw new (_errors().UnexpectedError)(`Could not locate a valid AppDelegate.h at root: "${projectRoot}"`);
|
|
}
|
|
|
|
if (extra.length) {
|
|
warnMultipleFiles({
|
|
tag: 'app-delegate-objc-header',
|
|
fileName: 'AppDelegate.h',
|
|
projectRoot,
|
|
using,
|
|
extra
|
|
});
|
|
}
|
|
|
|
return using;
|
|
}
|
|
|
|
function getLanguage(filePath) {
|
|
const extension = path().extname(filePath);
|
|
|
|
switch (extension) {
|
|
case '.mm':
|
|
return 'objcpp';
|
|
|
|
case '.m':
|
|
case '.h':
|
|
return 'objc';
|
|
|
|
case '.swift':
|
|
return 'swift';
|
|
|
|
default:
|
|
throw new (_errors().UnexpectedError)(`Unexpected iOS file extension: ${extension}`);
|
|
}
|
|
}
|
|
|
|
function getFileInfo(filePath) {
|
|
return {
|
|
path: path().normalize(filePath),
|
|
contents: (0, _fs().readFileSync)(filePath, 'utf8'),
|
|
language: getLanguage(filePath)
|
|
};
|
|
}
|
|
|
|
function getAppDelegate(projectRoot) {
|
|
const filePath = getAppDelegateFilePath(projectRoot);
|
|
return getFileInfo(filePath);
|
|
}
|
|
|
|
function getSourceRoot(projectRoot) {
|
|
const appDelegate = getAppDelegate(projectRoot);
|
|
return path().dirname(appDelegate.path);
|
|
}
|
|
|
|
function findSchemePaths(projectRoot) {
|
|
return (0, _glob().sync)('ios/*.xcodeproj/xcshareddata/xcschemes/*.xcscheme', {
|
|
absolute: true,
|
|
cwd: projectRoot,
|
|
ignore: ignoredPaths
|
|
});
|
|
}
|
|
|
|
function findSchemeNames(projectRoot) {
|
|
const schemePaths = findSchemePaths(projectRoot);
|
|
return schemePaths.map(schemePath => path().parse(schemePath).name);
|
|
}
|
|
|
|
function getAllXcodeProjectPaths(projectRoot) {
|
|
const iosFolder = 'ios';
|
|
const pbxprojPaths = (0, _glob().sync)('ios/**/*.xcodeproj', {
|
|
cwd: projectRoot,
|
|
ignore: ignoredPaths
|
|
}).filter(project => !/test|example|sample/i.test(project) || path().dirname(project) === iosFolder) // sort alphabetically to ensure this works the same across different devices (Fail in CI (linux) without this)
|
|
.sort().sort((a, b) => {
|
|
const isAInIos = path().dirname(a) === iosFolder;
|
|
const isBInIos = path().dirname(b) === iosFolder; // preserve previous sort order
|
|
|
|
if (isAInIos && isBInIos || !isAInIos && !isBInIos) {
|
|
return 0;
|
|
}
|
|
|
|
return isAInIos ? -1 : 1;
|
|
});
|
|
|
|
if (!pbxprojPaths.length) {
|
|
throw new (_errors().UnexpectedError)(`Failed to locate the ios/*.xcodeproj files relative to path "${projectRoot}".`);
|
|
}
|
|
|
|
return pbxprojPaths.map(value => path().join(projectRoot, value));
|
|
}
|
|
/**
|
|
* Get the pbxproj for the given path
|
|
*/
|
|
|
|
|
|
function getXcodeProjectPath(projectRoot) {
|
|
const [using, ...extra] = getAllXcodeProjectPaths(projectRoot);
|
|
|
|
if (extra.length) {
|
|
warnMultipleFiles({
|
|
tag: 'xcodeproj',
|
|
fileName: '*.xcodeproj',
|
|
projectRoot,
|
|
using,
|
|
extra
|
|
});
|
|
}
|
|
|
|
return using;
|
|
}
|
|
|
|
function getAllPBXProjectPaths(projectRoot) {
|
|
const projectPaths = getAllXcodeProjectPaths(projectRoot);
|
|
const paths = projectPaths.map(value => path().join(value, 'project.pbxproj')).filter(value => (0, _fs().existsSync)(value));
|
|
|
|
if (!paths.length) {
|
|
throw new (_errors().UnexpectedError)(`Failed to locate the ios/*.xcodeproj/project.pbxproj files relative to path "${projectRoot}".`);
|
|
}
|
|
|
|
return paths;
|
|
}
|
|
|
|
function getPBXProjectPath(projectRoot) {
|
|
const [using, ...extra] = getAllPBXProjectPaths(projectRoot);
|
|
|
|
if (extra.length) {
|
|
warnMultipleFiles({
|
|
tag: 'project-pbxproj',
|
|
fileName: 'project.pbxproj',
|
|
projectRoot,
|
|
using,
|
|
extra
|
|
});
|
|
}
|
|
|
|
return using;
|
|
}
|
|
|
|
function getAllInfoPlistPaths(projectRoot) {
|
|
const paths = (0, _glob().sync)('ios/*/Info.plist', {
|
|
absolute: true,
|
|
cwd: projectRoot,
|
|
ignore: ignoredPaths
|
|
}).sort( // longer name means more suffixes, we want the shortest possible one to be first.
|
|
(a, b) => a.length - b.length);
|
|
|
|
if (!paths.length) {
|
|
throw new (_errors().UnexpectedError)(`Failed to locate Info.plist files relative to path "${projectRoot}".`);
|
|
}
|
|
|
|
return paths;
|
|
}
|
|
|
|
function getInfoPlistPath(projectRoot) {
|
|
const [using, ...extra] = getAllInfoPlistPaths(projectRoot);
|
|
|
|
if (extra.length) {
|
|
warnMultipleFiles({
|
|
tag: 'info-plist',
|
|
fileName: 'Info.plist',
|
|
projectRoot,
|
|
using,
|
|
extra
|
|
});
|
|
}
|
|
|
|
return using;
|
|
}
|
|
|
|
function getAllEntitlementsPaths(projectRoot) {
|
|
const paths = (0, _glob().sync)('ios/*/*.entitlements', {
|
|
absolute: true,
|
|
cwd: projectRoot,
|
|
ignore: ignoredPaths
|
|
});
|
|
return paths;
|
|
}
|
|
/**
|
|
* @deprecated: use Entitlements.getEntitlementsPath instead
|
|
*/
|
|
|
|
|
|
function getEntitlementsPath(projectRoot) {
|
|
return Entitlements().getEntitlementsPath(projectRoot);
|
|
}
|
|
|
|
function getSupportingPath(projectRoot) {
|
|
return path().resolve(projectRoot, 'ios', path().basename(getSourceRoot(projectRoot)), 'Supporting');
|
|
}
|
|
|
|
function getExpoPlistPath(projectRoot) {
|
|
const supportingPath = getSupportingPath(projectRoot);
|
|
return path().join(supportingPath, 'Expo.plist');
|
|
}
|
|
|
|
function warnMultipleFiles({
|
|
tag,
|
|
fileName,
|
|
projectRoot,
|
|
using,
|
|
extra
|
|
}) {
|
|
const usingPath = projectRoot ? path().relative(projectRoot, using) : using;
|
|
const extraPaths = projectRoot ? extra.map(v => path().relative(projectRoot, v)) : extra;
|
|
(0, _warnings().addWarningIOS)(`paths-${tag}`, `Found multiple ${fileName} file paths, using "${usingPath}". Ignored paths: ${JSON.stringify(extraPaths)}`);
|
|
}
|
|
//# sourceMappingURL=Paths.js.map
|