Compare commits

...
484 changed files with 3378 additions and 2601 deletions

No files matched your search

View File
File renamed without changes.
+3
View File
@@ -19,3 +19,6 @@ node_modules
# Tests
coverage
# Copies of script for testing ESM imports
packages/*/scripts/testESMImports.ts
+7
View File
@@ -0,0 +1,7 @@
module.exports = {
projects: [
require('./packages/eas-cli/jest.config.cjs'),
require('./packages/eas-json/jest.config.cjs'),
],
testPathIgnorePatterns: ['.*'],
};
-7
View File
@@ -1,7 +0,0 @@
module.exports = {
projects: [
require('./packages/eas-cli/jest.config.js'),
require('./packages/eas-json/jest.config.js'),
],
testPathIgnorePatterns: ['.*'],
};
+9 -1
View File
@@ -1,7 +1,15 @@
module.exports = {
preset: 'ts-jest',
preset: 'ts-jest/presets/default-esm',
testEnvironment: 'node',
testRegex: '/__tests__/.*(test|spec)\\.[jt]sx?$',
watchPlugins: ['jest-watch-typeahead/filename', 'jest-watch-typeahead/testname'],
collectCoverageFrom: ['<rootDir>/src/**/*.{ts,tsx,js,jsx}'],
globals: {
'ts-jest': {
useESM: true,
},
},
moduleNameMapper: {
'^(\\.{1,2}/.*)\\.js$': '$1',
},
};
+4 -2
View File
@@ -1,5 +1,6 @@
{
"private": true,
"type": "module",
"workspaces": [
"packages/*"
],
@@ -13,8 +14,9 @@
"eas": "packages/eas-cli/bin/run",
"lint": "eslint .",
"release": "./scripts/bin/run update-local-plugin && lerna version --exact",
"test": "jest",
"clean": "lerna run clean && rm -rf node_modules coverage"
"test": "NODE_OPTIONS=--experimental-vm-modules jest",
"clean": "lerna run clean && rm -rf node_modules coverage",
"test-esm-imports": "lerna run test-esm-imports"
},
"devDependencies": {
"@types/jest": "27.5.0",
@@ -1,4 +1,4 @@
const rootEslintrc = require('../../.eslintrc.js');
const rootEslintrc = require('../../.eslintrc.cjs');
module.exports = {
rules: {
-6
View File
@@ -1,6 +0,0 @@
#!/usr/bin/env node
require('@oclif/core')
.run()
.then(require('@oclif/core/flush'))
.catch(require('@oclif/core/handle'));
+7
View File
@@ -0,0 +1,7 @@
#!/usr/bin/env node
import { Errors, flush, run } from '@oclif/core';
run(undefined, import.meta.url)
.then(flush)
.catch(Errors.handle);
@@ -1,5 +1,5 @@
module.exports = {
...require('../../jest/jest.config.js'),
...require('../../jest/jest.config.cjs'),
rootDir: __dirname,
roots: ['src', '__mocks__'],
globalSetup: './jest/global-setup.ts',
+2
View File
@@ -1,3 +1,5 @@
import { jest } from '@jest/globals';
/* eslint-disable no-console */
beforeAll(() => {
console.log = jest.fn();
+14 -5
View File
@@ -1,5 +1,6 @@
{
"name": "eas-cli",
"type": "module",
"description": "EAS command line tool",
"version": "0.54.1",
"author": "Expo <[email protected]>",
@@ -27,7 +28,7 @@
"@expo/rudder-sdk-node": "1.1.1",
"@expo/spawn-async": "1.6.0",
"@expo/timeago.js": "1.0.0",
"@oclif/core": "1.9.0",
"@oclif/core": "1.9.5",
"@urql/core": "2.4.4",
"@urql/exchange-retry": "0.3.3",
"ajv": "^6.12.6",
@@ -81,6 +82,7 @@
"@graphql-codegen/introspection": "2.1.1",
"@graphql-codegen/typescript": "2.4.11",
"@graphql-codegen/typescript-operations": "2.4.0",
"@jest/globals": "28.1.2",
"@types/cli-progress": "3.9.2",
"@types/dateformat": "3.0.1",
"@types/envinfo": "7.8.1",
@@ -98,15 +100,17 @@
"axios": "0.27.2",
"eslint-plugin-graphql": "4.0.0",
"form-data": "4.0.0",
"globby": "13.1.2",
"memfs": "3.4.3",
"mockdate": "3.0.5",
"nock": "13.2.4",
"tempy": "0.7.0",
"ts-deepmerge": "2.0.1",
"ts-node": "10.8.2",
"typescript": "4.7.4"
},
"engines": {
"node": ">=14.0.0"
"node": ">=14.16"
},
"files": [
"/bin",
@@ -196,9 +200,14 @@
"build": "tsc --project tsconfig.build.json",
"watch": "yarn build --watch --preserveWatchOutput",
"typecheck": "tsc",
"test": "jest",
"version": "yarn oclif readme && node scripts/patch-readme && git add README.md",
"test": "NODE_OPTIONS=--experimental-vm-modules jest",
"version": "yarn oclif readme && node scripts/patch-readme.cjs && git add README.md",
"generate-graphql-code": "graphql-codegen --config graphql-codegen.yml",
"clean": "rm -rf dist build tmp node_modules yarn-error.log"
"clean": "rm -rf dist build tmp node_modules yarn-error.log",
"test-esm-imports": "cp ../../scripts/src/testESMImports.ts scripts/ && ts-node-esm ./scripts/testESMImports.ts 'build/**/*.js'"
},
"volta": {
"node": "18.2.0",
"yarn": "1.22.18"
}
}
+1 -1
View File
@@ -1,7 +1,7 @@
import assert from 'assert';
import nock from 'nock';
import { ApiV2Error, api, getExpoApiBaseUrl } from '../api';
import { ApiV2Error, api, getExpoApiBaseUrl } from '../api.js';
describe('apiClient', () => {
it('converts Expo APIv2 error to ApiV2Error', async () => {
@@ -1,4 +1,4 @@
import { Actor } from '../user/User';
import { Actor } from '../user/User.js';
interface MockProject {
projectRoot: string;
@@ -1,4 +1,4 @@
import { fixArchiveUrl } from '../uploads';
import { fixArchiveUrl } from '../uploads.js';
describe(fixArchiveUrl, () => {
it('fixes broken links', () => {
+1 -1
View File
@@ -1,4 +1,4 @@
import { Analytics, Event } from './events';
import { Analytics, Event } from './events.js';
export type TrackingContext = Record<string, string | number | boolean>;
+1 -1
View File
@@ -1,4 +1,4 @@
import { logEvent } from './rudderstackClient';
import { logEvent } from './rudderstackClient.js';
export type Event = BuildEvent | SubmissionEvent | MetadataEvent;
export enum SubmissionEvent {
@@ -1,10 +1,12 @@
import RudderAnalytics from '@expo/rudder-sdk-node';
import RudderAnalyticsModule from '@expo/rudder-sdk-node';
import os from 'os';
import { URL } from 'url';
import { v4 as uuidv4 } from 'uuid';
import UserSettings from '../user/UserSettings';
import { easCliVersion } from '../utils/easCli';
import UserSettings from '../user/UserSettings.js';
import { easCliVersion } from '../utils/easCli.js';
const RudderAnalytics = RudderAnalyticsModule.default;
const PLATFORM_TO_ANALYTICS_PLATFORM: { [platform: string]: string } = {
darwin: 'Mac',
@@ -12,7 +14,7 @@ const PLATFORM_TO_ANALYTICS_PLATFORM: { [platform: string]: string } = {
linux: 'Linux',
};
let rudderstackClient: RudderAnalytics | null = null;
let rudderstackClient: RudderAnalyticsModule.default | null = null;
let userIdentified = false;
let identifyData: {
userId: string;
+2 -2
View File
@@ -1,7 +1,7 @@
import { JSONValue } from '@expo/json-file';
import fetch, { RequestError, RequestInit } from './fetch';
import { getAccessToken, getSessionSecret } from './user/sessionStorage';
import fetch, { RequestError, RequestInit } from './fetch.js';
import { getAccessToken, getSessionSecret } from './user/sessionStorage.js';
export class ApiV2Error extends Error {
readonly name = 'ApiV2Error';
@@ -7,13 +7,16 @@ import { vol } from 'memfs';
import os from 'os';
import path from 'path';
import { getAppBuildGradleAsync, resolveConfigValue } from '../../../project/android/gradleUtils';
import {
getAppBuildGradleAsync,
resolveConfigValue,
} from '../../../project/android/gradleUtils.js';
import {
BumpStrategy,
bumpVersionAsync,
bumpVersionInAppJsonAsync,
maybeResolveVersionsAsync,
} from '../version';
} from '../version.js';
const fsReal = jest.requireActual('fs').promises as typeof fs;
jest.mock('fs');
+17 -17
View File
@@ -1,33 +1,33 @@
import { Android, Job, Metadata, Platform, Workflow } from '@expo/eas-build-job';
import chalk from 'chalk';
import nullthrows from 'nullthrows';
import AndroidCredentialsProvider, {
AndroidCredentials,
} from '../../credentials/android/AndroidCredentialsProvider';
import { BuildParamsInput } from '../../graphql/generated';
import { BuildMutation, BuildResult } from '../../graphql/mutations/BuildMutation';
import Log from '../../log';
} from '../../credentials/android/AndroidCredentialsProvider.js';
import { BuildParamsInput } from '../../graphql/generated.js';
import { BuildMutation, BuildResult } from '../../graphql/mutations/BuildMutation.js';
import Log from '../../log.js';
import {
ensureApplicationIdIsDefinedForManagedProjectAsync,
getApplicationIdAsync,
} from '../../project/android/applicationId';
import { resolveGradleBuildContextAsync } from '../../project/android/gradle';
import { toggleConfirmAsync } from '../../prompts';
import { findAccountByName } from '../../user/Account';
} from '../../project/android/applicationId.js';
import { resolveGradleBuildContextAsync } from '../../project/android/gradle.js';
import { toggleConfirmAsync } from '../../prompts.js';
import { findAccountByName } from '../../user/Account.js';
import { nullthrows } from '../../utils/nullthrows.js';
import {
BuildRequestSender,
CredentialsResult,
JobData,
prepareBuildRequestForPlatformAsync,
} from '../build';
import { AndroidBuildContext, BuildContext, CommonContext } from '../context';
import { transformMetadata } from '../graphql';
import { logCredentialsSource } from '../utils/credentials';
import { checkGoogleServicesFileAsync, checkNodeEnvVariable } from '../validate';
import { transformJob } from './graphql';
import { prepareJobAsync } from './prepareJob';
import { syncProjectConfigurationAsync } from './syncProjectConfiguration';
} from '../build.js';
import { AndroidBuildContext, BuildContext, CommonContext } from '../context.js';
import { transformMetadata } from '../graphql.js';
import { logCredentialsSource } from '../utils/credentials.js';
import { checkGoogleServicesFileAsync, checkNodeEnvVariable } from '../validate.js';
import { transformJob } from './graphql.js';
import { prepareJobAsync } from './prepareJob.js';
import { syncProjectConfigurationAsync } from './syncProjectConfiguration.js';
export async function createAndroidContextAsync(
ctx: CommonContext<Platform.ANDROID>
@@ -1,7 +1,7 @@
import { Android } from '@expo/eas-build-job';
import { AndroidBuildType, AndroidJobInput } from '../../graphql/generated';
import { transformProjectArchive, transformWorkflow } from '../graphql';
import { AndroidBuildType, AndroidJobInput } from '../../graphql/generated.js';
import { transformProjectArchive, transformWorkflow } from '../graphql.js';
export function transformJob(job: Android.Job): AndroidJobInput {
return {
@@ -3,11 +3,11 @@ import { BuildProfile } from '@expo/eas-json';
import path from 'path';
import slash from 'slash';
import { AndroidCredentials } from '../../credentials/android/AndroidCredentialsProvider';
import { getUsername } from '../../project/projectUtils';
import { ensureLoggedInAsync } from '../../user/actions';
import { getVcsClient } from '../../vcs';
import { BuildContext } from '../context';
import { AndroidCredentials } from '../../credentials/android/AndroidCredentialsProvider.js';
import { getUsername } from '../../project/projectUtils.js';
import { ensureLoggedInAsync } from '../../user/actions.js';
import { getVcsClient } from '../../vcs/index.js';
import { BuildContext } from '../context.js';
interface JobData {
projectArchive: ArchiveSource;
@@ -1,16 +1,18 @@
import { ExpoConfig } from '@expo/config';
import { AndroidConfig } from '@expo/config-plugins';
import ConfigPlugins from '@expo/config-plugins';
import { Platform, Workflow } from '@expo/eas-build-job';
import { AndroidVersionAutoIncrement, BuildProfile } from '@expo/eas-json';
import chalk from 'chalk';
import fs from 'fs-extra';
import path from 'path';
import Log from '../../log';
import { isExpoUpdatesInstalled } from '../../project/projectUtils';
import { resolveWorkflowAsync } from '../../project/workflow';
import { syncUpdatesConfigurationAsync } from '../../update/android/UpdatesModule';
import { BumpStrategy, bumpVersionAsync, bumpVersionInAppJsonAsync } from './version';
import Log from '../../log.js';
import { isExpoUpdatesInstalled } from '../../project/projectUtils.js';
import { resolveWorkflowAsync } from '../../project/workflow.js';
import { syncUpdatesConfigurationAsync } from '../../update/android/UpdatesModule.js';
import { BumpStrategy, bumpVersionAsync, bumpVersionInAppJsonAsync } from './version.js';
const { AndroidConfig } = ConfigPlugins;
export async function syncProjectConfigurationAsync({
projectDir,
@@ -1,19 +1,21 @@
import { ExpoConfig } from '@expo/config';
import { AndroidConfig } from '@expo/config-plugins';
import ConfigPlugins from '@expo/config-plugins';
import { Platform, Workflow } from '@expo/eas-build-job';
import { BuildProfile } from '@expo/eas-json';
import chalk from 'chalk';
import fs from 'fs-extra';
import Log from '../../log';
import Log from '../../log.js';
import {
getAppBuildGradleAsync,
parseGradleCommand,
resolveConfigValue,
} from '../../project/android/gradleUtils';
import { resolveWorkflowAsync } from '../../project/workflow';
import { updateAppJsonConfigAsync } from '../utils/appJson';
import { bumpAppVersionAsync, ensureStaticConfigExists } from '../utils/version';
} from '../../project/android/gradleUtils.js';
import { resolveWorkflowAsync } from '../../project/workflow.js';
import { updateAppJsonConfigAsync } from '../utils/appJson.js';
import { bumpAppVersionAsync, ensureStaticConfigExists } from '../utils/version.js';
const { AndroidConfig } = ConfigPlugins;
export enum BumpStrategy {
APP_VERSION,
+20 -20
View File
@@ -3,11 +3,10 @@ import { CredentialsSource } from '@expo/eas-json';
import chalk from 'chalk';
import cliProgress from 'cli-progress';
import fs from 'fs-extra';
import nullthrows from 'nullthrows';
import { withAnalyticsAsync } from '../analytics/common';
import { BuildEvent } from '../analytics/events';
import { getExpoWebsiteBaseUrl } from '../api';
import { withAnalyticsAsync } from '../analytics/common.js';
import { BuildEvent } from '../analytics/events.js';
import { getExpoWebsiteBaseUrl } from '../api.js';
import {
AppPlatform,
BuildFragment,
@@ -15,26 +14,27 @@ import {
BuildPriority,
BuildStatus,
UploadSessionType,
} from '../graphql/generated';
import { BuildResult } from '../graphql/mutations/BuildMutation';
import { BuildQuery } from '../graphql/queries/BuildQuery';
import Log, { learnMore } from '../log';
import { Ora, ora } from '../ora';
} from '../graphql/generated.js';
import { BuildResult } from '../graphql/mutations/BuildMutation.js';
import { BuildQuery } from '../graphql/queries/BuildQuery.js';
import Log, { learnMore } from '../log.js';
import { Ora, ora } from '../ora.js';
import {
appPlatformDisplayNames,
appPlatformEmojis,
requestedPlatformDisplayNames,
} from '../platform';
import { uploadAsync } from '../uploads';
import { formatBytes } from '../utils/files';
import { createProgressTracker } from '../utils/progress';
import { sleepAsync } from '../utils/promise';
import { getVcsClient } from '../vcs';
import { BuildContext } from './context';
import { runLocalBuildAsync } from './local';
import { collectMetadataAsync } from './metadata';
import { printDeprecationWarnings } from './utils/printBuildInfo';
import { makeProjectTarballAsync, reviewAndCommitChangesAsync } from './utils/repository';
} from '../platform.js';
import { uploadAsync } from '../uploads.js';
import { formatBytes } from '../utils/files.js';
import { nullthrows } from '../utils/nullthrows.js';
import { createProgressTracker } from '../utils/progress.js';
import { sleepAsync } from '../utils/promise.js';
import { getVcsClient } from '../vcs/index.js';
import { BuildContext } from './context.js';
import { runLocalBuildAsync } from './local.js';
import { collectMetadataAsync } from './metadata.js';
import { printDeprecationWarnings } from './utils/printBuildInfo.js';
import { makeProjectTarballAsync, reviewAndCommitChangesAsync } from './utils/repository.js';
export interface CredentialsResult<Credentials> {
source: CredentialsSource.LOCAL | CredentialsSource.REMOTE;
+5 -5
View File
@@ -3,11 +3,11 @@ import { EasJson, EasJsonReader } from '@expo/eas-json';
import chalk from 'chalk';
import fs from 'fs-extra';
import Log from '../log';
import { resolveWorkflowAsync } from '../project/workflow';
import { easCliVersion } from '../utils/easCli';
import { getVcsClient } from '../vcs';
import { maybeBailOnRepoStatusAsync, reviewAndCommitChangesAsync } from './utils/repository';
import Log from '../log.js';
import { resolveWorkflowAsync } from '../project/workflow.js';
import { easCliVersion } from '../utils/easCli.js';
import { getVcsClient } from '../vcs/index.js';
import { maybeBailOnRepoStatusAsync, reviewAndCommitChangesAsync } from './utils/repository.js';
interface ConfigureParams {
projectDir: string;
+8 -8
View File
@@ -3,14 +3,14 @@ import { Platform, Workflow } from '@expo/eas-build-job';
import { BuildProfile } from '@expo/eas-json';
import type { XCBuildConfiguration } from 'xcode';
import { TrackingContext } from '../analytics/common';
import { CredentialsContext } from '../credentials/context';
import { Target } from '../credentials/ios/types';
import { BuildResourceClass } from '../graphql/generated';
import { GradleBuildContext } from '../project/android/gradle';
import { XcodeBuildContext } from '../project/ios/scheme';
import { Actor } from '../user/User';
import { LocalBuildOptions } from './local';
import { TrackingContext } from '../analytics/common.js';
import { CredentialsContext } from '../credentials/context.js';
import { Target } from '../credentials/ios/types.js';
import { BuildResourceClass } from '../graphql/generated.js';
import { GradleBuildContext } from '../project/android/gradle.js';
import { XcodeBuildContext } from '../project/ios/scheme.js';
import { Actor } from '../user/User.js';
import { LocalBuildOptions } from './local.js';
export type CommonContext<T extends Platform> = Omit<BuildContext<T>, 'android' | 'ios'>;
+16 -14
View File
@@ -1,22 +1,24 @@
import { Platform } from '@expo/eas-build-job';
import { BuildProfile } from '@expo/eas-json';
import JsonFile from '@expo/json-file';
import JsonFileModule from '@expo/json-file';
import resolveFrom from 'resolve-from';
import { v4 as uuidv4 } from 'uuid';
import { TrackingContext } from '../analytics/common';
import { Analytics, BuildEvent } from '../analytics/events';
import { CredentialsContext } from '../credentials/context';
import { BuildResourceClass } from '../graphql/generated';
import { getExpoConfig } from '../project/expoConfig';
import { getProjectAccountName, getProjectIdAsync } from '../project/projectUtils';
import { resolveWorkflowAsync } from '../project/workflow';
import { findAccountByName } from '../user/Account';
import { ensureLoggedInAsync } from '../user/actions';
import { createAndroidContextAsync } from './android/build';
import { BuildContext, CommonContext } from './context';
import { createIosContextAsync } from './ios/build';
import { LocalBuildOptions } from './local';
import { TrackingContext } from '../analytics/common.js';
import { Analytics, BuildEvent } from '../analytics/events.js';
import { CredentialsContext } from '../credentials/context.js';
import { BuildResourceClass } from '../graphql/generated.js';
import { getExpoConfig } from '../project/expoConfig.js';
import { getProjectAccountName, getProjectIdAsync } from '../project/projectUtils.js';
import { resolveWorkflowAsync } from '../project/workflow.js';
import { findAccountByName } from '../user/Account.js';
import { ensureLoggedInAsync } from '../user/actions.js';
import { createAndroidContextAsync } from './android/build.js';
import { BuildContext, CommonContext } from './context.js';
import { createIosContextAsync } from './ios/build.js';
import { LocalBuildOptions } from './local.js';
const JsonFile = JsonFileModule.default;
export async function createBuildContextAsync<T extends Platform>({
buildProfileName,
+1 -1
View File
@@ -8,7 +8,7 @@ import {
DistributionType,
ProjectArchiveSourceInput,
ProjectArchiveSourceType,
} from '../graphql/generated';
} from '../graphql/generated.js';
export function transformProjectArchive(archiveSource: ArchiveSource): ProjectArchiveSourceInput {
if (archiveSource.type === ArchiveSourceType.S3) {
@@ -1,10 +1,10 @@
import { ExpoConfig } from '@expo/config';
import { IOSConfig } from '@expo/config-plugins';
import { InfoPlist } from '@expo/config-plugins';
import fs from 'fs-extra';
import { vol } from 'memfs';
import os from 'os';
import { readPlistAsync } from '../../../utils/plist';
import { readPlistAsync } from '../../../utils/plist.js';
import {
BumpStrategy,
bumpVersionAsync,
@@ -13,7 +13,7 @@ import {
getInfoPlistPath,
readBuildNumberAsync,
readShortVersionAsync,
} from '../version';
} from '../version.js';
jest.mock('fs');
@@ -62,9 +62,7 @@ describe(bumpVersionAsync, () => {
});
const appJSON = await fs.readJSON('/repo/app.json');
const infoPlist = (await readPlistAsync(
'/repo/ios/myproject/Info.plist'
)) as IOSConfig.InfoPlist;
const infoPlist = (await readPlistAsync('/repo/ios/myproject/Info.plist')) as InfoPlist;
expect(fakeExp.version).toBe('1.0.0');
expect(fakeExp.ios?.buildNumber).toBe('2');
expect(appJSON.expo.version).toBe('1.0.0');
@@ -86,9 +84,7 @@ describe(bumpVersionAsync, () => {
});
const appJSON = await fs.readJSON('/repo/app.json');
const infoPlist = (await readPlistAsync(
'/repo/ios/myproject/Info2.plist'
)) as IOSConfig.InfoPlist;
const infoPlist = (await readPlistAsync('/repo/ios/myproject/Info2.plist')) as InfoPlist;
expect(fakeExp.version).toBe('1.0.0');
expect(fakeExp.ios?.buildNumber).toBe('2');
expect(appJSON.expo.version).toBe('1.0.0');
@@ -108,9 +104,7 @@ describe(bumpVersionAsync, () => {
});
const appJSON = await fs.readJSON('/repo/app.json');
const infoPlist = (await readPlistAsync(
'/repo/ios/myproject/Info.plist'
)) as IOSConfig.InfoPlist;
const infoPlist = (await readPlistAsync('/repo/ios/myproject/Info.plist')) as InfoPlist;
expect(fakeExp.version).toBe('1.0.1');
expect(fakeExp.ios?.buildNumber).toBe('1');
expect(appJSON.expo.version).toBe('1.0.1');
@@ -130,9 +124,7 @@ describe(bumpVersionAsync, () => {
});
const appJSON = await fs.readJSON('/repo/app.json');
const infoPlist = (await readPlistAsync(
'/repo/ios/myproject/Info.plist'
)) as IOSConfig.InfoPlist;
const infoPlist = (await readPlistAsync('/repo/ios/myproject/Info.plist')) as InfoPlist;
expect(fakeExp.version).toBe('1.0.0');
expect(fakeExp.ios?.buildNumber).toBe('1');
expect(appJSON.expo.version).toBe('1.0.0');
+17 -15
View File
@@ -1,21 +1,23 @@
import { IOSConfig } from '@expo/config-plugins';
import ConfigPlugins from '@expo/config-plugins';
import { Ios, Job, Metadata, Platform, Workflow } from '@expo/eas-build-job';
import type { XCBuildConfiguration } from 'xcode';
import { IosCredentials, Target } from '../../credentials/ios/types';
import { BuildParamsInput } from '../../graphql/generated';
import { BuildMutation, BuildResult } from '../../graphql/mutations/BuildMutation';
import { ensureBundleIdentifierIsDefinedForManagedProjectAsync } from '../../project/ios/bundleIdentifier';
import { resolveXcodeBuildContextAsync } from '../../project/ios/scheme';
import { findApplicationTarget, resolveTargetsAsync } from '../../project/ios/target';
import { BuildRequestSender, JobData, prepareBuildRequestForPlatformAsync } from '../build';
import { BuildContext, CommonContext, IosBuildContext } from '../context';
import { transformMetadata } from '../graphql';
import { checkGoogleServicesFileAsync, checkNodeEnvVariable } from '../validate';
import { ensureIosCredentialsAsync } from './credentials';
import { transformJob } from './graphql';
import { prepareJobAsync } from './prepareJob';
import { syncProjectConfigurationAsync } from './syncProjectConfiguration';
import { IosCredentials, Target } from '../../credentials/ios/types.js';
import { BuildParamsInput } from '../../graphql/generated.js';
import { BuildMutation, BuildResult } from '../../graphql/mutations/BuildMutation.js';
import { ensureBundleIdentifierIsDefinedForManagedProjectAsync } from '../../project/ios/bundleIdentifier.js';
import { resolveXcodeBuildContextAsync } from '../../project/ios/scheme.js';
import { findApplicationTarget, resolveTargetsAsync } from '../../project/ios/target.js';
import { BuildRequestSender, JobData, prepareBuildRequestForPlatformAsync } from '../build.js';
import { BuildContext, CommonContext, IosBuildContext } from '../context.js';
import { transformMetadata } from '../graphql.js';
import { checkGoogleServicesFileAsync, checkNodeEnvVariable } from '../validate.js';
import { ensureIosCredentialsAsync } from './credentials.js';
import { transformJob } from './graphql.js';
import { prepareJobAsync } from './prepareJob.js';
import { syncProjectConfigurationAsync } from './syncProjectConfiguration.js';
const { IOSConfig } = ConfigPlugins;
export async function createIosContextAsync(
ctx: CommonContext<Platform.IOS>
@@ -1,11 +1,11 @@
import { Platform } from '@expo/eas-build-job';
import IosCredentialsProvider from '../../credentials/ios/IosCredentialsProvider';
import { getAppFromContext } from '../../credentials/ios/actions/BuildCredentialsUtils';
import { IosCredentials, Target } from '../../credentials/ios/types';
import { CredentialsResult } from '../build';
import { BuildContext } from '../context';
import { logCredentialsSource } from '../utils/credentials';
import IosCredentialsProvider from '../../credentials/ios/IosCredentialsProvider.js';
import { getAppFromContext } from '../../credentials/ios/actions/BuildCredentialsUtils.js';
import { IosCredentials, Target } from '../../credentials/ios/types.js';
import { CredentialsResult } from '../build.js';
import { BuildContext } from '../context.js';
import { logCredentialsSource } from '../utils/credentials.js';
export async function ensureIosCredentialsAsync(
buildCtx: BuildContext<Platform.IOS>,
+3 -3
View File
@@ -1,8 +1,8 @@
import { Env, Ios } from '@expo/eas-build-job';
import nullthrows from 'nullthrows';
import { IosJobInput, IosJobSecretsInput } from '../../graphql/generated';
import { transformProjectArchive, transformWorkflow } from '../graphql';
import { IosJobInput, IosJobSecretsInput } from '../../graphql/generated.js';
import { nullthrows } from '../../utils/nullthrows.js';
import { transformProjectArchive, transformWorkflow } from '../graphql.js';
export function transformJob(job: Ios.Job): IosJobInput {
return {
+5 -5
View File
@@ -2,11 +2,11 @@ import { ArchiveSource, Ios, Job, Platform, sanitizeJob } from '@expo/eas-build-
import path from 'path';
import slash from 'slash';
import { IosCredentials, TargetCredentials } from '../../credentials/ios/types';
import { getUsername } from '../../project/projectUtils';
import { ensureLoggedInAsync } from '../../user/actions';
import { getVcsClient } from '../../vcs';
import { BuildContext } from '../context';
import { IosCredentials, TargetCredentials } from '../../credentials/ios/types.js';
import { getUsername } from '../../project/projectUtils.js';
import { ensureLoggedInAsync } from '../../user/actions.js';
import { getVcsClient } from '../../vcs/index.js';
import { BuildContext } from '../context.js';
interface JobData {
projectArchive: ArchiveSource;
@@ -3,10 +3,10 @@ import { Platform, Workflow } from '@expo/eas-build-job';
import { BuildProfile, IosVersionAutoIncrement } from '@expo/eas-json';
import type { XCBuildConfiguration } from 'xcode';
import { isExpoUpdatesInstalled } from '../../project/projectUtils';
import { resolveWorkflowAsync } from '../../project/workflow';
import { syncUpdatesConfigurationAsync } from '../../update/ios/UpdatesModule';
import { BumpStrategy, bumpVersionAsync, bumpVersionInAppJsonAsync } from './version';
import { isExpoUpdatesInstalled } from '../../project/projectUtils.js';
import { resolveWorkflowAsync } from '../../project/workflow.js';
import { syncUpdatesConfigurationAsync } from '../../update/ios/UpdatesModule.js';
import { BumpStrategy, bumpVersionAsync, bumpVersionInAppJsonAsync } from './version.js';
export async function syncProjectConfigurationAsync({
projectDir,
+14 -12
View File
@@ -1,16 +1,18 @@
import { ExpoConfig, getConfigFilePaths } from '@expo/config';
import { IOSConfig } from '@expo/config-plugins';
import ConfigPlugins, { InfoPlist } from '@expo/config-plugins';
import { Platform, Workflow } from '@expo/eas-build-job';
import chalk from 'chalk';
import path from 'path';
import type { XCBuildConfiguration } from 'xcode';
import Log from '../../log';
import { resolveWorkflowAsync } from '../../project/workflow';
import { promptAsync } from '../../prompts';
import { readPlistAsync, writePlistAsync } from '../../utils/plist';
import { updateAppJsonConfigAsync } from '../utils/appJson';
import { bumpAppVersionAsync } from '../utils/version';
import Log from '../../log.js';
import { resolveWorkflowAsync } from '../../project/workflow.js';
import { promptAsync } from '../../prompts.js';
import { readPlistAsync, writePlistAsync } from '../../utils/plist.js';
import { updateAppJsonConfigAsync } from '../utils/appJson.js';
import { bumpAppVersionAsync } from '../utils/version.js';
const { IOSConfig } = ConfigPlugins;
export enum BumpStrategy {
APP_VERSION,
@@ -145,9 +147,9 @@ async function writeVersionsToInfoPlistAsync({
}: {
projectDir: string;
exp: ExpoConfig;
infoPlist: IOSConfig.InfoPlist;
infoPlist: InfoPlist;
buildSettings: XCBuildConfiguration['buildSettings'];
}): Promise<IOSConfig.InfoPlist> {
}): Promise<InfoPlist> {
let updatedInfoPlist = IOSConfig.Version.setVersion(exp, infoPlist);
updatedInfoPlist = IOSConfig.Version.setBuildNumber(exp, updatedInfoPlist);
await writeInfoPlistAsync({ projectDir, infoPlist: updatedInfoPlist, buildSettings });
@@ -176,9 +178,9 @@ export function getInfoPlistPath(
async function readInfoPlistAsync(
projectDir: string,
buildSettings: XCBuildConfiguration['buildSettings']
): Promise<IOSConfig.InfoPlist> {
): Promise<InfoPlist> {
const infoPlistPath = getInfoPlistPath(projectDir, buildSettings);
return ((await readPlistAsync(infoPlistPath)) ?? {}) as IOSConfig.InfoPlist;
return ((await readPlistAsync(infoPlistPath)) ?? {}) as InfoPlist;
}
async function writeInfoPlistAsync({
@@ -187,7 +189,7 @@ async function writeInfoPlistAsync({
buildSettings,
}: {
projectDir: string;
infoPlist: IOSConfig.InfoPlist;
infoPlist: InfoPlist;
buildSettings: XCBuildConfiguration['buildSettings'];
}): Promise<void> {
const infoPlistPath = getInfoPlistPath(projectDir, buildSettings);
+2 -2
View File
@@ -1,9 +1,9 @@
import { Job } from '@expo/eas-build-job';
import spawnAsync from '@expo/spawn-async';
import { default as spawnAsync } from '@expo/spawn-async';
import { ChildProcess } from 'child_process';
import semver from 'semver';
import { ora } from '../ora';
import { ora } from '../ora.js';
const PLUGIN_PACKAGE_NAME = 'eas-cli-local-build-plugin';
const PLUGIN_PACKAGE_VERSION = '0.0.85';
+13 -11
View File
@@ -1,25 +1,27 @@
import { Updates } from '@expo/config-plugins';
import ConfigPlugins from '@expo/config-plugins';
import { Metadata, Platform, sanitizeMetadata } from '@expo/eas-build-job';
import { IosEnterpriseProvisioning } from '@expo/eas-json';
import fs from 'fs-extra';
import resolveFrom from 'resolve-from';
import Log from '../log';
import { getUsername, isExpoUpdatesInstalled } from '../project/projectUtils';
import Log from '../log.js';
import { getUsername, isExpoUpdatesInstalled } from '../project/projectUtils.js';
import {
readChannelSafelyAsync as readAndroidChannelSafelyAsync,
readReleaseChannelSafelyAsync as readAndroidReleaseChannelSafelyAsync,
} from '../update/android/UpdatesModule';
} from '../update/android/UpdatesModule.js';
import {
readChannelSafelyAsync as readIosChannelSafelyAsync,
readReleaseChannelSafelyAsync as readIosReleaseChannelSafelyAsync,
} from '../update/ios/UpdatesModule';
import { ensureLoggedInAsync } from '../user/actions';
import { easCliVersion } from '../utils/easCli';
import { getVcsClient } from '../vcs';
import { maybeResolveVersionsAsync as maybeResolveAndroidVersionsAsync } from './android/version';
import { BuildContext } from './context';
import { maybeResolveVersionsAsync as maybeResolveIosVersionsAsync } from './ios/version';
} from '../update/ios/UpdatesModule.js';
import { ensureLoggedInAsync } from '../user/actions.js';
import { easCliVersion } from '../utils/easCli.js';
import { getVcsClient } from '../vcs/index.js';
import { maybeResolveVersionsAsync as maybeResolveAndroidVersionsAsync } from './android/version.js';
import { BuildContext } from './context.js';
import { maybeResolveVersionsAsync as maybeResolveIosVersionsAsync } from './ios/version.js';
const { Updates } = ConfigPlugins;
export async function collectMetadataAsync<T extends Platform>(
ctx: BuildContext<T>
+24 -24
View File
@@ -1,7 +1,6 @@
import { Platform, Workflow } from '@expo/eas-build-job';
import { BuildProfile, EasJsonReader, SubmitProfile } from '@expo/eas-json';
import chalk from 'chalk';
import nullthrows from 'nullthrows';
import {
AppPlatform,
@@ -9,37 +8,38 @@ import {
BuildResourceClass,
BuildStatus,
SubmissionFragment,
} from '../graphql/generated';
import { toAppPlatform, toPlatform } from '../graphql/types/AppPlatform';
import Log from '../log';
} from '../graphql/generated.js';
import { toAppPlatform, toPlatform } from '../graphql/types/AppPlatform.js';
import Log from '../log.js';
import {
RequestedPlatform,
appPlatformDisplayNames,
appPlatformEmojis,
toPlatforms,
} from '../platform';
import { checkExpoSdkIsSupportedAsync } from '../project/expoSdk';
import { validateMetroConfigForManagedWorkflowAsync } from '../project/metroConfig';
import { createSubmissionContextAsync } from '../submit/context';
} from '../platform.js';
import { checkExpoSdkIsSupportedAsync } from '../project/expoSdk.js';
import { validateMetroConfigForManagedWorkflowAsync } from '../project/metroConfig.js';
import { createSubmissionContextAsync } from '../submit/context.js';
import {
submitAsync,
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';
import { BuildRequestSender, waitForBuildEndAsync } from './build';
import { ensureProjectConfiguredAsync } from './configure';
import { BuildContext } from './context';
import { createBuildContextAsync } from './createContext';
import { prepareIosBuildAsync } from './ios/build';
import { LocalBuildOptions } from './local';
import { UserInputResourceClass } from './types';
import { ensureExpoDevClientInstalledForDevClientBuildsAsync } from './utils/devClient';
import { printBuildResults, printLogsUrls } from './utils/printBuildInfo';
import { ensureRepoIsCleanAsync } from './utils/repository';
} from '../submit/submit.js';
import { printSubmissionDetailsUrls } from '../submit/utils/urls.js';
import { printJsonOnlyOutput } from '../utils/json.js';
import { nullthrows } from '../utils/nullthrows.js';
import { ProfileData, getProfilesAsync } from '../utils/profiles.js';
import { getVcsClient } from '../vcs/index.js';
import { prepareAndroidBuildAsync } from './android/build.js';
import { BuildRequestSender, waitForBuildEndAsync } from './build.js';
import { ensureProjectConfiguredAsync } from './configure.js';
import { BuildContext } from './context.js';
import { createBuildContextAsync } from './createContext.js';
import { prepareIosBuildAsync } from './ios/build.js';
import { LocalBuildOptions } from './local.js';
import { UserInputResourceClass } from './types.js';
import { ensureExpoDevClientInstalledForDevClientBuildsAsync } from './utils/devClient.js';
import { printBuildResults, printLogsUrls } from './utils/printBuildInfo.js';
import { ensureRepoIsCleanAsync } from './utils/repository.js';
let metroConfigValidated = false;
let sdkVersionChecked = false;
+3 -1
View File
@@ -1,7 +1,9 @@
import * as ExpoConfig from '@expo/config';
import JsonFile from '@expo/json-file';
import JsonFileModule from '@expo/json-file';
import assert from 'assert';
const JsonFile = JsonFileModule.default;
export async function updateAppJsonConfigAsync(
{
projectDir,
@@ -2,8 +2,8 @@ import { Platform } from '@expo/eas-build-job';
import { CredentialsSource } from '@expo/eas-json';
import chalk from 'chalk';
import Log from '../../log';
import { requestedPlatformDisplayNames } from '../../platform';
import Log from '../../log.js';
import { requestedPlatformDisplayNames } from '../../platform.js';
export function logCredentialsSource(
credentialsSource: CredentialsSource,
@@ -3,15 +3,15 @@ import { Errors } from '@oclif/core';
import chalk from 'chalk';
import resolveFrom from 'resolve-from';
import { toAppPlatform } from '../../graphql/types/AppPlatform';
import Log, { learnMore } from '../../log';
import { appPlatformDisplayNames } from '../../platform';
import { resolveWorkflowAsync } from '../../project/workflow';
import { confirmAsync } from '../../prompts';
import { expoCommandAsync } from '../../utils/expoCli';
import { ProfileData } from '../../utils/profiles';
import { getVcsClient } from '../../vcs';
import { reviewAndCommitChangesAsync } from './repository';
import { toAppPlatform } from '../../graphql/types/AppPlatform.js';
import Log, { learnMore } from '../../log.js';
import { appPlatformDisplayNames } from '../../platform.js';
import { resolveWorkflowAsync } from '../../project/workflow.js';
import { confirmAsync } from '../../prompts.js';
import { expoCommandAsync } from '../../utils/expoCli.js';
import { ProfileData } from '../../utils/profiles.js';
import { getVcsClient } from '../../vcs/index.js';
import { reviewAndCommitChangesAsync } from './repository.js';
export async function ensureExpoDevClientInstalledForDevClientBuildsAsync({
projectDir,
@@ -4,10 +4,10 @@ import {
AppPlatform,
BuildFragment,
BuildStatus as GraphQLBuildStatus,
} from '../../graphql/generated';
import { appPlatformDisplayNames } from '../../platform';
import formatFields from '../../utils/formatFields';
import { getBuildLogsUrl } from './url';
} from '../../graphql/generated.js';
import { appPlatformDisplayNames } from '../../platform.js';
import formatFields from '../../utils/formatFields.js';
import { getBuildLogsUrl } from './url.js';
export function formatGraphQLBuild(build: BuildFragment): string {
const actor = getActorName(build);
@@ -11,11 +11,11 @@ import {
DistributionType,
EasBuildDeprecationInfo,
EasBuildDeprecationInfoType,
} from '../../graphql/generated';
import Log, { learnMore } from '../../log';
import { appPlatformDisplayNames, appPlatformEmojis } from '../../platform';
import { printJsonOnlyOutput } from '../../utils/json';
import { getBuildLogsUrl, getInternalDistributionInstallUrl } from './url';
} from '../../graphql/generated.js';
import Log, { learnMore } from '../../log.js';
import { appPlatformDisplayNames, appPlatformEmojis } from '../../platform.js';
import { printJsonOnlyOutput } from '../../utils/json.js';
import { getBuildLogsUrl, getInternalDistributionInstallUrl } from './url.js';
export function printLogsUrls(builds: BuildFragment[]): void {
if (builds.length === 1) {
@@ -4,13 +4,13 @@ import path from 'path';
import tar from 'tar';
import { v4 as uuidv4 } from 'uuid';
import Log from '../../log';
import { ora } from '../../ora';
import { confirmAsync, promptAsync } from '../../prompts';
import { formatBytes } from '../../utils/files';
import { getTmpDirectory } from '../../utils/paths';
import { endTimer, formatMilliseconds, startTimer } from '../../utils/timer';
import { getVcsClient } from '../../vcs';
import Log from '../../log.js';
import { ora } from '../../ora.js';
import { confirmAsync, promptAsync } from '../../prompts.js';
import { formatBytes } from '../../utils/files.js';
import { getTmpDirectory } from '../../utils/paths.js';
import { endTimer, formatMilliseconds, startTimer } from '../../utils/timer.js';
import { getVcsClient } from '../../vcs/index.js';
export async function maybeBailOnRepoStatusAsync(): Promise<void> {
if (!(await getVcsClient().isCommitRequiredAsync())) {
+2 -2
View File
@@ -1,7 +1,7 @@
import assert from 'assert';
import { getExpoApiBaseUrl, getExpoWebsiteBaseUrl } from '../../api';
import { AppPlatform, BuildFragment } from '../../graphql/generated';
import { getExpoApiBaseUrl, getExpoWebsiteBaseUrl } from '../../api.js';
import { AppPlatform, BuildFragment } from '../../graphql/generated.js';
export function getProjectDashboardUrl(accountName: string, projectName: string): string {
return new URL(
+4 -4
View File
@@ -1,11 +1,11 @@
import { ExpoConfig, getConfigFilePaths } from '@expo/config';
import chalk from 'chalk';
import nullthrows from 'nullthrows';
import semver from 'semver';
import Log from '../../log';
import { promptAsync } from '../../prompts';
import { updateAppJsonConfigAsync } from './appJson';
import Log from '../../log.js';
import { promptAsync } from '../../prompts.js';
import { nullthrows } from '../../utils/nullthrows.js';
import { updateAppJsonConfigAsync } from './appJson.js';
export function ensureStaticConfigExists(projectDir: string): void {
const paths = getConfigFilePaths(projectDir);
+3 -3
View File
@@ -2,9 +2,9 @@ import { Platform, Workflow } from '@expo/eas-build-job';
import fs from 'fs-extra';
import path from 'path';
import Log, { learnMore } from '../log';
import { getVcsClient } from '../vcs';
import { CommonContext } from './context';
import Log, { learnMore } from '../log.js';
import { getVcsClient } from '../vcs/index.js';
import { CommonContext } from './context.js';
export function checkNodeEnvVariable(ctx: CommonContext<Platform>): void {
if (ctx.buildProfile.env?.NODE_ENV === 'production') {
@@ -7,13 +7,13 @@ import {
flushAsync as flushAnalyticsAsync,
initAsync as initAnalyticsAsync,
logEvent,
} from '../analytics/rudderstackClient';
import { findProjectRootAsync } from '../project/projectUtils';
import { getUserAsync } from '../user/User';
import { ensureLoggedInAsync } from '../user/actions';
import { easCliVersion } from '../utils/easCli';
import { setVcsClient } from '../vcs';
import GitClient from '../vcs/clients/git';
} from '../analytics/rudderstackClient.js';
import { findProjectRootAsync } from '../project/projectUtils.js';
import { getUserAsync } from '../user/User.js';
import { ensureLoggedInAsync } from '../user/actions.js';
import { easCliVersion } from '../utils/easCli.js';
import GitClient from '../vcs/clients/git.js';
import { setVcsClient } from '../vcs/index.js';
export default abstract class EasCommand extends Command {
/**
@@ -1,8 +1,8 @@
import { flushAsync, initAsync, logEvent } from '../../analytics/rudderstackClient';
import { jester as mockJester } from '../../credentials/__tests__/fixtures-constants';
import { getUserAsync } from '../../user/User';
import { ensureLoggedInAsync } from '../../user/actions';
import EasCommand from '../EasCommand';
import { flushAsync, initAsync, logEvent } from '../../analytics/rudderstackClient.js';
import { jester as mockJester } from '../../credentials/__tests__/fixtures-constants.js';
import { getUserAsync } from '../../user/User.js';
import { ensureLoggedInAsync } from '../../user/actions.js';
import EasCommand from '../EasCommand.js';
jest.mock('../../user/User');
jest.mock('../../user/actions', () => ({ ensureLoggedInAsync: jest.fn() }));
@@ -1,6 +1,6 @@
import EasCommand from '../../commandUtils/EasCommand';
import Log from '../../log';
import { showLoginPromptAsync } from '../../user/actions';
import EasCommand from '../../commandUtils/EasCommand.js';
import Log from '../../log.js';
import { showLoginPromptAsync } from '../../user/actions.js';
export default class AccountLogin extends EasCommand {
static description = 'log in with your Expo account';
@@ -1,6 +1,6 @@
import EasCommand from '../../commandUtils/EasCommand';
import Log from '../../log';
import { logoutAsync } from '../../user/User';
import EasCommand from '../../commandUtils/EasCommand.js';
import Log from '../../log.js';
import { logoutAsync } from '../../user/User.js';
export default class AccountLogout extends EasCommand {
static description = 'log out';
@@ -1,8 +1,8 @@
import chalk from 'chalk';
import EasCommand from '../../commandUtils/EasCommand';
import Log from '../../log';
import { getActorDisplayName, getUserAsync } from '../../user/User';
import EasCommand from '../../commandUtils/EasCommand.js';
import Log from '../../log.js';
import { getActorDisplayName, getUserAsync } from '../../user/User.js';
export default class AccountView extends EasCommand {
static description = 'show the username you are logged in as';
+3 -3
View File
@@ -1,6 +1,6 @@
import EasCommand from '../commandUtils/EasCommand';
import Log from '../log';
import UserSettings from '../user/UserSettings';
import EasCommand from '../commandUtils/EasCommand.js';
import Log from '../log.js';
import UserSettings from '../user/UserSettings.js';
export default class AnalyticsView extends EasCommand {
static description = 'display or change analytics settings';
+10 -10
View File
@@ -1,24 +1,24 @@
import { Flags } from '@oclif/core';
import chalk from 'chalk';
import gql from 'graphql-tag';
import { gql } from 'graphql-tag';
import EasCommand from '../../commandUtils/EasCommand';
import { graphqlClient, withErrorHandlingAsync } from '../../graphql/client';
import EasCommand from '../../commandUtils/EasCommand.js';
import { graphqlClient, withErrorHandlingAsync } from '../../graphql/client.js';
import {
CreateUpdateBranchForAppMutation,
CreateUpdateBranchForAppMutationVariables,
UpdateBranch,
} from '../../graphql/generated';
import Log from '../../log';
import { getExpoConfig } from '../../project/expoConfig';
} from '../../graphql/generated.js';
import Log from '../../log.js';
import { getExpoConfig } from '../../project/expoConfig.js';
import {
findProjectRootAsync,
getProjectFullNameAsync,
getProjectIdAsync,
} from '../../project/projectUtils';
import { promptAsync } from '../../prompts';
import { enableJsonOutput, printJsonOnlyOutput } from '../../utils/json';
import { getVcsClient } from '../../vcs';
} from '../../project/projectUtils.js';
import { promptAsync } from '../../prompts.js';
import { enableJsonOutput, printJsonOnlyOutput } from '../../utils/json.js';
import { getVcsClient } from '../../vcs/index.js';
export async function createUpdateBranchOnAppAsync({
appId,
@@ -1,25 +1,25 @@
import { Flags } from '@oclif/core';
import chalk from 'chalk';
import gql from 'graphql-tag';
import { gql } from 'graphql-tag';
import EasCommand from '../../commandUtils/EasCommand';
import { graphqlClient, withErrorHandlingAsync } from '../../graphql/client';
import EasCommand from '../../commandUtils/EasCommand.js';
import { graphqlClient, withErrorHandlingAsync } from '../../graphql/client.js';
import {
DeleteUpdateBranchMutation,
DeleteUpdateBranchMutationVariables,
DeleteUpdateBranchResult,
GetBranchInfoQuery,
GetBranchInfoQueryVariables,
} from '../../graphql/generated';
import Log from '../../log';
import { getExpoConfig } from '../../project/expoConfig';
} from '../../graphql/generated.js';
import Log from '../../log.js';
import { getExpoConfig } from '../../project/expoConfig.js';
import {
findProjectRootAsync,
getProjectFullNameAsync,
getProjectIdAsync,
} from '../../project/projectUtils';
import { promptAsync, toggleConfirmAsync } from '../../prompts';
import { enableJsonOutput, printJsonOnlyOutput } from '../../utils/json';
} from '../../project/projectUtils.js';
import { promptAsync, toggleConfirmAsync } from '../../prompts.js';
import { enableJsonOutput, printJsonOnlyOutput } from '../../utils/json.js';
async function getBranchInfoAsync({
appId,
+10 -10
View File
@@ -2,21 +2,21 @@ import { Flags } from '@oclif/core';
import chalk from 'chalk';
import CliTable from 'cli-table3';
import { print } from 'graphql';
import gql from 'graphql-tag';
import { gql } from 'graphql-tag';
import EasCommand from '../../commandUtils/EasCommand';
import { graphqlClient, withErrorHandlingAsync } from '../../graphql/client';
import EasCommand from '../../commandUtils/EasCommand.js';
import { graphqlClient, withErrorHandlingAsync } from '../../graphql/client.js';
import {
BranchesByAppQuery,
BranchesByAppQueryVariables,
UpdateBranchFragment,
} from '../../graphql/generated';
import { UpdateBranchFragmentNode } from '../../graphql/types/UpdateBranch';
import Log from '../../log';
import { getExpoConfig } from '../../project/expoConfig';
import { findProjectRootAsync, getProjectIdAsync } from '../../project/projectUtils';
import { UPDATE_COLUMNS, formatUpdate, getPlatformsForGroup } from '../../update/utils';
import { enableJsonOutput, printJsonOnlyOutput } from '../../utils/json';
} from '../../graphql/generated.js';
import { UpdateBranchFragmentNode } from '../../graphql/types/UpdateBranch.js';
import Log from '../../log.js';
import { getExpoConfig } from '../../project/expoConfig.js';
import { findProjectRootAsync, getProjectIdAsync } from '../../project/projectUtils.js';
import { UPDATE_COLUMNS, formatUpdate, getPlatformsForGroup } from '../../update/utils.js';
import { enableJsonOutput, printJsonOnlyOutput } from '../../utils/json.js';
const BRANCHES_LIMIT = 10_000;
@@ -1,4 +1,4 @@
import EasCommand from '../../commandUtils/EasCommand';
import EasCommand from '../../commandUtils/EasCommand.js';
export default class BranchPublish extends EasCommand {
static description = 'deprecated, use "eas update"';
@@ -1,24 +1,24 @@
import { Flags } from '@oclif/core';
import chalk from 'chalk';
import gql from 'graphql-tag';
import { gql } from 'graphql-tag';
import EasCommand from '../../commandUtils/EasCommand';
import { graphqlClient, withErrorHandlingAsync } from '../../graphql/client';
import EasCommand from '../../commandUtils/EasCommand.js';
import { graphqlClient, withErrorHandlingAsync } from '../../graphql/client.js';
import {
EditUpdateBranchInput,
EditUpdateBranchMutation,
EditUpdateBranchMutationVariables,
UpdateBranch,
} from '../../graphql/generated';
import Log from '../../log';
import { getExpoConfig } from '../../project/expoConfig';
} from '../../graphql/generated.js';
import Log from '../../log.js';
import { getExpoConfig } from '../../project/expoConfig.js';
import {
findProjectRootAsync,
getProjectFullNameAsync,
getProjectIdAsync,
} from '../../project/projectUtils';
import { promptAsync } from '../../prompts';
import { enableJsonOutput, printJsonOnlyOutput } from '../../utils/json';
} from '../../project/projectUtils.js';
import { promptAsync } from '../../prompts.js';
import { enableJsonOutput, printJsonOnlyOutput } from '../../utils/json.js';
async function renameUpdateBranchOnAppAsync({
appId,
+10 -10
View File
@@ -2,16 +2,16 @@ import { Flags } from '@oclif/core';
import chalk from 'chalk';
import Table from 'cli-table3';
import EasCommand from '../../commandUtils/EasCommand';
import { UpdateQuery } from '../../graphql/queries/UpdateQuery';
import Log from '../../log';
import { getExpoConfig } from '../../project/expoConfig';
import { findProjectRootAsync, getProjectIdAsync } from '../../project/projectUtils';
import { promptAsync } from '../../prompts';
import { UPDATE_COLUMNS, formatUpdate, getPlatformsForGroup } from '../../update/utils';
import groupBy from '../../utils/expodash/groupBy';
import formatFields from '../../utils/formatFields';
import { enableJsonOutput, printJsonOnlyOutput } from '../../utils/json';
import EasCommand from '../../commandUtils/EasCommand.js';
import { UpdateQuery } from '../../graphql/queries/UpdateQuery.js';
import Log from '../../log.js';
import { getExpoConfig } from '../../project/expoConfig.js';
import { findProjectRootAsync, getProjectIdAsync } from '../../project/projectUtils.js';
import { promptAsync } from '../../prompts.js';
import { UPDATE_COLUMNS, formatUpdate, getPlatformsForGroup } from '../../update/utils.js';
import groupBy from '../../utils/expodash/groupBy.js';
import formatFields from '../../utils/formatFields.js';
import { enableJsonOutput, printJsonOnlyOutput } from '../../utils/json.js';
export default class BranchView extends EasCommand {
static description = 'view a branch';
+11 -11
View File
@@ -1,25 +1,25 @@
import chalk from 'chalk';
import gql from 'graphql-tag';
import { gql } from 'graphql-tag';
import EasCommand from '../../commandUtils/EasCommand';
import { graphqlClient, withErrorHandlingAsync } from '../../graphql/client';
import EasCommand from '../../commandUtils/EasCommand.js';
import { graphqlClient, withErrorHandlingAsync } from '../../graphql/client.js';
import {
Build,
BuildStatus,
CancelBuildMutation,
CancelBuildMutationVariables,
} from '../../graphql/generated';
import { BuildQuery } from '../../graphql/queries/BuildQuery';
import Log from '../../log';
import { ora } from '../../ora';
import { appPlatformEmojis } from '../../platform';
import { getExpoConfig } from '../../project/expoConfig';
} from '../../graphql/generated.js';
import { BuildQuery } from '../../graphql/queries/BuildQuery.js';
import Log from '../../log.js';
import { ora } from '../../ora.js';
import { appPlatformEmojis } from '../../platform.js';
import { getExpoConfig } from '../../project/expoConfig.js';
import {
findProjectRootAsync,
getProjectFullNameAsync,
getProjectIdAsync,
} from '../../project/projectUtils';
import { confirmAsync, selectAsync } from '../../prompts';
} from '../../project/projectUtils.js';
import { confirmAsync, selectAsync } from '../../prompts.js';
async function cancelBuildAsync(buildId: string): Promise<Pick<Build, 'id' | 'status'>> {
const data = await withErrorHandlingAsync(
@@ -2,18 +2,18 @@ import { Platform, Workflow } from '@expo/eas-build-job';
import { Flags } from '@oclif/core';
import chalk from 'chalk';
import { cleanUpOldEasBuildGradleScriptAsync } from '../../build/android/syncProjectConfiguration';
import { ensureProjectConfiguredAsync } from '../../build/configure';
import EasCommand from '../../commandUtils/EasCommand';
import Log, { learnMore } from '../../log';
import { RequestedPlatform } from '../../platform';
import { getExpoConfig } from '../../project/expoConfig';
import { findProjectRootAsync, isExpoUpdatesInstalled } from '../../project/projectUtils';
import { resolveWorkflowAsync } from '../../project/workflow';
import { promptAsync } from '../../prompts';
import { syncUpdatesConfigurationAsync as syncAndroidUpdatesConfigurationAsync } from '../../update/android/UpdatesModule';
import { syncUpdatesConfigurationAsync as syncIosUpdatesConfigurationAsync } from '../../update/ios/UpdatesModule';
import { getVcsClient } from '../../vcs';
import { cleanUpOldEasBuildGradleScriptAsync } from '../../build/android/syncProjectConfiguration.js';
import { ensureProjectConfiguredAsync } from '../../build/configure.js';
import EasCommand from '../../commandUtils/EasCommand.js';
import Log, { learnMore } from '../../log.js';
import { RequestedPlatform } from '../../platform.js';
import { getExpoConfig } from '../../project/expoConfig.js';
import { findProjectRootAsync, isExpoUpdatesInstalled } from '../../project/projectUtils.js';
import { resolveWorkflowAsync } from '../../project/workflow.js';
import { promptAsync } from '../../prompts.js';
import { syncUpdatesConfigurationAsync as syncAndroidUpdatesConfigurationAsync } from '../../update/android/UpdatesModule.js';
import { syncUpdatesConfigurationAsync as syncIosUpdatesConfigurationAsync } from '../../update/ios/UpdatesModule.js';
import { getVcsClient } from '../../vcs/index.js';
export default class BuildConfigure extends EasCommand {
static description = 'configure the project to support EAS Build';
+7 -7
View File
@@ -1,13 +1,13 @@
import { Errors, Flags } from '@oclif/core';
import path from 'path';
import { BuildFlags, runBuildAndSubmitAsync } from '../../build/runBuildAndSubmit';
import { UserInputResourceClass } from '../../build/types';
import EasCommand from '../../commandUtils/EasCommand';
import Log from '../../log';
import { RequestedPlatform, selectRequestedPlatformAsync } from '../../platform';
import { findProjectRootAsync } from '../../project/projectUtils';
import { enableJsonOutput } from '../../utils/json';
import { BuildFlags, runBuildAndSubmitAsync } from '../../build/runBuildAndSubmit.js';
import { UserInputResourceClass } from '../../build/types.js';
import EasCommand from '../../commandUtils/EasCommand.js';
import Log from '../../log.js';
import { RequestedPlatform, selectRequestedPlatformAsync } from '../../platform.js';
import { findProjectRootAsync } from '../../project/projectUtils.js';
import { enableJsonOutput } from '../../utils/json.js';
interface RawBuildFlags {
platform?: string;
@@ -4,14 +4,14 @@ import fs from 'fs-extra';
import path from 'path';
import { v4 as uuidv4 } from 'uuid';
import { runBuildAndSubmitAsync } from '../../build/runBuildAndSubmit';
import EasCommand from '../../commandUtils/EasCommand';
import Log from '../../log';
import { ora } from '../../ora';
import { RequestedPlatform } from '../../platform';
import { findProjectRootAsync } from '../../project/projectUtils';
import { getTmpDirectory } from '../../utils/paths';
import { getVcsClient } from '../../vcs';
import { runBuildAndSubmitAsync } from '../../build/runBuildAndSubmit.js';
import EasCommand from '../../commandUtils/EasCommand.js';
import Log from '../../log.js';
import { ora } from '../../ora.js';
import { RequestedPlatform } from '../../platform.js';
import { findProjectRootAsync } from '../../project/projectUtils.js';
import { getTmpDirectory } from '../../utils/paths.js';
import { getVcsClient } from '../../vcs/index.js';
enum InspectStage {
ARCHIVE = 'archive',
+11 -11
View File
@@ -1,25 +1,25 @@
import { Flags } from '@oclif/core';
import chalk from 'chalk';
import { BuildDistributionType, BuildStatus } from '../../build/types';
import { formatGraphQLBuild } from '../../build/utils/formatBuild';
import EasCommand from '../../commandUtils/EasCommand';
import { BuildDistributionType, BuildStatus } from '../../build/types.js';
import { formatGraphQLBuild } from '../../build/utils/formatBuild.js';
import EasCommand from '../../commandUtils/EasCommand.js';
import {
AppPlatform,
DistributionType,
BuildStatus as GraphQLBuildStatus,
} from '../../graphql/generated';
import { BuildQuery } from '../../graphql/queries/BuildQuery';
import Log from '../../log';
import { ora } from '../../ora';
import { RequestedPlatform } from '../../platform';
import { getExpoConfig } from '../../project/expoConfig';
} from '../../graphql/generated.js';
import { BuildQuery } from '../../graphql/queries/BuildQuery.js';
import Log from '../../log.js';
import { ora } from '../../ora.js';
import { RequestedPlatform } from '../../platform.js';
import { getExpoConfig } from '../../project/expoConfig.js';
import {
findProjectRootAsync,
getProjectFullNameAsync,
getProjectIdAsync,
} from '../../project/projectUtils';
import { enableJsonOutput, printJsonOnlyOutput } from '../../utils/json';
} from '../../project/projectUtils.js';
import { enableJsonOutput, printJsonOnlyOutput } from '../../utils/json.js';
export default class BuildList extends EasCommand {
static description = 'list all builds for your project';
+9 -9
View File
@@ -1,18 +1,18 @@
import { Flags } from '@oclif/core';
import { formatGraphQLBuild } from '../../build/utils/formatBuild';
import EasCommand from '../../commandUtils/EasCommand';
import { BuildFragment } from '../../graphql/generated';
import { BuildQuery } from '../../graphql/queries/BuildQuery';
import Log from '../../log';
import { ora } from '../../ora';
import { getExpoConfig } from '../../project/expoConfig';
import { formatGraphQLBuild } from '../../build/utils/formatBuild.js';
import EasCommand from '../../commandUtils/EasCommand.js';
import { BuildFragment } from '../../graphql/generated.js';
import { BuildQuery } from '../../graphql/queries/BuildQuery.js';
import Log from '../../log.js';
import { ora } from '../../ora.js';
import { getExpoConfig } from '../../project/expoConfig.js';
import {
findProjectRootAsync,
getProjectFullNameAsync,
getProjectIdAsync,
} from '../../project/projectUtils';
import { enableJsonOutput, printJsonOnlyOutput } from '../../utils/json';
} from '../../project/projectUtils.js';
import { enableJsonOutput, printJsonOnlyOutput } from '../../utils/json.js';
export default class BuildView extends EasCommand {
static description = 'view a build for your project';
+12 -12
View File
@@ -1,25 +1,25 @@
import { Flags } from '@oclif/core';
import chalk from 'chalk';
import gql from 'graphql-tag';
import { gql } from 'graphql-tag';
import EasCommand from '../../commandUtils/EasCommand';
import { graphqlClient, withErrorHandlingAsync } from '../../graphql/client';
import EasCommand from '../../commandUtils/EasCommand.js';
import { graphqlClient, withErrorHandlingAsync } from '../../graphql/client.js';
import {
CreateUpdateChannelOnAppMutation,
CreateUpdateChannelOnAppMutationVariables,
} from '../../graphql/generated';
import { BranchQuery } from '../../graphql/queries/BranchQuery';
import Log from '../../log';
import { getExpoConfig } from '../../project/expoConfig';
} from '../../graphql/generated.js';
import { BranchQuery } from '../../graphql/queries/BranchQuery.js';
import Log from '../../log.js';
import { getExpoConfig } from '../../project/expoConfig.js';
import {
findProjectRootAsync,
getProjectFullNameAsync,
getProjectIdAsync,
} from '../../project/projectUtils';
import { promptAsync } from '../../prompts';
import formatFields from '../../utils/formatFields';
import { enableJsonOutput, printJsonOnlyOutput } from '../../utils/json';
import { createUpdateBranchOnAppAsync } from '../branch/create';
} from '../../project/projectUtils.js';
import { promptAsync } from '../../prompts.js';
import formatFields from '../../utils/formatFields.js';
import { enableJsonOutput, printJsonOnlyOutput } from '../../utils/json.js';
import { createUpdateBranchOnAppAsync } from '../branch/create.js';
export async function createUpdateChannelOnAppAsync({
appId,
@@ -1,24 +1,24 @@
import { Flags } from '@oclif/core';
import gql from 'graphql-tag';
import { gql } from 'graphql-tag';
import EasCommand from '../../commandUtils/EasCommand';
import { graphqlClient, withErrorHandlingAsync } from '../../graphql/client';
import EasCommand from '../../commandUtils/EasCommand.js';
import { graphqlClient, withErrorHandlingAsync } from '../../graphql/client.js';
import {
DeleteUpdateChannelMutation,
DeleteUpdateChannelMutationVariables,
DeleteUpdateChannelResult,
GetChannelInfoQuery,
GetChannelInfoQueryVariables,
} from '../../graphql/generated';
import Log from '../../log';
import { getExpoConfig } from '../../project/expoConfig';
} from '../../graphql/generated.js';
import Log from '../../log.js';
import { getExpoConfig } from '../../project/expoConfig.js';
import {
findProjectRootAsync,
getProjectFullNameAsync,
getProjectIdAsync,
} from '../../project/projectUtils';
import { promptAsync, toggleConfirmAsync } from '../../prompts';
import { enableJsonOutput, printJsonOnlyOutput } from '../../utils/json';
} from '../../project/projectUtils.js';
import { promptAsync, toggleConfirmAsync } from '../../prompts.js';
import { enableJsonOutput, printJsonOnlyOutput } from '../../utils/json.js';
export default class ChannelDelete extends EasCommand {
static hidden = true;
+10 -10
View File
@@ -1,9 +1,9 @@
import { Flags } from '@oclif/core';
import chalk from 'chalk';
import gql from 'graphql-tag';
import { gql } from 'graphql-tag';
import EasCommand from '../../commandUtils/EasCommand';
import { graphqlClient, withErrorHandlingAsync } from '../../graphql/client';
import EasCommand from '../../commandUtils/EasCommand.js';
import { graphqlClient, withErrorHandlingAsync } from '../../graphql/client.js';
import {
GetChannelByNameToEditQuery,
GetChannelByNameToEditQueryVariables,
@@ -11,13 +11,13 @@ import {
UpdateChannel,
UpdateChannelBranchMappingMutation,
UpdateChannelBranchMappingMutationVariables,
} from '../../graphql/generated';
import { BranchQuery } from '../../graphql/queries/BranchQuery';
import Log from '../../log';
import { getExpoConfig } from '../../project/expoConfig';
import { findProjectRootAsync, getProjectIdAsync } from '../../project/projectUtils';
import { promptAsync } from '../../prompts';
import { enableJsonOutput, printJsonOnlyOutput } from '../../utils/json';
} from '../../graphql/generated.js';
import { BranchQuery } from '../../graphql/queries/BranchQuery.js';
import Log from '../../log.js';
import { getExpoConfig } from '../../project/expoConfig.js';
import { findProjectRootAsync, getProjectIdAsync } from '../../project/projectUtils.js';
import { promptAsync } from '../../prompts.js';
import { enableJsonOutput, printJsonOnlyOutput } from '../../utils/json.js';
async function getChannelByNameForAppAsync({
appId,
+10 -10
View File
@@ -1,18 +1,18 @@
import { Flags } from '@oclif/core';
import gql from 'graphql-tag';
import { gql } from 'graphql-tag';
import EasCommand from '../../commandUtils/EasCommand';
import { graphqlClient, withErrorHandlingAsync } from '../../graphql/client';
import EasCommand from '../../commandUtils/EasCommand.js';
import { graphqlClient, withErrorHandlingAsync } from '../../graphql/client.js';
import {
GetAllChannelsForAppQuery,
GetAllChannelsForAppQueryVariables,
} from '../../graphql/generated';
import Log from '../../log';
import { getExpoConfig } from '../../project/expoConfig';
import { findProjectRootAsync, getProjectIdAsync } from '../../project/projectUtils';
import formatFields from '../../utils/formatFields';
import { enableJsonOutput, printJsonOnlyOutput } from '../../utils/json';
import { logChannelDetails } from './view';
} from '../../graphql/generated.js';
import Log from '../../log.js';
import { getExpoConfig } from '../../project/expoConfig.js';
import { findProjectRootAsync, getProjectIdAsync } from '../../project/projectUtils.js';
import formatFields from '../../utils/formatFields.js';
import { enableJsonOutput, printJsonOnlyOutput } from '../../utils/json.js';
import { logChannelDetails } from './view.js';
const CHANNEL_LIMIT = 10_000;
@@ -1,21 +1,21 @@
import { Flags } from '@oclif/core';
import chalk from 'chalk';
import EasCommand from '../../commandUtils/EasCommand';
import { GetChannelByNameForAppQuery, UpdateBranch } from '../../graphql/generated';
import { BranchQuery } from '../../graphql/queries/BranchQuery';
import { ChannelQuery } from '../../graphql/queries/ChannelQuery';
import Log from '../../log';
import { getExpoConfig } from '../../project/expoConfig';
import EasCommand from '../../commandUtils/EasCommand.js';
import { GetChannelByNameForAppQuery, UpdateBranch } from '../../graphql/generated.js';
import { BranchQuery } from '../../graphql/queries/BranchQuery.js';
import { ChannelQuery } from '../../graphql/queries/ChannelQuery.js';
import Log from '../../log.js';
import { getExpoConfig } from '../../project/expoConfig.js';
import {
findProjectRootAsync,
getProjectFullNameAsync,
getProjectIdAsync,
} from '../../project/projectUtils';
import { promptAsync, selectAsync } from '../../prompts';
import { enableJsonOutput, printJsonOnlyOutput } from '../../utils/json';
import { updateChannelBranchMappingAsync } from './edit';
import { BranchMapping, getBranchMapping } from './view';
} from '../../project/projectUtils.js';
import { promptAsync, selectAsync } from '../../prompts.js';
import { enableJsonOutput, printJsonOnlyOutput } from '../../utils/json.js';
import { updateChannelBranchMappingAsync } from './edit.js';
import { BranchMapping, getBranchMapping } from './view.js';
async function promptForRolloutPercentAsync({
promptMessage,
@@ -3,20 +3,20 @@ import assert from 'assert';
import chalk from 'chalk';
import Table from 'cli-table3';
import EasCommand from '../../commandUtils/EasCommand';
import { ChannelQuery } from '../../graphql/queries/ChannelQuery';
import Log from '../../log';
import { getExpoConfig } from '../../project/expoConfig';
import { findProjectRootAsync, getProjectIdAsync } from '../../project/projectUtils';
import { promptAsync } from '../../prompts';
import EasCommand from '../../commandUtils/EasCommand.js';
import { ChannelQuery } from '../../graphql/queries/ChannelQuery.js';
import Log from '../../log.js';
import { getExpoConfig } from '../../project/expoConfig.js';
import { findProjectRootAsync, getProjectIdAsync } from '../../project/projectUtils.js';
import { promptAsync } from '../../prompts.js';
import {
FormatUpdateParameter,
UPDATE_COLUMNS,
formatUpdate,
getPlatformsForGroup,
} from '../../update/utils';
import formatFields from '../../utils/formatFields';
import { enableJsonOutput, printJsonOnlyOutput } from '../../utils/json';
} from '../../update/utils.js';
import formatFields from '../../utils/formatFields.js';
import { enableJsonOutput, printJsonOnlyOutput } from '../../utils/json.js';
export type BranchMapping = {
version: number;
+7 -7
View File
@@ -4,13 +4,13 @@ import { EasJsonReader } from '@expo/eas-json';
import { Flags } from '@oclif/core';
import chalk from 'chalk';
import EasCommand from '../commandUtils/EasCommand';
import { toAppPlatform } from '../graphql/types/AppPlatform';
import Log from '../log';
import { appPlatformEmojis } from '../platform';
import { getExpoConfig } from '../project/expoConfig';
import { findProjectRootAsync } from '../project/projectUtils';
import { selectAsync } from '../prompts';
import EasCommand from '../commandUtils/EasCommand.js';
import { toAppPlatform } from '../graphql/types/AppPlatform.js';
import Log from '../log.js';
import { appPlatformEmojis } from '../platform.js';
import { getExpoConfig } from '../project/expoConfig.js';
import { findProjectRootAsync } from '../project/projectUtils.js';
import { selectAsync } from '../prompts.js';
export default class Config extends EasCommand {
static description = 'display project configuration (app.json + eas.json)';
+2 -2
View File
@@ -1,5 +1,5 @@
import EasCommand from '../commandUtils/EasCommand';
import { SelectPlatform } from '../credentials/manager/SelectPlatform';
import EasCommand from '../commandUtils/EasCommand.js';
import { SelectPlatform } from '../credentials/manager/SelectPlatform.js';
export default class Credentials extends EasCommand {
static description = 'manage credentials';
@@ -1,8 +1,8 @@
import EasCommand from '../../commandUtils/EasCommand';
import AppStoreApi from '../../credentials/ios/appstore/AppStoreApi';
import { createContextAsync } from '../../devices/context';
import DeviceManager from '../../devices/manager';
import { ensureLoggedInAsync } from '../../user/actions';
import EasCommand from '../../commandUtils/EasCommand.js';
import AppStoreApi from '../../credentials/ios/appstore/AppStoreApi.js';
import { createContextAsync } from '../../devices/context.js';
import DeviceManager from '../../devices/manager.js';
import { ensureLoggedInAsync } from '../../user/actions.js';
export default class DeviceCreate extends EasCommand {
static description = 'register new Apple Devices to use for internal distribution';
+19 -14
View File
@@ -1,24 +1,29 @@
import { Device, DeviceStatus } from '@expo/apple-utils';
import AppleUtils from '@expo/apple-utils';
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 EasCommand from '../../commandUtils/EasCommand.js';
import { chooseDevicesToDeleteAsync } from '../../credentials/ios/actions/DeviceUtils.js';
import { AppleDeviceMutation } from '../../credentials/ios/api/graphql/mutations/AppleDeviceMutation.js';
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 { getExpoConfig } from '../../project/expoConfig';
import { findProjectRootAsync, getProjectAccountNameAsync } from '../../project/projectUtils';
import { promptAsync, toggleConfirmAsync } from '../../prompts';
} from '../../credentials/ios/api/graphql/queries/AppleDeviceQuery.js';
import { AppleTeamQuery } from '../../credentials/ios/api/graphql/queries/AppleTeamQuery.js';
import {
authenticateAsync,
getRequestContext,
} from '../../credentials/ios/appstore/authenticate.js';
import formatDevice from '../../devices/utils/formatDevice.js';
import { AppleDevice, Maybe } from '../../graphql/generated.js';
import Log from '../../log.js';
import { ora } from '../../ora.js';
import { getExpoConfig } from '../../project/expoConfig.js';
import { findProjectRootAsync, getProjectAccountNameAsync } from '../../project/projectUtils.js';
import { promptAsync, toggleConfirmAsync } from '../../prompts.js';
const { Device, DeviceStatus } = AppleUtils;
export default class DeviceDelete extends EasCommand {
static description = 'remove a registered device from your account';
+9 -9
View File
@@ -2,15 +2,15 @@ import { Flags } from '@oclif/core';
import assert from 'assert';
import chalk from 'chalk';
import EasCommand from '../../commandUtils/EasCommand';
import { AppleDeviceQuery } from '../../credentials/ios/api/graphql/queries/AppleDeviceQuery';
import { AppleTeamQuery } from '../../credentials/ios/api/graphql/queries/AppleTeamQuery';
import formatDevice from '../../devices/utils/formatDevice';
import Log from '../../log';
import { Ora, ora } from '../../ora';
import { getExpoConfig } from '../../project/expoConfig';
import { findProjectRootAsync, getProjectAccountNameAsync } from '../../project/projectUtils';
import { promptAsync } from '../../prompts';
import EasCommand from '../../commandUtils/EasCommand.js';
import { AppleDeviceQuery } from '../../credentials/ios/api/graphql/queries/AppleDeviceQuery.js';
import { AppleTeamQuery } from '../../credentials/ios/api/graphql/queries/AppleTeamQuery.js';
import formatDevice from '../../devices/utils/formatDevice.js';
import Log from '../../log.js';
import { Ora, ora } from '../../ora.js';
import { getExpoConfig } from '../../project/expoConfig.js';
import { findProjectRootAsync, getProjectAccountNameAsync } from '../../project/projectUtils.js';
import { promptAsync } from '../../prompts.js';
export default class BuildList extends EasCommand {
static description = 'list all registered devices for your account';
+7 -7
View File
@@ -1,10 +1,10 @@
import EasCommand from '../../commandUtils/EasCommand';
import { AppleDeviceQuery } from '../../credentials/ios/api/graphql/queries/AppleDeviceQuery';
import formatDevice from '../../devices/utils/formatDevice';
import Log from '../../log';
import { ora } from '../../ora';
import { getExpoConfig } from '../../project/expoConfig';
import { findProjectRootAsync, getProjectAccountNameAsync } from '../../project/projectUtils';
import EasCommand from '../../commandUtils/EasCommand.js';
import { AppleDeviceQuery } from '../../credentials/ios/api/graphql/queries/AppleDeviceQuery.js';
import formatDevice from '../../devices/utils/formatDevice.js';
import Log from '../../log.js';
import { ora } from '../../ora.js';
import { getExpoConfig } from '../../project/expoConfig.js';
import { findProjectRootAsync, getProjectAccountNameAsync } from '../../project/projectUtils.js';
export default class DeviceView extends EasCommand {
static description = 'view a device for your project';
+5 -5
View File
@@ -1,11 +1,11 @@
import { Platform } from '@expo/eas-build-job';
import envinfo from 'envinfo';
import EasCommand from '../commandUtils/EasCommand';
import Log from '../log';
import { findProjectRootAsync } from '../project/projectUtils';
import { resolveWorkflowAsync } from '../project/workflow';
import { easCliVersion } from '../utils/easCli';
import EasCommand from '../commandUtils/EasCommand.js';
import Log from '../log.js';
import { findProjectRootAsync } from '../project/projectUtils.js';
import { resolveWorkflowAsync } from '../project/workflow.js';
import { easCliVersion } from '../utils/easCli.js';
export default class Diagnostics extends EasCommand {
static description = 'display environment info';
@@ -3,15 +3,15 @@ import { Flags } from '@oclif/core';
import chalk from 'chalk';
import path from 'path';
import { ensureProjectConfiguredAsync } from '../../build/configure';
import EasCommand from '../../commandUtils/EasCommand';
import { CredentialsContext } from '../../credentials/context';
import Log, { learnMore } from '../../log';
import { createMetadataContextAsync } from '../../metadata/context';
import { downloadMetadataAsync } from '../../metadata/download';
import { handleMetadataError } from '../../metadata/errors';
import { findProjectRootAsync, getProjectIdAsync } from '../../project/projectUtils';
import { ensureLoggedInAsync } from '../../user/actions';
import { ensureProjectConfiguredAsync } from '../../build/configure.js';
import EasCommand from '../../commandUtils/EasCommand.js';
import { CredentialsContext } from '../../credentials/context.js';
import Log, { learnMore } from '../../log.js';
import { createMetadataContextAsync } from '../../metadata/context.js';
import { downloadMetadataAsync } from '../../metadata/download.js';
import { handleMetadataError } from '../../metadata/errors.js';
import { findProjectRootAsync, getProjectIdAsync } from '../../project/projectUtils.js';
import { ensureLoggedInAsync } from '../../user/actions.js';
export default class MetadataPull extends EasCommand {
static description = 'generate the local store configuration from the app stores';
@@ -1,15 +1,15 @@
import { getConfig } from '@expo/config';
import { Flags } from '@oclif/core';
import { ensureProjectConfiguredAsync } from '../../build/configure';
import EasCommand from '../../commandUtils/EasCommand';
import { CredentialsContext } from '../../credentials/context';
import Log, { learnMore } from '../../log';
import { createMetadataContextAsync } from '../../metadata/context';
import { handleMetadataError } from '../../metadata/errors';
import { uploadMetadataAsync } from '../../metadata/upload';
import { findProjectRootAsync, getProjectIdAsync } from '../../project/projectUtils';
import { ensureLoggedInAsync } from '../../user/actions';
import { ensureProjectConfiguredAsync } from '../../build/configure.js';
import EasCommand from '../../commandUtils/EasCommand.js';
import { CredentialsContext } from '../../credentials/context.js';
import Log, { learnMore } from '../../log.js';
import { createMetadataContextAsync } from '../../metadata/context.js';
import { handleMetadataError } from '../../metadata/errors.js';
import { uploadMetadataAsync } from '../../metadata/upload.js';
import { findProjectRootAsync, getProjectIdAsync } from '../../project/projectUtils.js';
import { ensureLoggedInAsync } from '../../user/actions.js';
export default class MetadataPush extends EasCommand {
static description = 'sync the local store configuration to the app stores';
@@ -1,12 +1,12 @@
import gql from 'graphql-tag';
import { gql } from 'graphql-tag';
import EasCommand from '../../commandUtils/EasCommand';
import { graphqlClient, withErrorHandlingAsync } from '../../graphql/client';
import { AppInfoQuery, AppInfoQueryVariables } from '../../graphql/generated';
import Log from '../../log';
import { getExpoConfig } from '../../project/expoConfig';
import { findProjectRootAsync, getProjectIdAsync } from '../../project/projectUtils';
import formatFields from '../../utils/formatFields';
import EasCommand from '../../commandUtils/EasCommand.js';
import { graphqlClient, withErrorHandlingAsync } from '../../graphql/client.js';
import { AppInfoQuery, AppInfoQueryVariables } from '../../graphql/generated.js';
import Log from '../../log.js';
import { getExpoConfig } from '../../project/expoConfig.js';
import { findProjectRootAsync, getProjectIdAsync } from '../../project/projectUtils.js';
import formatFields from '../../utils/formatFields.js';
async function projectInfoByIdAsync(appId: string): Promise<AppInfoQuery> {
const data = await withErrorHandlingAsync(
@@ -1,9 +1,9 @@
import chalk from 'chalk';
import EasCommand from '../../commandUtils/EasCommand';
import Log from '../../log';
import { getExpoConfig } from '../../project/expoConfig';
import { findProjectRootAsync, setProjectIdAsync } from '../../project/projectUtils';
import EasCommand from '../../commandUtils/EasCommand.js';
import Log from '../../log.js';
import { getExpoConfig } from '../../project/expoConfig.js';
import { findProjectRootAsync, setProjectIdAsync } from '../../project/projectUtils.js';
export default class ProjectInit extends EasCommand {
static description = 'create or link an EAS project';
+10 -10
View File
@@ -1,23 +1,23 @@
import { Flags } from '@oclif/core';
import chalk from 'chalk';
import EasCommand from '../../commandUtils/EasCommand';
import { EnvironmentSecretMutation } from '../../graphql/mutations/EnvironmentSecretMutation';
import EasCommand from '../../commandUtils/EasCommand.js';
import { EnvironmentSecretMutation } from '../../graphql/mutations/EnvironmentSecretMutation.js';
import {
EnvironmentSecretScope,
EnvironmentSecretsQuery,
} from '../../graphql/queries/EnvironmentSecretsQuery';
import Log from '../../log';
import { getExpoConfig } from '../../project/expoConfig';
} from '../../graphql/queries/EnvironmentSecretsQuery.js';
import Log from '../../log.js';
import { getExpoConfig } from '../../project/expoConfig.js';
import {
findProjectRootAsync,
getProjectAccountNameAsync,
getProjectIdAsync,
} from '../../project/projectUtils';
import { promptAsync } from '../../prompts';
import { findAccountByName } from '../../user/Account';
import { getActorDisplayName } from '../../user/User';
import { ensureLoggedInAsync } from '../../user/actions';
} from '../../project/projectUtils.js';
import { promptAsync } from '../../prompts.js';
import { findAccountByName } from '../../user/Account.js';
import { getActorDisplayName } from '../../user/User.js';
import { ensureLoggedInAsync } from '../../user/actions.js';
export default class EnvironmentSecretCreate extends EasCommand {
static description = 'create an environment secret on the current project or owner account';
@@ -1,20 +1,20 @@
import { Flags } from '@oclif/core';
import EasCommand from '../../commandUtils/EasCommand';
import { EnvironmentSecretMutation } from '../../graphql/mutations/EnvironmentSecretMutation';
import EasCommand from '../../commandUtils/EasCommand.js';
import { EnvironmentSecretMutation } from '../../graphql/mutations/EnvironmentSecretMutation.js';
import {
EnvironmentSecretScope,
EnvironmentSecretWithScope,
EnvironmentSecretsQuery,
} from '../../graphql/queries/EnvironmentSecretsQuery';
import Log from '../../log';
import { getExpoConfig } from '../../project/expoConfig';
} from '../../graphql/queries/EnvironmentSecretsQuery.js';
import Log from '../../log.js';
import { getExpoConfig } from '../../project/expoConfig.js';
import {
findProjectRootAsync,
getProjectAccountNameAsync,
getProjectIdAsync,
} from '../../project/projectUtils';
import { promptAsync, toggleConfirmAsync } from '../../prompts';
} from '../../project/projectUtils.js';
import { promptAsync, toggleConfirmAsync } from '../../prompts.js';
export default class EnvironmentSecretDelete extends EasCommand {
static description = 'delete an environment secret by ID';
+5 -5
View File
@@ -2,15 +2,15 @@ import chalk from 'chalk';
import Table from 'cli-table3';
import dateFormat from 'dateformat';
import EasCommand from '../../commandUtils/EasCommand';
import { EnvironmentSecretsQuery } from '../../graphql/queries/EnvironmentSecretsQuery';
import Log from '../../log';
import { getExpoConfig } from '../../project/expoConfig';
import EasCommand from '../../commandUtils/EasCommand.js';
import { EnvironmentSecretsQuery } from '../../graphql/queries/EnvironmentSecretsQuery.js';
import Log from '../../log.js';
import { getExpoConfig } from '../../project/expoConfig.js';
import {
findProjectRootAsync,
getProjectAccountNameAsync,
getProjectIdAsync,
} from '../../project/projectUtils';
} from '../../project/projectUtils.js';
export default class EnvironmentSecretList extends EasCommand {
static description = 'list environment secrets available for your current app';
+11 -11
View File
@@ -2,23 +2,23 @@ import { EasJsonReader } from '@expo/eas-json';
import { Errors, Flags } from '@oclif/core';
import chalk from 'chalk';
import EasCommand from '../commandUtils/EasCommand';
import { SubmissionFragment } from '../graphql/generated';
import { toAppPlatform } from '../graphql/types/AppPlatform';
import Log from '../log';
import EasCommand from '../commandUtils/EasCommand.js';
import { SubmissionFragment } from '../graphql/generated.js';
import { toAppPlatform } from '../graphql/types/AppPlatform.js';
import Log from '../log.js';
import {
RequestedPlatform,
appPlatformDisplayNames,
appPlatformEmojis,
selectRequestedPlatformAsync,
toPlatforms,
} from '../platform';
import { getExpoConfig } from '../project/expoConfig';
import { findProjectRootAsync, getProjectIdAsync } from '../project/projectUtils';
import { SubmitArchiveFlags, createSubmissionContextAsync } from '../submit/context';
import { submitAsync, waitToCompleteAsync } from '../submit/submit';
import { printSubmissionDetailsUrls } from '../submit/utils/urls';
import { getProfilesAsync } from '../utils/profiles';
} from '../platform.js';
import { getExpoConfig } from '../project/expoConfig.js';
import { findProjectRootAsync, getProjectIdAsync } from '../project/projectUtils.js';
import { SubmitArchiveFlags, createSubmissionContextAsync } from '../submit/context.js';
import { submitAsync, waitToCompleteAsync } from '../submit/submit.js';
import { printSubmissionDetailsUrls } from '../submit/utils/urls.js';
import { getProfilesAsync } from '../utils/profiles.js';
interface RawCommandFlags {
platform?: string;
@@ -4,21 +4,21 @@ import { Flags } from '@oclif/core';
import assert from 'assert';
import chalk from 'chalk';
import { getEASUpdateURL } from '../../api';
import EasCommand from '../../commandUtils/EasCommand';
import { AppPlatform } from '../../graphql/generated';
import Log, { learnMore } from '../../log';
import { RequestedPlatform, appPlatformDisplayNames } from '../../platform';
import { getExpoConfig } from '../../project/expoConfig';
import { getEASUpdateURL } from '../../api.js';
import EasCommand from '../../commandUtils/EasCommand.js';
import { AppPlatform } from '../../graphql/generated.js';
import Log, { learnMore } from '../../log.js';
import { RequestedPlatform, appPlatformDisplayNames } from '../../platform.js';
import { getExpoConfig } from '../../project/expoConfig.js';
import {
findProjectRootAsync,
getProjectIdAsync,
installExpoUpdatesAsync,
isExpoUpdatesInstalledOrAvailable,
} from '../../project/projectUtils';
import { resolveWorkflowAsync } from '../../project/workflow';
import { syncUpdatesConfigurationAsync as syncAndroidUpdatesConfigurationAsync } from '../../update/android/UpdatesModule';
import { syncUpdatesConfigurationAsync as syncIosUpdatesConfigurationAsync } from '../../update/ios/UpdatesModule';
} from '../../project/projectUtils.js';
import { resolveWorkflowAsync } from '../../project/workflow.js';
import { syncUpdatesConfigurationAsync as syncAndroidUpdatesConfigurationAsync } from '../../update/android/UpdatesModule.js';
import { syncUpdatesConfigurationAsync as syncIosUpdatesConfigurationAsync } from '../../update/ios/UpdatesModule.js';
const DEFAULT_MANAGED_RUNTIME_VERSION = { policy: 'sdkVersion' } as const;
const DEFAULT_BARE_RUNTIME_VERSION = '1.0.0' as const;
@@ -1,16 +1,16 @@
import { Flags } from '@oclif/core';
import chalk from 'chalk';
import gql from 'graphql-tag';
import { gql } from 'graphql-tag';
import EasCommand from '../../commandUtils/EasCommand';
import { graphqlClient, withErrorHandlingAsync } from '../../graphql/client';
import EasCommand from '../../commandUtils/EasCommand.js';
import { graphqlClient, withErrorHandlingAsync } from '../../graphql/client.js';
import {
DeleteUpdateGroupMutation,
UpdateMutationDeleteUpdateGroupArgs,
} from '../../graphql/generated';
import Log from '../../log';
import { confirmAsync } from '../../prompts';
import { enableJsonOutput, printJsonOnlyOutput } from '../../utils/json';
} from '../../graphql/generated.js';
import Log from '../../log.js';
import { confirmAsync } from '../../prompts.js';
import { enableJsonOutput, printJsonOnlyOutput } from '../../utils/json.js';
async function deleteUpdateGroupAsync({
group,
+30 -28
View File
@@ -1,18 +1,17 @@
import { ExpoConfig } from '@expo/config';
import { Updates } from '@expo/config-plugins';
import ConfigPlugins from '@expo/config-plugins';
import { Platform, Workflow } from '@expo/eas-build-job';
import { Errors, Flags } from '@oclif/core';
import assert from 'assert';
import chalk from 'chalk';
import dateFormat from 'dateformat';
import gql from 'graphql-tag';
import nullthrows from 'nullthrows';
import { gql } from 'graphql-tag';
import { getEASUpdateURL } from '../../api';
import { getUpdateGroupUrl } from '../../build/utils/url';
import EasCommand from '../../commandUtils/EasCommand';
import fetch from '../../fetch';
import { graphqlClient, withErrorHandlingAsync } from '../../graphql/client';
import { getEASUpdateURL } from '../../api.js';
import { getUpdateGroupUrl } from '../../build/utils/url.js';
import EasCommand from '../../commandUtils/EasCommand.js';
import fetch from '../../fetch.js';
import { graphqlClient, withErrorHandlingAsync } from '../../graphql/client.js';
import {
GetUpdateGroupAsyncQuery,
PublishUpdateGroupInput,
@@ -23,43 +22,46 @@ import {
UpdatePublishMutation,
User,
ViewBranchUpdatesQuery,
} from '../../graphql/generated';
import { PublishMutation } from '../../graphql/mutations/PublishMutation';
import { UpdateQuery } from '../../graphql/queries/UpdateQuery';
import Log, { link } from '../../log';
import { ora } from '../../ora';
import { getExpoConfig } from '../../project/expoConfig';
} from '../../graphql/generated.js';
import { PublishMutation } from '../../graphql/mutations/PublishMutation.js';
import { UpdateQuery } from '../../graphql/queries/UpdateQuery.js';
import Log, { link } from '../../log.js';
import { ora } from '../../ora.js';
import { getExpoConfig } from '../../project/expoConfig.js';
import {
findProjectRootAsync,
getProjectAccountName,
getProjectIdAsync,
installExpoUpdatesAsync,
isExpoUpdatesInstalledOrAvailable,
} from '../../project/projectUtils';
} from '../../project/projectUtils.js';
import {
PublishPlatform,
buildBundlesAsync,
buildUnsortedUpdateInfoGroupAsync,
collectAssetsAsync,
uploadAssetsAsync,
} from '../../project/publish';
import { resolveWorkflowAsync } from '../../project/workflow';
import { confirmAsync, promptAsync, selectAsync } from '../../prompts';
import { formatUpdate } from '../../update/utils';
import { ensureLoggedInAsync } from '../../user/actions';
} from '../../project/publish.js';
import { resolveWorkflowAsync } from '../../project/workflow.js';
import { confirmAsync, promptAsync, selectAsync } from '../../prompts.js';
import { formatUpdate } from '../../update/utils.js';
import { ensureLoggedInAsync } from '../../user/actions.js';
import {
checkManifestBodyAgainstUpdateInfoGroup,
getCodeSigningInfoAsync,
getManifestBodyAsync,
signManifestBody,
} from '../../utils/code-signing';
import uniqBy from '../../utils/expodash/uniqBy';
import formatFields from '../../utils/formatFields';
import { enableJsonOutput, printJsonOnlyOutput } from '../../utils/json';
import { getVcsClient } from '../../vcs';
import { createUpdateBranchOnAppAsync } from '../branch/create';
import { listBranchesAsync } from '../branch/list';
import { createUpdateChannelOnAppAsync } from '../channel/create';
} from '../../utils/code-signing.js';
import uniqBy from '../../utils/expodash/uniqBy.js';
import formatFields from '../../utils/formatFields.js';
import { enableJsonOutput, printJsonOnlyOutput } from '../../utils/json.js';
import { nullthrows } from '../../utils/nullthrows.js';
import { getVcsClient } from '../../vcs/index.js';
import { createUpdateBranchOnAppAsync } from '../branch/create.js';
import { listBranchesAsync } from '../branch/list.js';
import { createUpdateChannelOnAppAsync } from '../channel/create.js';
const { Updates } = ConfigPlugins;
export const defaultPublishPlatforms: PublishPlatform[] = ['android', 'ios'];
export type PublishPlatformFlag = PublishPlatform | 'all';
+11 -11
View File
@@ -3,17 +3,17 @@ import assert from 'assert';
import chalk from 'chalk';
import CliTable from 'cli-table3';
import EasCommand from '../../commandUtils/EasCommand';
import { ViewAllUpdatesQuery } from '../../graphql/generated';
import { UpdateQuery } from '../../graphql/queries/UpdateQuery';
import Log from '../../log';
import { getExpoConfig } from '../../project/expoConfig';
import { findProjectRootAsync, getProjectIdAsync } from '../../project/projectUtils';
import { promptAsync } from '../../prompts';
import { FormatUpdateParameter, UPDATE_COLUMNS, formatUpdate } from '../../update/utils';
import groupBy from '../../utils/expodash/groupBy';
import { enableJsonOutput, printJsonOnlyOutput } from '../../utils/json';
import { getVcsClient } from '../../vcs';
import EasCommand from '../../commandUtils/EasCommand.js';
import { ViewAllUpdatesQuery } from '../../graphql/generated.js';
import { UpdateQuery } from '../../graphql/queries/UpdateQuery.js';
import Log from '../../log.js';
import { getExpoConfig } from '../../project/expoConfig.js';
import { findProjectRootAsync, getProjectIdAsync } from '../../project/projectUtils.js';
import { promptAsync } from '../../prompts.js';
import { FormatUpdateParameter, UPDATE_COLUMNS, formatUpdate } from '../../update/utils.js';
import groupBy from '../../utils/expodash/groupBy.js';
import { enableJsonOutput, printJsonOnlyOutput } from '../../utils/json.js';
import { getVcsClient } from '../../vcs/index.js';
type UpdateGroupDescription = FormatUpdateParameter & {
branch: string;
+7 -7
View File
@@ -1,13 +1,13 @@
import { Flags } from '@oclif/core';
import Table from 'cli-table3';
import gql from 'graphql-tag';
import { gql } from 'graphql-tag';
import EasCommand from '../../commandUtils/EasCommand';
import { graphqlClient, withErrorHandlingAsync } from '../../graphql/client';
import { UpdatesByGroupQuery, UpdatesByGroupQueryVariables } from '../../graphql/generated';
import Log from '../../log';
import { UPDATE_COLUMNS, formatUpdate, getPlatformsForGroup } from '../../update/utils';
import { enableJsonOutput, printJsonOnlyOutput } from '../../utils/json';
import EasCommand from '../../commandUtils/EasCommand.js';
import { graphqlClient, withErrorHandlingAsync } from '../../graphql/client.js';
import { UpdatesByGroupQuery, UpdatesByGroupQueryVariables } from '../../graphql/generated.js';
import Log from '../../log.js';
import { UPDATE_COLUMNS, formatUpdate, getPlatformsForGroup } from '../../update/utils.js';
import { enableJsonOutput, printJsonOnlyOutput } from '../../utils/json.js';
export async function viewUpdateAsync({
groupId,
@@ -1,12 +1,12 @@
import { Flags } from '@oclif/core';
import EasCommand from '../../commandUtils/EasCommand';
import { WebhookType } from '../../graphql/generated';
import { WebhookMutation } from '../../graphql/mutations/WebhookMutation';
import { ora } from '../../ora';
import { getExpoConfig } from '../../project/expoConfig';
import { findProjectRootAsync, getProjectIdAsync } from '../../project/projectUtils';
import { prepareInputParamsAsync } from '../../webhooks/input';
import EasCommand from '../../commandUtils/EasCommand.js';
import { WebhookType } from '../../graphql/generated.js';
import { WebhookMutation } from '../../graphql/mutations/WebhookMutation.js';
import { ora } from '../../ora.js';
import { getExpoConfig } from '../../project/expoConfig.js';
import { findProjectRootAsync, getProjectIdAsync } from '../../project/projectUtils.js';
import { prepareInputParamsAsync } from '../../webhooks/input.js';
export default class WebhookCreate extends EasCommand {
static description = 'create a webhook';
+11 -11
View File
@@ -1,17 +1,17 @@
import assert from 'assert';
import chalk from 'chalk';
import nullthrows from 'nullthrows';
import EasCommand from '../../commandUtils/EasCommand';
import { WebhookFragment } from '../../graphql/generated';
import { WebhookMutation } from '../../graphql/mutations/WebhookMutation';
import { WebhookQuery } from '../../graphql/queries/WebhookQuery';
import Log from '../../log';
import { ora } from '../../ora';
import { getExpoConfig } from '../../project/expoConfig';
import { findProjectRootAsync, getProjectIdAsync } from '../../project/projectUtils';
import { promptAsync, toggleConfirmAsync } from '../../prompts';
import { formatWebhook } from '../../webhooks/formatWebhook';
import EasCommand from '../../commandUtils/EasCommand.js';
import { WebhookFragment } from '../../graphql/generated.js';
import { WebhookMutation } from '../../graphql/mutations/WebhookMutation.js';
import { WebhookQuery } from '../../graphql/queries/WebhookQuery.js';
import Log from '../../log.js';
import { ora } from '../../ora.js';
import { getExpoConfig } from '../../project/expoConfig.js';
import { findProjectRootAsync, getProjectIdAsync } from '../../project/projectUtils.js';
import { promptAsync, toggleConfirmAsync } from '../../prompts.js';
import { nullthrows } from '../../utils/nullthrows.js';
import { formatWebhook } from '../../webhooks/formatWebhook.js';
export default class WebhookDelete extends EasCommand {
static description = 'delete a webhook';
@@ -1,18 +1,18 @@
import { Flags } from '@oclif/core';
import chalk from 'chalk';
import EasCommand from '../../commandUtils/EasCommand';
import { WebhookType } from '../../graphql/generated';
import { WebhookQuery } from '../../graphql/queries/WebhookQuery';
import Log from '../../log';
import { ora } from '../../ora';
import { getExpoConfig } from '../../project/expoConfig';
import EasCommand from '../../commandUtils/EasCommand.js';
import { WebhookType } from '../../graphql/generated.js';
import { WebhookQuery } from '../../graphql/queries/WebhookQuery.js';
import Log from '../../log.js';
import { ora } from '../../ora.js';
import { getExpoConfig } from '../../project/expoConfig.js';
import {
findProjectRootAsync,
getProjectFullNameAsync,
getProjectIdAsync,
} from '../../project/projectUtils';
import { formatWebhook } from '../../webhooks/formatWebhook';
} from '../../project/projectUtils.js';
import { formatWebhook } from '../../webhooks/formatWebhook.js';
export default class WebhookList extends EasCommand {
static description = 'list webhooks';
@@ -1,12 +1,12 @@
import { Flags } from '@oclif/core';
import EasCommand from '../../commandUtils/EasCommand';
import { WebhookType } from '../../graphql/generated';
import { WebhookMutation } from '../../graphql/mutations/WebhookMutation';
import { WebhookQuery } from '../../graphql/queries/WebhookQuery';
import { ora } from '../../ora';
import pick from '../../utils/expodash/pick';
import { prepareInputParamsAsync } from '../../webhooks/input';
import EasCommand from '../../commandUtils/EasCommand.js';
import { WebhookType } from '../../graphql/generated.js';
import { WebhookMutation } from '../../graphql/mutations/WebhookMutation.js';
import { WebhookQuery } from '../../graphql/queries/WebhookQuery.js';
import { ora } from '../../ora.js';
import pick from '../../utils/expodash/pick.js';
import { prepareInputParamsAsync } from '../../webhooks/input.js';
export default class WebhookUpdate extends EasCommand {
static description = 'update a webhook';
@@ -1,8 +1,8 @@
import EasCommand from '../../commandUtils/EasCommand';
import { WebhookQuery } from '../../graphql/queries/WebhookQuery';
import Log from '../../log';
import { ora } from '../../ora';
import { formatWebhook } from '../../webhooks/formatWebhook';
import EasCommand from '../../commandUtils/EasCommand.js';
import { WebhookQuery } from '../../graphql/queries/WebhookQuery.js';
import Log from '../../log.js';
import { ora } from '../../ora.js';
import { formatWebhook } from '../../webhooks/formatWebhook.js';
export default class WebhookView extends EasCommand {
static description = 'view a webhook';
@@ -7,15 +7,15 @@ import {
AppFragment,
CommonAndroidAppCredentialsFragment,
GoogleServiceAccountKeyFragment,
} from '../../graphql/generated';
import * as AndroidGraphqlClient from '../android/api/GraphqlClient';
import { Keystore } from '../android/credentials';
} from '../../graphql/generated.js';
import * as AndroidGraphqlClient from '../android/api/GraphqlClient.js';
import { Keystore } from '../android/credentials.js';
import {
testKeystore2Base64,
testKeystoreBase64,
testPKCS12KeystoreBase64,
testPKCS12KeystoreEmptyPasswordBase64,
} from './fixtures-base64-data';
} from './fixtures-base64-data.js';
const now = new Date();
Loaded 100 of 484 files, more files were not shown because too many files have changed in this diff. Show more