Compare commits

...
Author SHA1 Message Date
Wojciech Kozyra fdabf94fc6 update CHANGELOG.md 2020-06-30 14:41:45 +02:00
Wojciech Kozyra 2cf9adc6fe use @expo/config to read info about project 2020-06-30 14:39:48 +02:00
8 changed files with 47 additions and 104 deletions

No files matched your search

+1
View File
@@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added
- Added `--allow-non-https-public-url` to allow bypass of protocol validation on `--public-url`.
- Added support for dynamic configs (`app.config.ts`, `app.config.js`).
## [0.16.0] - 2020-06-25
+2 -2
View File
@@ -101,10 +101,10 @@
"tslint": "^5.10.0",
"tslint-eslint-rules": "^5.4.0",
"ttypescript": "^1.5.6",
"typescript": "^3.4.2"
"typescript": "^3.9.5"
},
"dependencies": {
"@expo/config": "^3.0.5",
"@expo/config": "^3.2.14",
"@expo/spawn-async": "^1.4.2",
"@expo/xdl": "^57.9.13",
"@google-cloud/logging-bunyan": "^2.0.3",
+1 -2
View File
@@ -17,8 +17,7 @@ jest.mock('../builders/utils/uploader.ts', () => ({
async function performSmokeTest(recording: string) {
jest.setTimeout(60 * 60 * 1000);
// @ts-ignore
const fixtureExists = await fs.exists(recording);
const fixtureExists = await fs.pathExists(recording);
if (fixtureExists) {
logger.info('Fixture exists, test will use existing one.');
+1 -1
View File
@@ -136,7 +136,7 @@ function _addEmptyMetrics(metrics: IMetric[]) {
acc.add(i.MetricName);
}
return acc;
}, new Set());
}, new Set<string>());
const nonEmptyMetrics = _.omitBy(state.registeredMetrics, ({ addEmpty }) => !addEmpty);
const toAdd = _.difference(Object.keys(nonEmptyMetrics), Array.from(seenMetrics));
+4 -4
View File
@@ -19,10 +19,10 @@ export default function calculateStatistics(metrics: IMetric[]) {
});
}
result.StatisticValues.Maximum = Math.max(result.StatisticValues.Maximum, i.Value);
result.StatisticValues.Minimum = Math.min(result.StatisticValues.Minimum, i.Value);
result.StatisticValues.SampleCount += 1;
result.StatisticValues.Sum += i.Value;
result!.StatisticValues.Maximum = Math.max(result!.StatisticValues.Maximum, i.Value);
result!.StatisticValues.Minimum = Math.min(result!.StatisticValues.Minimum, i.Value);
result!.StatisticValues.SampleCount += 1;
result!.StatisticValues.Sum += i.Value;
return result;
}, null);
return [reduced];
+12 -11
View File
@@ -1,6 +1,6 @@
import _url from 'url';
import { ConfigError, getExpoSDKVersion } from '@expo/config';
import { ConfigError, getExpoSDKVersion, ProjectConfig } from '@expo/config';
import { ExponentTools } from '@expo/xdl';
import _ from 'lodash';
import uuid from 'uuid';
@@ -74,12 +74,12 @@ export function createBuilderAction({
publicUrl: cmd.publicUrl,
};
const appJSON = await ProjectUtils.loadAppJSON(projectDirArg, cmd.config);
const sdkVersion = getExpoSDKVersionSafely(projectAbsoluteDir, appJSON);
const projectConfig = await ProjectUtils.getConfig(projectDirArg, cmd.config);
const sdkVersion = getExpoSDKVersionSafely(projectAbsoluteDir, projectConfig);
await setup(platform, sdkVersion);
const credentials = await prepareCredentials(cmd);
const rawJob = {
...await buildJobObject(platform, appJSON, args, credentials, sdkVersion),
...await buildJobObject(platform, projectConfig, args, credentials, sdkVersion),
...cmd.buildDir && { fakeUploadDir: ProjectUtils.resolveAbsoluteDir(cmd.buildDir) },
...cmd.output && { fakeUploadBuildPath: ProjectUtils.resolveAbsoluteDir(cmd.output) },
};
@@ -97,9 +97,9 @@ export function createBuilderAction({
};
}
function getExpoSDKVersionSafely(projectDir: string, appJSON?: any) {
function getExpoSDKVersionSafely(projectDir: string, projectConfig: ProjectConfig) {
try {
return getExpoSDKVersion(projectDir, appJSON && appJSON.expo);
return getExpoSDKVersion(projectDir, projectConfig.exp);
} catch (err) {
if (err instanceof ConfigError) {
throw new Error(
@@ -114,20 +114,21 @@ function getExpoSDKVersionSafely(projectDir: string, appJSON?: any) {
const buildJobObject = async (
platform: 'android' | 'ios',
appJSON: any,
projectConfig: ProjectConfig,
{ releaseChannel, buildType, buildMode, username, publicUrl, projectDir }: any,
credentials: any,
sdkVersion: string,
) => {
const experienceName = `@${_.get(appJSON, 'expo.owner', username)}/${_.get(appJSON, 'expo.slug')}`;
const owner = projectConfig.exp.owner || username;
const experienceName = `@${owner}/${projectConfig.exp.slug}`;
const job = {
config: {
..._.get(appJSON, `expo.${platform}.config`, {}),
...(projectConfig.exp?.[platform]?.config || {}),
buildType,
...(platform === 'android' ? { buildMode } : {}),
releaseChannel,
...(platform === 'ios' ? { bundleIdentifier: _.get(appJSON, 'expo.ios.bundleIdentifier') } : {}),
...(platform === 'android' ? { androidPackage: _.get(appJSON, 'expo.android.package') } : {}),
...(platform === 'ios' ? { bundleIdentifier: projectConfig.exp?.ios?.bundleIdentifier } : {}),
...(platform === 'android' ? { androidPackage: projectConfig.exp?.android?.package } : {}),
publicUrl,
},
id: uuid.v4(),
+11 -13
View File
@@ -1,20 +1,18 @@
import fs from 'fs-extra';
import path from 'path';
export async function loadAppJSON(projectDirArg: string, config: string | null) {
let appJSONPath;
import { getConfig as getProjectConfig, setCustomConfigPath } from '@expo/config';
import fs from 'fs-extra';
export async function getConfig(projectDir: string, config: string | null) {
projectDir = resolveAbsoluteDir(projectDir);
if (config) {
appJSONPath = resolveAbsoluteDir(config);
} else {
const projectDir = resolveAbsoluteDir(projectDirArg);
appJSONPath = path.join(projectDir, 'app.json');
}
const appJSONExists = await fs.pathExists(appJSONPath);
if (!appJSONExists) {
throw new Error(`Couldn't find app.json.`);
} else {
return require(appJSONPath);
const pathToConfig = path.resolve(process.cwd(), config);
if (!await fs.pathExists(pathToConfig)) {
throw new Error(`File at provided config path does not exist: ${pathToConfig}`);
}
setCustomConfigPath(projectDir, pathToConfig);
}
return await getProjectConfig(projectDir, {});
}
export const resolveAbsoluteDir = (dir: string) => {
+15 -71
View File
@@ -1782,20 +1782,6 @@
"@babel/preset-env" "^7.4.4"
"@babel/preset-typescript" "^7.3.3"
"@expo/[email protected]":
version "0.2.7"
resolved "https://registry.yarnpkg.com/@expo/babel-preset-cli/-/babel-preset-cli-0.2.7.tgz#251b60e530943d2b29a1065295001039410e9a69"
integrity sha512-NWL5S4ODDi+dRsQRSu0x8w/m4rr55ZH+5qpb2ixB8Nojlq4dEt7EV2bHB6IPxT1XbJau4/IZiG6oN6XdRDHm+w==
dependencies:
"@babel/core" "^7.4.5"
"@babel/plugin-proposal-class-properties" "^7.4.4"
"@babel/plugin-proposal-nullish-coalescing-operator" "^7.7.4"
"@babel/plugin-proposal-optional-chaining" "^7.7.5"
"@babel/plugin-transform-modules-commonjs" "^7.5.0"
"@babel/preset-env" "^7.4.4"
"@babel/preset-typescript" "^7.3.3"
typescript "3.7.3"
"@expo/babel-preset-cli@^0.1.3":
version "0.1.3"
resolved "https://registry.yarnpkg.com/@expo/babel-preset-cli/-/babel-preset-cli-0.1.3.tgz#62f23034352b5ba2ecd51f15c1e2ea9ce70ab275"
@@ -1837,22 +1823,20 @@
xcode "^2.1.0"
xml2js "^0.4.23"
"@expo/config@^3.0.5":
version "3.0.5"
resolved "https://registry.yarnpkg.com/@expo/config/-/config-3.0.5.tgz#e953c3ab20530c827064a47457cf5376b99421f0"
integrity sha512-jOugGu9Xm0wlSachSdeVLmeoS1Mj4/JoaPd5U51iTdNHj7b06vMGkAm2BB3JG1zB2K9tjoU8f68hW0M88l5x7A==
"@expo/config@^3.2.14":
version "3.2.14"
resolved "https://registry.yarnpkg.com/@expo/config/-/config-3.2.14.tgz#520c5fb4d922865dd247e07ea1125628e98f05c9"
integrity sha512-ThVtQ/aF8UAc6V7RUuvvfvox4aV/+Ddp+HvN+p3Ww0uWgMjjoRTBlJ0ELtUxUnxhPlisf2wS3s9FoPj3yH1lYg==
dependencies:
"@babel/register" "^7.8.3"
"@expo/babel-preset-cli" "0.2.7"
"@expo/json-file" "8.2.7"
"@expo/plist" "^0.0.1"
"@types/invariant" "^2.2.30"
find-yarn-workspace-root "^1.2.1"
fs-extra "^7.0.1"
"@expo/babel-preset-cli" "0.2.16"
"@expo/json-file" "8.2.21"
"@expo/plist" "0.0.8"
fs-extra "9.0.0"
glob "7.1.6"
invariant "^2.2.4"
jest-message-util "^25.1.0"
plist "^3.0.1"
resolve-from "^5.0.0"
semver "^7.1.3"
slugify "^1.3.4"
xcode "^2.1.0"
xml2js "^0.4.23"
@@ -1895,18 +1879,6 @@
lodash "^4.17.15"
write-file-atomic "^2.3.0"
"@expo/[email protected]":
version "8.2.7"
resolved "https://registry.yarnpkg.com/@expo/json-file/-/json-file-8.2.7.tgz#61611b0fd62c99cb4bf1e73052ea9da08c488e40"
integrity sha512-VhaVj6EI95uwK4SDKEFGmp4Zt70RB67s7+zgGK5t92e8twFz3WAvz7J5Qn/78vGL3xWrV7Mn6ZOILDCuMeXW/A==
dependencies:
"@babel/code-frame" "^7.0.0-beta.44"
fs-extra "^8.0.1"
json5 "^1.0.1"
lodash "^4.17.15"
util.promisify "^1.0.0"
write-file-atomic "^2.3.0"
"@expo/[email protected]":
version "0.1.10"
resolved "https://registry.yarnpkg.com/@expo/metro-config/-/metro-config-0.1.10.tgz#c3bbe544ccc6260dc2b152d1aa842d025702a6ca"
@@ -2031,15 +2003,6 @@
xmlbuilder "^14.0.0"
xmldom "~0.1.31"
"@expo/plist@^0.0.1":
version "0.0.1"
resolved "https://registry.yarnpkg.com/@expo/plist/-/plist-0.0.1.tgz#a2b12e7c51a82dae9a006677213a1afc0e29145f"
integrity sha512-AZxWMRYM5GcjUiZvVfFUMSLmMICMs2p9FeMxoohKwMUBKxn6iw4VrqAbSdkG0hm6GX6S0oQjbNNx+lEb/ZV57Q==
dependencies:
base64-js "^1.2.3"
xmlbuilder "^14.0.0"
xmldom "~0.1.31"
"@expo/[email protected]":
version "1.3.19"
resolved "https://registry.yarnpkg.com/@expo/schemer/-/schemer-1.3.19.tgz#bb9362e011b510d4de7e575bb07fa629fd5f72ad"
@@ -3205,11 +3168,6 @@
dependencies:
"@types/node" "*"
"@types/invariant@^2.2.30":
version "2.2.30"
resolved "https://registry.yarnpkg.com/@types/invariant/-/invariant-2.2.30.tgz#20efa342807606ada5483731a8137cb1561e5fe9"
integrity sha512-98fB+yo7imSD2F7PF7GIpELNgtLNgo5wjivu0W5V4jx+KVVJxo6p/qN4zdzSTBWy4/sN3pPyXwnhRSD28QX+ag==
"@types/ioredis@^4.16.6":
version "4.16.6"
resolved "https://registry.yarnpkg.com/@types/ioredis/-/ioredis-4.16.6.tgz#50af0c2cd717ee5a448e7a4c2988b920b251b804"
@@ -7660,7 +7618,7 @@ fs-extra@^6.0.0:
jsonfile "^4.0.0"
universalify "^0.1.0"
fs-extra@^7.0.0, fs-extra@^7.0.1:
fs-extra@^7.0.0:
version "7.0.1"
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9"
integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==
@@ -7669,15 +7627,6 @@ fs-extra@^7.0.0, fs-extra@^7.0.1:
jsonfile "^4.0.0"
universalify "^0.1.0"
fs-extra@^8.0.1:
version "8.0.1"
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.0.1.tgz#90294081f978b1f182f347a440a209154344285b"
integrity sha512-W+XLrggcDzlle47X/XnS7FXrXu9sDo+Ze9zpndeBxdgv88FHLm1HtmkhEwavruS6koanBjp098rUpHs65EmG7A==
dependencies:
graceful-fs "^4.1.2"
jsonfile "^4.0.0"
universalify "^0.1.0"
fs-minipass@^1.2.5:
version "1.2.5"
resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d"
@@ -15519,15 +15468,10 @@ typedarray@^0.0.6:
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
typescript@3.7.3:
version "3.7.3"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.7.3.tgz#b36840668a16458a7025b9eabfad11b66ab85c69"
integrity sha512-Mcr/Qk7hXqFBXMN7p7Lusj1ktCBydylfQM/FZCk5glCNQJrCUKPkMHdo9R0MTFWsC/4kPFvDS0fDPvukfCkFsw==
typescript@^3.4.2:
version "3.4.2"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.4.2.tgz#9ed4e6475d906f589200193be056f5913caed481"
integrity sha512-Og2Vn6Mk7JAuWA1hQdDQN/Ekm/SchX80VzLhjKN9ETYrIepBFAd8PkOdOTK2nKt0FCkmMZKBJvQ1dV1gIxPu/A==
typescript@^3.9.5:
version "3.9.5"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.5.tgz#586f0dba300cde8be52dd1ac4f7e1009c1b13f36"
integrity sha512-hSAifV3k+i6lEoCJ2k6R2Z/rp/H3+8sdmcn5NrS3/3kE7+RyZXm9aqvxWqjEXHAd8b0pShatpcdMTvEdvAJltQ==
[email protected]:
version "3.4.9"