eas-cli 16.19.1 → 16.19.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,4 @@
1
1
  import { BuildFragment } from '../../graphql/generated';
2
+ import { FormatFieldsItem } from '../../utils/formatFields';
3
+ export declare function formatGraphQLBuildArtifacts(build: BuildFragment): FormatFieldsItem[];
2
4
  export declare function formatGraphQLBuild(build: BuildFragment): string;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.formatGraphQLBuild = void 0;
3
+ exports.formatGraphQLBuild = exports.formatGraphQLBuildArtifacts = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const chalk_1 = tslib_1.__importDefault(require("chalk"));
6
6
  const url_1 = require("./url");
@@ -8,6 +8,38 @@ const generated_1 = require("../../graphql/generated");
8
8
  const log_1 = require("../../log");
9
9
  const platform_1 = require("../../platform");
10
10
  const formatFields_1 = tslib_1.__importDefault(require("../../utils/formatFields"));
11
+ function formatGraphQLBuildArtifacts(build) {
12
+ const fields = [
13
+ {
14
+ label: 'Application Archive URL',
15
+ get value() {
16
+ switch (build.status) {
17
+ case generated_1.BuildStatus.InProgress:
18
+ return '<in progress>';
19
+ default: {
20
+ const url = build.artifacts?.buildUrl;
21
+ return url ? (0, log_1.link)(url) : 'null';
22
+ }
23
+ }
24
+ },
25
+ },
26
+ {
27
+ label: 'Build Artifacts URL',
28
+ get value() {
29
+ switch (build.status) {
30
+ case generated_1.BuildStatus.InProgress:
31
+ return '<in progress>';
32
+ default: {
33
+ const url = build.artifacts?.buildArtifactsUrl;
34
+ return url ? (0, log_1.link)(url) : 'null';
35
+ }
36
+ }
37
+ },
38
+ },
39
+ ];
40
+ return fields.filter(({ value }) => value !== undefined && value !== null);
41
+ }
42
+ exports.formatGraphQLBuildArtifacts = formatGraphQLBuildArtifacts;
11
43
  function formatGraphQLBuild(build) {
12
44
  const actor = getActorName(build);
13
45
  const fields = [
@@ -82,27 +114,7 @@ function formatGraphQLBuild(build) {
82
114
  label: 'Logs',
83
115
  value: (0, log_1.link)((0, url_1.getBuildLogsUrl)(build)),
84
116
  },
85
- {
86
- label: 'Artifact',
87
- get value() {
88
- switch (build.status) {
89
- case generated_1.BuildStatus.New:
90
- case generated_1.BuildStatus.InQueue:
91
- case generated_1.BuildStatus.InProgress:
92
- return '<in progress>';
93
- case generated_1.BuildStatus.PendingCancel:
94
- case generated_1.BuildStatus.Canceled:
95
- case generated_1.BuildStatus.Errored:
96
- return null;
97
- case generated_1.BuildStatus.Finished: {
98
- const url = build.artifacts?.buildUrl;
99
- return url ? (0, log_1.link)(url) : chalk_1.default.red('not found');
100
- }
101
- default:
102
- return null;
103
- }
104
- },
105
- },
117
+ ...formatGraphQLBuildArtifacts(build),
106
118
  {
107
119
  label: 'Fingerprint',
108
120
  get value() {
@@ -1,15 +1,32 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
+ const chalk_1 = tslib_1.__importDefault(require("chalk"));
5
+ const formatBuild_1 = require("../../build/utils/formatBuild");
4
6
  const url_1 = require("../../build/utils/url");
5
7
  const EasCommand_1 = tslib_1.__importDefault(require("../../commandUtils/EasCommand"));
6
8
  const flags_1 = require("../../commandUtils/flags");
7
9
  const stateMachine_1 = require("../../commandUtils/workflow/stateMachine");
8
10
  const utils_1 = require("../../commandUtils/workflow/utils");
11
+ const generated_1 = require("../../graphql/generated");
9
12
  const WorkflowRunQuery_1 = require("../../graphql/queries/WorkflowRunQuery");
10
13
  const log_1 = tslib_1.__importStar(require("../../log"));
11
14
  const formatFields_1 = tslib_1.__importDefault(require("../../utils/formatFields"));
12
15
  const json_1 = require("../../utils/json");
16
+ const processedOutputs = job => {
17
+ const result = [];
18
+ const keys = job.outputs ? Object.keys(job.outputs) : [];
19
+ keys.forEach(key => {
20
+ result.push({
21
+ label: ` ${key}`,
22
+ get value() {
23
+ const value = job.outputs[key];
24
+ return typeof value === 'string' ? value : JSON.stringify(value, null, 2);
25
+ },
26
+ });
27
+ });
28
+ return result;
29
+ };
13
30
  class WorkflowView extends EasCommand_1.default {
14
31
  static description = 'view details for a workflow run, including jobs. If no run ID is provided, you will be prompted to select from recent workflow runs for the current project.';
15
32
  static flags = {
@@ -52,9 +69,18 @@ class WorkflowView extends EasCommand_1.default {
52
69
  const { triggerType, trigger } = (0, utils_1.computeTriggerInfoForWorkflowRun)(result);
53
70
  result.triggerType = triggerType;
54
71
  result.trigger = trigger;
55
- result.jobs.forEach(job => {
56
- delete job.turtleJobRun;
72
+ const processedJobs = result.jobs.map(job => {
73
+ const processedJob = job;
74
+ if (job.type === generated_1.WorkflowJobType.Build) {
75
+ processedJob.artifacts = job.turtleBuild?.artifacts ?? undefined;
76
+ }
77
+ else {
78
+ processedJob.artifacts = job.turtleJobRun?.artifacts;
79
+ }
80
+ delete processedJob.turtleJobRun;
81
+ return processedJob;
57
82
  });
83
+ result.jobs = processedJobs;
58
84
  result.logURL = (0, url_1.getWorkflowRunUrl)(result.workflow.app.ownerAccount.name, result.workflow.app.name, result.id);
59
85
  if (flags.json) {
60
86
  (0, json_1.printJsonOnlyOutput)(result);
@@ -67,7 +93,7 @@ class WorkflowView extends EasCommand_1.default {
67
93
  { label: 'Trigger', value: result.trigger ?? 'null' },
68
94
  {
69
95
  label: 'Git Commit Message',
70
- value: result.gitCommitMessage?.split('\n')[0] ?? null ?? 'null',
96
+ value: result.gitCommitMessage?.split('\n')[0] ?? 'null',
71
97
  },
72
98
  { label: 'Status', value: result.status },
73
99
  { label: 'Errors', value: result.errors.map(error => error.title).join('\n') },
@@ -76,7 +102,7 @@ class WorkflowView extends EasCommand_1.default {
76
102
  { label: 'Log URL', value: (0, log_1.link)(result.logURL) },
77
103
  ]));
78
104
  log_1.default.addNewLineIfNone();
79
- result.jobs.forEach(job => {
105
+ result.jobs.forEach((job) => {
80
106
  log_1.default.log((0, formatFields_1.default)([
81
107
  { label: 'Job ID', value: job.id },
82
108
  { label: ' Key', value: job.key },
@@ -85,9 +111,52 @@ class WorkflowView extends EasCommand_1.default {
85
111
  { label: ' Type', value: job.type },
86
112
  { label: ' Created At', value: job.createdAt },
87
113
  { label: ' Updated At', value: job.updatedAt },
88
- { label: ' Outputs', value: JSON.stringify(job.outputs, null, 2) },
89
- { label: ' Errors', value: job.errors.map(error => error.title).join('\n') },
90
114
  ]));
115
+ if (job.errors.length > 0) {
116
+ log_1.default.gray(chalk_1.default.dim(' Errors:'));
117
+ job.errors.forEach(error => {
118
+ log_1.default.log((0, formatFields_1.default)([{ label: ` ${error.title}`, value: `${error.message}` }]));
119
+ });
120
+ }
121
+ if (job.outputs) {
122
+ const outputs = processedOutputs(job);
123
+ if (outputs.length > 0) {
124
+ log_1.default.gray(chalk_1.default.dim(' Outputs:'));
125
+ log_1.default.log((0, formatFields_1.default)(outputs));
126
+ }
127
+ }
128
+ if (job.type === generated_1.WorkflowJobType.Build) {
129
+ if (job.turtleBuild?.artifacts) {
130
+ log_1.default.gray(chalk_1.default.dim(' Artifacts:'));
131
+ log_1.default.log((0, formatFields_1.default)((0, formatBuild_1.formatGraphQLBuildArtifacts)(job.turtleBuild).map(item => {
132
+ item.label = ` ${item.label}`;
133
+ return item;
134
+ })));
135
+ }
136
+ }
137
+ else {
138
+ const jobArtifacts = job.artifacts;
139
+ if (jobArtifacts?.length) {
140
+ log_1.default.gray(chalk_1.default.dim(' Artifacts:'));
141
+ jobArtifacts.forEach(artifact => {
142
+ log_1.default.log((0, formatFields_1.default)([
143
+ { label: ' ID', value: artifact.id },
144
+ { label: ' Name', value: artifact.name },
145
+ { label: ' Content Type', value: artifact?.contentType ?? 'null' },
146
+ {
147
+ label: ' File Size Bytes',
148
+ value: artifact?.fileSizeBytes ? `${artifact.fileSizeBytes}` : 'null',
149
+ },
150
+ { label: ' Filename', value: artifact.filename },
151
+ {
152
+ label: ' Download URL',
153
+ value: artifact?.downloadUrl ? (0, log_1.link)(artifact.downloadUrl) : 'null',
154
+ },
155
+ ]));
156
+ log_1.default.addNewLineIfNone();
157
+ });
158
+ }
159
+ }
91
160
  log_1.default.addNewLineIfNone();
92
161
  });
93
162
  }
@@ -7480,6 +7480,7 @@ export declare enum WorkflowJobType {
7480
7480
  Doc = "DOC",
7481
7481
  Fingerprint = "FINGERPRINT",
7482
7482
  GetBuild = "GET_BUILD",
7483
+ GithubComment = "GITHUB_COMMENT",
7483
7484
  MaestroCloud = "MAESTRO_CLOUD",
7484
7485
  MaestroTest = "MAESTRO_TEST",
7485
7486
  Repack = "REPACK",
@@ -14620,12 +14621,100 @@ export type WorkflowJobByIdQuery = {
14620
14621
  __typename?: 'JobRun';
14621
14622
  id: string;
14622
14623
  logFileUrls: Array<string>;
14624
+ artifacts: Array<{
14625
+ __typename?: 'WorkflowArtifact';
14626
+ id: string;
14627
+ name: string;
14628
+ contentType?: string | null;
14629
+ fileSizeBytes?: number | null;
14630
+ filename: string;
14631
+ downloadUrl?: string | null;
14632
+ }>;
14623
14633
  errors: Array<{
14624
14634
  __typename?: 'JobRunError';
14625
14635
  errorCode: string;
14626
14636
  message: string;
14627
14637
  }>;
14628
14638
  } | null;
14639
+ turtleBuild?: {
14640
+ __typename?: 'Build';
14641
+ id: string;
14642
+ status: BuildStatus;
14643
+ platform: AppPlatform;
14644
+ channel?: string | null;
14645
+ distribution?: DistributionType | null;
14646
+ iosEnterpriseProvisioning?: BuildIosEnterpriseProvisioning | null;
14647
+ buildProfile?: string | null;
14648
+ sdkVersion?: string | null;
14649
+ appVersion?: string | null;
14650
+ appBuildVersion?: string | null;
14651
+ runtimeVersion?: string | null;
14652
+ gitCommitHash?: string | null;
14653
+ gitCommitMessage?: string | null;
14654
+ initialQueuePosition?: number | null;
14655
+ queuePosition?: number | null;
14656
+ estimatedWaitTimeLeftSeconds?: number | null;
14657
+ priority: BuildPriority;
14658
+ createdAt: any;
14659
+ updatedAt: any;
14660
+ message?: string | null;
14661
+ completedAt?: any | null;
14662
+ expirationDate?: any | null;
14663
+ isForIosSimulator: boolean;
14664
+ error?: {
14665
+ __typename?: 'BuildError';
14666
+ errorCode: string;
14667
+ message: string;
14668
+ docsUrl?: string | null;
14669
+ } | null;
14670
+ artifacts?: {
14671
+ __typename?: 'BuildArtifacts';
14672
+ buildUrl?: string | null;
14673
+ xcodeBuildLogsUrl?: string | null;
14674
+ applicationArchiveUrl?: string | null;
14675
+ buildArtifactsUrl?: string | null;
14676
+ } | null;
14677
+ fingerprint?: {
14678
+ __typename?: 'Fingerprint';
14679
+ id: string;
14680
+ hash: string;
14681
+ } | null;
14682
+ initiatingActor?: {
14683
+ __typename: 'Robot';
14684
+ id: string;
14685
+ displayName: string;
14686
+ } | {
14687
+ __typename: 'SSOUser';
14688
+ id: string;
14689
+ displayName: string;
14690
+ } | {
14691
+ __typename: 'User';
14692
+ id: string;
14693
+ displayName: string;
14694
+ } | null;
14695
+ project: {
14696
+ __typename: 'App';
14697
+ id: string;
14698
+ name: string;
14699
+ slug: string;
14700
+ ownerAccount: {
14701
+ __typename?: 'Account';
14702
+ id: string;
14703
+ name: string;
14704
+ };
14705
+ } | {
14706
+ __typename: 'Snack';
14707
+ id: string;
14708
+ name: string;
14709
+ slug: string;
14710
+ };
14711
+ metrics?: {
14712
+ __typename?: 'BuildMetrics';
14713
+ buildWaitTime?: number | null;
14714
+ buildQueueTime?: number | null;
14715
+ buildDuration?: number | null;
14716
+ } | null;
14717
+ } | null;
14629
14718
  errors: Array<{
14630
14719
  __typename?: 'WorkflowJobError';
14631
14720
  title: string;
@@ -14701,12 +14790,100 @@ export type WorkflowRunByIdWithJobsQuery = {
14701
14790
  __typename?: 'JobRun';
14702
14791
  id: string;
14703
14792
  logFileUrls: Array<string>;
14793
+ artifacts: Array<{
14794
+ __typename?: 'WorkflowArtifact';
14795
+ id: string;
14796
+ name: string;
14797
+ contentType?: string | null;
14798
+ fileSizeBytes?: number | null;
14799
+ filename: string;
14800
+ downloadUrl?: string | null;
14801
+ }>;
14704
14802
  errors: Array<{
14705
14803
  __typename?: 'JobRunError';
14706
14804
  errorCode: string;
14707
14805
  message: string;
14708
14806
  }>;
14709
14807
  } | null;
14808
+ turtleBuild?: {
14809
+ __typename?: 'Build';
14810
+ id: string;
14811
+ status: BuildStatus;
14812
+ platform: AppPlatform;
14813
+ channel?: string | null;
14814
+ distribution?: DistributionType | null;
14815
+ iosEnterpriseProvisioning?: BuildIosEnterpriseProvisioning | null;
14816
+ buildProfile?: string | null;
14817
+ sdkVersion?: string | null;
14818
+ appVersion?: string | null;
14819
+ appBuildVersion?: string | null;
14820
+ runtimeVersion?: string | null;
14821
+ gitCommitHash?: string | null;
14822
+ gitCommitMessage?: string | null;
14823
+ initialQueuePosition?: number | null;
14824
+ queuePosition?: number | null;
14825
+ estimatedWaitTimeLeftSeconds?: number | null;
14826
+ priority: BuildPriority;
14827
+ createdAt: any;
14828
+ updatedAt: any;
14829
+ message?: string | null;
14830
+ completedAt?: any | null;
14831
+ expirationDate?: any | null;
14832
+ isForIosSimulator: boolean;
14833
+ error?: {
14834
+ __typename?: 'BuildError';
14835
+ errorCode: string;
14836
+ message: string;
14837
+ docsUrl?: string | null;
14838
+ } | null;
14839
+ artifacts?: {
14840
+ __typename?: 'BuildArtifacts';
14841
+ buildUrl?: string | null;
14842
+ xcodeBuildLogsUrl?: string | null;
14843
+ applicationArchiveUrl?: string | null;
14844
+ buildArtifactsUrl?: string | null;
14845
+ } | null;
14846
+ fingerprint?: {
14847
+ __typename?: 'Fingerprint';
14848
+ id: string;
14849
+ hash: string;
14850
+ } | null;
14851
+ initiatingActor?: {
14852
+ __typename: 'Robot';
14853
+ id: string;
14854
+ displayName: string;
14855
+ } | {
14856
+ __typename: 'SSOUser';
14857
+ id: string;
14858
+ displayName: string;
14859
+ } | {
14860
+ __typename: 'User';
14861
+ id: string;
14862
+ displayName: string;
14863
+ } | null;
14864
+ project: {
14865
+ __typename: 'App';
14866
+ id: string;
14867
+ name: string;
14868
+ slug: string;
14869
+ ownerAccount: {
14870
+ __typename?: 'Account';
14871
+ id: string;
14872
+ name: string;
14873
+ };
14874
+ } | {
14875
+ __typename: 'Snack';
14876
+ id: string;
14877
+ name: string;
14878
+ slug: string;
14879
+ };
14880
+ metrics?: {
14881
+ __typename?: 'BuildMetrics';
14882
+ buildWaitTime?: number | null;
14883
+ buildQueueTime?: number | null;
14884
+ buildDuration?: number | null;
14885
+ } | null;
14886
+ } | null;
14710
14887
  errors: Array<{
14711
14888
  __typename?: 'WorkflowJobError';
14712
14889
  title: string;
@@ -15455,12 +15632,100 @@ export type WorkflowJobFragment = {
15455
15632
  __typename?: 'JobRun';
15456
15633
  id: string;
15457
15634
  logFileUrls: Array<string>;
15635
+ artifacts: Array<{
15636
+ __typename?: 'WorkflowArtifact';
15637
+ id: string;
15638
+ name: string;
15639
+ contentType?: string | null;
15640
+ fileSizeBytes?: number | null;
15641
+ filename: string;
15642
+ downloadUrl?: string | null;
15643
+ }>;
15458
15644
  errors: Array<{
15459
15645
  __typename?: 'JobRunError';
15460
15646
  errorCode: string;
15461
15647
  message: string;
15462
15648
  }>;
15463
15649
  } | null;
15650
+ turtleBuild?: {
15651
+ __typename?: 'Build';
15652
+ id: string;
15653
+ status: BuildStatus;
15654
+ platform: AppPlatform;
15655
+ channel?: string | null;
15656
+ distribution?: DistributionType | null;
15657
+ iosEnterpriseProvisioning?: BuildIosEnterpriseProvisioning | null;
15658
+ buildProfile?: string | null;
15659
+ sdkVersion?: string | null;
15660
+ appVersion?: string | null;
15661
+ appBuildVersion?: string | null;
15662
+ runtimeVersion?: string | null;
15663
+ gitCommitHash?: string | null;
15664
+ gitCommitMessage?: string | null;
15665
+ initialQueuePosition?: number | null;
15666
+ queuePosition?: number | null;
15667
+ estimatedWaitTimeLeftSeconds?: number | null;
15668
+ priority: BuildPriority;
15669
+ createdAt: any;
15670
+ updatedAt: any;
15671
+ message?: string | null;
15672
+ completedAt?: any | null;
15673
+ expirationDate?: any | null;
15674
+ isForIosSimulator: boolean;
15675
+ error?: {
15676
+ __typename?: 'BuildError';
15677
+ errorCode: string;
15678
+ message: string;
15679
+ docsUrl?: string | null;
15680
+ } | null;
15681
+ artifacts?: {
15682
+ __typename?: 'BuildArtifacts';
15683
+ buildUrl?: string | null;
15684
+ xcodeBuildLogsUrl?: string | null;
15685
+ applicationArchiveUrl?: string | null;
15686
+ buildArtifactsUrl?: string | null;
15687
+ } | null;
15688
+ fingerprint?: {
15689
+ __typename?: 'Fingerprint';
15690
+ id: string;
15691
+ hash: string;
15692
+ } | null;
15693
+ initiatingActor?: {
15694
+ __typename: 'Robot';
15695
+ id: string;
15696
+ displayName: string;
15697
+ } | {
15698
+ __typename: 'SSOUser';
15699
+ id: string;
15700
+ displayName: string;
15701
+ } | {
15702
+ __typename: 'User';
15703
+ id: string;
15704
+ displayName: string;
15705
+ } | null;
15706
+ project: {
15707
+ __typename: 'App';
15708
+ id: string;
15709
+ name: string;
15710
+ slug: string;
15711
+ ownerAccount: {
15712
+ __typename?: 'Account';
15713
+ id: string;
15714
+ name: string;
15715
+ };
15716
+ } | {
15717
+ __typename: 'Snack';
15718
+ id: string;
15719
+ name: string;
15720
+ slug: string;
15721
+ };
15722
+ metrics?: {
15723
+ __typename?: 'BuildMetrics';
15724
+ buildWaitTime?: number | null;
15725
+ buildQueueTime?: number | null;
15726
+ buildDuration?: number | null;
15727
+ } | null;
15728
+ } | null;
15464
15729
  errors: Array<{
15465
15730
  __typename?: 'WorkflowJobError';
15466
15731
  title: string;
@@ -898,6 +898,7 @@ var WorkflowJobType;
898
898
  WorkflowJobType["Doc"] = "DOC";
899
899
  WorkflowJobType["Fingerprint"] = "FINGERPRINT";
900
900
  WorkflowJobType["GetBuild"] = "GET_BUILD";
901
+ WorkflowJobType["GithubComment"] = "GITHUB_COMMENT";
901
902
  WorkflowJobType["MaestroCloud"] = "MAESTRO_CLOUD";
902
903
  WorkflowJobType["MaestroTest"] = "MAESTRO_TEST";
903
904
  WorkflowJobType["Repack"] = "REPACK";
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.WorkflowJobFragmentNode = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const graphql_tag_1 = tslib_1.__importDefault(require("graphql-tag"));
6
+ const Build_1 = require("./Build");
6
7
  exports.WorkflowJobFragmentNode = (0, graphql_tag_1.default) `
7
8
  fragment WorkflowJobFragment on WorkflowJob {
8
9
  id
@@ -16,11 +17,23 @@ exports.WorkflowJobFragmentNode = (0, graphql_tag_1.default) `
16
17
  turtleJobRun {
17
18
  id
18
19
  logFileUrls
20
+ artifacts {
21
+ id
22
+ name
23
+ contentType
24
+ fileSizeBytes
25
+ filename
26
+ downloadUrl
27
+ }
19
28
  errors {
20
29
  errorCode
21
30
  message
22
31
  }
23
32
  }
33
+ turtleBuild {
34
+ id
35
+ ...BuildFragment
36
+ }
24
37
  outputs
25
38
  errors {
26
39
  title
@@ -29,4 +42,5 @@ exports.WorkflowJobFragmentNode = (0, graphql_tag_1.default) `
29
42
  createdAt
30
43
  updatedAt
31
44
  }
45
+ ${Build_1.BuildFragmentNode}
32
46
  `;
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "16.19.1",
2
+ "version": "16.19.2",
3
3
  "commands": {
4
4
  "analytics": {
5
5
  "id": "analytics",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "eas-cli",
3
3
  "description": "EAS command line tool",
4
- "version": "16.19.1",
4
+ "version": "16.19.2",
5
5
  "author": "Expo <support@expo.dev>",
6
6
  "bin": {
7
7
  "eas": "./bin/run"
@@ -241,5 +241,5 @@
241
241
  "node": "20.11.0",
242
242
  "yarn": "1.22.21"
243
243
  },
244
- "gitHead": "0fd33a95f51ede01a0658558825b1e579106c7f4"
244
+ "gitHead": "fd23f031b673b17be9dd9241da036f54e141510d"
245
245
  }