Compare commits

..
11 Commits
Author SHA1 Message Date
Dominik Sokal eb0505f8f8 v0.4.3 2021-02-23 11:12:02 +01:00
Dominik Sokal c8f7800ab5 update CHANGELOG.md 2021-02-23 11:10:15 +01:00
Wojciech Kozyra bc4e7becdd [eas-cli] use fixed version of @expo/eas-json (#243) 2021-02-22 15:03:06 +01:00
jkh 71ece19c40 [eas-cli] rename updateGroup, updateMessage, branchName, channelName (#242) 2021-02-19 12:07:39 -08:00
Dominik Sokal e9053c0d15 add support for ios simulator builds (#240)
* add support for ios simulator builds

* update CHANGELOG.md

* bump @expo/eas-build-job to 0.2.12

* fix lint errors
2021-02-19 13:35:06 +01:00
Dominik Sokal cf76296142 update CHANGELOG.md 2021-02-18 11:43:33 +01:00
Dominik Sokal 5e5d3626f4 v0.4.2 2021-02-18 11:36:14 +01:00
Dominik Sokal 5808c5b412 add CHANGELOG.md (#239) 2021-02-18 11:30:13 +01:00
Dominik Sokal cd64392d44 [eas-cli] bump @expo/config-plugins to 1.0.19-alpha.0 (#238) 2021-02-18 11:20:39 +01:00
Wojciech Kozyra 79f889e16c v0.4.1 2021-02-16 19:17:33 +01:00
Wojciech Kozyra 595bfecf1c [eas-cli] fix "buildType" is not allowed error 2021-02-16 19:15:10 +01:00
28 changed files with 682 additions and 311 deletions

No files matched your search

+41
View File
@@ -0,0 +1,41 @@
# Changelog
This is the log of notable changes to EAS CLI and related packages.
## main
### 🛠 Breaking changes
### 🎉 New features
- Add support for iOS simulator builds. ([#240](https://github.com/expo/eas-cli/pull/240) by [@dsokal](https://github.com/dsokal))
### 🐛 Bug fixes
- Use fixed version of `@expo/eas-json`. ([#243](https://github.com/expo/eas-cli/pull/243) by [@wkozyra95](https://github.com/wkozyra95))
## [0.4.2](https://github.com/expo/eas-cli/releases/tag/v0.4.1) - 2021-02-18
### 🐛 Bug fixes
- Fix detecting application target (iOS builds). ([#238](https://github.com/expo/eas-cli/pull/238) by [@dsokal](https://github.com/dsokal))
## [0.4.1](https://github.com/expo/eas-cli/releases/tag/v0.4.1) - 2021-02-16
### 🐛 Bug fixes
- Fix `"buildType" is not allowed` error. ([#595bf](https://github.com/expo/eas-cli/commit/595bfecf1cbff0f76e7fd2049fe16f6f38bbe150) by [@wkozyra95](https://github.com/wkozyra95))
## [0.4.0](https://github.com/expo/eas-cli/releases/tag/v0.4.0) - 2021-02-16
### 🎉 New features
- Add build:cancel command. ([#219](https://github.com/expo/eas-cli/pull/219) by [@wkozyra95](https://github.com/wkozyra95))
- Implement version auto increment for iOS builds. ([#231](https://github.com/expo/eas-cli/pull/231) by [@dsokal](https://github.com/dsokal))
- Add support for builder environment customizations. ([#230](https://github.com/expo/eas-cli/pull/230) by [@wkozyra95](https://github.com/wkozyra95))
- Add `schemeBuildConfiguration` option for generic iOS builds. ([#234](https://github.com/expo/eas-cli/pull/234) by [@dsokal](https://github.com/dsokal))
### 🐛 Bug fixes
- Fix `--no-wait` flag for `eas build`. ([#226](https://github.com/expo/eas-cli/pull/226) by [@paul-ridgway](https://github.com/paul-ridgway))
- Fix running builds from project subdirectories. ([#229](https://github.com/expo/eas-cli/pull/229) by [@wkozyra95](https://github.com/wkozyra95))
+1 -1
View File
@@ -1,5 +1,5 @@
{
"npmClient": "yarn",
"useWorkspaces": true,
"version": "0.4.0"
"version": "0.4.3"
}
+12 -48
View File
@@ -21,7 +21,7 @@ $ npm install -g eas-cli
$ eas COMMAND
running command...
$ eas (-v|--version|version)
eas-cli/0.4.0 darwin-x64 node-v14.15.4
eas-cli/0.4.3 darwin-x64 node-v14.15.4
$ eas --help [COMMAND]
USAGE
$ eas COMMAND
@@ -35,9 +35,7 @@ USAGE
* [`eas account:login`](#eas-accountlogin)
* [`eas account:logout`](#eas-accountlogout)
* [`eas account:view`](#eas-accountview)
* [`eas build`](#eas-build)
* [`eas build:cancel [BUILD_ID]`](#eas-buildcancel-build_id)
* [`eas build:configure`](#eas-buildconfigure)
* [`eas build:list`](#eas-buildlist)
* [`eas build:view [BUILD_ID]`](#eas-buildview-build_id)
* [`eas credentials`](#eas-credentials)
@@ -59,7 +57,7 @@ ALIASES
$ eas login
```
_See code: [build/commands/account/login.ts](https://github.com/expo/eas-cli/blob/v0.4.0/build/commands/account/login.ts)_
_See code: [build/commands/account/login.ts](https://github.com/expo/eas-cli/blob/v0.4.3/build/commands/account/login.ts)_
## `eas account:logout`
@@ -73,7 +71,7 @@ ALIASES
$ eas logout
```
_See code: [build/commands/account/logout.ts](https://github.com/expo/eas-cli/blob/v0.4.0/build/commands/account/logout.ts)_
_See code: [build/commands/account/logout.ts](https://github.com/expo/eas-cli/blob/v0.4.3/build/commands/account/logout.ts)_
## `eas account:view`
@@ -87,26 +85,7 @@ ALIASES
$ eas whoami
```
_See code: [build/commands/account/view.ts](https://github.com/expo/eas-cli/blob/v0.4.0/build/commands/account/view.ts)_
## `eas build`
Start a build
```
USAGE
$ eas build
OPTIONS
-p, --platform=(android|ios|all)
--non-interactive Run command in --non-interactive mode
--profile=profile [default: release] Name of the build profile from eas.json
--skip-credentials-check Skip validation of build credentials
--skip-project-configuration Skip project configuration
--[no-]wait Wait for build(s) to complete
```
_See code: [build/commands/build/index.ts](https://github.com/expo/eas-cli/blob/v0.4.0/build/commands/build/index.ts)_
_See code: [build/commands/account/view.ts](https://github.com/expo/eas-cli/blob/v0.4.3/build/commands/account/view.ts)_
## `eas build:cancel [BUILD_ID]`
@@ -117,22 +96,7 @@ USAGE
$ eas build:cancel [BUILD_ID]
```
_See code: [build/commands/build/cancel.ts](https://github.com/expo/eas-cli/blob/v0.4.0/build/commands/build/cancel.ts)_
## `eas build:configure`
Configure the project to support EAS Build.
```
USAGE
$ eas build:configure
OPTIONS
-p, --platform=(android|ios|all) Platform to configure
--allow-experimental Enable experimental configuration steps.
```
_See code: [build/commands/build/configure.ts](https://github.com/expo/eas-cli/blob/v0.4.0/build/commands/build/configure.ts)_
_See code: [build/commands/build/cancel.ts](https://github.com/expo/eas-cli/blob/v0.4.3/build/commands/build/cancel.ts)_
## `eas build:list`
@@ -148,7 +112,7 @@ OPTIONS
--status=(in-queue|in-progress|errored|finished|canceled)
```
_See code: [build/commands/build/list.ts](https://github.com/expo/eas-cli/blob/v0.4.0/build/commands/build/list.ts)_
_See code: [build/commands/build/list.ts](https://github.com/expo/eas-cli/blob/v0.4.3/build/commands/build/list.ts)_
## `eas build:view [BUILD_ID]`
@@ -159,7 +123,7 @@ USAGE
$ eas build:view [BUILD_ID]
```
_See code: [build/commands/build/view.ts](https://github.com/expo/eas-cli/blob/v0.4.0/build/commands/build/view.ts)_
_See code: [build/commands/build/view.ts](https://github.com/expo/eas-cli/blob/v0.4.3/build/commands/build/view.ts)_
## `eas credentials`
@@ -170,7 +134,7 @@ USAGE
$ eas credentials
```
_See code: [build/commands/credentials.ts](https://github.com/expo/eas-cli/blob/v0.4.0/build/commands/credentials.ts)_
_See code: [build/commands/credentials.ts](https://github.com/expo/eas-cli/blob/v0.4.3/build/commands/credentials.ts)_
## `eas device:create`
@@ -181,7 +145,7 @@ USAGE
$ eas device:create
```
_See code: [build/commands/device/create.ts](https://github.com/expo/eas-cli/blob/v0.4.0/build/commands/device/create.ts)_
_See code: [build/commands/device/create.ts](https://github.com/expo/eas-cli/blob/v0.4.3/build/commands/device/create.ts)_
## `eas device:list`
@@ -195,7 +159,7 @@ OPTIONS
--apple-team-id=apple-team-id
```
_See code: [build/commands/device/list.ts](https://github.com/expo/eas-cli/blob/v0.4.0/build/commands/device/list.ts)_
_See code: [build/commands/device/list.ts](https://github.com/expo/eas-cli/blob/v0.4.3/build/commands/device/list.ts)_
## `eas device:view [UDID]`
@@ -206,7 +170,7 @@ USAGE
$ eas device:view [UDID]
```
_See code: [build/commands/device/view.ts](https://github.com/expo/eas-cli/blob/v0.4.0/build/commands/device/view.ts)_
_See code: [build/commands/device/view.ts](https://github.com/expo/eas-cli/blob/v0.4.3/build/commands/device/view.ts)_
## `eas help [COMMAND]`
@@ -303,5 +267,5 @@ EXAMPLES
and provide its App ID
```
_See code: [build/commands/submit.ts](https://github.com/expo/eas-cli/blob/v0.4.0/build/commands/submit.ts)_
_See code: [build/commands/submit.ts](https://github.com/expo/eas-cli/blob/v0.4.3/build/commands/submit.ts)_
<!-- commandsstop -->
+392 -19
View File
@@ -1378,6 +1378,49 @@
},
"isDeprecated": false,
"deprecationReason": null
},
{
"name": "environmentSecrets",
"description": "Environment secrets for an account",
"args": [
{
"name": "filterNames",
"description": null,
"type": {
"kind": "LIST",
"name": null,
"ofType": {
"kind": "NON_NULL",
"name": null,
"ofType": {
"kind": "SCALAR",
"name": "String",
"ofType": null
}
}
},
"defaultValue": null
}
],
"type": {
"kind": "NON_NULL",
"name": null,
"ofType": {
"kind": "LIST",
"name": null,
"ofType": {
"kind": "NON_NULL",
"name": null,
"ofType": {
"kind": "OBJECT",
"name": "EnvironmentSecret",
"ofType": null
}
}
}
},
"isDeprecated": false,
"deprecationReason": null
}
],
"inputFields": null,
@@ -2682,11 +2725,11 @@
"deprecationReason": null
},
{
"name": "updateChannelByChannelName",
"description": "get an EAS channel owned by the app by channelName",
"name": "updateChannelByName",
"description": "get an EAS channel owned by the app by name",
"args": [
{
"name": "channelName",
"name": "name",
"description": null,
"type": {
"kind": "NON_NULL",
@@ -2766,11 +2809,11 @@
"deprecationReason": null
},
{
"name": "updateBranchByBranchName",
"description": "get an EAS branch owned by the app by branchName",
"name": "updateBranchByName",
"description": "get an EAS branch owned by the app by name",
"args": [
{
"name": "branchName",
"name": "name",
"description": null,
"type": {
"kind": "NON_NULL",
@@ -2844,6 +2887,49 @@
},
"isDeprecated": false,
"deprecationReason": null
},
{
"name": "environmentSecrets",
"description": "Environment secrets for an app",
"args": [
{
"name": "filterNames",
"description": null,
"type": {
"kind": "LIST",
"name": null,
"ofType": {
"kind": "NON_NULL",
"name": null,
"ofType": {
"kind": "SCALAR",
"name": "String",
"ofType": null
}
}
},
"defaultValue": null
}
],
"type": {
"kind": "NON_NULL",
"name": null,
"ofType": {
"kind": "LIST",
"name": null,
"ofType": {
"kind": "NON_NULL",
"name": null,
"ofType": {
"kind": "OBJECT",
"name": "EnvironmentSecret",
"ofType": null
}
}
}
},
"isDeprecated": false,
"deprecationReason": null
}
],
"inputFields": null,
@@ -4830,6 +4916,12 @@
"description": "",
"isDeprecated": false,
"deprecationReason": null
},
{
"name": "SIMULATOR",
"description": "",
"isDeprecated": false,
"deprecationReason": null
}
],
"possibleTypes": null
@@ -7299,7 +7391,7 @@
"deprecationReason": null
},
{
"name": "channelName",
"name": "name",
"description": "",
"args": [],
"type": {
@@ -7459,7 +7551,7 @@
"deprecationReason": null
},
{
"name": "branchName",
"name": "name",
"description": "",
"args": [],
"type": {
@@ -7679,7 +7771,7 @@
"deprecationReason": null
},
{
"name": "updateGroup",
"name": "group",
"description": "",
"args": [],
"type": {
@@ -7727,7 +7819,7 @@
"deprecationReason": null
},
{
"name": "updateMessage",
"name": "message",
"description": "",
"args": [],
"type": {
@@ -7739,15 +7831,15 @@
"deprecationReason": null
},
{
"name": "branchName",
"name": "branch",
"description": "",
"args": [],
"type": {
"kind": "NON_NULL",
"name": null,
"ofType": {
"kind": "SCALAR",
"name": "String",
"kind": "OBJECT",
"name": "UpdateBranch",
"ofType": null
}
},
@@ -7766,6 +7858,81 @@
"enumValues": null,
"possibleTypes": null
},
{
"kind": "OBJECT",
"name": "EnvironmentSecret",
"description": "",
"fields": [
{
"name": "id",
"description": "",
"args": [],
"type": {
"kind": "NON_NULL",
"name": null,
"ofType": {
"kind": "SCALAR",
"name": "ID",
"ofType": null
}
},
"isDeprecated": false,
"deprecationReason": null
},
{
"name": "name",
"description": "",
"args": [],
"type": {
"kind": "NON_NULL",
"name": null,
"ofType": {
"kind": "SCALAR",
"name": "String",
"ofType": null
}
},
"isDeprecated": false,
"deprecationReason": null
},
{
"name": "createdAt",
"description": "",
"args": [],
"type": {
"kind": "NON_NULL",
"name": null,
"ofType": {
"kind": "SCALAR",
"name": "DateTime",
"ofType": null
}
},
"isDeprecated": false,
"deprecationReason": null
},
{
"name": "updatedAt",
"description": "",
"args": [],
"type": {
"kind": "NON_NULL",
"name": null,
"ofType": {
"kind": "SCALAR",
"name": "DateTime",
"ofType": null
}
},
"isDeprecated": false,
"deprecationReason": null
}
],
"inputFields": null,
"interfaces": [],
"enumValues": null,
"possibleTypes": null
},
{
"kind": "OBJECT",
"name": "UserPermission",
@@ -10327,6 +10494,22 @@
},
"isDeprecated": false,
"deprecationReason": null
},
{
"name": "environmentSecret",
"description": "Mutations that create and delete EnvironmentSecrets",
"args": [],
"type": {
"kind": "NON_NULL",
"name": null,
"ofType": {
"kind": "OBJECT",
"name": "EnvironmentSecretMutation",
"ofType": null
}
},
"isDeprecated": false,
"deprecationReason": null
}
],
"inputFields": null,
@@ -13919,7 +14102,7 @@
"defaultValue": null
},
{
"name": "channelName",
"name": "name",
"description": null,
"type": {
"kind": "NON_NULL",
@@ -14149,7 +14332,7 @@
"defaultValue": null
},
{
"name": "branchName",
"name": "name",
"description": null,
"type": {
"kind": "NON_NULL",
@@ -14173,7 +14356,7 @@
},
{
"name": "editUpdateBranch",
"description": "Edit an EAS branch. The branch can be specified either by its ID or\nwith the combination of (appId, branchName).",
"description": "Edit an EAS branch. The branch can be specified either by its ID or\nwith the combination of (appId, name).",
"args": [
{
"name": "input",
@@ -14297,7 +14480,7 @@
"defaultValue": null
},
{
"name": "branchName",
"name": "name",
"description": "",
"type": {
"kind": "SCALAR",
@@ -14307,7 +14490,7 @@
"defaultValue": null
},
{
"name": "newBranchName",
"name": "newName",
"description": "",
"type": {
"kind": "NON_NULL",
@@ -14401,7 +14584,7 @@
"defaultValue": null
},
{
"name": "updateMessage",
"name": "message",
"description": "",
"type": {
"kind": "SCALAR",
@@ -16144,6 +16327,196 @@
"enumValues": null,
"possibleTypes": null
},
{
"kind": "OBJECT",
"name": "EnvironmentSecretMutation",
"description": "",
"fields": [
{
"name": "createEnvironmentSecretForAccount",
"description": "Create an environment secret for an Account",
"args": [
{
"name": "environmentSecretData",
"description": null,
"type": {
"kind": "INPUT_OBJECT",
"name": "CreateEnvironmentSecretInput",
"ofType": null
},
"defaultValue": null
},
{
"name": "accountId",
"description": null,
"type": {
"kind": "NON_NULL",
"name": null,
"ofType": {
"kind": "SCALAR",
"name": "String",
"ofType": null
}
},
"defaultValue": null
}
],
"type": {
"kind": "NON_NULL",
"name": null,
"ofType": {
"kind": "OBJECT",
"name": "EnvironmentSecret",
"ofType": null
}
},
"isDeprecated": false,
"deprecationReason": null
},
{
"name": "createEnvironmentSecretForApp",
"description": "Create an environment secret for an App",
"args": [
{
"name": "environmentSecretData",
"description": null,
"type": {
"kind": "INPUT_OBJECT",
"name": "CreateEnvironmentSecretInput",
"ofType": null
},
"defaultValue": null
},
{
"name": "appId",
"description": null,
"type": {
"kind": "NON_NULL",
"name": null,
"ofType": {
"kind": "SCALAR",
"name": "String",
"ofType": null
}
},
"defaultValue": null
}
],
"type": {
"kind": "NON_NULL",
"name": null,
"ofType": {
"kind": "OBJECT",
"name": "EnvironmentSecret",
"ofType": null
}
},
"isDeprecated": false,
"deprecationReason": null
},
{
"name": "deleteEnvironmentSecret",
"description": "Delete an environment secret",
"args": [
{
"name": "id",
"description": null,
"type": {
"kind": "NON_NULL",
"name": null,
"ofType": {
"kind": "SCALAR",
"name": "String",
"ofType": null
}
},
"defaultValue": null
}
],
"type": {
"kind": "NON_NULL",
"name": null,
"ofType": {
"kind": "OBJECT",
"name": "DeleteEnvironmentSecretResult",
"ofType": null
}
},
"isDeprecated": false,
"deprecationReason": null
}
],
"inputFields": null,
"interfaces": [],
"enumValues": null,
"possibleTypes": null
},
{
"kind": "INPUT_OBJECT",
"name": "CreateEnvironmentSecretInput",
"description": "",
"fields": null,
"inputFields": [
{
"name": "name",
"description": "",
"type": {
"kind": "NON_NULL",
"name": null,
"ofType": {
"kind": "SCALAR",
"name": "String",
"ofType": null
}
},
"defaultValue": null
},
{
"name": "value",
"description": "",
"type": {
"kind": "NON_NULL",
"name": null,
"ofType": {
"kind": "SCALAR",
"name": "String",
"ofType": null
}
},
"defaultValue": null
}
],
"interfaces": null,
"enumValues": null,
"possibleTypes": null
},
{
"kind": "OBJECT",
"name": "DeleteEnvironmentSecretResult",
"description": "",
"fields": [
{
"name": "id",
"description": "",
"args": [],
"type": {
"kind": "NON_NULL",
"name": null,
"ofType": {
"kind": "SCALAR",
"name": "ID",
"ofType": null
}
},
"isDeprecated": false,
"deprecationReason": null
}
],
"inputFields": null,
"interfaces": [],
"enumValues": null,
"possibleTypes": null
},
{
"kind": "OBJECT",
"name": "BaseSearchResult",
+4 -4
View File
@@ -1,7 +1,7 @@
{
"name": "eas-cli",
"description": "EAS command line tool",
"version": "0.4.0",
"version": "0.4.3",
"author": "Expo <[email protected]>",
"bin": {
"eas": "./bin/run"
@@ -10,9 +10,9 @@
"dependencies": {
"@expo/apple-utils": "0.0.0-alpha.17",
"@expo/config": "~3.3.19",
"@expo/config-plugins": "1.0.18",
"@expo/eas-build-job": "0.2.10",
"@expo/eas-json": "^0.4.0",
"@expo/config-plugins": "1.0.19-alpha.0",
"@expo/eas-build-job": "0.2.12",
"@expo/eas-json": "^0.4.3",
"@expo/json-file": "^8.2.24",
"@expo/plist": "^0.0.11",
"@expo/plugin-warn-if-update-available": "^1.7.0",
+2 -2
View File
@@ -41,7 +41,7 @@ export async function prepareIosBuildAsync(
let iosApplicationTarget: string | undefined;
if (buildCtx.buildProfile.workflow === Workflow.Generic) {
iosBuildScheme = buildCtx.buildProfile.scheme ?? (await resolveSchemeAsync(buildCtx));
iosApplicationTarget = await IOSConfig.Target.getApplicationTargetForSchemeAsync(
iosApplicationTarget = await IOSConfig.BuildScheme.getApplicationTargetForSchemeAsync(
buildCtx.commandCtx.projectDir,
iosBuildScheme
);
@@ -68,7 +68,7 @@ export async function prepareIosBuildAsync(
}
async function resolveSchemeAsync(ctx: BuildContext<Platform.iOS>): Promise<string> {
const schemes = IOSConfig.Scheme.getSchemesFromXcodeproj(ctx.commandCtx.projectDir);
const schemes = IOSConfig.BuildScheme.getSchemesFromXcodeproj(ctx.commandCtx.projectDir);
if (schemes.length === 1) {
return schemes[0];
}
@@ -1,5 +1,5 @@
import { Workflow } from '@expo/eas-build-job';
import { CredentialsSource, DistributionType } from '@expo/eas-json';
import { CredentialsSource, iOSDistributionType } from '@expo/eas-json';
import assert from 'assert';
import { createCredentialsContextAsync } from '../../credentials/context';
@@ -27,7 +27,7 @@ export async function ensureIosCredentialsAsync(
},
workflow: ctx.buildProfile.workflow,
credentialsSource: ctx.buildProfile.credentialsSource,
distribution: ctx.buildProfile.distribution ?? DistributionType.STORE,
distribution: ctx.buildProfile.distribution ?? 'store',
nonInteractive: ctx.commandCtx.nonInteractive,
skipCredentialsCheck: ctx.commandCtx.skipCredentialsCheck,
});
@@ -37,7 +37,7 @@ interface ResolveCredentialsParams {
app: AppLookupParams;
workflow: Workflow;
credentialsSource: CredentialsSource;
distribution: DistributionType;
distribution: iOSDistributionType;
nonInteractive: boolean;
skipCredentialsCheck: boolean;
}
@@ -69,5 +69,5 @@ export async function resolveIosCredentialsAsync(
}
function shouldProvideCredentials(ctx: BuildContext<Platform.iOS>): boolean {
return true;
return ctx.buildProfile.distribution !== 'simulator';
}
@@ -50,6 +50,7 @@ interface CommonJobProperties {
projectArchive: ArchiveSource;
builderEnvironment: iOS.BuilderEnvironment;
releaseChannel: string;
distribution?: iOS.DistributionType;
secrets: {
buildCredentials: iOS.BuildCredentials;
secretEnvs?: Record<string, string>;
@@ -88,6 +89,7 @@ async function prepareJobCommonAsync(
type: ArchiveSourceType.S3,
bucketKey: archiveBucketKey,
},
distribution: ctx.buildProfile.distribution,
builderEnvironment: {
image: ctx.buildProfile.image,
node: ctx.buildProfile.node,
+2 -2
View File
@@ -1,4 +1,4 @@
import { CredentialsSource, DistributionType } from '@expo/eas-json';
import { CredentialsSource } from '@expo/eas-json';
import { getAppIdentifierAsync } from '../project/projectUtils';
import { BuildContext } from './context';
@@ -26,7 +26,7 @@ export async function collectMetadata<T extends Platform>(
credentialsSource,
sdkVersion: ctx.commandCtx.exp.sdkVersion,
trackingContext: ctx.trackingCtx,
distribution: ctx.buildProfile.distribution ?? DistributionType.STORE,
distribution: ctx.buildProfile.distribution ?? 'store',
appName: ctx.commandCtx.exp.name,
appIdentifier:
(await getAppIdentifierAsync(ctx.commandCtx.projectDir, ctx.platform)) ?? undefined,
+1 -1
View File
@@ -83,7 +83,7 @@ export type BuildMetadata = {
/**
* Distribution type
* Indicates whether this is a build for store or internal distribution.
* Indicates whether this is a build for store, internal distribution, or simulator (iOS).
*/
distribution: DistributionType;
@@ -1,4 +1,3 @@
import { DistributionType } from '@expo/eas-json';
import assert from 'assert';
import chalk from 'chalk';
@@ -47,7 +46,7 @@ export function printBuildResults(accountName: string, builds: (Build | null)[])
}
function printBuildResult(accountName: string, build: Build): void {
if (build.metadata?.distribution === DistributionType.INTERNAL) {
if (build.metadata?.distribution === 'internal') {
const logsUrl = getBuildLogsUrl({
buildId: build.id,
account: accountName,
+16 -16
View File
@@ -14,30 +14,30 @@ import { getBranchNameAsync } from '../../utils/git';
export async function createUpdateBranchOnAppAsync({
appId,
branchName,
name,
}: {
appId: string;
branchName: string;
}): Promise<Pick<UpdateBranch, 'id' | 'branchName'>> {
name: string;
}): Promise<Pick<UpdateBranch, 'id' | 'name'>> {
const data = await withErrorHandlingAsync(
graphqlClient
.mutation<
{ updateBranch: { createUpdateBranchForApp: Pick<UpdateBranch, 'id' | 'branchName'> } },
{ appId: string; branchName: string }
{ updateBranch: { createUpdateBranchForApp: Pick<UpdateBranch, 'id' | 'name'> } },
{ appId: string; name: string }
>(
gql`
mutation createUpdateBranchForApp($appId: ID!, $branchName: String!) {
mutation createUpdateBranchForApp($appId: ID!, $name: String!) {
updateBranch {
createUpdateBranchForApp(appId: $appId, branchName: $branchName) {
createUpdateBranchForApp(appId: $appId, name: $name) {
id
branchName
name
}
}
}
`,
{
appId,
branchName,
name,
}
)
.toPromise()
@@ -51,7 +51,7 @@ export default class BranchCreate extends Command {
static args = [
{
name: 'branchName',
name: 'name',
required: false,
description: 'Name of the branch to create',
},
@@ -66,7 +66,7 @@ export default class BranchCreate extends Command {
async run() {
let {
args: { branchName },
args: { name },
flags,
} = this.parse(BranchCreate);
@@ -82,14 +82,14 @@ export default class BranchCreate extends Command {
projectName: exp.slug,
});
if (!branchName) {
if (!name) {
const validationMessage = 'Branch name may not be empty.';
if (flags.json) {
throw new Error(validationMessage);
}
({ branchName } = await promptAsync({
({ name } = await promptAsync({
type: 'text',
name: 'branchName',
name: 'name',
message: 'Please name the branch:',
initial:
(await getBranchNameAsync()) || `branch-${Math.random().toString(36).substr(2, 4)}`,
@@ -97,7 +97,7 @@ export default class BranchCreate extends Command {
}));
}
const newBranch = await createUpdateBranchOnAppAsync({ appId: projectId, branchName });
const newBranch = await createUpdateBranchOnAppAsync({ appId: projectId, name });
if (flags.json) {
Log.log(newBranch);
@@ -105,7 +105,7 @@ export default class BranchCreate extends Command {
}
Log.withTick(
`️Created a new branch: ${chalk.bold(newBranch.branchName)} on project ${chalk.bold(
`️Created a new branch: ${chalk.bold(newBranch.name)} on project ${chalk.bold(
`@${accountName}/${exp.slug}`
)}.`
);
+4 -7
View File
@@ -38,10 +38,7 @@ export default class BranchList extends Command {
} else {
const table = new CliTable({ head: ['Branch', 'Latest update'] });
table.push(
...branches.map((branch: UpdateBranch) => [
branch.branchName,
formatUpdate(branch.updates[0]),
])
...branches.map((branch: UpdateBranch) => [branch.name, formatUpdate(branch.updates[0])])
);
Log.log(table.toString());
if (branches.length >= BRANCHES_LIMIT) {
@@ -61,7 +58,7 @@ export default class BranchList extends Command {
fullName
updateBranches(offset: 0, limit: $limit) {
id
branchName
name
updates(offset: 0, limit: 1) {
id
actor {
@@ -75,7 +72,7 @@ export default class BranchList extends Command {
}
}
updatedAt
updateMessage
message
}
}
}
@@ -105,7 +102,7 @@ function formatUpdate(update: Update | undefined): string {
if (!update) {
return 'N/A';
}
const message = update.updateMessage ? `"${update.updateMessage}" ` : '';
const message = update.message ? `"${update.message}" ` : '';
return `${message}(${format(update.updatedAt, 'en_US')} by ${getActorDisplayName(
update.actor as any
)})`;
+11 -11
View File
@@ -41,7 +41,7 @@ export default class BranchPublish extends Command {
async run() {
let {
flags: { json: jsonFlag, branch: branchName, message: updateMessage, 'input-dir': inputDir },
flags: { json: jsonFlag, branch: name, message, 'input-dir': inputDir },
} = this.parse(BranchPublish);
const projectDir = await findProjectRootAsync(process.cwd());
@@ -63,25 +63,25 @@ export default class BranchPublish extends Command {
projectName: slug,
});
if (!branchName) {
if (!name) {
const validationMessage = 'branch name may not be empty.';
if (jsonFlag) {
throw new Error(validationMessage);
}
({ branchName } = await promptAsync({
({ name } = await promptAsync({
type: 'text',
name: 'branchName',
name: 'name',
message: 'Please enter the name of the branch to publish on:',
validate: value => (value ? true : validationMessage),
}));
}
if (!updateMessage) {
if (!message) {
const validationMessage = 'publish message may not be empty.';
if (jsonFlag) {
throw new Error(validationMessage);
}
({ publishMessage: updateMessage } = await promptAsync({
({ publishMessage: message } = await promptAsync({
type: 'text',
name: 'publishMessage',
message: `Please enter a publication message.`,
@@ -92,7 +92,7 @@ export default class BranchPublish extends Command {
const { id: branchId } = await getBranchByNameAsync({
appId: projectId,
branchName: branchName!,
name: name!,
});
let updateInfoGroup;
@@ -114,7 +114,7 @@ export default class BranchPublish extends Command {
branchId,
updateInfoGroup,
runtimeVersion,
updateMessage,
message,
});
publishSpinner.succeed('Published!');
} catch (e) {
@@ -148,10 +148,10 @@ export default class BranchPublish extends Command {
});
outputMessage.push(
[chalk.dim('project'), `@${accountName}/${slug}`],
[chalk.dim('branch'), branchName],
[chalk.dim('branch'), name],
[chalk.dim('runtimeVersion'), runtimeVersion],
[chalk.dim('updateGroupID'), newUpdateGroup.updateGroup],
[chalk.dim('message'), updateMessage]
[chalk.dim('groupID'), newUpdateGroup.group],
[chalk.dim('message'), message]
);
Log.log(outputMessage.toString());
}
@@ -33,7 +33,7 @@ async function renameUpdateBranchOnAppAsync({
updateBranch {
editUpdateBranch(input: $input) {
id
branchName
name
}
}
}
@@ -41,8 +41,8 @@ async function renameUpdateBranchOnAppAsync({
{
input: {
appId,
branchName: currentName,
newBranchName: newName,
name: currentName,
newName,
},
}
)
@@ -125,7 +125,7 @@ export default class BranchRename extends Command {
Log.withTick(
`️Renamed branch from ${currentName} to ${chalk.bold(
editedBranch.branchName
editedBranch.name
)} on project ${chalk.bold(`@${accountName}/${exp.slug}`)}.`
);
}
+29 -29
View File
@@ -14,17 +14,17 @@ import { promptAsync } from '../../prompts';
const PAGE_LIMIT = 10_000;
type TruncatedUpdate = Pick<Update, 'updateGroup' | 'updateMessage' | 'createdAt' | 'actor'>;
type TruncatedUpdate = Pick<Update, 'group' | 'message' | 'createdAt' | 'actor'>;
async function viewUpdateBranchAsync({
appId,
branchName,
name,
}: {
appId: string;
branchName: string;
name: string;
}): Promise<{
id: string;
branchName: string;
name: string;
updates: TruncatedUpdate[];
}> {
const data = await withErrorHandlingAsync(
@@ -33,9 +33,9 @@ async function viewUpdateBranchAsync({
{
app: {
byId: {
updateBranchByBranchName: {
updateBranchByName: {
id: string;
branchName: string;
name: string;
updates: TruncatedUpdate[];
};
};
@@ -43,22 +43,22 @@ async function viewUpdateBranchAsync({
},
{
appId: string;
branchName: string;
name: string;
limit: number;
}
>(
gql`
query ViewBranch($appId: String!, $branchName: String!, $limit: Int!) {
query ViewBranch($appId: String!, $name: String!, $limit: Int!) {
app {
byId(appId: $appId) {
id
updateBranchByBranchName(branchName: $branchName) {
updateBranchByName(name: $name) {
id
branchName
name
updates(offset: 0, limit: $limit) {
id
updateGroup
updateMessage
group
message
createdAt
actor {
id
@@ -77,13 +77,13 @@ async function viewUpdateBranchAsync({
`,
{
appId,
branchName,
name,
limit: PAGE_LIMIT,
}
)
.toPromise()
);
return data.app.byId.updateBranchByBranchName;
return data.app.byId.updateBranchByName;
}
export default class BranchView extends Command {
@@ -92,7 +92,7 @@ export default class BranchView extends Command {
static args = [
{
name: 'branchName',
name: 'name',
required: false,
description: 'Name of the branch to view',
},
@@ -107,7 +107,7 @@ export default class BranchView extends Command {
async run() {
let {
args: { branchName },
args: { name },
flags: { json: jsonFlag },
} = this.parse(BranchView);
@@ -124,14 +124,14 @@ export default class BranchView extends Command {
projectName: slug,
});
if (!branchName) {
if (!name) {
const validationMessage = 'Branch name may not be empty.';
if (jsonFlag) {
throw new Error(validationMessage);
}
({ branchName } = await promptAsync({
({ name } = await promptAsync({
type: 'text',
name: 'branchName',
name: 'name',
message: 'Please enter the name of the branch to view:',
validate: value => (value ? true : validationMessage),
}));
@@ -139,11 +139,11 @@ export default class BranchView extends Command {
const UpdateBranch = await viewUpdateBranchAsync({
appId: projectId,
branchName,
name,
});
const updates = Object.values(groupBy(UpdateBranch.updates, u => u.updateGroup)).map(
updateGroup => updateGroup[0]
const updates = Object.values(groupBy(UpdateBranch.updates, u => u.group)).map(
group => group[0]
);
if (jsonFlag) {
@@ -151,26 +151,26 @@ export default class BranchView extends Command {
return;
}
const updateGroupTable = new Table({
head: ['createdAt', 'updateMessage', 'updateGroup', 'actor'],
const groupTable = new Table({
head: ['createdAt', 'message', 'group', 'actor'],
wordWrap: true,
});
for (const update of updates) {
updateGroupTable.push([
groupTable.push([
new Date(update.createdAt).toLocaleString(),
update.updateMessage,
update.updateGroup,
update.message,
update.group,
update.actor?.firstName,
]);
}
Log.withTick(
`️Branch: ${chalk.bold(UpdateBranch.branchName)} on project ${chalk.bold(
`️Branch: ${chalk.bold(UpdateBranch.name)} on project ${chalk.bold(
`@${accountName}/${slug}`
)}. Branch ID: ${chalk.bold(UpdateBranch.id)}`
);
Log.log(chalk.bold('Recent update groups published on this branch:'));
Log.log(updateGroupTable.toString());
Log.log(groupTable.toString());
}
}
+12 -20
View File
@@ -33,22 +33,14 @@ async function createUpdateChannelOnAppAsync({
graphqlClient
.mutation<
{ updateChannel: { createUpdateChannelForApp: UpdateChannel } },
{ appId: string; channelName: string; branchMapping: string }
{ appId: string; name: string; branchMapping: string }
>(
gql`
mutation CreateUpdateChannelForApp(
$appId: ID!
$channelName: String!
$branchMapping: String!
) {
mutation CreateUpdateChannelForApp($appId: ID!, $name: String!, $branchMapping: String!) {
updateChannel {
createUpdateChannelForApp(
appId: $appId
channelName: $channelName
branchMapping: $branchMapping
) {
createUpdateChannelForApp(appId: $appId, name: $name, branchMapping: $branchMapping) {
id
channelName
name
branchMapping
}
}
@@ -56,7 +48,7 @@ async function createUpdateChannelOnAppAsync({
`,
{
appId,
channelName,
name: channelName,
branchMapping,
}
)
@@ -71,7 +63,7 @@ export default class ChannelCreate extends Command {
static args = [
{
name: 'channelName',
name: 'name',
required: false,
description: 'Name of the channel to create',
},
@@ -87,7 +79,7 @@ export default class ChannelCreate extends Command {
async run() {
let {
args: { channelName },
args: { name: channelName },
flags: { json: jsonFlag },
} = this.parse(ChannelCreate);
@@ -109,9 +101,9 @@ export default class ChannelCreate extends Command {
if (jsonFlag) {
throw new Error(validationMessage);
}
({ channelName } = await promptAsync({
({ name: channelName } = await promptAsync({
type: 'text',
name: 'channelName',
name: 'name',
message: 'Please name the channel:',
validate: value => (value ? true : validationMessage),
}));
@@ -122,14 +114,14 @@ export default class ChannelCreate extends Command {
try {
const existingBranch = await getBranchByNameAsync({
appId: projectId,
branchName: channelName,
name: channelName,
});
branchId = existingBranch.id;
branchMessage = `We found a branch with the same name`;
} catch (e) {
const newBranch = await createUpdateBranchOnAppAsync({
appId: projectId,
branchName: channelName,
name: channelName,
});
branchId = newBranch.id;
branchMessage = `We also went ahead and made a branch with the same name`;
@@ -147,7 +139,7 @@ export default class ChannelCreate extends Command {
}
Log.withTick(
`️Created a new channel ${chalk.bold(newChannel.channelName)} on project ${chalk.bold(
`️Created a new channel ${chalk.bold(newChannel.name)} on project ${chalk.bold(
`@${accountName}/${slug}`
)}. ${branchMessage} and have pointed the channel at it. You can now update your app by publishing!`
);
@@ -1,5 +1,5 @@
import { Platform } from '@expo/eas-build-job';
import { CredentialsSource, DistributionType } from '@expo/eas-json';
import { CredentialsSource, iOSDistributionType } from '@expo/eas-json';
import { IosDistributionType } from '../../graphql/generated';
import Log from '../../log';
@@ -23,7 +23,7 @@ interface PartialIosCredentials {
interface Options {
app: AppLookupParams;
distribution: DistributionType;
distribution: iOSDistributionType;
skipCredentialsCheck?: boolean;
}
@@ -48,7 +48,7 @@ export default class IosCredentialsProvider implements CredentialsProvider {
}
public async hasLocalAsync(): Promise<boolean> {
if (this.options.distribution === DistributionType.INTERNAL) {
if (this.options.distribution === 'internal') {
// TODO: add support for using credentials.json for internal distribution
return false;
}
@@ -102,7 +102,7 @@ export default class IosCredentialsProvider implements CredentialsProvider {
}
private async getLocalAsync(): Promise<IosCredentials> {
if (this.options.distribution === DistributionType.INTERNAL) {
if (this.options.distribution === 'internal') {
// TODO: add support for using credentials.json for internal distribution
throw new Error('Using credentials.json for internal distribution is not supported yet.');
}
@@ -147,7 +147,7 @@ export default class IosCredentialsProvider implements CredentialsProvider {
}
private async fetchRemoteAsync(): Promise<PartialIosCredentials> {
if (this.options.distribution === DistributionType.INTERNAL) {
if (this.options.distribution === 'internal') {
const { app } = this.options;
const account = findAccountByName(this.ctx.user.accounts, app.accountName);
if (!account) {
@@ -1,4 +1,4 @@
import { DistributionType } from '@expo/eas-json';
import { iOSDistributionType } from '@expo/eas-json';
import assert from 'assert';
import chalk from 'chalk';
@@ -21,7 +21,7 @@ type AppCredentialsAndDistCert = {
};
export class SetupBuildCredentials implements Action {
constructor(private app: AppLookupParams, private distribution: DistributionType) {}
constructor(private app: AppLookupParams, private distribution: iOSDistributionType) {}
async runAsync(manager: CredentialsManager, ctx: Context): Promise<void> {
await ctx.bestEffortAppStoreAuthenticateAsync();
@@ -32,7 +32,7 @@ export class SetupBuildCredentials implements Action {
let iosAppBuildCredentials: IosAppBuildCredentialsFragment | null = null;
try {
if (this.distribution === DistributionType.INTERNAL) {
if (this.distribution === 'internal') {
const account = findAccountByName(ctx.user.accounts, this.app.accountName);
if (!account) {
throw new Error(`You do not have access to the ${this.app.accountName} account`);
@@ -1,5 +1,3 @@
import { DistributionType } from '@expo/eas-json';
import Log from '../../log';
import { getProjectAccountName } from '../../project/projectUtils';
import { promptAsync } from '../../prompts';
@@ -135,7 +133,7 @@ export class ManageIos implements Action {
}
case ActionType.SetupBuildCredentials: {
const app = this.getAppLookupParamsFromContext(ctx);
return new SetupBuildCredentials(app, DistributionType.STORE);
return new SetupBuildCredentials(app, 'store');
}
case ActionType.RemoveSpecificProvisioningProfile: {
const app = this.getAppLookupParamsFromContext(ctx);
+88 -21
View File
@@ -195,6 +195,8 @@ export type Account = {
applePushKeys: Array<ApplePushKey>;
appleProvisioningProfiles: Array<AppleProvisioningProfile>;
appleDevices: Array<AppleDevice>;
/** Environment secrets for an account */
environmentSecrets: Array<EnvironmentSecret>;
};
@@ -277,6 +279,15 @@ export type AccountAppleDevicesArgs = {
};
/**
* An account is a container owning projects, credentials, billing and other organization
* data and settings. Actors may own and be members of accounts.
*/
export type AccountEnvironmentSecretsArgs = {
filterNames?: Maybe<Array<Scalars['String']>>;
};
export type Offer = {
__typename?: 'Offer';
id: Scalars['ID'];
@@ -396,14 +407,16 @@ export type App = Project & {
androidAppCredentials: Array<AndroidAppCredentials>;
/** EAS channels owned by an app */
updateChannels: Array<UpdateChannel>;
/** get an EAS channel owned by the app by channelName */
updateChannelByChannelName: UpdateChannel;
/** get an EAS channel owned by the app by name */
updateChannelByName: UpdateChannel;
/** EAS branches owned by an app */
updateBranches: Array<UpdateBranch>;
/** get an EAS branch owned by the app by branchName */
updateBranchByBranchName: UpdateBranch;
/** get an EAS branch owned by the app by name */
updateBranchByName: UpdateBranch;
/** Coalesced project activity for an app. Use "createdBefore" to offset a query. */
activityTimelineProjectActivities: Array<ActivityTimelineProjectActivity>;
/** Environment secrets for an app */
environmentSecrets: Array<EnvironmentSecret>;
};
@@ -458,8 +471,8 @@ export type AppUpdateChannelsArgs = {
/** Represents an Exponent App (or Experience in legacy terms) */
export type AppUpdateChannelByChannelNameArgs = {
channelName: Scalars['String'];
export type AppUpdateChannelByNameArgs = {
name: Scalars['String'];
};
@@ -471,8 +484,8 @@ export type AppUpdateBranchesArgs = {
/** Represents an Exponent App (or Experience in legacy terms) */
export type AppUpdateBranchByBranchNameArgs = {
branchName: Scalars['String'];
export type AppUpdateBranchByNameArgs = {
name: Scalars['String'];
};
@@ -482,6 +495,12 @@ export type AppActivityTimelineProjectActivitiesArgs = {
createdBefore?: Maybe<Scalars['DateTime']>;
};
/** Represents an Exponent App (or Experience in legacy terms) */
export type AppEnvironmentSecretsArgs = {
filterNames?: Maybe<Array<Scalars['String']>>;
};
export type AppIcon = {
__typename?: 'AppIcon';
url: Scalars['String'];
@@ -730,7 +749,8 @@ export type BuildMetrics = {
export enum DistributionType {
Store = 'STORE',
Internal = 'INTERNAL'
Internal = 'INTERNAL',
Simulator = 'SIMULATOR'
}
/** Represents an Standalone App build job */
@@ -1011,7 +1031,7 @@ export type UpdateChannel = {
__typename?: 'UpdateChannel';
id: Scalars['ID'];
appId: Scalars['ID'];
channelName: Scalars['String'];
name: Scalars['String'];
branchMapping: Scalars['String'];
createdAt: Scalars['DateTime'];
updatedAt: Scalars['DateTime'];
@@ -1028,7 +1048,7 @@ export type UpdateBranch = {
__typename?: 'UpdateBranch';
id: Scalars['ID'];
appId: Scalars['ID'];
branchName: Scalars['String'];
name: Scalars['String'];
createdAt: Scalars['DateTime'];
updatedAt: Scalars['DateTime'];
updates: Array<Update>;
@@ -1049,11 +1069,19 @@ export type Update = ActivityTimelineProjectActivity & {
platform: Scalars['String'];
manifestFragment: Scalars['String'];
runtimeVersion: Scalars['String'];
updateGroup: Scalars['String'];
group: Scalars['String'];
updatedAt: Scalars['DateTime'];
createdAt: Scalars['DateTime'];
updateMessage?: Maybe<Scalars['String']>;
branchName: Scalars['String'];
message?: Maybe<Scalars['String']>;
branch: UpdateBranch;
};
export type EnvironmentSecret = {
__typename?: 'EnvironmentSecret';
id: Scalars['ID'];
name: Scalars['String'];
createdAt: Scalars['DateTime'];
updatedAt: Scalars['DateTime'];
};
export type UserPermission = {
@@ -1475,6 +1503,8 @@ export type RootMutation = {
me?: Maybe<MeMutation>;
/** Mutations that modify an EmailSubscription */
emailSubscription: EmailSubscriptionMutation;
/** Mutations that create and delete EnvironmentSecrets */
environmentSecret: EnvironmentSecretMutation;
};
@@ -2201,7 +2231,7 @@ export type UpdateChannelMutation = {
export type UpdateChannelMutationCreateUpdateChannelForAppArgs = {
appId: Scalars['ID'];
channelName: Scalars['String'];
name: Scalars['String'];
branchMapping?: Maybe<Scalars['String']>;
};
@@ -2243,7 +2273,7 @@ export type UpdateBranchMutation = {
createUpdateBranchForApp?: Maybe<UpdateBranch>;
/**
* Edit an EAS branch. The branch can be specified either by its ID or
* with the combination of (appId, branchName).
* with the combination of (appId, name).
*/
editUpdateBranch: UpdateBranch;
/** Delete an EAS branch and all of its updates as long as the branch is not being used by any channels */
@@ -2255,7 +2285,7 @@ export type UpdateBranchMutation = {
export type UpdateBranchMutationCreateUpdateBranchForAppArgs = {
appId: Scalars['ID'];
branchName: Scalars['String'];
name: Scalars['String'];
};
@@ -2276,8 +2306,8 @@ export type UpdateBranchMutationPublishUpdateGroupArgs = {
export type EditUpdateBranchInput = {
id?: Maybe<Scalars['ID']>;
appId?: Maybe<Scalars['ID']>;
branchName?: Maybe<Scalars['String']>;
newBranchName: Scalars['String'];
name?: Maybe<Scalars['String']>;
newName: Scalars['String'];
};
export type DeleteUpdateBranchResult = {
@@ -2289,7 +2319,7 @@ export type PublishUpdateGroupInput = {
branchId: Scalars['String'];
updateInfoGroup: UpdateInfoGroup;
runtimeVersion: Scalars['String'];
updateMessage?: Maybe<Scalars['String']>;
message?: Maybe<Scalars['String']>;
};
export type UpdateInfoGroup = {
@@ -2598,6 +2628,43 @@ export type MailchimpTagPayload = {
name?: Maybe<Scalars['String']>;
};
export type EnvironmentSecretMutation = {
__typename?: 'EnvironmentSecretMutation';
/** Create an environment secret for an Account */
createEnvironmentSecretForAccount: EnvironmentSecret;
/** Create an environment secret for an App */
createEnvironmentSecretForApp: EnvironmentSecret;
/** Delete an environment secret */
deleteEnvironmentSecret: DeleteEnvironmentSecretResult;
};
export type EnvironmentSecretMutationCreateEnvironmentSecretForAccountArgs = {
environmentSecretData?: Maybe<CreateEnvironmentSecretInput>;
accountId: Scalars['String'];
};
export type EnvironmentSecretMutationCreateEnvironmentSecretForAppArgs = {
environmentSecretData?: Maybe<CreateEnvironmentSecretInput>;
appId: Scalars['String'];
};
export type EnvironmentSecretMutationDeleteEnvironmentSecretArgs = {
id: Scalars['String'];
};
export type CreateEnvironmentSecretInput = {
name: Scalars['String'];
value: Scalars['String'];
};
export type DeleteEnvironmentSecretResult = {
__typename?: 'DeleteEnvironmentSecretResult';
id: Scalars['ID'];
};
export type BaseSearchResult = SearchResult & {
__typename?: 'BaseSearchResult';
/** @deprecated Use SearchResult instead */
@@ -3275,7 +3342,7 @@ export type UpdatePublishMutation = (
{ __typename?: 'UpdateBranchMutation' }
& { publishUpdateGroup: Array<Maybe<(
{ __typename?: 'Update' }
& Pick<Update, 'id' | 'updateGroup'>
& Pick<Update, 'id' | 'group'>
)>> }
) }
);
@@ -31,7 +31,7 @@ const PublishMutation = {
async publishUpdateGroupAsync(
publishUpdateGroupInput: PublishUpdateGroupInput
): Promise<Pick<Update, 'id' | 'updateGroup'>> {
): Promise<Pick<Update, 'id' | 'group'>> {
const data = await withErrorHandlingAsync(
graphqlClient
.mutation<UpdatePublishMutation>(
@@ -40,7 +40,7 @@ const PublishMutation = {
updateBranch {
publishUpdateGroup(publishUpdateGroupInput: $publishUpdateGroupInput) {
id
updateGroup
group
}
}
}
+9 -9
View File
@@ -125,10 +125,10 @@ export function getProjectConfigDescription(projectDir: string): string {
export async function getBranchByNameAsync({
appId,
branchName,
name,
}: {
appId: string;
branchName: string;
name: string;
}): Promise<UpdateBranch> {
const data = await withErrorHandlingAsync(
graphqlClient
@@ -136,23 +136,23 @@ export async function getBranchByNameAsync({
{
app: {
byId: {
updateBranchByBranchName: UpdateBranch;
updateBranchByName: UpdateBranch;
};
};
},
{
appId: string;
branchName: string;
name: string;
}
>(
gql`
query ViewBranch($appId: String!, $branchName: String!) {
query ViewBranch($appId: String!, $name: String!) {
app {
byId(appId: $appId) {
id
updateBranchByBranchName(branchName: $branchName) {
updateBranchByName(name: $name) {
id
branchName
name
}
}
}
@@ -160,10 +160,10 @@ export async function getBranchByNameAsync({
`,
{
appId,
branchName,
name,
}
)
.toPromise()
);
return data.app.byId.updateBranchByBranchName;
return data.app.byId.updateBranchByName;
}
+2 -2
View File
@@ -1,11 +1,11 @@
{
"name": "@expo/eas-json",
"description": "A library for interacting with the eas.json",
"version": "0.4.0",
"version": "0.4.3",
"author": "Expo <[email protected]>",
"bugs": "https://github.com/expo/eas-cli/issues",
"dependencies": {
"@expo/eas-build-job": "0.2.10",
"@expo/eas-build-job": "0.2.12",
"@hapi/joi": "^17.1.1",
"fs-extra": "^9.0.1",
"tslib": "^1"
+8 -9
View File
@@ -6,10 +6,9 @@ export enum CredentialsSource {
AUTO = 'auto',
}
export enum DistributionType {
STORE = 'store',
INTERNAL = 'internal',
}
export type AndroidDistributionType = 'store' | 'internal';
export type iOSDistributionType = 'store' | 'internal' | 'simulator';
export type DistributionType = AndroidDistributionType | iOSDistributionType;
export type VersionAutoIncrement = boolean | 'version' | 'buildNumber';
@@ -18,7 +17,7 @@ export interface AndroidManagedBuildProfile extends Android.BuilderEnvironment {
credentialsSource: CredentialsSource;
buildType?: Android.ManagedBuildType;
releaseChannel?: string;
distribution?: DistributionType;
distribution?: AndroidDistributionType;
}
export interface AndroidGenericBuildProfile extends Android.BuilderEnvironment {
@@ -28,7 +27,7 @@ export interface AndroidGenericBuildProfile extends Android.BuilderEnvironment {
releaseChannel?: string;
artifactPath?: string;
withoutCredentials?: boolean;
distribution?: DistributionType;
distribution?: AndroidDistributionType;
}
export interface iOSManagedBuildProfile extends iOS.BuilderEnvironment {
@@ -36,7 +35,7 @@ export interface iOSManagedBuildProfile extends iOS.BuilderEnvironment {
credentialsSource: CredentialsSource;
buildType?: iOS.ManagedBuildType;
releaseChannel?: string;
distribution?: DistributionType;
distribution?: iOSDistributionType;
autoIncrement: VersionAutoIncrement;
}
@@ -44,10 +43,10 @@ export interface iOSGenericBuildProfile extends iOS.BuilderEnvironment {
workflow: Workflow.Generic;
credentialsSource: CredentialsSource;
scheme?: string;
schemeBuildConfiguration?: iOS.GenericSchemeBuildConfiguration;
schemeBuildConfiguration?: iOS.SchemeBuildConfiguration;
releaseChannel?: string;
artifactPath?: string;
distribution?: DistributionType;
distribution?: iOSDistributionType;
autoIncrement: VersionAutoIncrement;
}
+2 -2
View File
@@ -63,7 +63,7 @@ const iOSGenericSchema = Joi.object({
schemeBuildConfiguration: Joi.string().valid('Debug', 'Release'),
releaseChannel: Joi.string(),
artifactPath: Joi.string(),
distribution: Joi.string().valid('store', 'internal').default('store'),
distribution: Joi.string().valid('store', 'internal', 'simulator').default('store'),
autoIncrement: Joi.alternatives()
.try(Joi.boolean(), Joi.string().valid('version', 'buildNumber'))
.default(false),
@@ -74,7 +74,7 @@ const iOSManagedSchema = Joi.object({
credentialsSource: Joi.string().valid('local', 'remote', 'auto').default('auto'),
buildType: Joi.string().valid('release', 'development-client'),
releaseChannel: Joi.string(),
distribution: Joi.string().valid('store', 'internal').default('store'),
distribution: Joi.string().valid('store', 'internal', 'simulator').default('store'),
autoIncrement: Joi.alternatives()
.try(Joi.boolean(), Joi.string().valid('version', 'buildNumber'))
.default(false),
+3 -1
View File
@@ -1,12 +1,14 @@
export {
CredentialsSource,
DistributionType,
AndroidDistributionType,
AndroidManagedBuildProfile,
AndroidGenericBuildProfile,
AndroidBuildProfile,
iOSDistributionType,
iOSManagedBuildProfile,
iOSGenericBuildProfile,
iOSBuildProfile,
DistributionType,
EasConfig,
VersionAutoIncrement,
} from './Config.types';
+21 -84
View File
@@ -1093,15 +1093,15 @@
"@babel/preset-env" "^7.4.4"
"@babel/preset-typescript" "^7.3.3"
"@expo/[email protected]8":
version "1.0.18"
resolved "https://registry.yarnpkg.com/@expo/config-plugins/-/config-plugins-1.0.18.tgz#f0f7d36316d60ea67b4cc6394bffef6d6904345d"
integrity sha512-8Ey+22cEAOxK+SBJY+OazaLsPyL5FXdsykfBg/QQJE2Y/DTFebUVlr5bQyeqavbASDvmDxg3Fd71A8Se8+qT1g==
"@expo/[email protected]9-alpha.0":
version "1.0.19-alpha.0"
resolved "https://registry.yarnpkg.com/@expo/config-plugins/-/config-plugins-1.0.19-alpha.0.tgz#3d57c266bfae0c7b310ac99e9949c9d03120c103"
integrity sha512-mOPIvi1tanMftgeEjDB4vckLKY5dKdJ80R2cg27YyaP4IS1pYGaHtJKBKb6Pr1w5xvyRxd2AlX6C7L8lEzTBaw==
dependencies:
"@expo/config-types" "^40.0.0-beta.2"
"@expo/configure-splash-screen" "0.3.3"
"@expo/configure-splash-screen" "0.3.4"
"@expo/image-utils" "0.3.10"
"@expo/json-file" "8.2.27"
"@expo/json-file" "8.2.28-alpha.0"
"@expo/plist" "0.0.11"
find-up "~5.0.0"
fs-extra "9.0.0"
@@ -1135,26 +1135,26 @@
semver "^7.1.3"
slugify "^1.3.4"
"@expo/[email protected].3":
version "0.3.3"
resolved "https://registry.yarnpkg.com/@expo/configure-splash-screen/-/configure-splash-screen-0.3.3.tgz#ef44ba4d62443297f9d8a9326a71b40b8b413528"
integrity sha512-fWy6Z52Mj2a7yjdvpIJkP9G3kfkoXE79aHvTDwgggIE0KLhwnPF27v+KS0wJUf7b4JM6w0zKOlUZjQhn0kSNyA==
"@expo/[email protected].4":
version "0.3.4"
resolved "https://registry.yarnpkg.com/@expo/configure-splash-screen/-/configure-splash-screen-0.3.4.tgz#b91d8f08fd96272bd3d7aaa9b51d6189b932c7cc"
integrity sha512-HsukM03X5/EXSucVsLN/oLqyFq/1jAjpADkgU1HLaezFpkr+TOquI6yDwdDp1450kcm891PE/SYJ+mCdPxzDLw==
dependencies:
"@react-native-community/cli-platform-ios" "^4.10.0"
color-string "^1.5.3"
commander "^5.1.0"
core-js "^3.6.5"
deep-equal "^2.0.3"
fs-extra "^9.0.0"
glob "^7.1.6"
lodash "^4.17.15"
pngjs "^5.0.0"
xcode "^3.0.0"
xml-js "^1.6.11"
"@expo/[email protected]0":
version "0.2.10"
resolved "https://registry.yarnpkg.com/@expo/eas-build-job/-/eas-build-job-0.2.10.tgz#ed6ac5e094e62167c0afeaae929aab6be68b48b4"
integrity sha512-AEbMlvbF/ugZFHDuMY9Bpojm8LgZIL7IIES+jevkG1ftzoPpRXP+q1Ioch+KPFdG6SyPrqvGa2NBK5Oyq/MtTA==
"@expo/[email protected]2":
version "0.2.12"
resolved "https://registry.yarnpkg.com/@expo/eas-build-job/-/eas-build-job-0.2.12.tgz#35224e8ad7e9d6f70d76172b75c3b6824293470e"
integrity sha512-a70/NZfsnQFnEqt+b6DK8g1OAExRjHSDf4MFOVAXg7DlhIIB9cAhRiJE/5ksfZfaJ7CI/RdEysU7fCWkspcNig==
dependencies:
"@hapi/joi" "^17.1.1"
@@ -1186,15 +1186,14 @@
lodash "^4.17.15"
write-file-atomic "^2.3.0"
"@expo/[email protected]7":
version "8.2.27"
resolved "https://registry.yarnpkg.com/@expo/json-file/-/json-file-8.2.27.tgz#548ff0a9989f9f789cdb2b689d17a4faf491de67"
integrity sha512-Iyqg1jbXOTg0JfCGwMrkaaRmVFjQrWDBQAhYLTdvOD3GrXYuKI1vUV+3Wqw0NnU+TYoNUpi7aB8dNzPvLj0oag==
"@expo/[email protected]8-alpha.0":
version "8.2.28-alpha.0"
resolved "https://registry.yarnpkg.com/@expo/json-file/-/json-file-8.2.28-alpha.0.tgz#0e5280c82a17165be12c6a95cd95ec108c6dfe7b"
integrity sha512-cCQdw/Nfw8doXjN3onvUnWkuJjtVxx2iUjSOLMydvgI87YpW3x05uUXOVs4P+77YFVoFS6xbki+fmKK2JSCf8w==
dependencies:
"@babel/code-frame" "~7.10.4"
fs-extra "9.0.0"
json5 "^1.0.1"
lodash "^4.17.19"
write-file-atomic "^2.3.0"
"@expo/[email protected]":
@@ -3073,31 +3072,6 @@
dependencies:
"@types/node" ">= 8"
"@react-native-community/cli-platform-ios@^4.10.0":
version "4.13.0"
resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-4.13.0.tgz#a738915c68cac86df54e578b59a1311ea62b1aef"
integrity sha512-6THlTu8zp62efkzimfGr3VIuQJ2514o+vScZERJCV1xgEi8XtV7mb/ZKt9o6Y9WGxKKkc0E0b/aVAtgy+L27CA==
dependencies:
"@react-native-community/cli-tools" "^4.13.0"
chalk "^3.0.0"
glob "^7.1.3"
js-yaml "^3.13.1"
lodash "^4.17.15"
plist "^3.0.1"
xcode "^2.0.0"
"@react-native-community/cli-tools@^4.13.0":
version "4.13.0"
resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-4.13.0.tgz#b406463d33af16cedc4305a9a9257ed32845cf1b"
integrity sha512-s4f489h5+EJksn4CfheLgv5PGOM0CDmK1UEBLw2t/ncWs3cW2VI7vXzndcd/WJHTv3GntJhXDcJMuL+Z2IAOgg==
dependencies:
chalk "^3.0.0"
lodash "^4.17.15"
mime "^2.4.1"
node-fetch "^2.6.0"
open "^6.2.0"
shell-quote "1.6.1"
"@samverschueren/stream-to-observable@^0.3.0":
version "0.3.1"
resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz#a21117b19ee9be70c379ec1877537ef2e1c63301"
@@ -3784,11 +3758,6 @@ array-filter@^1.0.0:
resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83"
integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=
array-filter@~0.0.0:
version "0.0.1"
resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec"
integrity sha1-fajPLiZijtcygDWB/SH2fKzS7uw=
array-find-index@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
@@ -3808,16 +3777,6 @@ array-includes@^3.1.1:
es-abstract "^1.17.0"
is-string "^1.0.5"
array-map@~0.0.0:
version "0.0.0"
resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662"
integrity sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=
array-reduce@~0.0.0:
version "0.0.0"
resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b"
integrity sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=
array-union@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
@@ -7509,11 +7468,6 @@ is-windows@^1.0.0, is-windows@^1.0.1, is-windows@^1.0.2:
resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
is-wsl@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=
is-wsl@^2.1.1, is-wsl@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
@@ -8842,7 +8796,7 @@ mime@^1.3.4:
resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
mime@^2.4.1, mime@^2.4.4, mime@^2.4.7:
mime@^2.4.4, mime@^2.4.7:
version "2.4.7"
resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.7.tgz#962aed9be0ed19c91fd7dc2ece5d7f4e89a90d74"
integrity sha512-dhNd1uA2u397uQk3Nv5LM4lm93WYDUXFn3Fu291FJerns4jyTudqhIWe4W04YLy7Uk1tm1Ore04NpjRvQp/NPA==
@@ -9450,13 +9404,6 @@ onetime@^5.1.0:
dependencies:
mimic-fn "^2.1.0"
open@^6.2.0:
version "6.4.0"
resolved "https://registry.yarnpkg.com/open/-/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9"
integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==
dependencies:
is-wsl "^1.1.0"
optionator@^0.8.1, optionator@^0.8.3:
version "0.8.3"
resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495"
@@ -10865,16 +10812,6 @@ shebang-regex@^3.0.0:
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
[email protected]:
version "1.6.1"
resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767"
integrity sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=
dependencies:
array-filter "~0.0.0"
array-map "~0.0.0"
array-reduce "~0.0.0"
jsonify "~0.0.0"
shellwords@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b"
@@ -12422,7 +12359,7 @@ ws@^7.2.3:
resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8"
integrity sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==
xcode@^2.0.0, xcode@^2.1.0:
xcode@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/xcode/-/xcode-2.1.0.tgz#bab64a7e954bb50ca8d19da7e09531c65a43ecfe"
integrity sha512-uCrmPITrqTEzhn0TtT57fJaNaw8YJs1aCzs+P/QqxsDbvPZSv7XMPPwXrKvHtD6pLjBM/NaVwraWJm8q83Y4iQ==