mirror of
https://github.com/expo/eas-cli.git
synced 2026-11-15 03:38:08 -10:00
Compare commits
47
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2be2536654 | ||
|
|
bd0a696b4e | ||
|
|
230e364379 | ||
|
|
eaebb72813 | ||
|
|
cf39201de3 | ||
|
|
bb3e815716 | ||
|
|
beec6ad305 | ||
|
|
84b47924b7 | ||
|
|
3ff62a9c79 | ||
|
|
2751a7e0de | ||
|
|
7139e4f576 | ||
|
|
ecbe49abaa | ||
|
|
6af86b545f | ||
|
|
a9a77b6fcb | ||
|
|
82fccc8193 | ||
|
|
5f800b5be6 | ||
|
|
3817e2d387 | ||
|
|
eb4c5e073d | ||
|
|
eefc133eda | ||
|
|
7f9969429d | ||
|
|
26ff083b7c | ||
|
|
6414361d4c | ||
|
|
28ce6b7dc7 | ||
|
|
4772f1aea5 | ||
|
|
2a1fd290b9 | ||
|
|
e83565c518 | ||
|
|
f38a739858 | ||
|
|
3fcbcf5f6b | ||
|
|
30936911ad | ||
|
|
a0606adde9 | ||
|
|
f0e3b648a1 | ||
|
|
3ed5e7821e | ||
|
|
466339b90e | ||
|
|
1d07e08a70 | ||
|
|
c21270e062 | ||
|
|
afb548599e | ||
|
|
0b54169631 | ||
|
|
af13f3987e | ||
|
|
3ea71e57cb | ||
|
|
261dbb4be4 | ||
|
|
5dd02e2b40 | ||
|
|
9447cbc478 | ||
|
|
562bd3fe9c | ||
|
|
d6840de401 | ||
|
|
d9bd20a47b | ||
|
|
13da8d4bfc | ||
|
|
a99fe9aef5 |
No files matched your search
@@ -15,7 +15,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
node: ['16', '18', '20']
|
node: ['18', '20', '22']
|
||||||
include:
|
include:
|
||||||
- node: '20'
|
- node: '20'
|
||||||
coverage: true
|
coverage: true
|
||||||
|
|||||||
@@ -12,6 +12,71 @@ This is the log of notable changes to EAS CLI and related packages.
|
|||||||
|
|
||||||
### 🧹 Chores
|
### 🧹 Chores
|
||||||
|
|
||||||
|
- Remove any mentions of deleted Xcode < 15 images. ([#2438](https://github.com/expo/eas-cli/pull/2438) by [@szdziedzic](https://github.com/szdziedzic))
|
||||||
|
|
||||||
|
## [10.0.2](https://github.com/expo/eas-cli/releases/tag/v10.0.2) - 2024-06-17
|
||||||
|
|
||||||
|
### 🐛 Bug fixes
|
||||||
|
|
||||||
|
- Fix parsing of `build.gradle` file by `gradle-to-js` parser by filtering out empty single line comments. ([#2435](https://github.com/expo/eas-cli/pull/2435) by [@szdziedzic](https://github.com/szdziedzic))
|
||||||
|
|
||||||
|
## [10.0.1](https://github.com/expo/eas-cli/releases/tag/v10.0.1) - 2024-06-17
|
||||||
|
|
||||||
|
### 🧹 Chores
|
||||||
|
|
||||||
|
- Add clarification to private-key flag in command line help. ([#2432](https://github.com/expo/eas-cli/pull/2432) by [@quinlanj](https://github.com/quinlanj))
|
||||||
|
|
||||||
|
## [10.0.0](https://github.com/expo/eas-cli/releases/tag/v10.0.0) - 2024-06-13
|
||||||
|
|
||||||
|
### 🛠 Breaking changes
|
||||||
|
|
||||||
|
- Drop support for Node 16. ([#2413](https://github.com/expo/eas-cli/pull/2413) by [@byCedric](https://github.com/byCedric))
|
||||||
|
- Update [`eas-build`](https://github.com/expo/eas-build) dependencies to the version requiring Node 18 as minimal Node version. ([#2416](https://github.com/expo/eas-cli/pull/2416) by [@expo-bot](https://github.com/expo-bot))
|
||||||
|
|
||||||
|
### 🐛 Bug fixes
|
||||||
|
|
||||||
|
- Resolve correct submit profile configuration for `eas build` command with `--auto-submit-with-profile` flag. ([#2425](https://github.com/expo/eas-cli/pull/2425) by [@szdziedzic](https://github.com/szdziedzic))
|
||||||
|
- Correctly parse the EXPO_APPLE_PROVIER_ID environment variable. ([#2349](https://github.com/expo/eas-cli/pull/2349) by [@louix](https://github.com/louix))
|
||||||
|
|
||||||
|
### 🧹 Chores
|
||||||
|
|
||||||
|
- Update lockfile to only include `@types/[email protected]`. ([#2412](https://github.com/expo/eas-cli/pull/2412) by [@byCedric](https://github.com/byCedric))
|
||||||
|
- Update test workflow Node versions to 18, 20, and 22. ([#2413](https://github.com/expo/eas-cli/pull/2413) by [@byCedric](https://github.com/byCedric))
|
||||||
|
|
||||||
|
## [9.2.0](https://github.com/expo/eas-cli/releases/tag/v9.2.0) - 2024-06-06
|
||||||
|
|
||||||
|
### 🎉 New features
|
||||||
|
|
||||||
|
- Add `target-profile` and `source-profile` flags to the `eas build:resign` command. ([#2410](https://github.com/expo/eas-cli/pull/2410) by [@szdziedzic](https://github.com/szdziedzic))
|
||||||
|
- Display build profile in the output of `eas build:list`. ([#2408](https://github.com/expo/eas-cli/pull/2408) by [@szdziedzic](https://github.com/szdziedzic))
|
||||||
|
|
||||||
|
### 🐛 Bug fixes
|
||||||
|
|
||||||
|
- Use the correct app config for no GitHub flow in `init:onboarding`. ([#2397](https://github.com/expo/eas-cli/pull/2397) by [@szdziedzic](https://github.com/szdziedzic))
|
||||||
|
- Disallow picking expired builds as submit archive source. ([#2406](https://github.com/expo/eas-cli/pull/2406) by [@sjchmiela](https://github.com/sjchmiela))
|
||||||
|
|
||||||
|
### 🧹 Chores
|
||||||
|
|
||||||
|
- Print network error message if present. ([#2407](https://github.com/expo/eas-cli/pull/2407) by [@szdziedzic](https://github.com/szdziedzic))
|
||||||
|
- Make flags for `eas build:list` command more aligned with flags for rest of the commands. ([#2409](https://github.com/expo/eas-cli/pull/2409) by [@szdziedzic](https://github.com/szdziedzic))
|
||||||
|
|
||||||
|
## [9.1.0](https://github.com/expo/eas-cli/releases/tag/v9.1.0) - 2024-05-23
|
||||||
|
|
||||||
|
### 🎉 New features
|
||||||
|
|
||||||
|
- Make `eas init:onboarding` command public. ([#2399](https://github.com/expo/eas-cli/pull/2399) by [@szdziedzic](https://github.com/szdziedzic))
|
||||||
|
|
||||||
|
## [9.0.10](https://github.com/expo/eas-cli/releases/tag/v9.0.10) - 2024-05-22
|
||||||
|
|
||||||
|
## [9.0.9](https://github.com/expo/eas-cli/releases/tag/v9.0.9) - 2024-05-22
|
||||||
|
|
||||||
|
## [9.0.8](https://github.com/expo/eas-cli/releases/tag/v9.0.8) - 2024-05-21
|
||||||
|
|
||||||
|
### 🧹 Chores
|
||||||
|
|
||||||
|
- Upgrade [`eas-build`](https://github.com/expo/eas-build) dependencies. ([#2387](https://github.com/expo/eas-cli/pull/2387) by [@expo-bot](https://github.com/expo-bot))
|
||||||
|
- Improve displaying of device registration QR code. ([#2391](https://github.com/expo/eas-cli/pull/2391) by [@szdziedzic](https://github.com/szdziedzic))
|
||||||
|
|
||||||
## [9.0.7](https://github.com/expo/eas-cli/releases/tag/v9.0.7) - 2024-05-17
|
## [9.0.7](https://github.com/expo/eas-cli/releases/tag/v9.0.7) - 2024-05-17
|
||||||
|
|
||||||
## [9.0.6](https://github.com/expo/eas-cli/releases/tag/v9.0.6) - 2024-05-15
|
## [9.0.6](https://github.com/expo/eas-cli/releases/tag/v9.0.6) - 2024-05-15
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"npmClient": "yarn",
|
"npmClient": "yarn",
|
||||||
"version": "9.0.7",
|
"version": "10.0.2",
|
||||||
"$schema": "node_modules/lerna/schemas/lerna-schema.json"
|
"$schema": "node_modules/lerna/schemas/lerna-schema.json"
|
||||||
}
|
}
|
||||||
+152
-82
@@ -94,14 +94,17 @@ eas --help COMMAND
|
|||||||
* [`eas diagnostics`](#eas-diagnostics)
|
* [`eas diagnostics`](#eas-diagnostics)
|
||||||
* [`eas help [COMMAND]`](#eas-help-command)
|
* [`eas help [COMMAND]`](#eas-help-command)
|
||||||
* [`eas init`](#eas-init)
|
* [`eas init`](#eas-init)
|
||||||
|
* [`eas init:onboarding [TARGET_PROJECT_DIRECTORY]`](#eas-initonboarding-target_project_directory)
|
||||||
* [`eas login`](#eas-login)
|
* [`eas login`](#eas-login)
|
||||||
* [`eas logout`](#eas-logout)
|
* [`eas logout`](#eas-logout)
|
||||||
* [`eas metadata:lint`](#eas-metadatalint)
|
* [`eas metadata:lint`](#eas-metadatalint)
|
||||||
* [`eas metadata:pull`](#eas-metadatapull)
|
* [`eas metadata:pull`](#eas-metadatapull)
|
||||||
* [`eas metadata:push`](#eas-metadatapush)
|
* [`eas metadata:push`](#eas-metadatapush)
|
||||||
|
* [`eas onboarding [TARGET_PROJECT_DIRECTORY]`](#eas-onboarding-target_project_directory)
|
||||||
* [`eas open`](#eas-open)
|
* [`eas open`](#eas-open)
|
||||||
* [`eas project:info`](#eas-projectinfo)
|
* [`eas project:info`](#eas-projectinfo)
|
||||||
* [`eas project:init`](#eas-projectinit)
|
* [`eas project:init`](#eas-projectinit)
|
||||||
|
* [`eas project:onboarding [TARGET_PROJECT_DIRECTORY]`](#eas-projectonboarding-target_project_directory)
|
||||||
* [`eas secret:create`](#eas-secretcreate)
|
* [`eas secret:create`](#eas-secretcreate)
|
||||||
* [`eas secret:delete`](#eas-secretdelete)
|
* [`eas secret:delete`](#eas-secretdelete)
|
||||||
* [`eas secret:list`](#eas-secretlist)
|
* [`eas secret:list`](#eas-secretlist)
|
||||||
@@ -140,7 +143,7 @@ ALIASES
|
|||||||
$ eas login
|
$ eas login
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/account/login.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/account/login.ts)_
|
_See code: [packages/eas-cli/src/commands/account/login.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/account/login.ts)_
|
||||||
|
|
||||||
## `eas account:logout`
|
## `eas account:logout`
|
||||||
|
|
||||||
@@ -157,7 +160,7 @@ ALIASES
|
|||||||
$ eas logout
|
$ eas logout
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/account/logout.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/account/logout.ts)_
|
_See code: [packages/eas-cli/src/commands/account/logout.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/account/logout.ts)_
|
||||||
|
|
||||||
## `eas account:view`
|
## `eas account:view`
|
||||||
|
|
||||||
@@ -174,7 +177,7 @@ ALIASES
|
|||||||
$ eas whoami
|
$ eas whoami
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/account/view.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/account/view.ts)_
|
_See code: [packages/eas-cli/src/commands/account/view.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/account/view.ts)_
|
||||||
|
|
||||||
## `eas analytics [STATUS]`
|
## `eas analytics [STATUS]`
|
||||||
|
|
||||||
@@ -188,7 +191,7 @@ DESCRIPTION
|
|||||||
display or change analytics settings
|
display or change analytics settings
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/analytics.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/analytics.ts)_
|
_See code: [packages/eas-cli/src/commands/analytics.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/analytics.ts)_
|
||||||
|
|
||||||
## `eas autocomplete [SHELL]`
|
## `eas autocomplete [SHELL]`
|
||||||
|
|
||||||
@@ -240,7 +243,7 @@ DESCRIPTION
|
|||||||
create a branch
|
create a branch
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/branch/create.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/branch/create.ts)_
|
_See code: [packages/eas-cli/src/commands/branch/create.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/branch/create.ts)_
|
||||||
|
|
||||||
## `eas branch:delete [NAME]`
|
## `eas branch:delete [NAME]`
|
||||||
|
|
||||||
@@ -261,7 +264,7 @@ DESCRIPTION
|
|||||||
delete a branch
|
delete a branch
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/branch/delete.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/branch/delete.ts)_
|
_See code: [packages/eas-cli/src/commands/branch/delete.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/branch/delete.ts)_
|
||||||
|
|
||||||
## `eas branch:list`
|
## `eas branch:list`
|
||||||
|
|
||||||
@@ -281,7 +284,7 @@ DESCRIPTION
|
|||||||
list all branches
|
list all branches
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/branch/list.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/branch/list.ts)_
|
_See code: [packages/eas-cli/src/commands/branch/list.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/branch/list.ts)_
|
||||||
|
|
||||||
## `eas branch:rename`
|
## `eas branch:rename`
|
||||||
|
|
||||||
@@ -301,7 +304,7 @@ DESCRIPTION
|
|||||||
rename a branch
|
rename a branch
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/branch/rename.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/branch/rename.ts)_
|
_See code: [packages/eas-cli/src/commands/branch/rename.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/branch/rename.ts)_
|
||||||
|
|
||||||
## `eas branch:view [NAME]`
|
## `eas branch:view [NAME]`
|
||||||
|
|
||||||
@@ -324,7 +327,7 @@ DESCRIPTION
|
|||||||
view a branch
|
view a branch
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/branch/view.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/branch/view.ts)_
|
_See code: [packages/eas-cli/src/commands/branch/view.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/branch/view.ts)_
|
||||||
|
|
||||||
## `eas build`
|
## `eas build`
|
||||||
|
|
||||||
@@ -361,7 +364,7 @@ DESCRIPTION
|
|||||||
start a build
|
start a build
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/build/index.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/build/index.ts)_
|
_See code: [packages/eas-cli/src/commands/build/index.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/build/index.ts)_
|
||||||
|
|
||||||
## `eas build:cancel [BUILD_ID]`
|
## `eas build:cancel [BUILD_ID]`
|
||||||
|
|
||||||
@@ -380,7 +383,7 @@ DESCRIPTION
|
|||||||
cancel a build
|
cancel a build
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/build/cancel.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/build/cancel.ts)_
|
_See code: [packages/eas-cli/src/commands/build/cancel.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/build/cancel.ts)_
|
||||||
|
|
||||||
## `eas build:configure`
|
## `eas build:configure`
|
||||||
|
|
||||||
@@ -397,7 +400,7 @@ DESCRIPTION
|
|||||||
configure the project to support EAS Build
|
configure the project to support EAS Build
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/build/configure.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/build/configure.ts)_
|
_See code: [packages/eas-cli/src/commands/build/configure.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/build/configure.ts)_
|
||||||
|
|
||||||
## `eas build:delete [BUILD_ID]`
|
## `eas build:delete [BUILD_ID]`
|
||||||
|
|
||||||
@@ -416,7 +419,7 @@ DESCRIPTION
|
|||||||
delete a build
|
delete a build
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/build/delete.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/build/delete.ts)_
|
_See code: [packages/eas-cli/src/commands/build/delete.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/build/delete.ts)_
|
||||||
|
|
||||||
## `eas build:inspect`
|
## `eas build:inspect`
|
||||||
|
|
||||||
@@ -451,7 +454,7 @@ DESCRIPTION
|
|||||||
inspect the state of the project at specific build stages, useful for troubleshooting
|
inspect the state of the project at specific build stages, useful for troubleshooting
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/build/inspect.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/build/inspect.ts)_
|
_See code: [packages/eas-cli/src/commands/build/inspect.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/build/inspect.ts)_
|
||||||
|
|
||||||
## `eas build:list`
|
## `eas build:list`
|
||||||
|
|
||||||
@@ -459,20 +462,27 @@ list all builds for your project
|
|||||||
|
|
||||||
```
|
```
|
||||||
USAGE
|
USAGE
|
||||||
$ eas build:list [--platform all|android|ios] [--status
|
$ eas build:list [-p android|ios|all] [--status
|
||||||
new|in-queue|in-progress|pending-cancel|errored|finished|canceled] [--distribution store|internal|simulator]
|
new|in-queue|in-progress|pending-cancel|errored|finished|canceled] [--distribution store|internal|simulator]
|
||||||
[--channel <value>] [--appVersion <value>] [--appBuildVersion <value>] [--sdkVersion <value>] [--runtimeVersion
|
[--channel <value>] [--app-version <value>] [--app-build-version <value>] [--sdk-version <value>] [--runtime-version
|
||||||
<value>] [--appIdentifier <value>] [--buildProfile <value>] [--gitCommitHash <value>] [--offset <value>] [--limit
|
<value>] [--app-identifier <value>] [-e <value>] [--git-commit-hash <value>] [--offset <value>] [--limit <value>]
|
||||||
<value>] [--json --non-interactive] [--simulator]
|
[--json --non-interactive] [--simulator]
|
||||||
|
|
||||||
FLAGS
|
FLAGS
|
||||||
--appBuildVersion=<value>
|
-e, --build-profile=<value> Filter only builds created with the
|
||||||
--appIdentifier=<value>
|
specified build profile
|
||||||
--appVersion=<value>
|
-p, --platform=(android|ios|all)
|
||||||
--buildProfile=<value>
|
--app-build-version=<value> Filter only builds created with the
|
||||||
|
specified app build version
|
||||||
|
--app-identifier=<value> Filter only builds created with the
|
||||||
|
specified app identifier
|
||||||
|
--app-version=<value> Filter only builds created with the
|
||||||
|
specified main app version
|
||||||
--channel=<value>
|
--channel=<value>
|
||||||
--distribution=(store|internal|simulator)
|
--distribution=(store|internal|simulator) Filter only builds with the specified
|
||||||
--gitCommitHash=<value>
|
distribution type
|
||||||
|
--git-commit-hash=<value> Filter only builds created with the
|
||||||
|
specified git commit hash
|
||||||
--json Enable JSON output, non-JSON messages
|
--json Enable JSON output, non-JSON messages
|
||||||
will be printed to stderr.
|
will be printed to stderr.
|
||||||
--limit=<value> The number of items to fetch each query.
|
--limit=<value> The number of items to fetch each query.
|
||||||
@@ -480,19 +490,21 @@ FLAGS
|
|||||||
--non-interactive Run the command in non-interactive mode.
|
--non-interactive Run the command in non-interactive mode.
|
||||||
--offset=<value> Start queries from specified index. Use
|
--offset=<value> Start queries from specified index. Use
|
||||||
for paginating results. Defaults to 0.
|
for paginating results. Defaults to 0.
|
||||||
--platform=(all|android|ios)
|
--runtime-version=<value> Filter only builds created with the
|
||||||
--runtimeVersion=<value>
|
specified runtime version
|
||||||
--sdkVersion=<value>
|
--sdk-version=<value> Filter only builds created with the
|
||||||
|
specified Expo SDK version
|
||||||
--simulator Filter only iOS simulator builds. Can
|
--simulator Filter only iOS simulator builds. Can
|
||||||
only be used with --platform flag set to
|
only be used with --platform flag set to
|
||||||
"ios"
|
"ios"
|
||||||
--status=(new|in-queue|in-progress|pending-cancel|errored|finished|canceled)
|
--status=(new|in-queue|in-progress|pending-cancel|errored|finished|canceled) Filter only builds with the specified
|
||||||
|
status
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
list all builds for your project
|
list all builds for your project
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/build/list.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/build/list.ts)_
|
_See code: [packages/eas-cli/src/commands/build/list.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/build/list.ts)_
|
||||||
|
|
||||||
## `eas build:resign`
|
## `eas build:resign`
|
||||||
|
|
||||||
@@ -500,25 +512,28 @@ re-sign a build archive
|
|||||||
|
|
||||||
```
|
```
|
||||||
USAGE
|
USAGE
|
||||||
$ eas build:resign [-p android|ios] [-e <value>] [--wait] [--id <value>] [--offset <value>] [--limit <value>]
|
$ eas build:resign [-p android|ios] [-e <value>] [--source-profile <value>] [--wait] [--id <value>] [--offset
|
||||||
[--json --non-interactive]
|
<value>] [--limit <value>] [--json --non-interactive]
|
||||||
|
|
||||||
FLAGS
|
FLAGS
|
||||||
-e, --profile=PROFILE_NAME Name of the build profile from eas.json. Defaults to "production" if defined in
|
-e, --target-profile=PROFILE_NAME Name of the target build profile from eas.json. Credentials and environment
|
||||||
eas.json.
|
variables from this profile will be used when re-signing. Defaults to "production"
|
||||||
|
if defined in eas.json.
|
||||||
-p, --platform=(android|ios)
|
-p, --platform=(android|ios)
|
||||||
--id=<value> ID of the build to re-sign.
|
--id=<value> ID of the build to re-sign.
|
||||||
--json Enable JSON output, non-JSON messages will be printed to stderr.
|
--json Enable JSON output, non-JSON messages will be printed to stderr.
|
||||||
--limit=<value> The number of items to fetch each query. Defaults to 50 and is capped at 100.
|
--limit=<value> The number of items to fetch each query. Defaults to 50 and is capped at 100.
|
||||||
--non-interactive Run the command in non-interactive mode.
|
--non-interactive Run the command in non-interactive mode.
|
||||||
--offset=<value> Start queries from specified index. Use for paginating results. Defaults to 0.
|
--offset=<value> Start queries from specified index. Use for paginating results. Defaults to 0.
|
||||||
|
--source-profile=PROFILE_NAME Name of the source build profile from eas.json. Used to filter builds eligible for
|
||||||
|
re-signing.
|
||||||
--[no-]wait Wait for build(s) to complete.
|
--[no-]wait Wait for build(s) to complete.
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
re-sign a build archive
|
re-sign a build archive
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/build/resign.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/build/resign.ts)_
|
_See code: [packages/eas-cli/src/commands/build/resign.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/build/resign.ts)_
|
||||||
|
|
||||||
## `eas build:run`
|
## `eas build:run`
|
||||||
|
|
||||||
@@ -544,7 +559,7 @@ DESCRIPTION
|
|||||||
run simulator/emulator builds from eas-cli
|
run simulator/emulator builds from eas-cli
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/build/run.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/build/run.ts)_
|
_See code: [packages/eas-cli/src/commands/build/run.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/build/run.ts)_
|
||||||
|
|
||||||
## `eas build:submit`
|
## `eas build:submit`
|
||||||
|
|
||||||
@@ -594,7 +609,7 @@ DESCRIPTION
|
|||||||
get the latest version from EAS servers
|
get the latest version from EAS servers
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/build/version/get.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/build/version/get.ts)_
|
_See code: [packages/eas-cli/src/commands/build/version/get.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/build/version/get.ts)_
|
||||||
|
|
||||||
## `eas build:version:set`
|
## `eas build:version:set`
|
||||||
|
|
||||||
@@ -613,7 +628,7 @@ DESCRIPTION
|
|||||||
update version of an app
|
update version of an app
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/build/version/set.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/build/version/set.ts)_
|
_See code: [packages/eas-cli/src/commands/build/version/set.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/build/version/set.ts)_
|
||||||
|
|
||||||
## `eas build:version:sync`
|
## `eas build:version:sync`
|
||||||
|
|
||||||
@@ -632,7 +647,7 @@ DESCRIPTION
|
|||||||
update a version in native code with a value stored on EAS servers
|
update a version in native code with a value stored on EAS servers
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/build/version/sync.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/build/version/sync.ts)_
|
_See code: [packages/eas-cli/src/commands/build/version/sync.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/build/version/sync.ts)_
|
||||||
|
|
||||||
## `eas build:view [BUILD_ID]`
|
## `eas build:view [BUILD_ID]`
|
||||||
|
|
||||||
@@ -649,7 +664,7 @@ DESCRIPTION
|
|||||||
view a build for your project
|
view a build for your project
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/build/view.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/build/view.ts)_
|
_See code: [packages/eas-cli/src/commands/build/view.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/build/view.ts)_
|
||||||
|
|
||||||
## `eas channel:create [NAME]`
|
## `eas channel:create [NAME]`
|
||||||
|
|
||||||
@@ -670,7 +685,7 @@ DESCRIPTION
|
|||||||
create a channel
|
create a channel
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/channel/create.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/channel/create.ts)_
|
_See code: [packages/eas-cli/src/commands/channel/create.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/channel/create.ts)_
|
||||||
|
|
||||||
## `eas channel:edit [NAME]`
|
## `eas channel:edit [NAME]`
|
||||||
|
|
||||||
@@ -692,7 +707,7 @@ DESCRIPTION
|
|||||||
point a channel at a new branch
|
point a channel at a new branch
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/channel/edit.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/channel/edit.ts)_
|
_See code: [packages/eas-cli/src/commands/channel/edit.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/channel/edit.ts)_
|
||||||
|
|
||||||
## `eas channel:list`
|
## `eas channel:list`
|
||||||
|
|
||||||
@@ -712,7 +727,7 @@ DESCRIPTION
|
|||||||
list all channels
|
list all channels
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/channel/list.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/channel/list.ts)_
|
_See code: [packages/eas-cli/src/commands/channel/list.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/channel/list.ts)_
|
||||||
|
|
||||||
## `eas channel:rollout [CHANNEL]`
|
## `eas channel:rollout [CHANNEL]`
|
||||||
|
|
||||||
@@ -737,14 +752,15 @@ FLAGS
|
|||||||
--action=create
|
--action=create
|
||||||
--private-key-path=<value> File containing the PEM-encoded private key corresponding to the certificate
|
--private-key-path=<value> File containing the PEM-encoded private key corresponding to the certificate
|
||||||
in expo-updates' configuration. Defaults to a file named "private-key.pem" in
|
in expo-updates' configuration. Defaults to a file named "private-key.pem" in
|
||||||
the certificate's directory.
|
the certificate's directory. Only relevant if you are using code signing:
|
||||||
|
https://docs.expo.dev/eas-update/code-signing/
|
||||||
--runtime-version=<value> Runtime version to target. Use with --action=create
|
--runtime-version=<value> Runtime version to target. Use with --action=create
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
Roll a new branch out on a channel incrementally.
|
Roll a new branch out on a channel incrementally.
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/channel/rollout.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/channel/rollout.ts)_
|
_See code: [packages/eas-cli/src/commands/channel/rollout.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/channel/rollout.ts)_
|
||||||
|
|
||||||
## `eas channel:view [NAME]`
|
## `eas channel:view [NAME]`
|
||||||
|
|
||||||
@@ -767,7 +783,7 @@ DESCRIPTION
|
|||||||
view a channel
|
view a channel
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/channel/view.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/channel/view.ts)_
|
_See code: [packages/eas-cli/src/commands/channel/view.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/channel/view.ts)_
|
||||||
|
|
||||||
## `eas config`
|
## `eas config`
|
||||||
|
|
||||||
@@ -788,7 +804,7 @@ DESCRIPTION
|
|||||||
display project configuration (app.json + eas.json)
|
display project configuration (app.json + eas.json)
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/config.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/config.ts)_
|
_See code: [packages/eas-cli/src/commands/config.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/config.ts)_
|
||||||
|
|
||||||
## `eas credentials`
|
## `eas credentials`
|
||||||
|
|
||||||
@@ -805,7 +821,7 @@ DESCRIPTION
|
|||||||
manage credentials
|
manage credentials
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/credentials/index.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/credentials/index.ts)_
|
_See code: [packages/eas-cli/src/commands/credentials/index.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/credentials/index.ts)_
|
||||||
|
|
||||||
## `eas credentials:configure-build`
|
## `eas credentials:configure-build`
|
||||||
|
|
||||||
@@ -823,7 +839,7 @@ DESCRIPTION
|
|||||||
Set up credentials for building your project.
|
Set up credentials for building your project.
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/credentials/configure-build.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/credentials/configure-build.ts)_
|
_See code: [packages/eas-cli/src/commands/credentials/configure-build.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/credentials/configure-build.ts)_
|
||||||
|
|
||||||
## `eas device:create`
|
## `eas device:create`
|
||||||
|
|
||||||
@@ -837,7 +853,7 @@ DESCRIPTION
|
|||||||
register new Apple Devices to use for internal distribution
|
register new Apple Devices to use for internal distribution
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/device/create.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/device/create.ts)_
|
_See code: [packages/eas-cli/src/commands/device/create.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/device/create.ts)_
|
||||||
|
|
||||||
## `eas device:delete`
|
## `eas device:delete`
|
||||||
|
|
||||||
@@ -857,7 +873,7 @@ DESCRIPTION
|
|||||||
remove a registered device from your account
|
remove a registered device from your account
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/device/delete.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/device/delete.ts)_
|
_See code: [packages/eas-cli/src/commands/device/delete.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/device/delete.ts)_
|
||||||
|
|
||||||
## `eas device:list`
|
## `eas device:list`
|
||||||
|
|
||||||
@@ -878,7 +894,7 @@ DESCRIPTION
|
|||||||
list all registered devices for your account
|
list all registered devices for your account
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/device/list.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/device/list.ts)_
|
_See code: [packages/eas-cli/src/commands/device/list.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/device/list.ts)_
|
||||||
|
|
||||||
## `eas device:rename`
|
## `eas device:rename`
|
||||||
|
|
||||||
@@ -899,7 +915,7 @@ DESCRIPTION
|
|||||||
rename a registered device
|
rename a registered device
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/device/rename.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/device/rename.ts)_
|
_See code: [packages/eas-cli/src/commands/device/rename.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/device/rename.ts)_
|
||||||
|
|
||||||
## `eas device:view [UDID]`
|
## `eas device:view [UDID]`
|
||||||
|
|
||||||
@@ -913,7 +929,7 @@ DESCRIPTION
|
|||||||
view a device for your project
|
view a device for your project
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/device/view.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/device/view.ts)_
|
_See code: [packages/eas-cli/src/commands/device/view.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/device/view.ts)_
|
||||||
|
|
||||||
## `eas diagnostics`
|
## `eas diagnostics`
|
||||||
|
|
||||||
@@ -927,7 +943,7 @@ DESCRIPTION
|
|||||||
display environment info
|
display environment info
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/diagnostics.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/diagnostics.ts)_
|
_See code: [packages/eas-cli/src/commands/diagnostics.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/diagnostics.ts)_
|
||||||
|
|
||||||
## `eas help [COMMAND]`
|
## `eas help [COMMAND]`
|
||||||
|
|
||||||
@@ -969,6 +985,22 @@ ALIASES
|
|||||||
$ eas init
|
$ eas init
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## `eas init:onboarding [TARGET_PROJECT_DIRECTORY]`
|
||||||
|
|
||||||
|
continue onboarding process started on the https://expo.new website.
|
||||||
|
|
||||||
|
```
|
||||||
|
USAGE
|
||||||
|
$ eas init:onboarding [TARGET_PROJECT_DIRECTORY]
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
continue onboarding process started on the https://expo.new website.
|
||||||
|
|
||||||
|
ALIASES
|
||||||
|
$ eas init:onboarding
|
||||||
|
$ eas onboarding
|
||||||
|
```
|
||||||
|
|
||||||
## `eas login`
|
## `eas login`
|
||||||
|
|
||||||
log in with your Expo account
|
log in with your Expo account
|
||||||
@@ -1018,7 +1050,7 @@ DESCRIPTION
|
|||||||
validate the local store configuration
|
validate the local store configuration
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/metadata/lint.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/metadata/lint.ts)_
|
_See code: [packages/eas-cli/src/commands/metadata/lint.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/metadata/lint.ts)_
|
||||||
|
|
||||||
## `eas metadata:pull`
|
## `eas metadata:pull`
|
||||||
|
|
||||||
@@ -1035,7 +1067,7 @@ DESCRIPTION
|
|||||||
generate the local store configuration from the app stores
|
generate the local store configuration from the app stores
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/metadata/pull.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/metadata/pull.ts)_
|
_See code: [packages/eas-cli/src/commands/metadata/pull.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/metadata/pull.ts)_
|
||||||
|
|
||||||
## `eas metadata:push`
|
## `eas metadata:push`
|
||||||
|
|
||||||
@@ -1052,7 +1084,23 @@ DESCRIPTION
|
|||||||
sync the local store configuration to the app stores
|
sync the local store configuration to the app stores
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/metadata/push.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/metadata/push.ts)_
|
_See code: [packages/eas-cli/src/commands/metadata/push.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/metadata/push.ts)_
|
||||||
|
|
||||||
|
## `eas onboarding [TARGET_PROJECT_DIRECTORY]`
|
||||||
|
|
||||||
|
continue onboarding process started on the https://expo.new website.
|
||||||
|
|
||||||
|
```
|
||||||
|
USAGE
|
||||||
|
$ eas onboarding [TARGET_PROJECT_DIRECTORY]
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
continue onboarding process started on the https://expo.new website.
|
||||||
|
|
||||||
|
ALIASES
|
||||||
|
$ eas init:onboarding
|
||||||
|
$ eas onboarding
|
||||||
|
```
|
||||||
|
|
||||||
## `eas open`
|
## `eas open`
|
||||||
|
|
||||||
@@ -1066,7 +1114,7 @@ DESCRIPTION
|
|||||||
open the project page in a web browser
|
open the project page in a web browser
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/open.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/open.ts)_
|
_See code: [packages/eas-cli/src/commands/open.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/open.ts)_
|
||||||
|
|
||||||
## `eas project:info`
|
## `eas project:info`
|
||||||
|
|
||||||
@@ -1080,7 +1128,7 @@ DESCRIPTION
|
|||||||
information about the current project
|
information about the current project
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/project/info.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/project/info.ts)_
|
_See code: [packages/eas-cli/src/commands/project/info.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/project/info.ts)_
|
||||||
|
|
||||||
## `eas project:init`
|
## `eas project:init`
|
||||||
|
|
||||||
@@ -1102,7 +1150,25 @@ ALIASES
|
|||||||
$ eas init
|
$ eas init
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/project/init.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/project/init.ts)_
|
_See code: [packages/eas-cli/src/commands/project/init.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/project/init.ts)_
|
||||||
|
|
||||||
|
## `eas project:onboarding [TARGET_PROJECT_DIRECTORY]`
|
||||||
|
|
||||||
|
continue onboarding process started on the https://expo.new website.
|
||||||
|
|
||||||
|
```
|
||||||
|
USAGE
|
||||||
|
$ eas project:onboarding [TARGET_PROJECT_DIRECTORY]
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
continue onboarding process started on the https://expo.new website.
|
||||||
|
|
||||||
|
ALIASES
|
||||||
|
$ eas init:onboarding
|
||||||
|
$ eas onboarding
|
||||||
|
```
|
||||||
|
|
||||||
|
_See code: [packages/eas-cli/src/commands/project/onboarding.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/project/onboarding.ts)_
|
||||||
|
|
||||||
## `eas secret:create`
|
## `eas secret:create`
|
||||||
|
|
||||||
@@ -1125,7 +1191,7 @@ DESCRIPTION
|
|||||||
create an environment secret on the current project or owner account
|
create an environment secret on the current project or owner account
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/secret/create.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/secret/create.ts)_
|
_See code: [packages/eas-cli/src/commands/secret/create.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/secret/create.ts)_
|
||||||
|
|
||||||
## `eas secret:delete`
|
## `eas secret:delete`
|
||||||
|
|
||||||
@@ -1143,7 +1209,7 @@ DESCRIPTION
|
|||||||
delete an environment secret by ID
|
delete an environment secret by ID
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/secret/delete.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/secret/delete.ts)_
|
_See code: [packages/eas-cli/src/commands/secret/delete.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/secret/delete.ts)_
|
||||||
|
|
||||||
## `eas secret:list`
|
## `eas secret:list`
|
||||||
|
|
||||||
@@ -1157,7 +1223,7 @@ DESCRIPTION
|
|||||||
list environment secrets available for your current app
|
list environment secrets available for your current app
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/secret/list.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/secret/list.ts)_
|
_See code: [packages/eas-cli/src/commands/secret/list.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/secret/list.ts)_
|
||||||
|
|
||||||
## `eas secret:push`
|
## `eas secret:push`
|
||||||
|
|
||||||
@@ -1177,7 +1243,7 @@ DESCRIPTION
|
|||||||
read environment secrets from env file and store on the server
|
read environment secrets from env file and store on the server
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/secret/push.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/secret/push.ts)_
|
_See code: [packages/eas-cli/src/commands/secret/push.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/secret/push.ts)_
|
||||||
|
|
||||||
## `eas submit`
|
## `eas submit`
|
||||||
|
|
||||||
@@ -1208,7 +1274,7 @@ ALIASES
|
|||||||
$ eas build:submit
|
$ eas build:submit
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/submit.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/submit.ts)_
|
_See code: [packages/eas-cli/src/commands/submit.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/submit.ts)_
|
||||||
|
|
||||||
## `eas update`
|
## `eas update`
|
||||||
|
|
||||||
@@ -1233,7 +1299,8 @@ FLAGS
|
|||||||
--non-interactive Run the command in non-interactive mode.
|
--non-interactive Run the command in non-interactive mode.
|
||||||
--private-key-path=<value> File containing the PEM-encoded private key corresponding to the certificate in
|
--private-key-path=<value> File containing the PEM-encoded private key corresponding to the certificate in
|
||||||
expo-updates' configuration. Defaults to a file named "private-key.pem" in the
|
expo-updates' configuration. Defaults to a file named "private-key.pem" in the
|
||||||
certificate's directory.
|
certificate's directory. Only relevant if you are using code signing:
|
||||||
|
https://docs.expo.dev/eas-update/code-signing/
|
||||||
--republish Republish an update group (deprecated, see republish command)
|
--republish Republish an update group (deprecated, see republish command)
|
||||||
--skip-bundler Skip running Expo CLI to bundle the app before publishing
|
--skip-bundler Skip running Expo CLI to bundle the app before publishing
|
||||||
|
|
||||||
@@ -1241,7 +1308,7 @@ DESCRIPTION
|
|||||||
publish an update group
|
publish an update group
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/update/index.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/update/index.ts)_
|
_See code: [packages/eas-cli/src/commands/update/index.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/update/index.ts)_
|
||||||
|
|
||||||
## `eas update:configure`
|
## `eas update:configure`
|
||||||
|
|
||||||
@@ -1259,7 +1326,7 @@ DESCRIPTION
|
|||||||
configure the project to support EAS Update
|
configure the project to support EAS Update
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/update/configure.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/update/configure.ts)_
|
_See code: [packages/eas-cli/src/commands/update/configure.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/update/configure.ts)_
|
||||||
|
|
||||||
## `eas update:delete GROUPID`
|
## `eas update:delete GROUPID`
|
||||||
|
|
||||||
@@ -1280,7 +1347,7 @@ DESCRIPTION
|
|||||||
delete all the updates in an update group
|
delete all the updates in an update group
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/update/delete.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/update/delete.ts)_
|
_See code: [packages/eas-cli/src/commands/update/delete.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/update/delete.ts)_
|
||||||
|
|
||||||
## `eas update:list`
|
## `eas update:list`
|
||||||
|
|
||||||
@@ -1302,7 +1369,7 @@ DESCRIPTION
|
|||||||
view the recent updates
|
view the recent updates
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/update/list.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/update/list.ts)_
|
_See code: [packages/eas-cli/src/commands/update/list.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/update/list.ts)_
|
||||||
|
|
||||||
## `eas update:republish`
|
## `eas update:republish`
|
||||||
|
|
||||||
@@ -1323,13 +1390,14 @@ FLAGS
|
|||||||
--non-interactive Run the command in non-interactive mode.
|
--non-interactive Run the command in non-interactive mode.
|
||||||
--private-key-path=<value> File containing the PEM-encoded private key corresponding to the certificate in
|
--private-key-path=<value> File containing the PEM-encoded private key corresponding to the certificate in
|
||||||
expo-updates' configuration. Defaults to a file named "private-key.pem" in the
|
expo-updates' configuration. Defaults to a file named "private-key.pem" in the
|
||||||
certificate's directory.
|
certificate's directory. Only relevant if you are using code signing:
|
||||||
|
https://docs.expo.dev/eas-update/code-signing/
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
roll back to an existing update
|
roll back to an existing update
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/update/republish.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/update/republish.ts)_
|
_See code: [packages/eas-cli/src/commands/update/republish.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/update/republish.ts)_
|
||||||
|
|
||||||
## `eas update:roll-back-to-embedded`
|
## `eas update:roll-back-to-embedded`
|
||||||
|
|
||||||
@@ -1350,13 +1418,14 @@ FLAGS
|
|||||||
--non-interactive Run the command in non-interactive mode.
|
--non-interactive Run the command in non-interactive mode.
|
||||||
--private-key-path=<value> File containing the PEM-encoded private key corresponding to the certificate in
|
--private-key-path=<value> File containing the PEM-encoded private key corresponding to the certificate in
|
||||||
expo-updates' configuration. Defaults to a file named "private-key.pem" in the
|
expo-updates' configuration. Defaults to a file named "private-key.pem" in the
|
||||||
certificate's directory.
|
certificate's directory. Only relevant if you are using code signing:
|
||||||
|
https://docs.expo.dev/eas-update/code-signing/
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
roll back to the embedded update
|
roll back to the embedded update
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/update/roll-back-to-embedded.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/update/roll-back-to-embedded.ts)_
|
_See code: [packages/eas-cli/src/commands/update/roll-back-to-embedded.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/update/roll-back-to-embedded.ts)_
|
||||||
|
|
||||||
## `eas update:rollback`
|
## `eas update:rollback`
|
||||||
|
|
||||||
@@ -1369,13 +1438,14 @@ USAGE
|
|||||||
FLAGS
|
FLAGS
|
||||||
--private-key-path=<value> File containing the PEM-encoded private key corresponding to the certificate in
|
--private-key-path=<value> File containing the PEM-encoded private key corresponding to the certificate in
|
||||||
expo-updates' configuration. Defaults to a file named "private-key.pem" in the
|
expo-updates' configuration. Defaults to a file named "private-key.pem" in the
|
||||||
certificate's directory.
|
certificate's directory. Only relevant if you are using code signing:
|
||||||
|
https://docs.expo.dev/eas-update/code-signing/
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
roll back to an embedded update or an existing update
|
roll back to an embedded update or an existing update
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/update/rollback.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/update/rollback.ts)_
|
_See code: [packages/eas-cli/src/commands/update/rollback.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/update/rollback.ts)_
|
||||||
|
|
||||||
## `eas update:view GROUPID`
|
## `eas update:view GROUPID`
|
||||||
|
|
||||||
@@ -1395,7 +1465,7 @@ DESCRIPTION
|
|||||||
update group details
|
update group details
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/update/view.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/update/view.ts)_
|
_See code: [packages/eas-cli/src/commands/update/view.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/update/view.ts)_
|
||||||
|
|
||||||
## `eas webhook:create`
|
## `eas webhook:create`
|
||||||
|
|
||||||
@@ -1416,7 +1486,7 @@ DESCRIPTION
|
|||||||
create a webhook
|
create a webhook
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/webhook/create.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/webhook/create.ts)_
|
_See code: [packages/eas-cli/src/commands/webhook/create.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/webhook/create.ts)_
|
||||||
|
|
||||||
## `eas webhook:delete [ID]`
|
## `eas webhook:delete [ID]`
|
||||||
|
|
||||||
@@ -1436,7 +1506,7 @@ DESCRIPTION
|
|||||||
delete a webhook
|
delete a webhook
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/webhook/delete.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/webhook/delete.ts)_
|
_See code: [packages/eas-cli/src/commands/webhook/delete.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/webhook/delete.ts)_
|
||||||
|
|
||||||
## `eas webhook:list`
|
## `eas webhook:list`
|
||||||
|
|
||||||
@@ -1454,7 +1524,7 @@ DESCRIPTION
|
|||||||
list webhooks
|
list webhooks
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/webhook/list.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/webhook/list.ts)_
|
_See code: [packages/eas-cli/src/commands/webhook/list.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/webhook/list.ts)_
|
||||||
|
|
||||||
## `eas webhook:update`
|
## `eas webhook:update`
|
||||||
|
|
||||||
@@ -1476,7 +1546,7 @@ DESCRIPTION
|
|||||||
update a webhook
|
update a webhook
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/webhook/update.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/webhook/update.ts)_
|
_See code: [packages/eas-cli/src/commands/webhook/update.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/webhook/update.ts)_
|
||||||
|
|
||||||
## `eas webhook:view ID`
|
## `eas webhook:view ID`
|
||||||
|
|
||||||
@@ -1493,7 +1563,7 @@ DESCRIPTION
|
|||||||
view a webhook
|
view a webhook
|
||||||
```
|
```
|
||||||
|
|
||||||
_See code: [packages/eas-cli/src/commands/webhook/view.ts](https://github.com/expo/eas-cli/blob/v9.0.7/packages/eas-cli/src/commands/webhook/view.ts)_
|
_See code: [packages/eas-cli/src/commands/webhook/view.ts](https://github.com/expo/eas-cli/blob/v10.0.2/packages/eas-cli/src/commands/webhook/view.ts)_
|
||||||
|
|
||||||
## `eas whoami`
|
## `eas whoami`
|
||||||
|
|
||||||
|
|||||||
Generated
+30
@@ -18828,6 +18828,12 @@
|
|||||||
"isDeprecated": false,
|
"isDeprecated": false,
|
||||||
"deprecationReason": null
|
"deprecationReason": null
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "REPACK",
|
||||||
|
"description": null,
|
||||||
|
"isDeprecated": false,
|
||||||
|
"deprecationReason": null
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "RESIGN",
|
"name": "RESIGN",
|
||||||
"description": null,
|
"description": null,
|
||||||
@@ -25024,6 +25030,18 @@
|
|||||||
"isDeprecated": false,
|
"isDeprecated": false,
|
||||||
"deprecationReason": null
|
"deprecationReason": null
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "repack",
|
||||||
|
"description": "Repack the golden dev client build instead of running full build process. Used for onboarding. Do not use outside of onboarding flow, as for now it's only created with this specific use case in mind.",
|
||||||
|
"type": {
|
||||||
|
"kind": "SCALAR",
|
||||||
|
"name": "Boolean",
|
||||||
|
"ofType": null
|
||||||
|
},
|
||||||
|
"defaultValue": null,
|
||||||
|
"isDeprecated": false,
|
||||||
|
"deprecationReason": null
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "submitProfile",
|
"name": "submitProfile",
|
||||||
"description": null,
|
"description": null,
|
||||||
@@ -29842,6 +29860,18 @@
|
|||||||
"isDeprecated": false,
|
"isDeprecated": false,
|
||||||
"deprecationReason": null
|
"deprecationReason": null
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "gitCommitMessage",
|
||||||
|
"description": null,
|
||||||
|
"args": [],
|
||||||
|
"type": {
|
||||||
|
"kind": "SCALAR",
|
||||||
|
"name": "String",
|
||||||
|
"ofType": null
|
||||||
|
},
|
||||||
|
"isDeprecated": false,
|
||||||
|
"deprecationReason": null
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "gitRef",
|
"name": "gitRef",
|
||||||
"description": null,
|
"description": null,
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "eas-cli",
|
"name": "eas-cli",
|
||||||
"description": "EAS command line tool",
|
"description": "EAS command line tool",
|
||||||
"version": "9.0.7",
|
"version": "10.0.2",
|
||||||
"author": "Expo <[email protected]>",
|
"author": "Expo <[email protected]>",
|
||||||
"bin": {
|
"bin": {
|
||||||
"eas": "./bin/run"
|
"eas": "./bin/run"
|
||||||
@@ -13,10 +13,10 @@
|
|||||||
"@expo/config": "8.5.4",
|
"@expo/config": "8.5.4",
|
||||||
"@expo/config-plugins": "7.8.4",
|
"@expo/config-plugins": "7.8.4",
|
||||||
"@expo/config-types": "50.0.0",
|
"@expo/config-types": "50.0.0",
|
||||||
"@expo/eas-build-job": "1.0.108",
|
"@expo/eas-build-job": "1.0.117",
|
||||||
"@expo/eas-json": "9.0.4",
|
"@expo/eas-json": "10.0.0",
|
||||||
"@expo/json-file": "8.2.37",
|
"@expo/json-file": "8.2.37",
|
||||||
"@expo/logger": "1.0.57",
|
"@expo/logger": "1.0.117",
|
||||||
"@expo/multipart-body-parser": "1.1.0",
|
"@expo/multipart-body-parser": "1.1.0",
|
||||||
"@expo/osascript": "2.0.33",
|
"@expo/osascript": "2.0.33",
|
||||||
"@expo/package-manager": "1.1.2",
|
"@expo/package-manager": "1.1.2",
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
"@expo/results": "1.0.0",
|
"@expo/results": "1.0.0",
|
||||||
"@expo/rudder-sdk-node": "1.1.1",
|
"@expo/rudder-sdk-node": "1.1.1",
|
||||||
"@expo/spawn-async": "1.7.0",
|
"@expo/spawn-async": "1.7.0",
|
||||||
"@expo/steps": "1.0.108",
|
"@expo/steps": "1.0.118",
|
||||||
"@expo/timeago.js": "1.0.0",
|
"@expo/timeago.js": "1.0.0",
|
||||||
"@oclif/core": "^1.26.2",
|
"@oclif/core": "^1.26.2",
|
||||||
"@oclif/plugin-autocomplete": "^2.3.10",
|
"@oclif/plugin-autocomplete": "^2.3.10",
|
||||||
@@ -121,7 +121,7 @@
|
|||||||
"typescript": "5.3.3"
|
"typescript": "5.3.3"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=16.0.0"
|
"node": ">=18.0.0"
|
||||||
},
|
},
|
||||||
"files": [
|
"files": [
|
||||||
"/bin",
|
"/bin",
|
||||||
|
|||||||
@@ -56,6 +56,15 @@ export async function prepareJobAsync(
|
|||||||
? getCustomBuildConfigPathForJob(buildProfile.config)
|
? getCustomBuildConfigPathForJob(buildProfile.config)
|
||||||
: undefined;
|
: undefined;
|
||||||
|
|
||||||
|
let buildMode;
|
||||||
|
if (ctx.repack) {
|
||||||
|
buildMode = BuildMode.REPACK;
|
||||||
|
} else if (buildProfile.config) {
|
||||||
|
buildMode = BuildMode.CUSTOM;
|
||||||
|
} else {
|
||||||
|
buildMode = BuildMode.BUILD;
|
||||||
|
}
|
||||||
|
|
||||||
const job: Android.Job = {
|
const job: Android.Job = {
|
||||||
type: ctx.workflow,
|
type: ctx.workflow,
|
||||||
platform: Platform.ANDROID,
|
platform: Platform.ANDROID,
|
||||||
@@ -93,7 +102,7 @@ export async function prepareJobAsync(
|
|||||||
experimental: {
|
experimental: {
|
||||||
prebuildCommand: buildProfile.prebuildCommand,
|
prebuildCommand: buildProfile.prebuildCommand,
|
||||||
},
|
},
|
||||||
mode: buildProfile.config || ctx.repack ? BuildMode.CUSTOM : BuildMode.BUILD,
|
mode: buildMode,
|
||||||
triggeredBy: BuildTrigger.EAS_CLI,
|
triggeredBy: BuildTrigger.EAS_CLI,
|
||||||
...(maybeCustomBuildConfigPath && {
|
...(maybeCustomBuildConfigPath && {
|
||||||
customBuildConfig: {
|
customBuildConfig: {
|
||||||
|
|||||||
@@ -275,20 +275,23 @@ async function uploadProjectAsync<TPlatform extends Platform>(
|
|||||||
}
|
}
|
||||||
|
|
||||||
projectTarballPath = projectTarball.path;
|
projectTarballPath = projectTarball.path;
|
||||||
const bucketKey = await uploadFileAtPathToGCSAsync(
|
const [bucketKey, { metadataLocation }] = await Promise.all([
|
||||||
|
uploadFileAtPathToGCSAsync(
|
||||||
ctx.graphqlClient,
|
ctx.graphqlClient,
|
||||||
UploadSessionType.EasBuildGcsProjectSources,
|
UploadSessionType.EasBuildGcsProjectSources,
|
||||||
projectTarball.path,
|
projectTarball.path,
|
||||||
createProgressTracker({
|
createProgressTracker({
|
||||||
total: projectTarball.size,
|
total: projectTarball.size,
|
||||||
message: ratio =>
|
message: ratio =>
|
||||||
`Uploading to EAS Build (${formatBytes(projectTarball.size * ratio)} / ${formatBytes(
|
`Uploading to EAS Build (${formatBytes(
|
||||||
projectTarball.size
|
projectTarball.size * ratio
|
||||||
)})`,
|
)} / ${formatBytes(projectTarball.size)})`,
|
||||||
completedMessage: (duration: string) => `Uploaded to EAS ${chalk.dim(duration)}`,
|
completedMessage: (duration: string) => `Uploaded to EAS ${chalk.dim(duration)}`,
|
||||||
})
|
})
|
||||||
);
|
),
|
||||||
const { metadataLocation } = await uploadMetadataFileAsync<TPlatform>(projectTarball, ctx);
|
uploadMetadataFileAsync<TPlatform>(projectTarball, ctx),
|
||||||
|
]);
|
||||||
|
|
||||||
if (metadataLocation) {
|
if (metadataLocation) {
|
||||||
return { bucketKey, metadataLocation };
|
return { bucketKey, metadataLocation };
|
||||||
}
|
}
|
||||||
@@ -327,15 +330,7 @@ async function uploadMetadataFileAsync<TPlatform extends Platform>(
|
|||||||
const metadataLocation = await uploadFileAtPathToGCSAsync(
|
const metadataLocation = await uploadFileAtPathToGCSAsync(
|
||||||
ctx.graphqlClient,
|
ctx.graphqlClient,
|
||||||
UploadSessionType.EasBuildGcsProjectMetadata,
|
UploadSessionType.EasBuildGcsProjectMetadata,
|
||||||
projectMetadataFile.path,
|
projectMetadataFile.path
|
||||||
createProgressTracker({
|
|
||||||
total: projectMetadataFile.size,
|
|
||||||
message: ratio =>
|
|
||||||
`Uploading metadata to EAS Build (${formatBytes(
|
|
||||||
projectMetadataFile!.size * ratio
|
|
||||||
)} / ${formatBytes(projectMetadataFile!.size)})`,
|
|
||||||
completedMessage: (duration: string) => `Uploaded to EAS ${chalk.dim(duration)}`,
|
|
||||||
})
|
|
||||||
);
|
);
|
||||||
return { metadataLocation };
|
return { metadataLocation };
|
||||||
} catch (err: any) {
|
} catch (err: any) {
|
||||||
|
|||||||
@@ -94,6 +94,7 @@ const buildModeToGraphQLBuildMode: Record<BuildMode, GraphQLBuildMode> = {
|
|||||||
[BuildMode.BUILD]: GraphQLBuildMode.Build,
|
[BuildMode.BUILD]: GraphQLBuildMode.Build,
|
||||||
[BuildMode.CUSTOM]: GraphQLBuildMode.Custom,
|
[BuildMode.CUSTOM]: GraphQLBuildMode.Custom,
|
||||||
[BuildMode.RESIGN]: GraphQLBuildMode.Resign,
|
[BuildMode.RESIGN]: GraphQLBuildMode.Resign,
|
||||||
|
[BuildMode.REPACK]: GraphQLBuildMode.Repack,
|
||||||
};
|
};
|
||||||
|
|
||||||
export function transformBuildMode(buildMode: BuildMode): GraphQLBuildMode {
|
export function transformBuildMode(buildMode: BuildMode): GraphQLBuildMode {
|
||||||
|
|||||||
@@ -48,6 +48,15 @@ export async function prepareJobAsync(
|
|||||||
? getCustomBuildConfigPathForJob(buildProfile.config)
|
? getCustomBuildConfigPathForJob(buildProfile.config)
|
||||||
: undefined;
|
: undefined;
|
||||||
|
|
||||||
|
let buildMode;
|
||||||
|
if (ctx.repack) {
|
||||||
|
buildMode = BuildMode.REPACK;
|
||||||
|
} else if (buildProfile.config) {
|
||||||
|
buildMode = BuildMode.CUSTOM;
|
||||||
|
} else {
|
||||||
|
buildMode = BuildMode.BUILD;
|
||||||
|
}
|
||||||
|
|
||||||
const job: Ios.Job = {
|
const job: Ios.Job = {
|
||||||
type: ctx.workflow,
|
type: ctx.workflow,
|
||||||
platform: Platform.IOS,
|
platform: Platform.IOS,
|
||||||
@@ -88,7 +97,7 @@ export async function prepareJobAsync(
|
|||||||
experimental: {
|
experimental: {
|
||||||
prebuildCommand: buildProfile.prebuildCommand,
|
prebuildCommand: buildProfile.prebuildCommand,
|
||||||
},
|
},
|
||||||
mode: buildProfile.config || ctx.repack ? BuildMode.CUSTOM : BuildMode.BUILD,
|
mode: buildMode,
|
||||||
triggeredBy: BuildTrigger.EAS_CLI,
|
triggeredBy: BuildTrigger.EAS_CLI,
|
||||||
...(maybeCustomBuildConfigPath && {
|
...(maybeCustomBuildConfigPath && {
|
||||||
customBuildConfig: {
|
customBuildConfig: {
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import semver from 'semver';
|
|||||||
import { ora } from '../ora';
|
import { ora } from '../ora';
|
||||||
|
|
||||||
const PLUGIN_PACKAGE_NAME = 'eas-cli-local-build-plugin';
|
const PLUGIN_PACKAGE_NAME = 'eas-cli-local-build-plugin';
|
||||||
const PLUGIN_PACKAGE_VERSION = '1.0.112';
|
const PLUGIN_PACKAGE_VERSION = '1.0.118';
|
||||||
|
|
||||||
export enum LocalBuildMode {
|
export enum LocalBuildMode {
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -143,28 +143,6 @@ export async function runBuildAndSubmitAsync(
|
|||||||
`The "image" field in the build profile "${buildProfile.profileName}" is set to "${buildProfile.profile.image}". This tag is deprecated and will be removed in the future. Use other images or tags listed here: https://docs.expo.dev/build-reference/infrastructure/`
|
`The "image" field in the build profile "${buildProfile.profileName}" is set to "${buildProfile.profile.image}". This tag is deprecated and will be removed in the future. Use other images or tags listed here: https://docs.expo.dev/build-reference/infrastructure/`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (
|
|
||||||
buildProfile.profile.image &&
|
|
||||||
[
|
|
||||||
'macos-monterey-12.4-xcode-13.4',
|
|
||||||
'macos-monterey-12.3-xcode-13.3',
|
|
||||||
'macos-monterey-12.1-xcode-13.2',
|
|
||||||
'macos-ventura-13.4-xcode-14.3.1',
|
|
||||||
'macos-ventura-13.3-xcode-14.3',
|
|
||||||
'macos-monterey-12.6-xcode-14.2',
|
|
||||||
'macos-monterey-12.6-xcode-14.1',
|
|
||||||
'macos-monterey-12.6-xcode-14.0',
|
|
||||||
].includes(buildProfile.profile.image)
|
|
||||||
) {
|
|
||||||
Log.warn(
|
|
||||||
`The "image" field in the build profile "${buildProfile.profileName}" is set to "${
|
|
||||||
buildProfile.profile.image
|
|
||||||
}". This image is using Xcode in version lower then 15. Apple's new requirement states that starting on April 29th, 2024, apps uploaded to App Store Connect must be built with Xcode 15 for iOS 17, iPadOS 17, tvOS 17, or watchOS 10. Start using Xcode 15 image today by setting "macos-sonoma-14.4-xcode-15.3" or "latest" as your image value. This image will be removed from EAS Build on May 29th, 2024. ${learnMore(
|
|
||||||
'https://expo.dev/changelog/2024/03-29-eas-build-upcoming-ios-images-updates'
|
|
||||||
)}`
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
await ensureExpoDevClientInstalledForDevClientBuildsAsync({
|
await ensureExpoDevClientInstalledForDevClientBuildsAsync({
|
||||||
@@ -258,6 +236,7 @@ export async function runBuildAndSubmitAsync(
|
|||||||
buildProfile: startedBuild.buildProfile.profile,
|
buildProfile: startedBuild.buildProfile.profile,
|
||||||
submitProfile,
|
submitProfile,
|
||||||
nonInteractive: flags.nonInteractive,
|
nonInteractive: flags.nonInteractive,
|
||||||
|
selectedSubmitProfileName: flags.submitProfile,
|
||||||
});
|
});
|
||||||
startedBuild.build = await BuildQuery.withSubmissionsByIdAsync(
|
startedBuild.build = await BuildQuery.withSubmissionsByIdAsync(
|
||||||
graphqlClient,
|
graphqlClient,
|
||||||
@@ -453,6 +432,7 @@ async function prepareAndStartSubmissionAsync({
|
|||||||
projectDir,
|
projectDir,
|
||||||
buildProfile,
|
buildProfile,
|
||||||
submitProfile,
|
submitProfile,
|
||||||
|
selectedSubmitProfileName,
|
||||||
nonInteractive,
|
nonInteractive,
|
||||||
}: {
|
}: {
|
||||||
build: BuildFragment;
|
build: BuildFragment;
|
||||||
@@ -461,6 +441,7 @@ async function prepareAndStartSubmissionAsync({
|
|||||||
projectDir: string;
|
projectDir: string;
|
||||||
buildProfile: BuildProfile;
|
buildProfile: BuildProfile;
|
||||||
submitProfile: SubmitProfile;
|
submitProfile: SubmitProfile;
|
||||||
|
selectedSubmitProfileName?: string;
|
||||||
nonInteractive: boolean;
|
nonInteractive: boolean;
|
||||||
}): Promise<SubmissionFragment> {
|
}): Promise<SubmissionFragment> {
|
||||||
const platform = toPlatform(build.platform);
|
const platform = toPlatform(build.platform);
|
||||||
@@ -480,6 +461,7 @@ async function prepareAndStartSubmissionAsync({
|
|||||||
exp: buildCtx.exp,
|
exp: buildCtx.exp,
|
||||||
vcsClient: buildCtx.vcsClient,
|
vcsClient: buildCtx.vcsClient,
|
||||||
isVerboseFastlaneEnabled: false,
|
isVerboseFastlaneEnabled: false,
|
||||||
|
specifiedProfile: selectedSubmitProfileName,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (moreBuilds) {
|
if (moreBuilds) {
|
||||||
|
|||||||
@@ -39,6 +39,10 @@ export function formatGraphQLBuild(build: BuildFragment): string {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
label: 'Profile',
|
||||||
|
value: build.buildProfile,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
label: 'Message',
|
label: 'Message',
|
||||||
value: build.message,
|
value: build.message,
|
||||||
|
|||||||
@@ -100,20 +100,9 @@ export type LocalFile = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export async function makeProjectMetadataFileAsync(archivePath: string): Promise<LocalFile> {
|
export async function makeProjectMetadataFileAsync(archivePath: string): Promise<LocalFile> {
|
||||||
const spinner = ora('Creating project metadata file');
|
|
||||||
const timerLabel = 'makeProjectMetadataFileAsync';
|
|
||||||
const timer = setTimeout(
|
|
||||||
() => {
|
|
||||||
spinner.start();
|
|
||||||
},
|
|
||||||
Log.isDebug ? 1 : 1000
|
|
||||||
);
|
|
||||||
startTimer(timerLabel);
|
|
||||||
|
|
||||||
const metadataLocation = path.join(getTmpDirectory(), `${uuidv4()}-eas-build-metadata.json`);
|
const metadataLocation = path.join(getTmpDirectory(), `${uuidv4()}-eas-build-metadata.json`);
|
||||||
const archiveContent: string[] = [];
|
const archiveContent: string[] = [];
|
||||||
|
|
||||||
try {
|
|
||||||
await tar.list({
|
await tar.list({
|
||||||
file: archivePath,
|
file: archivePath,
|
||||||
onentry: (entry: tar.ReadEntry) => {
|
onentry: (entry: tar.ReadEntry) => {
|
||||||
@@ -126,18 +115,6 @@ export async function makeProjectMetadataFileAsync(archivePath: string): Promise
|
|||||||
await fs.writeJSON(metadataLocation, {
|
await fs.writeJSON(metadataLocation, {
|
||||||
archiveContent,
|
archiveContent,
|
||||||
});
|
});
|
||||||
} catch (e) {
|
|
||||||
clearTimeout(timer);
|
|
||||||
if (spinner.isSpinning) {
|
|
||||||
spinner.fail();
|
|
||||||
}
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
clearTimeout(timer);
|
|
||||||
|
|
||||||
const duration = endTimer(timerLabel);
|
|
||||||
const prettyTime = formatMilliseconds(duration);
|
|
||||||
spinner.succeed(`Created project metadata file ${chalk.dim(prettyTime)}`);
|
|
||||||
|
|
||||||
return { path: metadataLocation, size: await fs.stat(metadataLocation).then(stat => stat.size) };
|
return { path: metadataLocation, size: await fs.stat(metadataLocation).then(stat => stat.size) };
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,3 +50,31 @@ export function getUpdateGroupUrl(
|
|||||||
getExpoWebsiteBaseUrl()
|
getExpoWebsiteBaseUrl()
|
||||||
).toString();
|
).toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function getUpdatePreviewUrl({
|
||||||
|
message,
|
||||||
|
updateRuntimeVersion,
|
||||||
|
createdAt,
|
||||||
|
slug,
|
||||||
|
projectId,
|
||||||
|
group,
|
||||||
|
}: {
|
||||||
|
message?: string;
|
||||||
|
updateRuntimeVersion: string;
|
||||||
|
createdAt: string;
|
||||||
|
slug: string;
|
||||||
|
projectId: string;
|
||||||
|
group: string;
|
||||||
|
}): string {
|
||||||
|
const previewUrl = new URL(`/preview/update`, getExpoWebsiteBaseUrl());
|
||||||
|
if (message) {
|
||||||
|
//previewUrl.searchParams.append('message', message);
|
||||||
|
}
|
||||||
|
|
||||||
|
previewUrl.searchParams.append('updateRuntimeVersion', updateRuntimeVersion);
|
||||||
|
//previewUrl.searchParams.append('createdAt', createdAt);
|
||||||
|
previewUrl.searchParams.append('slug', slug);
|
||||||
|
previewUrl.searchParams.append('projectId', projectId);
|
||||||
|
previewUrl.searchParams.append('group', group);
|
||||||
|
return previewUrl.toString();
|
||||||
|
}
|
||||||
@@ -201,7 +201,7 @@ export default abstract class EasCommand extends Command {
|
|||||||
if (err instanceof EasCommandError) {
|
if (err instanceof EasCommandError) {
|
||||||
Log.error(err.message);
|
Log.error(err.message);
|
||||||
} else if (err instanceof CombinedError && err?.graphQLErrors) {
|
} else if (err instanceof CombinedError && err?.graphQLErrors) {
|
||||||
const cleanMessage = err?.graphQLErrors
|
const cleanGQLErrorsMessage = err?.graphQLErrors
|
||||||
.map((graphQLError: GraphQLError) => {
|
.map((graphQLError: GraphQLError) => {
|
||||||
const messageLine = graphQLError.message.replace('[GraphQL] ', '');
|
const messageLine = graphQLError.message.replace('[GraphQL] ', '');
|
||||||
const requestIdLine = graphQLError.extensions?.requestId
|
const requestIdLine = graphQLError.extensions?.requestId
|
||||||
@@ -223,6 +223,9 @@ export default abstract class EasCommand extends Command {
|
|||||||
return defaultMsg;
|
return defaultMsg;
|
||||||
})
|
})
|
||||||
.join('\n');
|
.join('\n');
|
||||||
|
const cleanMessage = err.networkError
|
||||||
|
? `${cleanGQLErrorsMessage}\n${err.networkError.message}`
|
||||||
|
: cleanGQLErrorsMessage;
|
||||||
Log.error(cleanMessage);
|
Log.error(cleanMessage);
|
||||||
baseMessage = BASE_GRAPHQL_ERROR_MESSAGE;
|
baseMessage = BASE_GRAPHQL_ERROR_MESSAGE;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -96,11 +96,13 @@ export async function validateOrSetProjectIdAsync({
|
|||||||
graphqlClient,
|
graphqlClient,
|
||||||
actor,
|
actor,
|
||||||
options,
|
options,
|
||||||
|
cwd,
|
||||||
}: {
|
}: {
|
||||||
exp: ExpoConfig;
|
exp: ExpoConfig;
|
||||||
graphqlClient: ExpoGraphqlClient;
|
graphqlClient: ExpoGraphqlClient;
|
||||||
actor: Actor;
|
actor: Actor;
|
||||||
options: { env?: Env; nonInteractive: boolean };
|
options: { env?: Env; nonInteractive: boolean };
|
||||||
|
cwd?: string;
|
||||||
}): Promise<string> {
|
}): Promise<string> {
|
||||||
const localProjectId = exp.extra?.eas?.projectId;
|
const localProjectId = exp.extra?.eas?.projectId;
|
||||||
if (localProjectId) {
|
if (localProjectId) {
|
||||||
@@ -161,7 +163,9 @@ export async function validateOrSetProjectIdAsync({
|
|||||||
return localProjectId;
|
return localProjectId;
|
||||||
}
|
}
|
||||||
|
|
||||||
const projectDir = await findProjectRootAsync();
|
const projectDir = await findProjectRootAsync({
|
||||||
|
cwd,
|
||||||
|
});
|
||||||
if (!projectDir) {
|
if (!projectDir) {
|
||||||
throw new Error('This command must be run inside a project directory.');
|
throw new Error('This command must be run inside a project directory.');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,34 +21,47 @@ export default class BuildList extends EasCommand {
|
|||||||
|
|
||||||
static override flags = {
|
static override flags = {
|
||||||
platform: Flags.enum({
|
platform: Flags.enum({
|
||||||
options: [RequestedPlatform.All, RequestedPlatform.Android, RequestedPlatform.Ios],
|
options: Object.values(RequestedPlatform),
|
||||||
|
char: 'p',
|
||||||
}),
|
}),
|
||||||
status: Flags.enum({
|
status: Flags.enum({
|
||||||
options: [
|
options: Object.values(BuildStatus),
|
||||||
BuildStatus.NEW,
|
description: 'Filter only builds with the specified status',
|
||||||
BuildStatus.IN_QUEUE,
|
|
||||||
BuildStatus.IN_PROGRESS,
|
|
||||||
BuildStatus.PENDING_CANCEL,
|
|
||||||
BuildStatus.ERRORED,
|
|
||||||
BuildStatus.FINISHED,
|
|
||||||
BuildStatus.CANCELED,
|
|
||||||
],
|
|
||||||
}),
|
}),
|
||||||
distribution: Flags.enum({
|
distribution: Flags.enum({
|
||||||
options: [
|
options: Object.values(BuildDistributionType),
|
||||||
BuildDistributionType.STORE,
|
description: 'Filter only builds with the specified distribution type',
|
||||||
BuildDistributionType.INTERNAL,
|
|
||||||
BuildDistributionType.SIMULATOR,
|
|
||||||
],
|
|
||||||
}),
|
}),
|
||||||
channel: Flags.string(),
|
channel: Flags.string(),
|
||||||
appVersion: Flags.string(),
|
'app-version': Flags.string({
|
||||||
appBuildVersion: Flags.string(),
|
aliases: ['appVersion'],
|
||||||
sdkVersion: Flags.string(),
|
description: 'Filter only builds created with the specified main app version',
|
||||||
runtimeVersion: Flags.string(),
|
}),
|
||||||
appIdentifier: Flags.string(),
|
'app-build-version': Flags.string({
|
||||||
buildProfile: Flags.string(),
|
aliases: ['appBuildVersion'],
|
||||||
gitCommitHash: Flags.string(),
|
description: 'Filter only builds created with the specified app build version',
|
||||||
|
}),
|
||||||
|
'sdk-version': Flags.string({
|
||||||
|
aliases: ['sdkVersion'],
|
||||||
|
description: 'Filter only builds created with the specified Expo SDK version',
|
||||||
|
}),
|
||||||
|
'runtime-version': Flags.string({
|
||||||
|
aliases: ['runtimeVersion'],
|
||||||
|
description: 'Filter only builds created with the specified runtime version',
|
||||||
|
}),
|
||||||
|
'app-identifier': Flags.string({
|
||||||
|
aliases: ['appIdentifier'],
|
||||||
|
description: 'Filter only builds created with the specified app identifier',
|
||||||
|
}),
|
||||||
|
'build-profile': Flags.string({
|
||||||
|
char: 'e',
|
||||||
|
aliases: ['profile', 'buildProfile'],
|
||||||
|
description: 'Filter only builds created with the specified build profile',
|
||||||
|
}),
|
||||||
|
'git-commit-hash': Flags.string({
|
||||||
|
aliases: ['gitCommitHash'],
|
||||||
|
description: 'Filter only builds created with the specified git commit hash',
|
||||||
|
}),
|
||||||
...EasPaginatedQueryFlags,
|
...EasPaginatedQueryFlags,
|
||||||
limit: getLimitFlagWithCustomValues({ defaultTo: 10, limit: BUILDS_LIMIT }),
|
limit: getLimitFlagWithCustomValues({ defaultTo: 10, limit: BUILDS_LIMIT }),
|
||||||
...EasNonInteractiveAndJsonFlags,
|
...EasNonInteractiveAndJsonFlags,
|
||||||
@@ -109,13 +122,13 @@ export default class BuildList extends EasCommand {
|
|||||||
status: graphqlBuildStatus,
|
status: graphqlBuildStatus,
|
||||||
distribution: graphqlBuildDistribution,
|
distribution: graphqlBuildDistribution,
|
||||||
channel: flags.channel,
|
channel: flags.channel,
|
||||||
appVersion: flags.appVersion,
|
appVersion: flags['app-version'],
|
||||||
appBuildVersion: flags.appBuildVersion,
|
appBuildVersion: flags['app-build-version'],
|
||||||
sdkVersion: flags.sdkVersion,
|
sdkVersion: flags['sdk-version'],
|
||||||
runtimeVersion: flags.runtimeVersion,
|
runtimeVersion: flags['runtime-version'],
|
||||||
appIdentifier: flags.appIdentifier,
|
appIdentifier: flags['app-identifier'],
|
||||||
buildProfile: flags.buildProfile,
|
buildProfile: flags['build-profile'],
|
||||||
gitCommitHash: flags.gitCommitHash,
|
gitCommitHash: flags['git-commit-hash'],
|
||||||
simulator: flags.simulator,
|
simulator: flags.simulator,
|
||||||
},
|
},
|
||||||
paginatedQueryOptions,
|
paginatedQueryOptions,
|
||||||
|
|||||||
@@ -42,7 +42,8 @@ interface BuildResignFlags {
|
|||||||
offset?: number;
|
offset?: number;
|
||||||
limit?: number;
|
limit?: number;
|
||||||
platform?: Platform;
|
platform?: Platform;
|
||||||
profile?: string;
|
targetProfile?: string;
|
||||||
|
sourceProfile?: string;
|
||||||
maybeBuildId?: string;
|
maybeBuildId?: string;
|
||||||
wait: boolean;
|
wait: boolean;
|
||||||
}
|
}
|
||||||
@@ -52,7 +53,8 @@ interface RawBuildResignFlags {
|
|||||||
offset: number | undefined;
|
offset: number | undefined;
|
||||||
limit: number | undefined;
|
limit: number | undefined;
|
||||||
platform: 'android' | 'ios' | undefined;
|
platform: 'android' | 'ios' | undefined;
|
||||||
profile: string | undefined;
|
'target-profile': string | undefined;
|
||||||
|
'source-profile': string | undefined;
|
||||||
wait: boolean;
|
wait: boolean;
|
||||||
id: string | undefined;
|
id: string | undefined;
|
||||||
}
|
}
|
||||||
@@ -65,10 +67,16 @@ export default class BuildResign extends EasCommand {
|
|||||||
char: 'p',
|
char: 'p',
|
||||||
options: ['android', 'ios'],
|
options: ['android', 'ios'],
|
||||||
}),
|
}),
|
||||||
profile: Flags.string({
|
'target-profile': Flags.string({
|
||||||
char: 'e',
|
char: 'e',
|
||||||
description:
|
description:
|
||||||
'Name of the build profile from eas.json. Defaults to "production" if defined in eas.json.',
|
'Name of the target build profile from eas.json. Credentials and environment variables from this profile will be used when re-signing. Defaults to "production" if defined in eas.json.',
|
||||||
|
helpValue: 'PROFILE_NAME',
|
||||||
|
aliases: ['profile'],
|
||||||
|
}),
|
||||||
|
'source-profile': Flags.string({
|
||||||
|
description:
|
||||||
|
'Name of the source build profile from eas.json. Used to filter builds eligible for re-signing.',
|
||||||
helpValue: 'PROFILE_NAME',
|
helpValue: 'PROFILE_NAME',
|
||||||
}),
|
}),
|
||||||
wait: Flags.boolean({
|
wait: Flags.boolean({
|
||||||
@@ -130,12 +138,20 @@ export default class BuildResign extends EasCommand {
|
|||||||
const buildProfile = await EasJsonUtils.getBuildProfileAsync(
|
const buildProfile = await EasJsonUtils.getBuildProfileAsync(
|
||||||
easJsonAccessor,
|
easJsonAccessor,
|
||||||
platform,
|
platform,
|
||||||
flags.profile ?? 'production'
|
flags.targetProfile ?? 'production'
|
||||||
);
|
);
|
||||||
const { exp, projectId } = await getDynamicPrivateProjectConfigAsync({ env: buildProfile.env });
|
const { exp, projectId } = await getDynamicPrivateProjectConfigAsync({ env: buildProfile.env });
|
||||||
const account = await getOwnerAccountForProjectIdAsync(graphqlClient, projectId);
|
const account = await getOwnerAccountForProjectIdAsync(graphqlClient, projectId);
|
||||||
const build = await this.ensureBuildSelectedAsync(
|
const build = await this.ensureBuildSelectedAsync(
|
||||||
{ graphqlClient, projectId, platform, nonInteractive, limit, offset },
|
{
|
||||||
|
graphqlClient,
|
||||||
|
projectId,
|
||||||
|
platform,
|
||||||
|
nonInteractive,
|
||||||
|
limit,
|
||||||
|
offset,
|
||||||
|
buildProfile: flags.sourceProfile,
|
||||||
|
},
|
||||||
maybeBuild
|
maybeBuild
|
||||||
);
|
);
|
||||||
const credentialsCtx = new CredentialsContext({
|
const credentialsCtx = new CredentialsContext({
|
||||||
@@ -228,7 +244,8 @@ export default class BuildResign extends EasCommand {
|
|||||||
offset: flags.offset,
|
offset: flags.offset,
|
||||||
limit: flags.limit,
|
limit: flags.limit,
|
||||||
platform: flags.platform as Platform | undefined,
|
platform: flags.platform as Platform | undefined,
|
||||||
profile: flags.profile,
|
sourceProfile: flags['source-profile'],
|
||||||
|
targetProfile: flags['target-profile'],
|
||||||
maybeBuildId: flags.id,
|
maybeBuildId: flags.id,
|
||||||
wait: flags.wait,
|
wait: flags.wait,
|
||||||
};
|
};
|
||||||
@@ -242,6 +259,7 @@ export default class BuildResign extends EasCommand {
|
|||||||
nonInteractive,
|
nonInteractive,
|
||||||
limit,
|
limit,
|
||||||
offset,
|
offset,
|
||||||
|
buildProfile,
|
||||||
}: {
|
}: {
|
||||||
graphqlClient: ExpoGraphqlClient;
|
graphqlClient: ExpoGraphqlClient;
|
||||||
projectId: string;
|
projectId: string;
|
||||||
@@ -249,6 +267,7 @@ export default class BuildResign extends EasCommand {
|
|||||||
nonInteractive: boolean;
|
nonInteractive: boolean;
|
||||||
limit?: number;
|
limit?: number;
|
||||||
offset?: number;
|
offset?: number;
|
||||||
|
buildProfile?: string;
|
||||||
},
|
},
|
||||||
maybeBuild?: BuildFragment
|
maybeBuild?: BuildFragment
|
||||||
): Promise<BuildFragment> {
|
): Promise<BuildFragment> {
|
||||||
@@ -268,6 +287,7 @@ export default class BuildResign extends EasCommand {
|
|||||||
distribution: DistributionType.Internal,
|
distribution: DistributionType.Internal,
|
||||||
platform: toAppPlatform(platform),
|
platform: toAppPlatform(platform),
|
||||||
status: BuildStatus.Finished,
|
status: BuildStatus.Finished,
|
||||||
|
buildProfile,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
if (!build) {
|
if (!build) {
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ export default class ChannelRollout extends EasCommand {
|
|||||||
required: false,
|
required: false,
|
||||||
}),
|
}),
|
||||||
'private-key-path': Flags.string({
|
'private-key-path': Flags.string({
|
||||||
description: `File containing the PEM-encoded private key corresponding to the certificate in expo-updates' configuration. Defaults to a file named "private-key.pem" in the certificate's directory.`,
|
description: `File containing the PEM-encoded private key corresponding to the certificate in expo-updates' configuration. Defaults to a file named "private-key.pem" in the certificate's directory. Only relevant if you are using code signing: https://docs.expo.dev/eas-update/code-signing/`,
|
||||||
required: false,
|
required: false,
|
||||||
}),
|
}),
|
||||||
...EasNonInteractiveAndJsonFlags,
|
...EasNonInteractiveAndJsonFlags,
|
||||||
|
|||||||
@@ -23,7 +23,11 @@ import {
|
|||||||
import { UserPreferencesMutation } from '../../graphql/mutations/UserPreferencesMutation';
|
import { UserPreferencesMutation } from '../../graphql/mutations/UserPreferencesMutation';
|
||||||
import { AppQuery } from '../../graphql/queries/AppQuery';
|
import { AppQuery } from '../../graphql/queries/AppQuery';
|
||||||
import Log, { learnMore, link } from '../../log';
|
import Log, { learnMore, link } from '../../log';
|
||||||
import { runGitCloneAsync, runGitPushAsync } from '../../onboarding/git';
|
import {
|
||||||
|
canAccessRepositoryUsingSshAsync,
|
||||||
|
runGitCloneAsync,
|
||||||
|
runGitPushAsync,
|
||||||
|
} from '../../onboarding/git';
|
||||||
import { installDependenciesAsync } from '../../onboarding/installDependencies';
|
import { installDependenciesAsync } from '../../onboarding/installDependencies';
|
||||||
import { runCommandAsync } from '../../onboarding/runCommand';
|
import { runCommandAsync } from '../../onboarding/runCommand';
|
||||||
import { RequestedPlatform } from '../../platform';
|
import { RequestedPlatform } from '../../platform';
|
||||||
@@ -34,11 +38,10 @@ import { easCliVersion } from '../../utils/easCli';
|
|||||||
import GitClient from '../../vcs/clients/git';
|
import GitClient from '../../vcs/clients/git';
|
||||||
|
|
||||||
export default class Onboarding extends EasCommand {
|
export default class Onboarding extends EasCommand {
|
||||||
static override hidden = true;
|
|
||||||
|
|
||||||
static override aliases = ['init:onboarding', 'onboarding'];
|
static override aliases = ['init:onboarding', 'onboarding'];
|
||||||
|
|
||||||
static override description = 'continue onboarding process started on the expo.dev website';
|
static override description =
|
||||||
|
'continue onboarding process started on the https://expo.new website.';
|
||||||
|
|
||||||
static override flags = {};
|
static override flags = {};
|
||||||
|
|
||||||
@@ -143,10 +146,20 @@ export default class Onboarding extends EasCommand {
|
|||||||
}
|
}
|
||||||
Log.log();
|
Log.log();
|
||||||
|
|
||||||
|
const cloneMethod = (await canAccessRepositoryUsingSshAsync({
|
||||||
|
githubUsername,
|
||||||
|
githubRepositoryName,
|
||||||
|
}))
|
||||||
|
? 'ssh'
|
||||||
|
: 'https';
|
||||||
|
Log.log(chalk.dim(`We detected that ${cloneMethod} is your preffered git clone method`));
|
||||||
|
Log.log();
|
||||||
|
|
||||||
const { targetProjectDir: finalTargetProjectDirectory } = await runGitCloneAsync({
|
const { targetProjectDir: finalTargetProjectDirectory } = await runGitCloneAsync({
|
||||||
githubUsername,
|
githubUsername,
|
||||||
githubRepositoryName,
|
githubRepositoryName,
|
||||||
targetProjectDir: initialTargetProjectDirectory,
|
targetProjectDir: initialTargetProjectDirectory,
|
||||||
|
cloneMethod,
|
||||||
});
|
});
|
||||||
|
|
||||||
const vcsClient = new GitClient(finalTargetProjectDirectory);
|
const vcsClient = new GitClient(finalTargetProjectDirectory);
|
||||||
@@ -334,6 +347,7 @@ async function getPrivateExpoConfigWithProjectIdAsync({
|
|||||||
options: {
|
options: {
|
||||||
nonInteractive: false,
|
nonInteractive: false,
|
||||||
},
|
},
|
||||||
|
cwd: projectDir,
|
||||||
});
|
});
|
||||||
const exp = getPrivateExpoConfig(projectDir, options);
|
const exp = getPrivateExpoConfig(projectDir, options);
|
||||||
return {
|
return {
|
||||||
@@ -402,7 +416,6 @@ async function configureProjectFromBareDefaultExpoTemplateAsync({
|
|||||||
development: {
|
development: {
|
||||||
developmentClient: true,
|
developmentClient: true,
|
||||||
distribution: 'internal',
|
distribution: 'internal',
|
||||||
channel: 'development',
|
|
||||||
...easBuildGitHubConfig,
|
...easBuildGitHubConfig,
|
||||||
},
|
},
|
||||||
'development-simulator': {
|
'development-simulator': {
|
||||||
@@ -413,7 +426,7 @@ async function configureProjectFromBareDefaultExpoTemplateAsync({
|
|||||||
},
|
},
|
||||||
preview: {
|
preview: {
|
||||||
distribution: 'internal',
|
distribution: 'internal',
|
||||||
channel: 'preview',
|
channel: 'main',
|
||||||
...easBuildGitHubConfig,
|
...easBuildGitHubConfig,
|
||||||
},
|
},
|
||||||
production: {
|
production: {
|
||||||
@@ -436,7 +449,11 @@ async function configureProjectFromBareDefaultExpoTemplateAsync({
|
|||||||
);
|
);
|
||||||
Log.log();
|
Log.log();
|
||||||
|
|
||||||
|
const baseExpoConfig = JSON.parse(await fs.readFile(path.join(targetDir, 'app.json'), 'utf8'))
|
||||||
|
.expo as ExpoConfig;
|
||||||
|
|
||||||
const expoConfig: ExpoConfig = {
|
const expoConfig: ExpoConfig = {
|
||||||
|
...baseExpoConfig,
|
||||||
name: app.name ?? app.slug,
|
name: app.name ?? app.slug,
|
||||||
slug: app.slug,
|
slug: app.slug,
|
||||||
extra: {
|
extra: {
|
||||||
@@ -452,9 +469,11 @@ async function configureProjectFromBareDefaultExpoTemplateAsync({
|
|||||||
policy: 'appVersion',
|
policy: 'appVersion',
|
||||||
},
|
},
|
||||||
ios: {
|
ios: {
|
||||||
|
...baseExpoConfig.ios,
|
||||||
bundleIdentifier,
|
bundleIdentifier,
|
||||||
},
|
},
|
||||||
android: {
|
android: {
|
||||||
|
...baseExpoConfig.android,
|
||||||
package: bundleIdentifier,
|
package: bundleIdentifier,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -2,11 +2,13 @@ import { Platform as PublishPlatform } from '@expo/config';
|
|||||||
import { Workflow } from '@expo/eas-build-job';
|
import { Workflow } from '@expo/eas-build-job';
|
||||||
import { Errors, Flags } from '@oclif/core';
|
import { Errors, Flags } from '@oclif/core';
|
||||||
import chalk from 'chalk';
|
import chalk from 'chalk';
|
||||||
|
import indentString from 'indent-string';
|
||||||
import nullthrows from 'nullthrows';
|
import nullthrows from 'nullthrows';
|
||||||
|
import qrcodeTerminal from 'qrcode-terminal';
|
||||||
|
|
||||||
import { ensureBranchExistsAsync } from '../../branch/queries';
|
import { ensureBranchExistsAsync } from '../../branch/queries';
|
||||||
import { ensureRepoIsCleanAsync } from '../../build/utils/repository';
|
import { ensureRepoIsCleanAsync } from '../../build/utils/repository';
|
||||||
import { getUpdateGroupUrl } from '../../build/utils/url';
|
import { getUpdateGroupUrl, getUpdatePreviewUrl } from '../../build/utils/url';
|
||||||
import EasCommand from '../../commandUtils/EasCommand';
|
import EasCommand from '../../commandUtils/EasCommand';
|
||||||
import { EasNonInteractiveAndJsonFlags } from '../../commandUtils/flags';
|
import { EasNonInteractiveAndJsonFlags } from '../../commandUtils/flags';
|
||||||
import { getPaginatedQueryOptions } from '../../commandUtils/pagination';
|
import { getPaginatedQueryOptions } from '../../commandUtils/pagination';
|
||||||
@@ -141,7 +143,7 @@ export default class UpdatePublish extends EasCommand {
|
|||||||
default: false,
|
default: false,
|
||||||
}),
|
}),
|
||||||
'private-key-path': Flags.string({
|
'private-key-path': Flags.string({
|
||||||
description: `File containing the PEM-encoded private key corresponding to the certificate in expo-updates' configuration. Defaults to a file named "private-key.pem" in the certificate's directory.`,
|
description: `File containing the PEM-encoded private key corresponding to the certificate in expo-updates' configuration. Defaults to a file named "private-key.pem" in the certificate's directory. Only relevant if you are using code signing: https://docs.expo.dev/eas-update/code-signing/`,
|
||||||
required: false,
|
required: false,
|
||||||
}),
|
}),
|
||||||
...EasNonInteractiveAndJsonFlags,
|
...EasNonInteractiveAndJsonFlags,
|
||||||
@@ -494,6 +496,15 @@ export default class UpdatePublish extends EasCommand {
|
|||||||
const accountName = (await getOwnerAccountForProjectIdAsync(graphqlClient, projectId)).name;
|
const accountName = (await getOwnerAccountForProjectIdAsync(graphqlClient, projectId)).name;
|
||||||
const updateGroupUrl = getUpdateGroupUrl(accountName, projectName, updateGroupId);
|
const updateGroupUrl = getUpdateGroupUrl(accountName, projectName, updateGroupId);
|
||||||
const updateGroupLink = link(updateGroupUrl, { dim: false });
|
const updateGroupLink = link(updateGroupUrl, { dim: false });
|
||||||
|
const updateCreatedAt = (newAndroidUpdate ?? newIosUpdate)?.createdAt;
|
||||||
|
const updateQrCodeUrl = getUpdatePreviewUrl({
|
||||||
|
message: updateMessage,
|
||||||
|
updateRuntimeVersion: runtime.runtimeVersion,
|
||||||
|
createdAt: updateCreatedAt.toString(),
|
||||||
|
slug: projectName, // todo check this
|
||||||
|
projectId,
|
||||||
|
group: updateGroupId,
|
||||||
|
});
|
||||||
|
|
||||||
Log.log(
|
Log.log(
|
||||||
formatFields([
|
formatFields([
|
||||||
@@ -517,6 +528,9 @@ export default class UpdatePublish extends EasCommand {
|
|||||||
{ label: 'EAS Dashboard', value: updateGroupLink },
|
{ label: 'EAS Dashboard', value: updateGroupLink },
|
||||||
])
|
])
|
||||||
);
|
);
|
||||||
|
qrcodeTerminal.generate(updateQrCodeUrl, { small: true }, code =>
|
||||||
|
Log.log(`${indentString(code, 2)}\n`)
|
||||||
|
);
|
||||||
Log.addNewLineIfNone();
|
Log.addNewLineIfNone();
|
||||||
if (
|
if (
|
||||||
isUploadedAssetCountAboveWarningThreshold(uploadedAssetCount, assetLimitPerUpdateGroup)
|
isUploadedAssetCountAboveWarningThreshold(uploadedAssetCount, assetLimitPerUpdateGroup)
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ export default class UpdateRepublish extends EasCommand {
|
|||||||
required: false,
|
required: false,
|
||||||
}),
|
}),
|
||||||
'private-key-path': Flags.string({
|
'private-key-path': Flags.string({
|
||||||
description: `File containing the PEM-encoded private key corresponding to the certificate in expo-updates' configuration. Defaults to a file named "private-key.pem" in the certificate's directory.`,
|
description: `File containing the PEM-encoded private key corresponding to the certificate in expo-updates' configuration. Defaults to a file named "private-key.pem" in the certificate's directory. Only relevant if you are using code signing: https://docs.expo.dev/eas-update/code-signing/`,
|
||||||
required: false,
|
required: false,
|
||||||
}),
|
}),
|
||||||
...EasNonInteractiveAndJsonFlags,
|
...EasNonInteractiveAndJsonFlags,
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ export default class UpdateRollBackToEmbedded extends EasCommand {
|
|||||||
default: false,
|
default: false,
|
||||||
}),
|
}),
|
||||||
'private-key-path': Flags.string({
|
'private-key-path': Flags.string({
|
||||||
description: `File containing the PEM-encoded private key corresponding to the certificate in expo-updates' configuration. Defaults to a file named "private-key.pem" in the certificate's directory.`,
|
description: `File containing the PEM-encoded private key corresponding to the certificate in expo-updates' configuration. Defaults to a file named "private-key.pem" in the certificate's directory. Only relevant if you are using code signing: https://docs.expo.dev/eas-update/code-signing/`,
|
||||||
required: false,
|
required: false,
|
||||||
}),
|
}),
|
||||||
...EasNonInteractiveAndJsonFlags,
|
...EasNonInteractiveAndJsonFlags,
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ export default class UpdateRollback extends EasCommand {
|
|||||||
|
|
||||||
static override flags = {
|
static override flags = {
|
||||||
'private-key-path': Flags.string({
|
'private-key-path': Flags.string({
|
||||||
description: `File containing the PEM-encoded private key corresponding to the certificate in expo-updates' configuration. Defaults to a file named "private-key.pem" in the certificate's directory.`,
|
description: `File containing the PEM-encoded private key corresponding to the certificate in expo-updates' configuration. Defaults to a file named "private-key.pem" in the certificate's directory. Only relevant if you are using code signing: https://docs.expo.dev/eas-update/code-signing/`,
|
||||||
required: false,
|
required: false,
|
||||||
}),
|
}),
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -352,7 +352,6 @@ export class SetUpAdhocProvisioningProfile {
|
|||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
if (method === RegistrationMethod.WEBSITE) {
|
if (method === RegistrationMethod.WEBSITE) {
|
||||||
Log.newLine();
|
|
||||||
Log.log(chalk.bold("Press any key if you've already finished device registration."));
|
Log.log(chalk.bold("Press any key if you've already finished device registration."));
|
||||||
await pressAnyKeyToContinueAsync();
|
await pressAnyKeyToContinueAsync();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import {
|
|||||||
} from '@expo/apple-utils';
|
} from '@expo/apple-utils';
|
||||||
import assert from 'assert';
|
import assert from 'assert';
|
||||||
import chalk from 'chalk';
|
import chalk from 'chalk';
|
||||||
import { int } from 'getenv';
|
import * as getenv from 'getenv';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
ApiKeyAuthCtx,
|
ApiKeyAuthCtx,
|
||||||
@@ -191,7 +191,7 @@ async function authenticateAsUserAsync(options: Options = {}): Promise<AuthCtx>
|
|||||||
cookies: options.cookies,
|
cookies: options.cookies,
|
||||||
teamId: options.teamId ?? process.env.EXPO_APPLE_TEAM_ID,
|
teamId: options.teamId ?? process.env.EXPO_APPLE_TEAM_ID,
|
||||||
providerId: process.env.EXPO_APPLE_PROVIDER_ID
|
providerId: process.env.EXPO_APPLE_PROVIDER_ID
|
||||||
? int(process.env.EXPO_APPLE_PROVIDER_ID)
|
? getenv.int('EXPO_APPLE_PROVIDER_ID')
|
||||||
: undefined,
|
: undefined,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ export async function runRegistrationUrlMethodAsync(
|
|||||||
Log.log(
|
Log.log(
|
||||||
'Open the following link on your iOS devices (or scan the QR code) and follow the instructions to install the development profile:'
|
'Open the following link on your iOS devices (or scan the QR code) and follow the instructions to install the development profile:'
|
||||||
);
|
);
|
||||||
Log.newLine();
|
|
||||||
Log.log(chalk.green(`${registrationURL}`));
|
Log.log(chalk.green(`${registrationURL}`));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+4
@@ -2727,6 +2727,7 @@ export type BuildMetrics = {
|
|||||||
export enum BuildMode {
|
export enum BuildMode {
|
||||||
Build = 'BUILD',
|
Build = 'BUILD',
|
||||||
Custom = 'CUSTOM',
|
Custom = 'CUSTOM',
|
||||||
|
Repack = 'REPACK',
|
||||||
Resign = 'RESIGN'
|
Resign = 'RESIGN'
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3671,6 +3672,8 @@ export type GitHubBuildInput = {
|
|||||||
buildProfile: Scalars['String']['input'];
|
buildProfile: Scalars['String']['input'];
|
||||||
gitRef: Scalars['String']['input'];
|
gitRef: Scalars['String']['input'];
|
||||||
platform: AppPlatform;
|
platform: AppPlatform;
|
||||||
|
/** Repack the golden dev client build instead of running full build process. Used for onboarding. Do not use outside of onboarding flow, as for now it's only created with this specific use case in mind. */
|
||||||
|
repack?: InputMaybe<Scalars['Boolean']['input']>;
|
||||||
submitProfile?: InputMaybe<Scalars['String']['input']>;
|
submitProfile?: InputMaybe<Scalars['String']['input']>;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -4300,6 +4303,7 @@ export type JobRun = {
|
|||||||
endedAt?: Maybe<Scalars['DateTime']['output']>;
|
endedAt?: Maybe<Scalars['DateTime']['output']>;
|
||||||
expiresAt: Scalars['DateTime']['output'];
|
expiresAt: Scalars['DateTime']['output'];
|
||||||
gitCommitHash?: Maybe<Scalars['String']['output']>;
|
gitCommitHash?: Maybe<Scalars['String']['output']>;
|
||||||
|
gitCommitMessage?: Maybe<Scalars['String']['output']>;
|
||||||
gitRef?: Maybe<Scalars['String']['output']>;
|
gitRef?: Maybe<Scalars['String']['output']>;
|
||||||
id: Scalars['ID']['output'];
|
id: Scalars['ID']['output'];
|
||||||
initiatingActor?: Maybe<Actor>;
|
initiatingActor?: Maybe<Actor>;
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
import spawnAsync from '@expo/spawn-async';
|
||||||
|
|
||||||
import { runCommandAsync } from './runCommand';
|
import { runCommandAsync } from './runCommand';
|
||||||
import Log from '../log';
|
import Log from '../log';
|
||||||
import { confirmAsync, promptAsync } from '../prompts';
|
import { confirmAsync, promptAsync } from '../prompts';
|
||||||
@@ -6,16 +8,17 @@ export async function runGitCloneAsync({
|
|||||||
targetProjectDir,
|
targetProjectDir,
|
||||||
githubRepositoryName,
|
githubRepositoryName,
|
||||||
githubUsername,
|
githubUsername,
|
||||||
useSsh = true,
|
cloneMethod,
|
||||||
}: {
|
}: {
|
||||||
githubUsername: string;
|
githubUsername: string;
|
||||||
githubRepositoryName: string;
|
githubRepositoryName: string;
|
||||||
targetProjectDir: string;
|
targetProjectDir: string;
|
||||||
useSsh?: boolean;
|
cloneMethod: 'ssh' | 'https';
|
||||||
}): Promise<{
|
}): Promise<{
|
||||||
targetProjectDir: string;
|
targetProjectDir: string;
|
||||||
}> {
|
}> {
|
||||||
const url = useSsh
|
const url =
|
||||||
|
cloneMethod === 'ssh'
|
||||||
? `[email protected]:${githubUsername}/${githubRepositoryName}.git`
|
? `[email protected]:${githubUsername}/${githubRepositoryName}.git`
|
||||||
: `https://github.com/${githubUsername}/${githubRepositoryName}.git`;
|
: `https://github.com/${githubUsername}/${githubRepositoryName}.git`;
|
||||||
try {
|
try {
|
||||||
@@ -47,11 +50,15 @@ export async function runGitCloneAsync({
|
|||||||
githubRepositoryName,
|
githubRepositoryName,
|
||||||
githubUsername,
|
githubUsername,
|
||||||
targetProjectDir: newTargetProjectDir,
|
targetProjectDir: newTargetProjectDir,
|
||||||
|
cloneMethod,
|
||||||
});
|
});
|
||||||
} else if (useSsh && error.stderr.includes('Permission denied')) {
|
} else if (error.stderr.includes('Permission denied')) {
|
||||||
Log.warn('It seems like you do not have permission to clone the repository using SSH.');
|
Log.warn(
|
||||||
|
`It seems like you do not have permission to clone the repository using ${cloneMethod}.`
|
||||||
|
);
|
||||||
|
const newMethod = cloneMethod === 'ssh' ? 'https' : 'ssh';
|
||||||
const shouldContinue = await confirmAsync({
|
const shouldContinue = await confirmAsync({
|
||||||
message: 'Do you want to clone the repository using HTTPS instead?',
|
message: `Do you want to clone the repository using ${newMethod} instead?`,
|
||||||
});
|
});
|
||||||
if (!shouldContinue) {
|
if (!shouldContinue) {
|
||||||
throw new Error('Permission denied. Aborting...');
|
throw new Error('Permission denied. Aborting...');
|
||||||
@@ -60,7 +67,7 @@ export async function runGitCloneAsync({
|
|||||||
githubRepositoryName,
|
githubRepositoryName,
|
||||||
githubUsername,
|
githubUsername,
|
||||||
targetProjectDir,
|
targetProjectDir,
|
||||||
useSsh: false,
|
cloneMethod: newMethod,
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
throw error;
|
throw error;
|
||||||
@@ -79,3 +86,21 @@ export async function runGitPushAsync({
|
|||||||
cwd: targetProjectDir,
|
cwd: targetProjectDir,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function canAccessRepositoryUsingSshAsync({
|
||||||
|
githubUsername,
|
||||||
|
githubRepositoryName,
|
||||||
|
}: {
|
||||||
|
githubUsername: string;
|
||||||
|
githubRepositoryName: string;
|
||||||
|
}): Promise<boolean> {
|
||||||
|
try {
|
||||||
|
await spawnAsync('git', [
|
||||||
|
'ls-remote',
|
||||||
|
`[email protected]:${githubUsername}/${githubRepositoryName}.git`,
|
||||||
|
]);
|
||||||
|
return true;
|
||||||
|
} catch {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
+228
@@ -0,0 +1,228 @@
|
|||||||
|
/* Example build.gradle file from https://github.com/expo/expo/blob/6ab0274b5cb9a9c223e0d453787a522b438b4fcb/templates/expo-template-bare-minimum/android/app/build.gradle */
|
||||||
|
|
||||||
|
apply plugin: "com.android.application"
|
||||||
|
|
||||||
|
import com.android.build.OutputFile
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets
|
||||||
|
* and bundleReleaseJsAndAssets).
|
||||||
|
* These basically call `react-native bundle` with the correct arguments during the Android build
|
||||||
|
* cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the
|
||||||
|
* bundle directly from the development server. Below you can see all the possible configurations
|
||||||
|
* and their defaults. If you decide to add a configuration block, make sure to add it before the
|
||||||
|
* `apply from: "../../node_modules/react-native/react.gradle"` line.
|
||||||
|
*
|
||||||
|
* project.ext.react = [
|
||||||
|
* // the name of the generated asset file containing your JS bundle
|
||||||
|
* bundleAssetName: "index.android.bundle",
|
||||||
|
*
|
||||||
|
* // the entry file for bundle generation. If none specified and
|
||||||
|
* // "index.android.js" exists, it will be used. Otherwise "index.js" is
|
||||||
|
* // default. Can be overridden with ENTRY_FILE environment variable.
|
||||||
|
* entryFile: "index.android.js",
|
||||||
|
*
|
||||||
|
* // https://reactnative.dev/docs/performance#enable-the-ram-format
|
||||||
|
* bundleCommand: "ram-bundle",
|
||||||
|
*
|
||||||
|
* // whether to bundle JS and assets in debug mode
|
||||||
|
* bundleInDebug: false,
|
||||||
|
*
|
||||||
|
* // whether to bundle JS and assets in release mode
|
||||||
|
* bundleInRelease: true,
|
||||||
|
*
|
||||||
|
* // whether to bundle JS and assets in another build variant (if configured).
|
||||||
|
* // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants
|
||||||
|
* // The configuration property can be in the following formats
|
||||||
|
* // 'bundleIn${productFlavor}${buildType}'
|
||||||
|
* // 'bundleIn${buildType}'
|
||||||
|
* // bundleInFreeDebug: true,
|
||||||
|
* // bundleInPaidRelease: true,
|
||||||
|
* // bundleInBeta: true,
|
||||||
|
*
|
||||||
|
* // whether to disable dev mode in custom build variants (by default only disabled in release)
|
||||||
|
* // for example: to disable dev mode in the staging build type (if configured)
|
||||||
|
* devDisabledInStaging: true,
|
||||||
|
* // The configuration property can be in the following formats
|
||||||
|
* // 'devDisabledIn${productFlavor}${buildType}'
|
||||||
|
* // 'devDisabledIn${buildType}'
|
||||||
|
*
|
||||||
|
* // the root of your project, i.e. where "package.json" lives
|
||||||
|
* root: "../../",
|
||||||
|
*
|
||||||
|
* // where to put the JS bundle asset in debug mode
|
||||||
|
* jsBundleDirDebug: "$buildDir/intermediates/assets/debug",
|
||||||
|
*
|
||||||
|
* // where to put the JS bundle asset in release mode
|
||||||
|
* jsBundleDirRelease: "$buildDir/intermediates/assets/release",
|
||||||
|
*
|
||||||
|
* // where to put drawable resources / React Native assets, e.g. the ones you use via
|
||||||
|
* // require('./image.png')), in debug mode
|
||||||
|
* resourcesDirDebug: "$buildDir/intermediates/res/merged/debug",
|
||||||
|
*
|
||||||
|
* // where to put drawable resources / React Native assets, e.g. the ones you use via
|
||||||
|
* // require('./image.png')), in release mode
|
||||||
|
* resourcesDirRelease: "$buildDir/intermediates/res/merged/release",
|
||||||
|
*
|
||||||
|
* // by default the gradle tasks are skipped if none of the JS files or assets change; this means
|
||||||
|
* // that we don't look at files in android/ or ios/ to determine whether the tasks are up to
|
||||||
|
* // date; if you have any other folders that you want to ignore for performance reasons (gradle
|
||||||
|
* // indexes the entire tree), add them here. Alternatively, if you have JS files in android/
|
||||||
|
* // for example, you might want to remove it from here.
|
||||||
|
* inputExcludes: ["android/**", "ios/**"],
|
||||||
|
*
|
||||||
|
* // override which node gets called and with what additional arguments
|
||||||
|
* nodeExecutableAndArgs: ["node"],
|
||||||
|
*
|
||||||
|
* // supply additional arguments to the packager
|
||||||
|
* extraPackagerArgs: []
|
||||||
|
* ]
|
||||||
|
*/
|
||||||
|
|
||||||
|
project.ext.react = [
|
||||||
|
enableHermes: false
|
||||||
|
]
|
||||||
|
|
||||||
|
//
|
||||||
|
|
||||||
|
apply from: '../../node_modules/react-native-unimodules/gradle.groovy'
|
||||||
|
apply from: "../../node_modules/react-native/react.gradle"
|
||||||
|
apply from: "../../node_modules/expo-constants/scripts/get-app-config-android.gradle"
|
||||||
|
apply from: "../../node_modules/expo-updates/scripts/create-manifest-android.gradle"
|
||||||
|
|
||||||
|
//
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set this to true to create two separate APKs instead of one:
|
||||||
|
* - An APK that only works on ARM devices
|
||||||
|
* - An APK that only works on x86 devices
|
||||||
|
* The advantage is the size of the APK is reduced by about 4MB.
|
||||||
|
* Upload all the APKs to the Play Store and people will download
|
||||||
|
* the correct one based on the CPU architecture of their device.
|
||||||
|
*/
|
||||||
|
def enableSeparateBuildPerCPUArchitecture = false
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Run Proguard to shrink the Java bytecode in release builds.
|
||||||
|
*/
|
||||||
|
def enableProguardInReleaseBuilds = false
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The preferred build flavor of JavaScriptCore.
|
||||||
|
*
|
||||||
|
* For example, to use the international variant, you can use:
|
||||||
|
* `def jscFlavor = 'org.webkit:android-jsc-intl:+'`
|
||||||
|
*
|
||||||
|
* The international variant includes ICU i18n library and necessary data
|
||||||
|
* allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that
|
||||||
|
* give correct results when using with locales other than en-US. Note that
|
||||||
|
* this variant is about 6MiB larger per architecture than default.
|
||||||
|
*/
|
||||||
|
def jscFlavor = 'org.webkit:android-jsc:+'
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether to enable the Hermes VM.
|
||||||
|
*
|
||||||
|
* This should be set on project.ext.react and mirrored here. If it is not set
|
||||||
|
* on project.ext.react, JavaScript will not be compiled to Hermes Bytecode
|
||||||
|
* and the benefits of using Hermes will therefore be sharply reduced.
|
||||||
|
*/
|
||||||
|
def enableHermes = project.ext.react.get("enableHermes", false);
|
||||||
|
|
||||||
|
android {
|
||||||
|
compileSdkVersion rootProject.ext.compileSdkVersion
|
||||||
|
|
||||||
|
compileOptions {
|
||||||
|
sourceCompatibility JavaVersion.VERSION_1_8
|
||||||
|
targetCompatibility JavaVersion.VERSION_1_8
|
||||||
|
}
|
||||||
|
|
||||||
|
defaultConfig {
|
||||||
|
applicationId "com.helloworld"
|
||||||
|
minSdkVersion rootProject.ext.minSdkVersion
|
||||||
|
targetSdkVersion rootProject.ext.targetSdkVersion
|
||||||
|
versionCode 1
|
||||||
|
versionName "1.0"
|
||||||
|
}
|
||||||
|
splits {
|
||||||
|
abi {
|
||||||
|
reset()
|
||||||
|
enable enableSeparateBuildPerCPUArchitecture
|
||||||
|
universalApk false // If true, also generate a universal APK
|
||||||
|
include "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
signingConfigs {
|
||||||
|
debug {
|
||||||
|
storeFile file('debug.keystore')
|
||||||
|
storePassword 'android'
|
||||||
|
keyAlias 'androiddebugkey'
|
||||||
|
keyPassword 'android'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
buildTypes {
|
||||||
|
debug {
|
||||||
|
signingConfig signingConfigs.debug
|
||||||
|
}
|
||||||
|
release {
|
||||||
|
// Caution! In production, you need to generate your own keystore file.
|
||||||
|
// see https://reactnative.dev/docs/signed-apk-android.
|
||||||
|
signingConfig signingConfigs.debug
|
||||||
|
minifyEnabled enableProguardInReleaseBuilds
|
||||||
|
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// applicationVariants are e.g. debug, release
|
||||||
|
applicationVariants.all { variant ->
|
||||||
|
variant.outputs.each { output ->
|
||||||
|
// For each separate APK per architecture, set a unique version code as described here:
|
||||||
|
// https://developer.android.com/studio/build/configure-apk-splits.html
|
||||||
|
def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4]
|
||||||
|
def abi = output.getFilter(OutputFile.ABI)
|
||||||
|
if (abi != null) { // null for the universal-debug, universal-release variants
|
||||||
|
output.versionCodeOverride =
|
||||||
|
versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
implementation fileTree(dir: "libs", include: ["*.jar"])
|
||||||
|
//noinspection GradleDynamicVersion
|
||||||
|
implementation "com.facebook.react:react-native:+" // From node_modules
|
||||||
|
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0"
|
||||||
|
debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") {
|
||||||
|
exclude group:'com.facebook.fbjni'
|
||||||
|
}
|
||||||
|
debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") {
|
||||||
|
exclude group:'com.facebook.flipper'
|
||||||
|
exclude group:'com.squareup.okhttp3', module:'okhttp'
|
||||||
|
}
|
||||||
|
debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") {
|
||||||
|
exclude group:'com.facebook.flipper'
|
||||||
|
}
|
||||||
|
addUnimodulesDependencies()
|
||||||
|
|
||||||
|
if (enableHermes) {
|
||||||
|
def hermesPath = "../../node_modules/hermes-engine/android/";
|
||||||
|
debugImplementation files(hermesPath + "hermes-debug.aar")
|
||||||
|
releaseImplementation files(hermesPath + "hermes-release.aar")
|
||||||
|
} else {
|
||||||
|
implementation jscFlavor
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Run this once to be able to run the application with BUCK
|
||||||
|
// puts all compile dependencies into folder libs for BUCK to use
|
||||||
|
task copyDownloadableDepsToLibs(type: Copy) {
|
||||||
|
from configurations.compile
|
||||||
|
into 'libs'
|
||||||
|
}
|
||||||
|
|
||||||
|
apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)
|
||||||
@@ -38,6 +38,30 @@ describe(getAppBuildGradleAsync, () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('parsing build gradle with empty single line comment', async () => {
|
||||||
|
vol.fromJSON(
|
||||||
|
{
|
||||||
|
'android/app/build.gradle': await fsReal.promises.readFile(
|
||||||
|
path.join(__dirname, 'fixtures/empty-single-line-comment-in-build.gradle'),
|
||||||
|
'utf-8'
|
||||||
|
),
|
||||||
|
},
|
||||||
|
'/test'
|
||||||
|
);
|
||||||
|
const buildGradle = await getAppBuildGradleAsync('/test');
|
||||||
|
expect(
|
||||||
|
pick(buildGradle?.android ?? {}, ['defaultConfig', 'flavorDimensions', 'productFlavors'])
|
||||||
|
).toEqual({
|
||||||
|
defaultConfig: {
|
||||||
|
applicationId: 'com.helloworld',
|
||||||
|
minSdkVersion: 'rootProject.ext.minSdkVersion',
|
||||||
|
targetSdkVersion: 'rootProject.ext.targetSdkVersion',
|
||||||
|
versionCode: '1',
|
||||||
|
versionName: '1.0',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
test('parsing multiflavor build.gradle', async () => {
|
test('parsing multiflavor build.gradle', async () => {
|
||||||
vol.fromJSON(
|
vol.fromJSON(
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -30,7 +30,15 @@ export const DEFAULT_MODULE_NAME = 'app';
|
|||||||
export async function getAppBuildGradleAsync(projectDir: string): Promise<AppBuildGradle> {
|
export async function getAppBuildGradleAsync(projectDir: string): Promise<AppBuildGradle> {
|
||||||
const buildGradlePath = AndroidConfig.Paths.getAppBuildGradleFilePath(projectDir);
|
const buildGradlePath = AndroidConfig.Paths.getAppBuildGradleFilePath(projectDir);
|
||||||
const rawBuildGradle = await fs.readFile(buildGradlePath, 'utf8');
|
const rawBuildGradle = await fs.readFile(buildGradlePath, 'utf8');
|
||||||
return await g2js.parseText(rawBuildGradle);
|
|
||||||
|
// filter out any comments
|
||||||
|
// when comments are present, gradle-to-js fails to parse the file
|
||||||
|
const rawBuildGradleWithoutComments = rawBuildGradle
|
||||||
|
.split('\n')
|
||||||
|
.filter(line => !line.trim().startsWith('//'))
|
||||||
|
.join('\n');
|
||||||
|
|
||||||
|
return await g2js.parseText(rawBuildGradleWithoutComments);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function resolveConfigValue(
|
export function resolveConfigValue(
|
||||||
|
|||||||
@@ -270,8 +270,6 @@ async function handleBuildListSourceAsync(
|
|||||||
): Promise<ResolvedArchiveSource> {
|
): Promise<ResolvedArchiveSource> {
|
||||||
try {
|
try {
|
||||||
const appPlatform = toAppPlatform(ctx.platform);
|
const appPlatform = toAppPlatform(ctx.platform);
|
||||||
const expiryDate = new Date(); // artifacts expire after 30 days
|
|
||||||
expiryDate.setDate(expiryDate.getDate() - 30);
|
|
||||||
|
|
||||||
const recentBuilds = await getRecentBuildsForSubmissionAsync(
|
const recentBuilds = await getRecentBuildsForSubmissionAsync(
|
||||||
ctx.graphqlClient,
|
ctx.graphqlClient,
|
||||||
@@ -294,7 +292,7 @@ async function handleBuildListSourceAsync(
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (recentBuilds.every(it => new Date(it.updatedAt) < expiryDate)) {
|
if (recentBuilds.every(it => new Date(it.expirationDate) <= new Date())) {
|
||||||
Log.error(
|
Log.error(
|
||||||
chalk.bold(
|
chalk.bold(
|
||||||
'It looks like all of your build artifacts have expired. ' +
|
'It looks like all of your build artifacts have expired. ' +
|
||||||
@@ -306,7 +304,7 @@ async function handleBuildListSourceAsync(
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
const choices = recentBuilds.map(build => formatBuildChoice(build, expiryDate));
|
const choices = recentBuilds.map(build => formatBuildChoice(build));
|
||||||
choices.push({
|
choices.push({
|
||||||
title: 'None of the above (select another option)',
|
title: 'None of the above (select another option)',
|
||||||
value: null,
|
value: null,
|
||||||
@@ -336,7 +334,7 @@ async function handleBuildListSourceAsync(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function formatBuildChoice(build: BuildFragment, expiryDate: Date): prompts.Choice {
|
function formatBuildChoice(build: BuildFragment): prompts.Choice {
|
||||||
const {
|
const {
|
||||||
id,
|
id,
|
||||||
updatedAt,
|
updatedAt,
|
||||||
@@ -380,7 +378,7 @@ function formatBuildChoice(build: BuildFragment, expiryDate: Date): prompts.Choi
|
|||||||
title,
|
title,
|
||||||
description: filteredDescriptionArray.length > 0 ? filteredDescriptionArray.join('\n') : '',
|
description: filteredDescriptionArray.length > 0 ? filteredDescriptionArray.join('\n') : '',
|
||||||
value: build,
|
value: build,
|
||||||
disabled: buildDate < expiryDate,
|
disabled: new Date(build.expirationDate) < new Date(),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -273,7 +273,9 @@ describe(getArchiveAsync, () => {
|
|||||||
jest.mocked(getRecentBuildsForSubmissionAsync).mockResolvedValueOnce([
|
jest.mocked(getRecentBuildsForSubmissionAsync).mockResolvedValueOnce([
|
||||||
{
|
{
|
||||||
...MOCK_BUILD_FRAGMENT,
|
...MOCK_BUILD_FRAGMENT,
|
||||||
updatedAt: new Date(Date.now() - 31 * 24 * 3600 * 1000),
|
// We're setting expirationDate to be in the past,
|
||||||
|
// because we want to build to appear expired.
|
||||||
|
expirationDate: new Date(Date.now() - 31 * 24 * 3600 * 1000),
|
||||||
} as BuildFragment,
|
} as BuildFragment,
|
||||||
]);
|
]);
|
||||||
jest
|
jest
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ export async function uploadFileAtPathToGCSAsync(
|
|||||||
graphqlClient: ExpoGraphqlClient,
|
graphqlClient: ExpoGraphqlClient,
|
||||||
type: UploadSessionType,
|
type: UploadSessionType,
|
||||||
path: string,
|
path: string,
|
||||||
handleProgressEvent: ProgressHandler
|
handleProgressEvent: ProgressHandler = () => {}
|
||||||
): Promise<string> {
|
): Promise<string> {
|
||||||
const signedUrl = await UploadSessionMutation.createUploadSessionAsync(graphqlClient, type);
|
const signedUrl = await UploadSessionMutation.createUploadSessionAsync(graphqlClient, type);
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "@expo/eas-json",
|
"name": "@expo/eas-json",
|
||||||
"description": "A library for interacting with eas.json",
|
"description": "A library for interacting with eas.json",
|
||||||
"version": "9.0.4",
|
"version": "10.0.0",
|
||||||
"author": "Expo <[email protected]>",
|
"author": "Expo <[email protected]>",
|
||||||
"bugs": "https://github.com/expo/eas-cli/issues",
|
"bugs": "https://github.com/expo/eas-cli/issues",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/code-frame": "7.23.5",
|
"@babel/code-frame": "7.23.5",
|
||||||
"@expo/eas-build-job": "1.0.108",
|
"@expo/eas-build-job": "1.0.117",
|
||||||
"chalk": "4.1.2",
|
"chalk": "4.1.2",
|
||||||
"env-string": "1.0.1",
|
"env-string": "1.0.1",
|
||||||
"fs-extra": "11.2.0",
|
"fs-extra": "11.2.0",
|
||||||
@@ -25,7 +25,7 @@
|
|||||||
"typescript": "5.3.3"
|
"typescript": "5.3.3"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=16.0.0"
|
"node": ">=18.0.0"
|
||||||
},
|
},
|
||||||
"homepage": "https://github.com/expo/eas-cli",
|
"homepage": "https://github.com/expo/eas-cli",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
|||||||
@@ -383,18 +383,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"deprecated": true,
|
"deprecated": true,
|
||||||
"enum": [
|
"enum": ["default", "stable"],
|
||||||
"default",
|
|
||||||
"stable",
|
|
||||||
"macos-monterey-12.4-xcode-13.4",
|
|
||||||
"macos-monterey-12.3-xcode-13.3",
|
|
||||||
"macos-monterey-12.1-xcode-13.2",
|
|
||||||
"macos-ventura-13.4-xcode-14.3.1",
|
|
||||||
"macos-ventura-13.3-xcode-14.3",
|
|
||||||
"macos-monterey-12.6-xcode-14.2",
|
|
||||||
"macos-monterey-12.6-xcode-14.1",
|
|
||||||
"macos-monterey-12.6-xcode-14.0"
|
|
||||||
],
|
|
||||||
"markdownEnumDescriptions": [
|
"markdownEnumDescriptions": [
|
||||||
"This image tag is deprecated, please use other image tags or images directly instead.",
|
"This image tag is deprecated, please use other image tags or images directly instead.",
|
||||||
"This image tag is deprecated, please use other image tags or images directly instead.",
|
"This image tag is deprecated, please use other image tags or images directly instead.",
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
"author": "Expo <[email protected]>",
|
"author": "Expo <[email protected]>",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=16.0.0"
|
"node": ">=18.0.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"chalk": "5.2.0",
|
"chalk": "5.2.0",
|
||||||
|
|||||||
@@ -1462,15 +1462,15 @@
|
|||||||
slugify "^1.3.4"
|
slugify "^1.3.4"
|
||||||
sucrase "^3.20.0"
|
sucrase "^3.20.0"
|
||||||
|
|
||||||
"@expo/[email protected]08":
|
"@expo/[email protected]17":
|
||||||
version "1.0.108"
|
version "1.0.117"
|
||||||
resolved "https://registry.yarnpkg.com/@expo/eas-build-job/-/eas-build-job-1.0.108.tgz#198e189beff4ca2405ab68ee04395878cff45084"
|
resolved "https://registry.yarnpkg.com/@expo/eas-build-job/-/eas-build-job-1.0.117.tgz#0a0a057bd1b0df5b2857a13ef4b54db173d837bf"
|
||||||
integrity sha512-4FjqsK+k2KLjfWBT08ECFmlWH5yE9vw7vQmKzM4N8uQHKA/SbA6mMMto/f8XSbs7f5y6kdGnB7pxcMH91RuxbA==
|
integrity sha512-l1EBpRH4lqRg0uPKl4/xn3V77dzWDrSAIU0r88aNq+Slznpu8U8HCkEZSh2YyF/BFhhs5lG7v8yQclVaflVBrQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@expo/logger" "1.0.57"
|
"@expo/logger" "1.0.117"
|
||||||
joi "^17.11.0"
|
joi "^17.13.1"
|
||||||
semver "^7.5.4"
|
semver "^7.6.2"
|
||||||
zod "^3.22.4"
|
zod "^3.23.8"
|
||||||
|
|
||||||
"@expo/fingerprint@^0.6.0":
|
"@expo/fingerprint@^0.6.0":
|
||||||
version "0.6.0"
|
version "0.6.0"
|
||||||
@@ -1519,12 +1519,12 @@
|
|||||||
json5 "^2.2.2"
|
json5 "^2.2.2"
|
||||||
write-file-atomic "^2.3.0"
|
write-file-atomic "^2.3.0"
|
||||||
|
|
||||||
"@expo/[email protected].57":
|
"@expo/[email protected].117":
|
||||||
version "1.0.57"
|
version "1.0.117"
|
||||||
resolved "https://registry.yarnpkg.com/@expo/logger/-/logger-1.0.57.tgz#b64dfb29a06e8ca476905dd445a0e105fd919bcc"
|
resolved "https://registry.yarnpkg.com/@expo/logger/-/logger-1.0.117.tgz#31e302656f33dd015fdde89ad803d710a0e5b8a2"
|
||||||
integrity sha512-kd/1MOrVST9gQtnTD+qAV3KdrYCV9oShzIqYek+5XI3M/6QNvfv8IPr2pv+xaYZoCZgnNdI4ViWo0eYBDJMngA==
|
integrity sha512-tuCT5fmjRjED6HYAf4HgE+UbiHT3JYrkUzUv9FC769goxo4LuuewBNQiDUkeecQTha7aTS5aO2YHlfdipI8gzg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/bunyan" "^1.8.8"
|
"@types/bunyan" "^1.8.11"
|
||||||
bunyan "^1.8.15"
|
bunyan "^1.8.15"
|
||||||
|
|
||||||
"@expo/[email protected]":
|
"@expo/[email protected]":
|
||||||
@@ -1667,23 +1667,23 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
cross-spawn "^7.0.3"
|
cross-spawn "^7.0.3"
|
||||||
|
|
||||||
"@expo/[email protected]08":
|
"@expo/[email protected]18":
|
||||||
version "1.0.108"
|
version "1.0.118"
|
||||||
resolved "https://registry.yarnpkg.com/@expo/steps/-/steps-1.0.108.tgz#3d06486108ce27c898799ed8e6a33ff4bdf6b8f8"
|
resolved "https://registry.yarnpkg.com/@expo/steps/-/steps-1.0.118.tgz#67839259e67b52e7b24f0bfc5913c869c1ed1f2e"
|
||||||
integrity sha512-MUZE4MkY20Y5y1oKDGvnRFFtue5qtkC/l9gsPW2rAxBe9lXSVIGhfSpIDk0MUgd0sjdJbO/qDmYbrqf09qj/lA==
|
integrity sha512-JzU4K5bmNG+RFj21ulPXNADwxdtynN8WAZnqRluafz7FcU9ibNMdowdXWR17zo0xpCd1f5awcsjhTebWDjd5hg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@expo/eas-build-job" "1.0.108"
|
"@expo/eas-build-job" "1.0.117"
|
||||||
"@expo/logger" "1.0.57"
|
"@expo/logger" "1.0.117"
|
||||||
"@expo/spawn-async" "^1.7.2"
|
"@expo/spawn-async" "^1.7.2"
|
||||||
arg "^5.0.2"
|
arg "^5.0.2"
|
||||||
fs-extra "^11.2.0"
|
fs-extra "^11.2.0"
|
||||||
joi "^17.11.0"
|
joi "^17.13.1"
|
||||||
jsep "^1.3.8"
|
jsep "^1.3.8"
|
||||||
lodash.clonedeep "^4.5.0"
|
lodash.clonedeep "^4.5.0"
|
||||||
lodash.get "^4.4.2"
|
lodash.get "^4.4.2"
|
||||||
this-file "^2.0.3"
|
this-file "^2.0.3"
|
||||||
uuid "^9.0.1"
|
uuid "^9.0.1"
|
||||||
yaml "^2.3.4"
|
yaml "^2.4.3"
|
||||||
|
|
||||||
"@expo/[email protected]":
|
"@expo/[email protected]":
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
@@ -3487,10 +3487,10 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@hapi/hoek" "^9.0.0"
|
"@hapi/hoek" "^9.0.0"
|
||||||
|
|
||||||
"@sideway/address@^4.1.4":
|
"@sideway/address@^4.1.5":
|
||||||
version "4.1.4"
|
version "4.1.5"
|
||||||
resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0"
|
resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.5.tgz#4bc149a0076623ced99ca8208ba780d65a99b9d5"
|
||||||
integrity sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==
|
integrity sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@hapi/hoek" "^9.0.0"
|
"@hapi/hoek" "^9.0.0"
|
||||||
|
|
||||||
@@ -3658,10 +3658,10 @@
|
|||||||
"@types/connect" "*"
|
"@types/connect" "*"
|
||||||
"@types/node" "*"
|
"@types/node" "*"
|
||||||
|
|
||||||
"@types/bunyan@^1.8.8":
|
"@types/bunyan@^1.8.11":
|
||||||
version "1.8.8"
|
version "1.8.11"
|
||||||
resolved "https://registry.yarnpkg.com/@types/bunyan/-/bunyan-1.8.8.tgz#8d6d33f090f37c07e2a80af30ae728450a101008"
|
resolved "https://registry.yarnpkg.com/@types/bunyan/-/bunyan-1.8.11.tgz#0b9e7578a5aa2390faf12a460827154902299638"
|
||||||
integrity sha512-Cblq+Yydg3u+sGiz2mjHjC5MPmdjY+No4qvHrF+BUhblsmSfMvsHLbOG62tPbonsqBj6sbWv1LHcsoe5Jw+/Ow==
|
integrity sha512-758fRH7umIMk5qt5ELmRMff4mLDlN+xyYzC+dkPTdKwbSkJFvz6xwyScrytPU0QIBbRRwbiE8/BIg8bpajerNQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/node" "*"
|
"@types/node" "*"
|
||||||
|
|
||||||
@@ -3853,12 +3853,7 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@types/node" "*"
|
"@types/node" "*"
|
||||||
|
|
||||||
"@types/node@*", "@types/node@>= 8":
|
"@types/node@*", "@types/[email protected]", "@types/node@>= 8":
|
||||||
version "14.0.27"
|
|
||||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.27.tgz#a151873af5a5e851b51b3b065c9e63390a9e0eb1"
|
|
||||||
integrity sha512-kVrqXhbclHNHGu9ztnAwSncIgJv/FaxmzXJvGXNdcCpV1b8u1/Mi6z6m0vwy0LzKeXFTPLH0NzwmoJ3fNCIq0g==
|
|
||||||
|
|
||||||
"@types/[email protected]":
|
|
||||||
version "20.11.0"
|
version "20.11.0"
|
||||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.0.tgz#8e0b99e70c0c1ade1a86c4a282f7b7ef87c9552f"
|
resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.0.tgz#8e0b99e70c0c1ade1a86c4a282f7b7ef87c9552f"
|
||||||
integrity sha512-o9bjXmDNcF7GbM4CNQpmi+TutCgap/K3w1JyKgxAjqx41zp9qlIAVFi0IhCNsJcXolEqLWhbFbEeL0PvYm4pcQ==
|
integrity sha512-o9bjXmDNcF7GbM4CNQpmi+TutCgap/K3w1JyKgxAjqx41zp9qlIAVFi0IhCNsJcXolEqLWhbFbEeL0PvYm4pcQ==
|
||||||
@@ -4870,11 +4865,11 @@ brace-expansion@^2.0.1:
|
|||||||
balanced-match "^1.0.0"
|
balanced-match "^1.0.0"
|
||||||
|
|
||||||
braces@^3.0.1, braces@^3.0.2:
|
braces@^3.0.1, braces@^3.0.2:
|
||||||
version "3.0.2"
|
version "3.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
|
resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789"
|
||||||
integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
|
integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==
|
||||||
dependencies:
|
dependencies:
|
||||||
fill-range "^7.0.1"
|
fill-range "^7.1.1"
|
||||||
|
|
||||||
browserslist@^4.17.5:
|
browserslist@^4.17.5:
|
||||||
version "4.19.1"
|
version "4.19.1"
|
||||||
@@ -7006,10 +7001,10 @@ filelist@^1.0.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
minimatch "^5.0.1"
|
minimatch "^5.0.1"
|
||||||
|
|
||||||
fill-range@^7.0.1:
|
fill-range@^7.1.1:
|
||||||
version "7.0.1"
|
version "7.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
|
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292"
|
||||||
integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
|
integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==
|
||||||
dependencies:
|
dependencies:
|
||||||
to-regex-range "^5.0.1"
|
to-regex-range "^5.0.1"
|
||||||
|
|
||||||
@@ -9273,14 +9268,14 @@ [email protected]:
|
|||||||
"@sideway/formula" "^3.0.1"
|
"@sideway/formula" "^3.0.1"
|
||||||
"@sideway/pinpoint" "^2.0.0"
|
"@sideway/pinpoint" "^2.0.0"
|
||||||
|
|
||||||
joi@^17.11.0:
|
joi@^17.13.1:
|
||||||
version "17.12.0"
|
version "17.13.1"
|
||||||
resolved "https://registry.yarnpkg.com/joi/-/joi-17.12.0.tgz#a3fb5715f198beb0471cd551dd26792089c308d5"
|
resolved "https://registry.yarnpkg.com/joi/-/joi-17.13.1.tgz#9c7b53dc3b44dd9ae200255cc3b398874918a6ca"
|
||||||
integrity sha512-HSLsmSmXz+PV9PYoi3p7cgIbj06WnEBNT28n+bbBNcPZXZFqCzzvGqpTBPujx/Z0nh1+KNQPDrNgdmQ8dq0qYw==
|
integrity sha512-vaBlIKCyo4FCUtCm7Eu4QZd/q02bWcxfUO6YSXAZOWF6gzcLBeba8kwotUdYJjDLW8Cz8RywsSOqiNJZW0mNvg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@hapi/hoek" "^9.3.0"
|
"@hapi/hoek" "^9.3.0"
|
||||||
"@hapi/topo" "^5.1.0"
|
"@hapi/topo" "^5.1.0"
|
||||||
"@sideway/address" "^4.1.4"
|
"@sideway/address" "^4.1.5"
|
||||||
"@sideway/formula" "^3.0.1"
|
"@sideway/formula" "^3.0.1"
|
||||||
"@sideway/pinpoint" "^2.0.0"
|
"@sideway/pinpoint" "^2.0.0"
|
||||||
|
|
||||||
@@ -12268,6 +12263,11 @@ semver@^6.0.0, semver@^6.1.0, semver@^6.3.0, semver@^6.3.1:
|
|||||||
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
|
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
|
||||||
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
|
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
|
||||||
|
|
||||||
|
semver@^7.6.2:
|
||||||
|
version "7.6.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13"
|
||||||
|
integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==
|
||||||
|
|
||||||
[email protected]:
|
[email protected]:
|
||||||
version "0.18.0"
|
version "0.18.0"
|
||||||
resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be"
|
resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be"
|
||||||
@@ -14096,16 +14096,16 @@ [email protected]:
|
|||||||
write-json-file "^3.2.0"
|
write-json-file "^3.2.0"
|
||||||
|
|
||||||
ws@^5.2.0:
|
ws@^5.2.0:
|
||||||
version "5.2.3"
|
version "5.2.4"
|
||||||
resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.3.tgz#05541053414921bc29c63bee14b8b0dd50b07b3d"
|
resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.4.tgz#c7bea9f1cfb5f410de50e70e82662e562113f9a7"
|
||||||
integrity sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==
|
integrity sha512-fFCejsuC8f9kOSu9FYaOw8CdO68O3h5v0lg4p74o8JqWpwTf9tniOD+nOB78aWoVSS6WptVUmDrp/KPsMVBWFQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
async-limiter "~1.0.0"
|
async-limiter "~1.0.0"
|
||||||
|
|
||||||
ws@^8.12.0, ws@^8.13.0, ws@^8.15.0:
|
ws@^8.12.0, ws@^8.13.0, ws@^8.15.0:
|
||||||
version "8.16.0"
|
version "8.17.1"
|
||||||
resolved "https://registry.yarnpkg.com/ws/-/ws-8.16.0.tgz#d1cd774f36fbc07165066a60e40323eab6446fd4"
|
resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b"
|
||||||
integrity sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==
|
integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==
|
||||||
|
|
||||||
xcode@^3.0.1:
|
xcode@^3.0.1:
|
||||||
version "3.0.1"
|
version "3.0.1"
|
||||||
@@ -14191,10 +14191,10 @@ yaml@^2.3.1:
|
|||||||
resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.1.tgz#02fe0975d23cd441242aa7204e09fc28ac2ac33b"
|
resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.1.tgz#02fe0975d23cd441242aa7204e09fc28ac2ac33b"
|
||||||
integrity sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==
|
integrity sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==
|
||||||
|
|
||||||
yaml@^2.3.4:
|
yaml@^2.4.3:
|
||||||
version "2.3.4"
|
version "2.4.3"
|
||||||
resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2"
|
resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.4.3.tgz#0777516b8c7880bcaa0f426a5410e8d6b0be1f3d"
|
||||||
integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==
|
integrity sha512-sntgmxj8o7DE7g/Qi60cqpLBA3HG3STcDA0kO+WfB05jEKhZMbY7umNm2rBpQvsmZ16/lPXCJGW2672dgOUkrg==
|
||||||
|
|
||||||
[email protected], yargs-parser@^20.2.2:
|
[email protected], yargs-parser@^20.2.2:
|
||||||
version "20.2.4"
|
version "20.2.4"
|
||||||
@@ -14367,7 +14367,7 @@ yocto-queue@^0.1.0:
|
|||||||
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
|
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
|
||||||
integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
|
integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
|
||||||
|
|
||||||
zod@^3.22.4:
|
zod@^3.23.8:
|
||||||
version "3.22.4"
|
version "3.23.8"
|
||||||
resolved "https://registry.yarnpkg.com/zod/-/zod-3.22.4.tgz#f31c3a9386f61b1f228af56faa9255e845cf3fff"
|
resolved "https://registry.yarnpkg.com/zod/-/zod-3.23.8.tgz#e37b957b5d52079769fb8097099b592f0ef4067d"
|
||||||
integrity sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==
|
integrity sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==
|
||||||
Reference in new issue
Block a user