Compare commits

...
14 Commits
Author SHA1 Message Date
Wojciech Kozyra 543e8ce26d v0.45.1 2022-01-19 16:31:12 +01:00
Kim Brandwijk 355fada383 add json output for started builds (#921) 2022-01-19 13:48:37 +01:00
Kim Brandwijk b6625a4cba add support for prebuildCommand in eas.json (#919) 2022-01-19 13:27:31 +01:00
Wojciech Kozyra c1ef20afab [eas-cli] add Monterey image (#922)
* [eas-cli] add Monterey image

* update CHANGELOG.md
2022-01-19 12:45:19 +01:00
Expo CI d8321e1f06 update CHANGELOG.md 2022-01-18 12:28:19 +00:00
kbrandwijk d8906e085e v0.45.0 2022-01-18 13:21:25 +01:00
Dominik Sokal 3b823865d3 upgrade dependencies (#872)
* upgrade dependencies

* fix TS error

* regenerate graphql code

* update CHANGELOG.md
2022-01-18 10:33:50 +01:00
dependabot[bot] a29ed19653 Bump follow-redirects from 1.14.3 to 1.14.7 (#912)
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.14.3 to 1.14.7.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.14.3...v1.14.7)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-01-17 10:15:58 +01:00
Dominik Sokal e70ecaa9b5 upgrade axios to 0.24.0 2022-01-17 10:14:13 +01:00
dependabot[bot] 9886fcb3ef Bump shelljs from 0.8.4 to 0.8.5 (#911)
Bumps [shelljs](https://github.com/shelljs/shelljs) from 0.8.4 to 0.8.5.
- [Release notes](https://github.com/shelljs/shelljs/releases)
- [Changelog](https://github.com/shelljs/shelljs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/shelljs/shelljs/compare/v0.8.4...v0.8.5)

---
updated-dependencies:
- dependency-name: shelljs
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-01-17 10:09:38 +01:00
kbrandwijk 4f5739b2dc docs: update readme 2022-01-13 14:59:48 +01:00
Kim Brandwijk c7a40b06a5 delete device functionality (#890)
* feat: device delete command
2022-01-12 12:31:10 +01:00
Dominik Sokal 3f88dc8690 fix webhook:update description 2022-01-12 11:43:19 +01:00
Expo CI 874db1c125 update CHANGELOG.md 2022-01-11 20:34:32 +00:00
23 changed files with 27120 additions and 25988 deletions

No files matched your search

+21
View File
@@ -8,6 +8,27 @@ This is the log of notable changes to EAS CLI and related packages.
### 🎉 New features
- Add json output for started builds when using `--no-wait`. ([#921](https://github.com/expo/eas-cli/pull/921) by [@kbrandwijk](https://github.com/kbrandwijk))
- Add support to `eas build` for specifying a custom `prebuildCommand` in `eas.json`. ([#919](https://github.com/expo/eas-cli/pull/919) by [@kbrandwijk](https://github.com/kbrandwijk))
### 🐛 Bug fixes
### 🧹 Chores
- Add macOS Monterey image. ([#922](https://github.com/expo/eas-cli/pull/922) by [@wkozyra95](https://github.com/wkozyra95))
## [0.45.0](https://github.com/expo/eas-cli/releases/tag/v0.45.0) - 2022-01-18
### 🎉 New features
- Add `eas device:delete`. ([#890](https://github.com/expo/eas-cli/pull/890) by [@kbrandwijk](https://github.com/kbrandwijk))
### 🧹 Chores
- Upgrade dependencies. ([#872](https://github.com/expo/eas-cli/pull/872) by [@dsokal](https://github.com/dsokal))
## [0.44.1](https://github.com/expo/eas-cli/releases/tag/v0.44.1) - 2022-01-11
### 🐛 Bug fixes
- Fix build:configure expo-updates configuration to only run on generic projects. ([#904](https://github.com/expo/eas-cli/pull/904) by [@brentvatne](https://github.com/brentvatne))
+1 -1
View File
@@ -1,5 +1,5 @@
{
"npmClient": "yarn",
"useWorkspaces": true,
"version": "0.44.1"
"version": "0.45.1"
}
+9 -9
View File
@@ -17,19 +17,19 @@
"clean": "lerna run clean && rm -rf node_modules coverage"
},
"devDependencies": {
"@types/jest": "27.0.1",
"@types/jest": "27.4.0",
"@types/node": "16.7.8",
"eslint": "7.32.0",
"eslint-config-universe": "8.0.0",
"eslint": "8.7.0",
"eslint-config-universe": "10.0.0",
"eslint-plugin-async-protect": "1.1.0",
"eslint-plugin-node": "11.1.0",
"jest": "27.1.0",
"jest-watch-typeahead": "0.6.4",
"jest": "27.4.7",
"jest-watch-typeahead": "1.0.0",
"lerna": "4.0.0",
"oclif": "2.1.5",
"prettier": "2.4.1",
"ts-jest": "27.0.5",
"typescript": "4.5.2"
"oclif": "2.2.0",
"prettier": "2.5.1",
"ts-jest": "27.1.3",
"typescript": "4.5.4"
},
"volta": {
"node": "16.10.0",
+844
View File
@@ -33,8 +33,115 @@ eas --help COMMAND
# Commands
<!-- commands -->
* [`eas account:login`](#eas-accountlogin)
* [`eas account:logout`](#eas-accountlogout)
* [`eas account:view`](#eas-accountview)
* [`eas analytics [STATUS]`](#eas-analytics-status)
* [`eas autocomplete [SHELL]`](#eas-autocomplete-shell)
* [`eas branch:create [NAME]`](#eas-branchcreate-name)
* [`eas branch:delete [NAME]`](#eas-branchdelete-name)
* [`eas branch:list`](#eas-branchlist)
* [`eas branch:rename`](#eas-branchrename)
* [`eas branch:view [NAME]`](#eas-branchview-name)
* [`eas build`](#eas-build)
* [`eas build:cancel [BUILD_ID]`](#eas-buildcancel-build_id)
* [`eas build:configure`](#eas-buildconfigure)
* [`eas build:inspect`](#eas-buildinspect)
* [`eas build:list`](#eas-buildlist)
* [`eas build:view [BUILD_ID]`](#eas-buildview-build_id)
* [`eas channel:create [NAME]`](#eas-channelcreate-name)
* [`eas channel:edit [NAME]`](#eas-channeledit-name)
* [`eas channel:list`](#eas-channellist)
* [`eas channel:view [NAME]`](#eas-channelview-name)
* [`eas config`](#eas-config)
* [`eas credentials`](#eas-credentials)
* [`eas device:create`](#eas-devicecreate)
* [`eas device:delete`](#eas-devicedelete)
* [`eas device:list`](#eas-devicelist)
* [`eas device:view [UDID]`](#eas-deviceview-udid)
* [`eas diagnostics`](#eas-diagnostics)
* [`eas help [COMMAND]`](#eas-help-command)
* [`eas project:info`](#eas-projectinfo)
* [`eas project:init`](#eas-projectinit)
* [`eas secret:create`](#eas-secretcreate)
* [`eas secret:delete`](#eas-secretdelete)
* [`eas secret:list`](#eas-secretlist)
* [`eas submit`](#eas-submit)
* [`eas update`](#eas-update)
* [`eas update:configure`](#eas-updateconfigure)
* [`eas update:delete GROUPID`](#eas-updatedelete-groupid)
* [`eas update:list`](#eas-updatelist)
* [`eas update:view GROUPID`](#eas-updateview-groupid)
* [`eas webhook:create`](#eas-webhookcreate)
* [`eas webhook:delete [ID]`](#eas-webhookdelete-id)
* [`eas webhook:list`](#eas-webhooklist)
* [`eas webhook:update`](#eas-webhookupdate)
* [`eas webhook:view ID`](#eas-webhookview-id)
## `eas account:login`
log in with your Expo account
```
USAGE
$ eas account:login
DESCRIPTION
log in with your Expo account
ALIASES
$ eas login
```
_See code: [src/commands/account/login.ts](https://github.com/expo/eas-cli/blob/v0.45.1/packages/eas-cli/src/commands/account/login.ts)_
## `eas account:logout`
log out
```
USAGE
$ eas account:logout
DESCRIPTION
log out
ALIASES
$ eas logout
```
_See code: [src/commands/account/logout.ts](https://github.com/expo/eas-cli/blob/v0.45.1/packages/eas-cli/src/commands/account/logout.ts)_
## `eas account:view`
show the username you are logged in as
```
USAGE
$ eas account:view
DESCRIPTION
show the username you are logged in as
ALIASES
$ eas whoami
```
_See code: [src/commands/account/view.ts](https://github.com/expo/eas-cli/blob/v0.45.1/packages/eas-cli/src/commands/account/view.ts)_
## `eas analytics [STATUS]`
view or change analytics settings
```
USAGE
$ eas analytics [STATUS]
DESCRIPTION
view or change analytics settings
```
_See code: [src/commands/analytics.ts](https://github.com/expo/eas-cli/blob/v0.45.1/packages/eas-cli/src/commands/analytics.ts)_
## `eas autocomplete [SHELL]`
@@ -65,6 +172,436 @@ EXAMPLES
_See code: [@oclif/plugin-autocomplete](https://github.com/oclif/plugin-autocomplete/blob/v1.1.1/src/commands/autocomplete/index.ts)_
## `eas branch:create [NAME]`
Create a branch on the current project.
```
USAGE
$ eas branch:create [NAME] [--json]
ARGUMENTS
NAME Name of the branch to create
FLAGS
--json return a json with the new branch ID and name.
DESCRIPTION
Create a branch on the current project.
```
_See code: [src/commands/branch/create.ts](https://github.com/expo/eas-cli/blob/v0.45.1/packages/eas-cli/src/commands/branch/create.ts)_
## `eas branch:delete [NAME]`
Delete a branch on the current project
```
USAGE
$ eas branch:delete [NAME] [--json]
ARGUMENTS
NAME Name of the branch to delete
FLAGS
--json return JSON with the edited branch's ID and name.
DESCRIPTION
Delete a branch on the current project
```
_See code: [src/commands/branch/delete.ts](https://github.com/expo/eas-cli/blob/v0.45.1/packages/eas-cli/src/commands/branch/delete.ts)_
## `eas branch:list`
List all branches on this project.
```
USAGE
$ eas branch:list [--json]
FLAGS
--json return output as JSON
DESCRIPTION
List all branches on this project.
```
_See code: [src/commands/branch/list.ts](https://github.com/expo/eas-cli/blob/v0.45.1/packages/eas-cli/src/commands/branch/list.ts)_
## `eas branch:rename`
Rename a branch.
```
USAGE
$ eas branch:rename [--from <value>] [--to <value>] [--json]
FLAGS
--from=<value> current name of the branch.
--json return a json with the edited branch's ID and name.
--to=<value> new name of the branch.
DESCRIPTION
Rename a branch.
```
_See code: [src/commands/branch/rename.ts](https://github.com/expo/eas-cli/blob/v0.45.1/packages/eas-cli/src/commands/branch/rename.ts)_
## `eas branch:view [NAME]`
View a branch.
```
USAGE
$ eas branch:view [NAME] [--json]
ARGUMENTS
NAME Name of the branch to view
FLAGS
--json return a json with the branch's ID name and recent update groups.
DESCRIPTION
View a branch.
```
_See code: [src/commands/branch/view.ts](https://github.com/expo/eas-cli/blob/v0.45.1/packages/eas-cli/src/commands/branch/view.ts)_
## `eas build`
Start a build
```
USAGE
$ eas build [-p android|ios|all] [--json] [--skip-project-configuration] [--profile <value>]
[--non-interactive] [--local] [--output <value>] [--wait] [--clear-cache] [--auto-submit |
--auto-submit-with-profile <value>]
FLAGS
-p, --platform=(android|ios|all)
--auto-submit Submit on build complete using the submit profile with the same name as the
build profile
--auto-submit-with-profile=PROFILE_NAME Submit on build complete using the submit profile with provided name
--clear-cache Clear cache before the build
--json Enable JSON output, non-JSON messages will be printed to stderr
--local Run build locally [experimental]
--non-interactive Run command in non-interactive mode
--output=<value> Output path for local build
--profile=PROFILE_NAME Name of the build profile from eas.json. Defaults to "production" if defined
in eas.json.
--skip-project-configuration Skip project configuration
--[no-]wait Wait for build(s) to complete
DESCRIPTION
Start a build
```
_See code: [src/commands/build/index.ts](https://github.com/expo/eas-cli/blob/v0.45.1/packages/eas-cli/src/commands/build/index.ts)_
## `eas build:cancel [BUILD_ID]`
Cancel a build.
```
USAGE
$ eas build:cancel [BUILD_ID]
DESCRIPTION
Cancel a build.
```
_See code: [src/commands/build/cancel.ts](https://github.com/expo/eas-cli/blob/v0.45.1/packages/eas-cli/src/commands/build/cancel.ts)_
## `eas build:configure`
Configure the project to support EAS Build.
```
USAGE
$ eas build:configure [-p android|ios|all]
FLAGS
-p, --platform=(android|ios|all) Platform to configure
DESCRIPTION
Configure the project to support EAS Build.
```
_See code: [src/commands/build/configure.ts](https://github.com/expo/eas-cli/blob/v0.45.1/packages/eas-cli/src/commands/build/configure.ts)_
## `eas build:inspect`
Inspect the state of the project at specific build stages. Useful for troubleshooting.
```
USAGE
$ eas build:inspect -p android|ios -s archive|pre-build|post-build -o <value> [--profile <value>] [--force] [-v]
FLAGS
-o, --output=OUTPUT_DIRECTORY
(required) Output directory.
-p, --platform=(android|ios)
(required)
-s, --stage=(archive|pre-build|post-build)
(required) Stage of the build you want to inspect.
archive - builds the project archive that would be uploaded to EAS when building
pre-build - prepares the project to be built with Gradle/Xcode. Does not run the native build.
post-build - builds the native project and leaves the output directory for inspection
-v, --verbose
--force
Delete OUTPUT_DIRECTORY if it already exists.
--profile=PROFILE_NAME
Name of the build profile from eas.json. Defaults to "production" if defined in eas.json.
DESCRIPTION
Inspect the state of the project at specific build stages. Useful for troubleshooting.
```
_See code: [src/commands/build/inspect.ts](https://github.com/expo/eas-cli/blob/v0.45.1/packages/eas-cli/src/commands/build/inspect.ts)_
## `eas build:list`
list all builds for your project
```
USAGE
$ eas build:list [--platform all|android|ios] [--json] [--status
new|in-queue|in-progress|errored|finished|canceled] [--distribution store|internal|simulator] [--channel <value>]
[--appVersion <value>] [--appBuildVersion <value>] [--sdkVersion <value>] [--runtimeVersion <value>]
[--appIdentifier <value>] [--buildProfile <value>] [--gitCommitHash <value>] [--limit <value>]
FLAGS
--appBuildVersion=<value>
--appIdentifier=<value>
--appVersion=<value>
--buildProfile=<value>
--channel=<value>
--distribution=(store|internal|simulator)
--gitCommitHash=<value>
--json Enable JSON output, non-JSON messages will be printed
to stderr
--limit=<value>
--platform=(all|android|ios)
--runtimeVersion=<value>
--sdkVersion=<value>
--status=(new|in-queue|in-progress|errored|finished|canceled)
DESCRIPTION
list all builds for your project
```
_See code: [src/commands/build/list.ts](https://github.com/expo/eas-cli/blob/v0.45.1/packages/eas-cli/src/commands/build/list.ts)_
## `eas build:view [BUILD_ID]`
view a build for your project
```
USAGE
$ eas build:view [BUILD_ID] [--json]
FLAGS
--json Enable JSON output, non-JSON messages will be printed to stderr
DESCRIPTION
view a build for your project
```
_See code: [src/commands/build/view.ts](https://github.com/expo/eas-cli/blob/v0.45.1/packages/eas-cli/src/commands/build/view.ts)_
## `eas channel:create [NAME]`
Create a channel on the current project.
```
USAGE
$ eas channel:create [NAME] [--json]
ARGUMENTS
NAME Name of the channel to create
FLAGS
--json print output as a JSON object with the new channel ID, name and branch mapping.
DESCRIPTION
Create a channel on the current project.
```
_See code: [src/commands/channel/create.ts](https://github.com/expo/eas-cli/blob/v0.45.1/packages/eas-cli/src/commands/channel/create.ts)_
## `eas channel:edit [NAME]`
Point a channel at a new branch.
```
USAGE
$ eas channel:edit [NAME] [--branch <value>] [--json]
ARGUMENTS
NAME Name of the channel to edit
FLAGS
--branch=<value> Name of the branch to point to
--json print output as a JSON object with the channel ID, name and branch mapping.
DESCRIPTION
Point a channel at a new branch.
```
_See code: [src/commands/channel/edit.ts](https://github.com/expo/eas-cli/blob/v0.45.1/packages/eas-cli/src/commands/channel/edit.ts)_
## `eas channel:list`
List all channels on the current project.
```
USAGE
$ eas channel:list [--json]
FLAGS
--json print output as a JSON object with the channel ID, name and branch mapping.
DESCRIPTION
List all channels on the current project.
```
_See code: [src/commands/channel/list.ts](https://github.com/expo/eas-cli/blob/v0.45.1/packages/eas-cli/src/commands/channel/list.ts)_
## `eas channel:view [NAME]`
View a channel on the current project.
```
USAGE
$ eas channel:view [NAME] [--json]
ARGUMENTS
NAME Name of the channel to view
FLAGS
--json print output as a JSON object with the channel ID, name and branch mapping.
DESCRIPTION
View a channel on the current project.
```
_See code: [src/commands/channel/view.ts](https://github.com/expo/eas-cli/blob/v0.45.1/packages/eas-cli/src/commands/channel/view.ts)_
## `eas config`
show the eas.json config
```
USAGE
$ eas config [-p android|ios] [--profile <value>]
FLAGS
-p, --platform=(android|ios)
--profile=<value>
DESCRIPTION
show the eas.json config
```
_See code: [src/commands/config.ts](https://github.com/expo/eas-cli/blob/v0.45.1/packages/eas-cli/src/commands/config.ts)_
## `eas credentials`
manage your credentials
```
USAGE
$ eas credentials
DESCRIPTION
manage your credentials
```
_See code: [src/commands/credentials.ts](https://github.com/expo/eas-cli/blob/v0.45.1/packages/eas-cli/src/commands/credentials.ts)_
## `eas device:create`
register new Apple Devices to use for internal distribution
```
USAGE
$ eas device:create
DESCRIPTION
register new Apple Devices to use for internal distribution
```
_See code: [src/commands/device/create.ts](https://github.com/expo/eas-cli/blob/v0.45.1/packages/eas-cli/src/commands/device/create.ts)_
## `eas device:delete`
remove a registered device from your account
```
USAGE
$ eas device:delete [--apple-team-id <value>] [--udid <value>]
FLAGS
--apple-team-id=<value>
--udid=<value>...
DESCRIPTION
remove a registered device from your account
```
_See code: [src/commands/device/delete.ts](https://github.com/expo/eas-cli/blob/v0.45.1/packages/eas-cli/src/commands/device/delete.ts)_
## `eas device:list`
list all registered devices for your account
```
USAGE
$ eas device:list [--apple-team-id <value>]
FLAGS
--apple-team-id=<value>
DESCRIPTION
list all registered devices for your account
```
_See code: [src/commands/device/list.ts](https://github.com/expo/eas-cli/blob/v0.45.1/packages/eas-cli/src/commands/device/list.ts)_
## `eas device:view [UDID]`
view a device for your project
```
USAGE
$ eas device:view [UDID]
DESCRIPTION
view a device for your project
```
_See code: [src/commands/device/view.ts](https://github.com/expo/eas-cli/blob/v0.45.1/packages/eas-cli/src/commands/device/view.ts)_
## `eas diagnostics`
log environment info to the console
```
USAGE
$ eas diagnostics
DESCRIPTION
log environment info to the console
```
_See code: [src/commands/diagnostics.ts](https://github.com/expo/eas-cli/blob/v0.45.1/packages/eas-cli/src/commands/diagnostics.ts)_
## `eas help [COMMAND]`
Display help for eas.
@@ -84,4 +621,311 @@ DESCRIPTION
```
_See code: [@oclif/plugin-help](https://github.com/oclif/plugin-help/blob/v5.1.10/src/commands/help.ts)_
## `eas project:info`
information about the current project
```
USAGE
$ eas project:info
DESCRIPTION
information about the current project
```
_See code: [src/commands/project/info.ts](https://github.com/expo/eas-cli/blob/v0.45.1/packages/eas-cli/src/commands/project/info.ts)_
## `eas project:init`
create or link an EAS project
```
USAGE
$ eas project:init
DESCRIPTION
create or link an EAS project
ALIASES
$ eas init
```
_See code: [src/commands/project/init.ts](https://github.com/expo/eas-cli/blob/v0.45.1/packages/eas-cli/src/commands/project/init.ts)_
## `eas secret:create`
Create an environment secret on the current project or owner account.
```
USAGE
$ eas secret:create [--scope account|project] [--name <value>] [--value <value>] [--force]
FLAGS
--force Delete and recreate existing secrets
--name=<value> Name of the secret
--scope=(account|project) [default: project] Scope for the secret
--value=<value> Value of the secret
DESCRIPTION
Create an environment secret on the current project or owner account.
```
_See code: [src/commands/secret/create.ts](https://github.com/expo/eas-cli/blob/v0.45.1/packages/eas-cli/src/commands/secret/create.ts)_
## `eas secret:delete`
Delete an environment secret by ID.
```
USAGE
$ eas secret:delete [--id <value>]
FLAGS
--id=<value> ID of the secret to delete
DESCRIPTION
Delete an environment secret by ID.
Unsure where to find the secret's ID? Run eas secret:list
```
_See code: [src/commands/secret/delete.ts](https://github.com/expo/eas-cli/blob/v0.45.1/packages/eas-cli/src/commands/secret/delete.ts)_
## `eas secret:list`
Lists environment secrets available for your current app
```
USAGE
$ eas secret:list
DESCRIPTION
Lists environment secrets available for your current app
```
_See code: [src/commands/secret/list.ts](https://github.com/expo/eas-cli/blob/v0.45.1/packages/eas-cli/src/commands/secret/list.ts)_
## `eas submit`
Submit build archive to App Store Connect
```
USAGE
$ eas submit [-p android|ios|all] [--profile <value>] [--latest | --id <value> | --path <value> | --url
<value>] [--verbose] [--wait] [--non-interactive]
FLAGS
-p, --platform=(android|ios|all)
--id=<value> ID of the build to submit
--latest Submit the latest build for specified platform
--non-interactive Run command in non-interactive mode
--path=<value> Path to the .apk/.aab/.ipa file
--profile=<value> Name of the submit profile from eas.json. Defaults to "production" if defined in
eas.json.
--url=<value> App archive url
--verbose Always print logs from Submission Service
--[no-]wait Wait for submission to complete
DESCRIPTION
Submit build archive to App Store Connect
See how to configure submits with eas.json: https://docs.expo.dev/submit/eas-json/
ALIASES
$ eas build:submit
```
_See code: [src/commands/submit.ts](https://github.com/expo/eas-cli/blob/v0.45.1/packages/eas-cli/src/commands/submit.ts)_
## `eas update`
Publish an update group.
```
USAGE
$ eas update [--branch <value>] [--message <value>] [--republish | --input-dir <value> | --skip-bundler]
[--group <value> | | ] [-p android|ios|all] [--json] [--auto]
FLAGS
-p, --platform=(android|ios|all) [default: all]
--auto Use the current git branch and commit message for the EAS branch and update message
--branch=<value> Branch to publish the update group on
--group=<value> Update group to republish
--input-dir=<value> [default: dist] Location of the bundle
--json Enable JSON output, non-JSON messages will be printed to stderr
--message=<value> A short message describing the update
--republish Republish an update group
--skip-bundler Skip running Expo CLI to bundle the app before publishing
DESCRIPTION
Publish an update group.
```
_See code: [src/commands/update/index.ts](https://github.com/expo/eas-cli/blob/v0.45.1/packages/eas-cli/src/commands/update/index.ts)_
## `eas update:configure`
Configure the project to support EAS Update.
```
USAGE
$ eas update:configure
DESCRIPTION
Configure the project to support EAS Update.
```
_See code: [src/commands/update/configure.ts](https://github.com/expo/eas-cli/blob/v0.45.1/packages/eas-cli/src/commands/update/configure.ts)_
## `eas update:delete GROUPID`
Delete all the updates in an update Group.
```
USAGE
$ eas update:delete [GROUPID] [--json]
ARGUMENTS
GROUPID The ID of an update group to delete.
FLAGS
--json Return a json with the group ID of the deleted updates.
DESCRIPTION
Delete all the updates in an update Group.
```
_See code: [src/commands/update/delete.ts](https://github.com/expo/eas-cli/blob/v0.45.1/packages/eas-cli/src/commands/update/delete.ts)_
## `eas update:list`
View the recent updates for a branch
```
USAGE
$ eas update:list [--branch <value> | --all] [--json]
FLAGS
--all List all updates associated with this project
--branch=<value> List all updates on this branch
--json Return a json with all of the recent update groups.
DESCRIPTION
View the recent updates for a branch
```
_See code: [src/commands/update/list.ts](https://github.com/expo/eas-cli/blob/v0.45.1/packages/eas-cli/src/commands/update/list.ts)_
## `eas update:view GROUPID`
Update group details.
```
USAGE
$ eas update:view [GROUPID] [--json]
ARGUMENTS
GROUPID The ID of an update group.
FLAGS
--json Return a json with the updates belonging to the group.
DESCRIPTION
Update group details.
```
_See code: [src/commands/update/view.ts](https://github.com/expo/eas-cli/blob/v0.45.1/packages/eas-cli/src/commands/update/view.ts)_
## `eas webhook:create`
Create a webhook on the current project.
```
USAGE
$ eas webhook:create [--event BUILD|SUBMIT] [--url <value>] [--secret <value>]
FLAGS
--event=(BUILD|SUBMIT) Event type that triggers the webhook
--secret=<value> Secret used to create a hash signature of the request payload, provided in the
'Expo-Signature' header.
--url=<value> Webhook URL
DESCRIPTION
Create a webhook on the current project.
```
_See code: [src/commands/webhook/create.ts](https://github.com/expo/eas-cli/blob/v0.45.1/packages/eas-cli/src/commands/webhook/create.ts)_
## `eas webhook:delete [ID]`
Delete a webhook on the current project.
```
USAGE
$ eas webhook:delete [ID]
ARGUMENTS
ID ID of the webhook to delete
DESCRIPTION
Delete a webhook on the current project.
```
_See code: [src/commands/webhook/delete.ts](https://github.com/expo/eas-cli/blob/v0.45.1/packages/eas-cli/src/commands/webhook/delete.ts)_
## `eas webhook:list`
List webhooks on the current project.
```
USAGE
$ eas webhook:list [--event BUILD|SUBMIT]
FLAGS
--event=(BUILD|SUBMIT) Event type that triggers the webhook
DESCRIPTION
List webhooks on the current project.
```
_See code: [src/commands/webhook/list.ts](https://github.com/expo/eas-cli/blob/v0.45.1/packages/eas-cli/src/commands/webhook/list.ts)_
## `eas webhook:update`
Update a webhook on the current project.
```
USAGE
$ eas webhook:update --id <value> [--event BUILD|SUBMIT] [--url <value>] [--secret <value>]
FLAGS
--event=(BUILD|SUBMIT) Event type that triggers the webhook
--id=<value> (required) Webhook ID
--secret=<value> Secret used to create a hash signature of the request payload, provided in the
'Expo-Signature' header.
--url=<value> Webhook URL
DESCRIPTION
Update a webhook on the current project.
```
_See code: [src/commands/webhook/update.ts](https://github.com/expo/eas-cli/blob/v0.45.1/packages/eas-cli/src/commands/webhook/update.ts)_
## `eas webhook:view ID`
View a webhook on the current project.
```
USAGE
$ eas webhook:view [ID]
ARGUMENTS
ID ID of the webhook to view
DESCRIPTION
View a webhook on the current project.
```
_See code: [src/commands/webhook/view.ts](https://github.com/expo/eas-cli/blob/v0.45.1/packages/eas-cli/src/commands/webhook/view.ts)_
<!-- commandsstop -->
+20507 -20291
View File
File diff suppressed because it is too large. Load diff
+36 -37
View File
@@ -1,7 +1,7 @@
{
"name": "eas-cli",
"description": "EAS command line tool",
"version": "0.44.1",
"version": "0.45.1",
"author": "Expo <[email protected]>",
"bin": {
"eas": "./bin/run"
@@ -9,15 +9,15 @@
"bugs": "https://github.com/expo/eas-cli/issues",
"dependencies": {
"@expo/apple-utils": "0.0.0-alpha.27",
"@expo/config": "6.0.11",
"@expo/config-plugins": "4.0.11",
"@expo/eas-build-job": "0.2.61",
"@expo/eas-json": "0.44.0",
"@expo/config": "6.0.16",
"@expo/config-plugins": "4.0.16",
"@expo/eas-build-job": "0.2.64",
"@expo/eas-json": "0.45.1",
"@expo/json-file": "8.2.34",
"@expo/pkcs12": "0.0.6",
"@expo/plist": "0.0.16",
"@expo/plist": "0.0.17",
"@expo/plugin-warn-if-update-available": "2.0.4",
"@expo/prebuild-config": "3.0.11",
"@expo/prebuild-config": "3.0.16",
"@expo/results": "1.0.0",
"@expo/rudder-sdk-node": "1.1.1",
"@expo/spawn-async": "1.5.0",
@@ -25,37 +25,37 @@
"@oclif/core": "1.1.2",
"@oclif/plugin-autocomplete": "1.1.1",
"@oclif/plugin-help": "5.1.10",
"@urql/core": "2.3.1",
"@urql/exchange-retry": "0.3.0",
"@urql/core": "2.3.6",
"@urql/exchange-retry": "0.3.2",
"chalk": "4.1.2",
"cli-table3": "0.6.0",
"dateformat": "4.5.1",
"cli-table3": "0.6.1",
"dateformat": "4.6.3",
"env-paths": "2.2.0",
"envinfo": "7.8.1",
"fast-glob": "3.2.7",
"fast-glob": "3.2.11",
"figures": "3.2.0",
"form-data": "3.0.0",
"form-data": "4.0.0",
"fs-extra": "10.0.0",
"getenv": "1.0.0",
"got": "11.8.2",
"gradle-to-js": "2.0.0",
"graphql": "15.5.1",
"graphql-tag": "2.12.5",
"ignore": "5.1.8",
"graphql": "16.2.0",
"graphql-tag": "2.12.6",
"ignore": "5.2.0",
"indent-string": "4.0.0",
"jks-js": "1.0.1",
"joi": "17.4.2",
"joi": "17.5.0",
"keychain": "1.3.0",
"log-symbols": "4.1.0",
"mime": "2.5.2",
"mime": "3.0.0",
"minimatch": "3.0.4",
"nanoid": "3.1.25",
"nanoid": "3.2.0",
"node-fetch": "2.6.1",
"node-forge": "1.0.0",
"node-forge": "1.2.1",
"nullthrows": "1.1.1",
"ora": "5.1.0",
"pkg-dir": "4.2.0",
"prompts": "2.3.2",
"prompts": "2.4.2",
"qrcode-terminal": "0.12.0",
"resolve-from": "5.0.0",
"semver": "7.3.5",
@@ -70,32 +70,31 @@
"wrap-ansi": "7.0.0"
},
"devDependencies": {
"@graphql-codegen/cli": "^1.19.2",
"@graphql-codegen/introspection": "^1.18.0",
"@graphql-codegen/typescript": "^1.17.11",
"@graphql-codegen/typescript-operations": "^1.17.10",
"@graphql-codegen/cli": "2.3.1",
"@graphql-codegen/introspection": "2.1.1",
"@graphql-codegen/typescript": "2.4.2",
"@graphql-codegen/typescript-operations": "2.2.2",
"@types/dateformat": "3.0.1",
"@types/envinfo": "7.8.1",
"@types/form-data": "^2.5.0",
"@types/fs-extra": "9.0.12",
"@types/fs-extra": "9.0.13",
"@types/getenv": "^1.0.0",
"@types/mime": "2.0.3",
"@types/node-fetch": "^2.5.7",
"@types/node-forge": "1.0.0",
"@types/prompts": "^2.0.9",
"@types/semver": "7.3.8",
"@types/tar": "4.0.5",
"@types/prompts": "2.0.14",
"@types/semver": "7.3.9",
"@types/tar": "6.1.1",
"@types/tough-cookie": "4.0.1",
"@types/uuid": "8.3.1",
"@types/uuid": "8.3.4",
"@types/wrap-ansi": "3.0.0",
"axios": "0.21.4",
"axios": "0.24.0",
"eslint-plugin-graphql": "4.0.0",
"memfs": "3.2.2",
"mockdate": "^3.0.2",
"nock": "^13.0.5",
"memfs": "3.4.1",
"mockdate": "3.0.5",
"nock": "13.2.2",
"tempy": "0.7.0",
"ts-deepmerge": "1.0.8",
"typescript": "4.5.2"
"ts-deepmerge": "1.1.0",
"typescript": "4.5.4"
},
"engines": {
"node": ">=12.0.0"
@@ -18,6 +18,7 @@ export function transformJob(job: Android.Job): AndroidJobInput {
username: job.username,
buildType: job.buildType && transformBuildType(job.buildType),
developmentClient: job.developmentClient,
experimental: job.experimental,
};
}
@@ -75,6 +75,9 @@ export async function prepareJobAsync(
artifactPath: buildProfile.artifactPath,
buildType,
username,
experimental: {
prebuildCommand: ctx.buildProfile.prebuildCommand,
},
};
return sanitizeJob(job);
@@ -20,6 +20,7 @@ export function transformJob(job: Ios.Job): IosJobInput {
username: job.username,
developmentClient: job.developmentClient,
simulator: job.simulator,
experimental: job.experimental,
};
}
@@ -66,6 +66,9 @@ export async function prepareJobAsync(
buildConfiguration: ctx.buildProfile.buildConfiguration,
artifactPath: ctx.buildProfile.artifactPath,
username,
experimental: {
prebuildCommand: ctx.buildProfile.prebuildCommand,
},
};
return sanitizeJob(job);
}
+1 -1
View File
@@ -6,7 +6,7 @@ import semver from 'semver';
import { ora } from '../ora';
const PLUGIN_PACKAGE_NAME = 'eas-cli-local-build-plugin';
const PLUGIN_PACKAGE_VERSION = '0.0.58';
const PLUGIN_PACKAGE_VERSION = '0.0.62';
export interface LocalBuildOptions {
enable: boolean;
@@ -20,6 +20,7 @@ import {
waitToCompleteAsync as waitForSubmissionsToCompleteAsync,
} from '../submit/submit';
import { printSubmissionDetailsUrls } from '../submit/utils/urls';
import { printJsonOnlyOutput } from '../utils/json';
import { ProfileData, getProfilesAsync } from '../utils/profiles';
import { getVcsClient } from '../vcs';
import { prepareAndroidBuildAsync } from './android/build';
@@ -130,6 +131,9 @@ export async function runBuildAndSubmitAsync(projectDir: string, flags: BuildFla
}
if (!flags.wait) {
if (flags.json) {
printJsonOnlyOutput(startedBuilds.map(buildInfo => buildInfo.build));
}
return;
}
@@ -0,0 +1,246 @@
import { Device, DeviceStatus } from '@expo/apple-utils';
import { getConfig } from '@expo/config';
import { Flags } from '@oclif/core';
import assert from 'assert';
import EasCommand from '../../commandUtils/EasCommand';
import { chooseDevicesToDeleteAsync } from '../../credentials/ios/actions/DeviceUtils';
import { AppleDeviceMutation } from '../../credentials/ios/api/graphql/mutations/AppleDeviceMutation';
import {
AppleDeviceQuery,
AppleDeviceQueryResult,
AppleDevicesByTeamIdentifierQueryResult,
} from '../../credentials/ios/api/graphql/queries/AppleDeviceQuery';
import { AppleTeamQuery } from '../../credentials/ios/api/graphql/queries/AppleTeamQuery';
import { authenticateAsync, getRequestContext } from '../../credentials/ios/appstore/authenticate';
import formatDevice from '../../devices/utils/formatDevice';
import { AppleDevice, Maybe } from '../../graphql/generated';
import Log from '../../log';
import { ora } from '../../ora';
import { findProjectRootAsync, getProjectAccountNameAsync } from '../../project/projectUtils';
import { promptAsync, toggleConfirmAsync } from '../../prompts';
export default class DeviceDelete extends EasCommand {
static description = 'remove a registered device from your account';
static flags = {
'apple-team-id': Flags.string(),
udid: Flags.string({ multiple: true }),
};
async runAsync(): Promise<void> {
let {
flags: { 'apple-team-id': appleTeamIdentifier, udid: udids },
} = await this.parse(DeviceDelete);
const projectDir = await findProjectRootAsync();
const { exp } = getConfig(projectDir, { skipSDKVersionRequirement: true });
const accountName = await getProjectAccountNameAsync(exp);
if (!appleTeamIdentifier) {
appleTeamIdentifier = await this.askForAppleTeamAsync(accountName);
}
assert(appleTeamIdentifier, 'No team identifier is specified');
const appleDevicesResult = await this.getDevicesForTeamAsync(accountName, appleTeamIdentifier);
if (!appleDevicesResult) {
return;
}
const { appleTeamName, appleDevices } = appleDevicesResult;
const chosenDevices = await this.chooseDevicesToDeleteAsync(appleDevices, udids);
if (chosenDevices.length === 0) {
Log.newLine();
Log.warn('No devices were chosen to be removed.');
return;
}
this.logChosenDevices(chosenDevices, appleTeamName, appleTeamIdentifier);
const hasRemoved = await this.askAndRemoveFromExpoAsync(chosenDevices);
if (!hasRemoved) {
return;
}
await this.askAndDisableOnAppleAsync(chosenDevices, appleTeamIdentifier);
}
async askAndDisableOnAppleAsync(
chosenDevices: (AppleDevice | AppleDeviceQueryResult)[],
appleTeamIdentifier: string
): Promise<void> {
Log.newLine();
const deleteOnApple = await toggleConfirmAsync({
message: 'Do you want to disable these devices on your Apple account as well?',
});
if (!deleteOnApple) {
return;
}
const ctx = await authenticateAsync({ teamId: appleTeamIdentifier });
const context = getRequestContext(ctx);
Log.addNewLineIfNone();
const removeAppleSpinner = ora('Disabling devices on Apple').start();
try {
let realDevices = await Device.getAllIOSProfileDevicesAsync(context);
realDevices = realDevices.filter(d =>
chosenDevices.map(cd => cd.identifier).includes(d.attributes.udid)
);
for (const device of realDevices) {
await device.updateAsync({ status: DeviceStatus.DISABLED });
}
removeAppleSpinner.succeed('Disabled devices on Apple');
} catch (err) {
removeAppleSpinner.fail();
throw err;
}
}
async askAndRemoveFromExpoAsync(
chosenDevices: (AppleDevice | AppleDeviceQueryResult)[]
): Promise<boolean> {
Log.warn(
`You are about to remove the Apple device${
chosenDevices.length > 1 ? 's' : ''
} listed above from your Expo account.`
);
Log.newLine();
const confirmed = await toggleConfirmAsync({
message: 'Are you sure you wish to proceed?',
});
if (confirmed) {
const removalSpinner = ora(`Removing Apple devices on Expo`).start();
try {
for (const chosenDevice of chosenDevices) {
await AppleDeviceMutation.deleteAppleDeviceAsync(chosenDevice.id);
}
removalSpinner.succeed('Removed Apple devices from Expo');
} catch (err) {
removalSpinner.fail();
throw err;
}
}
return confirmed;
}
logChosenDevices(
chosenDevices: (AppleDevice | AppleDeviceQueryResult)[],
appleTeamName: Maybe<string> | undefined,
appleTeamIdentifier: string
): void {
Log.addNewLineIfNone();
chosenDevices.forEach(device => {
Log.log(
formatDevice(device, {
appleTeamName,
appleTeamIdentifier: appleTeamIdentifier!,
})
);
Log.newLine();
});
}
async chooseDevicesToDeleteAsync(
appleDevices: AppleDeviceQueryResult[],
udids: string[]
): Promise<(AppleDevice | AppleDeviceQueryResult)[]> {
let chosenDevices: (AppleDeviceQueryResult | AppleDevice)[] = [];
Log.newLine();
if (udids) {
udids.forEach(udid => {
const foundDevice = appleDevices.find(device => device.identifier === udid);
if (foundDevice) {
chosenDevices.push(foundDevice);
} else {
Log.warn(`No device found with UDID ${udid}.`);
}
});
}
if (chosenDevices.length === 0) {
Log.addNewLineIfNone();
chosenDevices = await chooseDevicesToDeleteAsync(appleDevices);
Log.newLine();
}
return chosenDevices;
}
async getDevicesForTeamAsync(
accountName: string,
appleTeamIdentifier: string
): Promise<AppleDevicesByTeamIdentifierQueryResult | undefined> {
const devicesSpinner = ora().start('Fetching the list of devices for the team…');
try {
const result = await AppleDeviceQuery.getAllForAppleTeamAsync(
accountName,
appleTeamIdentifier
);
if (result?.appleDevices.length) {
const { appleTeamName, appleDevices } = result;
devicesSpinner.succeed(
`Found ${appleDevices.length} devices for team ${appleTeamName ?? appleTeamIdentifier}`
);
return result;
} else {
devicesSpinner.fail(`Couldn't find any devices for the team ${appleTeamIdentifier}`);
return;
}
} catch (e) {
devicesSpinner.fail(`Something went wrong and we couldn't fetch the device list`);
throw e;
}
}
async askForAppleTeamAsync(accountName: string): Promise<string | undefined> {
const teamSpinner = ora().start('Fetching the list of teams for the project…');
try {
const teams = await AppleTeamQuery.getAllForAccountAsync(accountName);
if (teams.length > 0) {
teamSpinner.succeed('Fetched the list of teams for the project');
if (teams.length === 1) {
return teams[0].appleTeamIdentifier;
}
const result = await promptAsync({
type: 'select',
name: 'appleTeamIdentifier',
message: 'What Apple Team would you like to list devices for?',
choices: teams.map(team => ({
title: team.appleTeamName
? `${team.appleTeamName} (ID: ${team.appleTeamIdentifier})`
: team.appleTeamIdentifier,
value: team.appleTeamIdentifier,
})),
});
return result.appleTeamIdentifier;
} else {
teamSpinner.fail(`Couldn't find any teams for the account ${accountName}`);
return;
}
} catch (e) {
teamSpinner.fail(`Something went wrong and we couldn't fetch the list of teams`);
throw e;
}
}
}
+1 -1
View File
@@ -34,7 +34,7 @@ export default class BuildList extends EasCommand {
try {
const teams = await AppleTeamQuery.getAllForAccountAsync(accountName);
if (teams.length) {
if (teams.length > 0) {
spinner.succeed();
if (teams.length === 1) {
@@ -9,7 +9,7 @@ import pick from '../../utils/expodash/pick';
import { prepareInputParamsAsync } from '../../webhooks/input';
export default class WebhookUpdate extends EasCommand {
static description = 'Create a webhook on the current project.';
static description = 'Update a webhook on the current project.';
static flags = {
id: Flags.string({
@@ -26,6 +26,23 @@ export async function chooseDevicesAsync(
return devices;
}
export async function chooseDevicesToDeleteAsync(
allDevices: AppleDeviceFragment[]
): Promise<AppleDevice[]> {
const { devices } = await promptAsync({
type: 'multiselect',
name: 'devices',
message: 'Which devices do you want to remove?',
choices: allDevices.map(device => ({
value: device,
title: formatDeviceLabel(device),
selected: false,
})),
instructions: false,
});
return devices;
}
export function formatDeviceLabel(device: AppleDeviceFragment): string {
const deviceDetails = formatDeviceDetails(device);
return `${device.name ?? device.identifier}${deviceDetails !== '' ? ` ${deviceDetails}` : ''}`;
@@ -6,6 +6,7 @@ import {
AppleDeviceFragment,
AppleDeviceInput,
CreateAppleDeviceMutation,
DeleteAppleDeviceResult,
} from '../../../../../graphql/generated';
import { AppleDeviceFragmentNode } from '../../../../../graphql/types/credentials/AppleDevice';
@@ -40,4 +41,25 @@ export const AppleDeviceMutation = {
);
return data.appleDevice.createAppleDevice;
},
async deleteAppleDeviceAsync(deviceId: string): Promise<string> {
const data = await withErrorHandlingAsync(
graphqlClient
.mutation<DeleteAppleDeviceResult>(
gql`
mutation DeleteAppleDeviceMutation($deviceId: ID!) {
appleDevice {
deleteAppleDevice(id: $deviceId) {
id
}
}
}
`,
{
deviceId,
}
)
.toPromise()
);
return data.id;
},
};
+3005 -4369
View File
File diff suppressed because it is too large. Load diff
@@ -256,7 +256,6 @@ async function handleBuildListSourceAsync(source: ArchiveBuildListSource): Promi
type: 'select',
message: 'Which build would you like to submit?',
choices: choices.map(choice => ({ ...choice, title: `- ${choice.title}` })),
// @ts-expect-error field documented in npm, but not defined in typescript
warn: 'This artifact has expired',
});
+7 -7
View File
@@ -1,24 +1,24 @@
{
"name": "@expo/eas-json",
"description": "A library for interacting with eas.json",
"version": "0.44.0",
"version": "0.45.1",
"author": "Expo <[email protected]>",
"bugs": "https://github.com/expo/eas-cli/issues",
"dependencies": {
"@expo/eas-build-job": "0.2.61",
"@expo/json-file": "8.2.33",
"@expo/eas-build-job": "0.2.64",
"@expo/json-file": "8.2.34",
"chalk": "4.1.2",
"env-string": "1.0.1",
"fs-extra": "10.0.0",
"joi": "17.4.2",
"joi": "17.5.0",
"log-symbols": "4.1.0",
"semver": "7.3.5",
"tslib": "2.3.1"
},
"devDependencies": {
"@types/fs-extra": "9.0.12",
"memfs": "3.2.2",
"typescript": "4.5.2"
"@types/fs-extra": "9.0.13",
"memfs": "3.4.1",
"typescript": "4.5.4"
},
"engines": {
"node": ">=12.0.0"
+1
View File
@@ -16,6 +16,7 @@ const CommonBuildProfileSchema = Joi.object({
releaseChannel: Joi.string().regex(/^[a-z\d][a-z\d._-]*$/),
channel: Joi.string().regex(/^[a-z\d][a-z\d._-]*$/),
developmentClient: Joi.boolean(),
prebuildCommand: Joi.string(),
node: Joi.string().empty(null).custom(semverCheck),
yarn: Joi.string().empty(null).custom(semverCheck),
+1
View File
@@ -20,6 +20,7 @@ export interface CommonBuildProfile {
releaseChannel?: string;
channel?: string;
developmentClient?: boolean;
prebuildCommand?: string;
node?: string;
yarn?: string;
Generated
+2388 -1270
View File
File diff suppressed because it is too large. Load diff