@expo/build-tools 1.0.32 → 1.0.36
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.
- package/dist/builders/custom.js +1 -1
- package/dist/builders/custom.js.map +1 -1
- package/dist/customBuildContext.d.ts +1 -0
- package/dist/customBuildContext.js +1 -0
- package/dist/customBuildContext.js.map +1 -1
- package/dist/steps/easFunctions.d.ts +1 -3
- package/dist/steps/easFunctions.js +26 -17
- package/dist/steps/easFunctions.js.map +1 -1
- package/dist/steps/functions/checkout.js.map +1 -0
- package/dist/steps/functions/{utils/configureAndroidVersion.js → configureAndroidVersion.js} +2 -2
- package/dist/steps/functions/configureAndroidVersion.js.map +1 -0
- package/dist/steps/functions/{eas/configureExpoUpdatesIfInstalled.js → configureEASUpdateIfInstalled.js} +5 -5
- package/dist/steps/functions/configureEASUpdateIfInstalled.js.map +1 -0
- package/dist/steps/functions/configureIosCredentials.d.ts +2 -0
- package/dist/steps/functions/configureIosCredentials.js +54 -0
- package/dist/steps/functions/configureIosCredentials.js.map +1 -0
- package/dist/steps/functions/configureIosVersion.d.ts +2 -0
- package/dist/steps/functions/configureIosVersion.js +77 -0
- package/dist/steps/functions/configureIosVersion.js.map +1 -0
- package/dist/steps/functions/{eas/findAndUploadBuildArtifacts.d.ts → findAndUploadBuildArtifacts.d.ts} +1 -1
- package/dist/steps/functions/{eas/findAndUploadBuildArtifacts.js → findAndUploadBuildArtifacts.js} +4 -8
- package/dist/steps/functions/findAndUploadBuildArtifacts.js.map +1 -0
- package/dist/steps/functions/generateGymfileFromTemplate.d.ts +2 -0
- package/dist/steps/functions/generateGymfileFromTemplate.js +209 -0
- package/dist/steps/functions/generateGymfileFromTemplate.js.map +1 -0
- package/dist/steps/functions/{utils/injectAndroidCredentials.js → injectAndroidCredentials.js} +2 -2
- package/dist/steps/functions/injectAndroidCredentials.js.map +1 -0
- package/dist/steps/functions/installNodeModules.d.ts +4 -0
- package/dist/steps/functions/{eas/installNodeModules.js → installNodeModules.js} +6 -6
- package/dist/steps/functions/installNodeModules.js.map +1 -0
- package/dist/steps/functions/prebuild.d.ts +2 -0
- package/dist/steps/functions/{eas/prebuild.js → prebuild.js} +18 -26
- package/dist/steps/functions/prebuild.js.map +1 -0
- package/dist/steps/functions/resolveAppleTeamIdFromCredentials.d.ts +2 -0
- package/dist/steps/functions/resolveAppleTeamIdFromCredentials.js +47 -0
- package/dist/steps/functions/resolveAppleTeamIdFromCredentials.js.map +1 -0
- package/dist/steps/functions/runFastlane.d.ts +2 -0
- package/dist/steps/functions/runFastlane.js +26 -0
- package/dist/steps/functions/runFastlane.js.map +1 -0
- package/dist/steps/functions/runGradle.d.ts +2 -0
- package/dist/steps/functions/runGradle.js +36 -0
- package/dist/steps/functions/runGradle.js.map +1 -0
- package/dist/steps/functions/{utils/uploadArtifact.d.ts → uploadArtifact.d.ts} +1 -1
- package/dist/steps/functions/{utils/uploadArtifact.js → uploadArtifact.js} +2 -2
- package/dist/steps/functions/uploadArtifact.js.map +1 -0
- package/dist/steps/functions/useNpmToken.d.ts +2 -0
- package/dist/steps/functions/{eas/setUpNpmrc.js → useNpmToken.js} +5 -5
- package/dist/steps/functions/useNpmToken.js.map +1 -0
- package/dist/steps/utils/android/gradle.d.ts +11 -0
- package/dist/steps/utils/android/gradle.js +110 -0
- package/dist/steps/utils/android/gradle.js.map +1 -0
- package/dist/steps/utils/expoUpdates.js +2 -2
- package/dist/steps/utils/expoUpdates.js.map +1 -1
- package/dist/steps/utils/ios/configure.d.ts +15 -0
- package/dist/steps/utils/ios/configure.js +78 -0
- package/dist/steps/utils/ios/configure.js.map +1 -0
- package/dist/steps/utils/ios/credentials/credentials.d.ts +4 -0
- package/dist/steps/utils/ios/credentials/credentials.js +16 -0
- package/dist/steps/utils/ios/credentials/credentials.js.map +1 -0
- package/dist/steps/utils/ios/credentials/distributionCertificate.d.ts +3 -0
- package/dist/steps/utils/ios/credentials/distributionCertificate.js +52 -0
- package/dist/steps/utils/ios/credentials/distributionCertificate.js.map +1 -0
- package/dist/steps/utils/ios/credentials/keychain.d.ts +19 -0
- package/dist/steps/utils/ios/credentials/keychain.js +93 -0
- package/dist/steps/utils/ios/credentials/keychain.js.map +1 -0
- package/dist/steps/utils/ios/credentials/manager.d.ts +23 -0
- package/dist/steps/utils/ios/credentials/manager.js +115 -0
- package/dist/steps/utils/ios/credentials/manager.js.map +1 -0
- package/dist/steps/utils/ios/credentials/provisioningProfile.d.ts +35 -0
- package/dist/steps/utils/ios/credentials/provisioningProfile.js +114 -0
- package/dist/steps/utils/ios/credentials/provisioningProfile.js.map +1 -0
- package/dist/steps/utils/ios/fastlane.d.ts +7 -3
- package/dist/steps/utils/ios/fastlane.js +21 -34
- package/dist/steps/utils/ios/fastlane.js.map +1 -1
- package/dist/steps/utils/ios/resolve.d.ts +2 -4
- package/dist/steps/utils/ios/resolve.js +9 -3
- package/dist/steps/utils/ios/resolve.js.map +1 -1
- package/dist/steps/utils/ios/xcpretty.d.ts +16 -0
- package/dist/steps/utils/ios/xcpretty.js +88 -0
- package/dist/steps/utils/ios/xcpretty.js.map +1 -0
- package/package.json +3 -3
- package/dist/steps/functions/eas/buildReactNativeApp.d.ts +0 -4
- package/dist/steps/functions/eas/buildReactNativeApp.js +0 -53
- package/dist/steps/functions/eas/buildReactNativeApp.js.map +0 -1
- package/dist/steps/functions/eas/checkout.js.map +0 -1
- package/dist/steps/functions/eas/configureExpoUpdatesIfInstalled.js.map +0 -1
- package/dist/steps/functions/eas/findAndUploadBuildArtifacts.js.map +0 -1
- package/dist/steps/functions/eas/installNodeModules.d.ts +0 -5
- package/dist/steps/functions/eas/installNodeModules.js.map +0 -1
- package/dist/steps/functions/eas/prebuild.d.ts +0 -3
- package/dist/steps/functions/eas/prebuild.js.map +0 -1
- package/dist/steps/functions/eas/setUpNpmrc.d.ts +0 -3
- package/dist/steps/functions/eas/setUpNpmrc.js.map +0 -1
- package/dist/steps/functions/utils/configureAndroidVersion.js.map +0 -1
- package/dist/steps/functions/utils/injectAndroidCredentials.js.map +0 -1
- package/dist/steps/functions/utils/uploadArtifact.js.map +0 -1
- /package/dist/steps/functions/{eas/checkout.d.ts → checkout.d.ts} +0 -0
- /package/dist/steps/functions/{eas/checkout.js → checkout.js} +0 -0
- /package/dist/steps/functions/{utils/configureAndroidVersion.d.ts → configureAndroidVersion.d.ts} +0 -0
- /package/dist/steps/functions/{eas/configureExpoUpdatesIfInstalled.d.ts → configureEASUpdateIfInstalled.d.ts} +0 -0
- /package/dist/steps/functions/{utils/injectAndroidCredentials.d.ts → injectAndroidCredentials.d.ts} +0 -0
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.generateGymfileFromTemplateFunction = void 0;
|
|
7
|
+
const assert_1 = __importDefault(require("assert"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const os_1 = __importDefault(require("os"));
|
|
10
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
11
|
+
const steps_1 = require("@expo/steps");
|
|
12
|
+
const config_plugins_1 = require("@expo/config-plugins");
|
|
13
|
+
const plist_1 = __importDefault(require("@expo/plist"));
|
|
14
|
+
const template_file_1 = __importDefault(require("@expo/template-file"));
|
|
15
|
+
const uuid_1 = require("uuid");
|
|
16
|
+
const credentials_1 = require("../utils/ios/credentials/credentials");
|
|
17
|
+
const manager_1 = __importDefault(require("../utils/ios/credentials/manager"));
|
|
18
|
+
const resolve_1 = require("../utils/ios/resolve");
|
|
19
|
+
const tvos_1 = require("../utils/ios/tvos");
|
|
20
|
+
const DEFAULT_CREDENTIALS_TEMPLATE = `
|
|
21
|
+
suppress_xcode_output(true)
|
|
22
|
+
clean(<%- CLEAN %>)
|
|
23
|
+
|
|
24
|
+
scheme("<%- SCHEME %>")
|
|
25
|
+
<% if (BUILD_CONFIGURATION) { %>
|
|
26
|
+
configuration("<%- BUILD_CONFIGURATION %>")
|
|
27
|
+
<% } %>
|
|
28
|
+
|
|
29
|
+
export_options({
|
|
30
|
+
method: "<%- EXPORT_METHOD %>",
|
|
31
|
+
provisioningProfiles: {<% _.forEach(PROFILES, function(profile) { %>
|
|
32
|
+
"<%- profile.BUNDLE_ID %>" => "<%- profile.UUID %>",<% }); %>
|
|
33
|
+
}<% if (ICLOUD_CONTAINER_ENVIRONMENT) { %>,
|
|
34
|
+
iCloudContainerEnvironment: "<%- ICLOUD_CONTAINER_ENVIRONMENT %>"
|
|
35
|
+
<% } %>
|
|
36
|
+
})
|
|
37
|
+
|
|
38
|
+
export_xcargs "OTHER_CODE_SIGN_FLAGS=\\"--keychain <%- KEYCHAIN_PATH %>\\""
|
|
39
|
+
|
|
40
|
+
disable_xcpretty(true)
|
|
41
|
+
buildlog_path("<%- LOGS_DIRECTORY %>")
|
|
42
|
+
|
|
43
|
+
output_directory("<%- OUTPUT_DIRECTORY %>")
|
|
44
|
+
`;
|
|
45
|
+
const DEFAULT_SIMULATOR_TEMPLATE = `
|
|
46
|
+
suppress_xcode_output(true)
|
|
47
|
+
clean(<%- CLEAN %>)
|
|
48
|
+
|
|
49
|
+
scheme("<%- SCHEME %>")
|
|
50
|
+
<% if (BUILD_CONFIGURATION) { %>
|
|
51
|
+
configuration("<%- BUILD_CONFIGURATION %>")
|
|
52
|
+
<% } %>
|
|
53
|
+
|
|
54
|
+
derived_data_path("<%- DERIVED_DATA_PATH %>")
|
|
55
|
+
skip_package_ipa(true)
|
|
56
|
+
skip_archive(true)
|
|
57
|
+
destination("<%- SCHEME_SIMULATOR_DESTINATION %>")
|
|
58
|
+
|
|
59
|
+
disable_xcpretty(true)
|
|
60
|
+
buildlog_path("<%- LOGS_DIRECTORY %>")
|
|
61
|
+
`;
|
|
62
|
+
function generateGymfileFromTemplateFunction() {
|
|
63
|
+
return new steps_1.BuildFunction({
|
|
64
|
+
namespace: 'eas',
|
|
65
|
+
id: 'generate_gymfile_from_template',
|
|
66
|
+
name: 'Generate Gymfile from template',
|
|
67
|
+
inputProviders: [
|
|
68
|
+
steps_1.BuildStepInput.createProvider({
|
|
69
|
+
id: 'template',
|
|
70
|
+
required: false,
|
|
71
|
+
allowedValueTypeName: steps_1.BuildStepInputValueTypeName.STRING,
|
|
72
|
+
}),
|
|
73
|
+
steps_1.BuildStepInput.createProvider({
|
|
74
|
+
id: 'credentials',
|
|
75
|
+
required: false,
|
|
76
|
+
allowedValueTypeName: steps_1.BuildStepInputValueTypeName.JSON,
|
|
77
|
+
}),
|
|
78
|
+
steps_1.BuildStepInput.createProvider({
|
|
79
|
+
id: 'build_configuration',
|
|
80
|
+
required: false,
|
|
81
|
+
allowedValueTypeName: steps_1.BuildStepInputValueTypeName.STRING,
|
|
82
|
+
}),
|
|
83
|
+
steps_1.BuildStepInput.createProvider({
|
|
84
|
+
id: 'scheme',
|
|
85
|
+
required: false,
|
|
86
|
+
allowedValueTypeName: steps_1.BuildStepInputValueTypeName.STRING,
|
|
87
|
+
}),
|
|
88
|
+
steps_1.BuildStepInput.createProvider({
|
|
89
|
+
id: 'clean',
|
|
90
|
+
required: true,
|
|
91
|
+
allowedValueTypeName: steps_1.BuildStepInputValueTypeName.BOOLEAN,
|
|
92
|
+
defaultValue: false,
|
|
93
|
+
}),
|
|
94
|
+
steps_1.BuildStepInput.createProvider({
|
|
95
|
+
id: 'extra',
|
|
96
|
+
required: false,
|
|
97
|
+
allowedValueTypeName: steps_1.BuildStepInputValueTypeName.JSON,
|
|
98
|
+
}),
|
|
99
|
+
],
|
|
100
|
+
fn: async (stepCtx, { inputs }) => {
|
|
101
|
+
var _a;
|
|
102
|
+
let credentials = undefined;
|
|
103
|
+
const rawCredentialsInput = inputs.credentials.value;
|
|
104
|
+
if (rawCredentialsInput) {
|
|
105
|
+
const { value, error } = credentials_1.IosBuildCredentialsSchema.validate(rawCredentialsInput, {
|
|
106
|
+
stripUnknown: true,
|
|
107
|
+
convert: true,
|
|
108
|
+
abortEarly: false,
|
|
109
|
+
});
|
|
110
|
+
if (error) {
|
|
111
|
+
throw error;
|
|
112
|
+
}
|
|
113
|
+
const credentialsManager = new manager_1.default(value);
|
|
114
|
+
credentials = await credentialsManager.prepare(stepCtx.logger);
|
|
115
|
+
}
|
|
116
|
+
const extra = (_a = inputs.extra.value) !== null && _a !== void 0 ? _a : {};
|
|
117
|
+
const templateInput = inputs.template.value;
|
|
118
|
+
let template;
|
|
119
|
+
if (templateInput) {
|
|
120
|
+
template = templateInput;
|
|
121
|
+
}
|
|
122
|
+
else if (credentials) {
|
|
123
|
+
template = DEFAULT_CREDENTIALS_TEMPLATE;
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
template = DEFAULT_SIMULATOR_TEMPLATE;
|
|
127
|
+
}
|
|
128
|
+
(0, assert_1.default)(stepCtx.global.staticContext.job, 'Job is not defined');
|
|
129
|
+
const job = stepCtx.global.staticContext.job;
|
|
130
|
+
const buildConfiguration = (0, resolve_1.resolveBuildConfiguration)(job, inputs.build_configuration.value);
|
|
131
|
+
const scheme = (0, resolve_1.resolveScheme)(stepCtx.workingDirectory, job, inputs.scheme.value);
|
|
132
|
+
const entitlements = await maybeReadEntitlementsAsync(stepCtx.logger, stepCtx.workingDirectory, scheme, buildConfiguration);
|
|
133
|
+
const templatePath = await saveTemplateToTemporaryFileAsync(template);
|
|
134
|
+
const gymfilePath = path_1.default.join(stepCtx.workingDirectory, 'ios/Gymfile');
|
|
135
|
+
const PROFILES = [];
|
|
136
|
+
if (credentials) {
|
|
137
|
+
const targets = Object.keys(credentials.targetProvisioningProfiles);
|
|
138
|
+
for (const target of targets) {
|
|
139
|
+
const profile = credentials.targetProvisioningProfiles[target];
|
|
140
|
+
PROFILES.push({
|
|
141
|
+
BUNDLE_ID: profile.bundleIdentifier,
|
|
142
|
+
UUID: profile.uuid,
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
const ICLOUD_CONTAINER_ENVIRONMENT = entitlements === null || entitlements === void 0 ? void 0 : entitlements['com.apple.developer.icloud-container-environment'];
|
|
147
|
+
const isTV = await (0, tvos_1.isTVOS)({
|
|
148
|
+
scheme,
|
|
149
|
+
buildConfiguration,
|
|
150
|
+
workingDir: stepCtx.workingDirectory,
|
|
151
|
+
});
|
|
152
|
+
const simulatorDestination = `generic/platform=${isTV ? 'tvOS' : 'iOS'} Simulator`;
|
|
153
|
+
await createGymfile({
|
|
154
|
+
template: templatePath,
|
|
155
|
+
outputFile: gymfilePath,
|
|
156
|
+
vars: {
|
|
157
|
+
SCHEME: scheme,
|
|
158
|
+
BUILD_CONFIGURATION: buildConfiguration,
|
|
159
|
+
OUTPUT_DIRECTORY: './build',
|
|
160
|
+
CLEAN: String(inputs.clean.value),
|
|
161
|
+
LOGS_DIRECTORY: stepCtx.global.buildLogsDirectory,
|
|
162
|
+
ICLOUD_CONTAINER_ENVIRONMENT,
|
|
163
|
+
SCHEME_SIMULATOR_DESTINATION: simulatorDestination,
|
|
164
|
+
DERIVED_DATA_PATH: './build',
|
|
165
|
+
...(PROFILES ? { PROFILES } : {}),
|
|
166
|
+
...(credentials
|
|
167
|
+
? {
|
|
168
|
+
KEYCHAIN_PATH: credentials.keychainPath,
|
|
169
|
+
EXPORT_METHOD: credentials.distributionType,
|
|
170
|
+
}
|
|
171
|
+
: {}),
|
|
172
|
+
...extra,
|
|
173
|
+
},
|
|
174
|
+
});
|
|
175
|
+
const gymfileContents = await fs_extra_1.default.readFile(gymfilePath, 'utf8');
|
|
176
|
+
stepCtx.logger.info(`Successfully generated Gymfile: ${gymfileContents}`);
|
|
177
|
+
},
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
exports.generateGymfileFromTemplateFunction = generateGymfileFromTemplateFunction;
|
|
181
|
+
async function maybeReadEntitlementsAsync(logger, workingDir, scheme, buildConfiguration) {
|
|
182
|
+
try {
|
|
183
|
+
const applicationTargetName = await config_plugins_1.IOSConfig.BuildScheme.getApplicationTargetNameForSchemeAsync(workingDir, scheme);
|
|
184
|
+
const entitlementsPath = config_plugins_1.IOSConfig.Entitlements.getEntitlementsPath(workingDir, {
|
|
185
|
+
buildConfiguration,
|
|
186
|
+
targetName: applicationTargetName,
|
|
187
|
+
});
|
|
188
|
+
if (!entitlementsPath) {
|
|
189
|
+
return null;
|
|
190
|
+
}
|
|
191
|
+
const entitlementsRaw = await fs_extra_1.default.readFile(entitlementsPath, 'utf8');
|
|
192
|
+
return plist_1.default.parse(entitlementsRaw);
|
|
193
|
+
}
|
|
194
|
+
catch (err) {
|
|
195
|
+
logger.warn({ err }, 'Failed to read entitlements');
|
|
196
|
+
return null;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
async function createGymfile({ template, outputFile, vars, }) {
|
|
200
|
+
await (0, template_file_1.default)(template, vars, outputFile, { mustache: false });
|
|
201
|
+
}
|
|
202
|
+
async function saveTemplateToTemporaryFileAsync(template) {
|
|
203
|
+
const directory = path_1.default.join(os_1.default.tmpdir(), `gymfile-template-${(0, uuid_1.v4)()}`);
|
|
204
|
+
await fs_extra_1.default.mkdir(directory, { recursive: true });
|
|
205
|
+
const templatePath = path_1.default.join(directory, 'Gymfile.template');
|
|
206
|
+
await fs_extra_1.default.writeFile(templatePath, template);
|
|
207
|
+
return templatePath;
|
|
208
|
+
}
|
|
209
|
+
//# sourceMappingURL=generateGymfileFromTemplate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateGymfileFromTemplate.js","sourceRoot":"","sources":["../../../src/steps/functions/generateGymfileFromTemplate.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAC5B,gDAAwB;AACxB,4CAAoB;AAEpB,wDAA0B;AAC1B,uCAAyF;AAEzF,yDAAiD;AACjD,wDAAgC;AAEhC,wEAA+C;AAC/C,+BAAkC;AAElC,sEAAiF;AACjF,+EAAsF;AACtF,kDAAgF;AAChF,4CAA2C;AAE3C,MAAM,4BAA4B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CAwBpC,CAAC;AAEF,MAAM,0BAA0B,GAAG;;;;;;;;;;;;;;;;CAgBlC,CAAC;AAEF,SAAgB,mCAAmC;IACjD,OAAO,IAAI,qBAAa,CAAC;QACvB,SAAS,EAAE,KAAK;QAChB,EAAE,EAAE,gCAAgC;QACpC,IAAI,EAAE,gCAAgC;QACtC,cAAc,EAAE;YACd,sBAAc,CAAC,cAAc,CAAC;gBAC5B,EAAE,EAAE,UAAU;gBACd,QAAQ,EAAE,KAAK;gBACf,oBAAoB,EAAE,mCAA2B,CAAC,MAAM;aACzD,CAAC;YACF,sBAAc,CAAC,cAAc,CAAC;gBAC5B,EAAE,EAAE,aAAa;gBACjB,QAAQ,EAAE,KAAK;gBACf,oBAAoB,EAAE,mCAA2B,CAAC,IAAI;aACvD,CAAC;YACF,sBAAc,CAAC,cAAc,CAAC;gBAC5B,EAAE,EAAE,qBAAqB;gBACzB,QAAQ,EAAE,KAAK;gBACf,oBAAoB,EAAE,mCAA2B,CAAC,MAAM;aACzD,CAAC;YACF,sBAAc,CAAC,cAAc,CAAC;gBAC5B,EAAE,EAAE,QAAQ;gBACZ,QAAQ,EAAE,KAAK;gBACf,oBAAoB,EAAE,mCAA2B,CAAC,MAAM;aACzD,CAAC;YACF,sBAAc,CAAC,cAAc,CAAC;gBAC5B,EAAE,EAAE,OAAO;gBACX,QAAQ,EAAE,IAAI;gBACd,oBAAoB,EAAE,mCAA2B,CAAC,OAAO;gBACzD,YAAY,EAAE,KAAK;aACpB,CAAC;YACF,sBAAc,CAAC,cAAc,CAAC;gBAC5B,EAAE,EAAE,OAAO;gBACX,QAAQ,EAAE,KAAK;gBACf,oBAAoB,EAAE,mCAA2B,CAAC,IAAI;aACvD,CAAC;SACH;QACD,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;;YAChC,IAAI,WAAW,GAA4B,SAAS,CAAC;YACrD,MAAM,mBAAmB,GAAG,MAAM,CAAC,WAAW,CAAC,KAAwC,CAAC;YACxF,IAAI,mBAAmB,EAAE;gBACvB,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,uCAAyB,CAAC,QAAQ,CAAC,mBAAmB,EAAE;oBAC/E,YAAY,EAAE,IAAI;oBAClB,OAAO,EAAE,IAAI;oBACb,UAAU,EAAE,KAAK;iBAClB,CAAC,CAAC;gBACH,IAAI,KAAK,EAAE;oBACT,MAAM,KAAK,CAAC;iBACb;gBAED,MAAM,kBAAkB,GAAG,IAAI,iBAAqB,CAAC,KAAK,CAAC,CAAC;gBAC5D,WAAW,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;aAChE;YAED,MAAM,KAAK,GACT,MAAC,MAAM,CAAC,KAAK,CAAC,KAAyC,mCAAI,EAAE,CAAC;YAEhE,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,KAA2B,CAAC;YAElE,IAAI,QAAgB,CAAC;YACrB,IAAI,aAAa,EAAE;gBACjB,QAAQ,GAAG,aAAa,CAAC;aAC1B;iBAAM,IAAI,WAAW,EAAE;gBACtB,QAAQ,GAAG,4BAA4B,CAAC;aACzC;iBAAM;gBACL,QAAQ,GAAG,0BAA0B,CAAC;aACvC;YAED,IAAA,gBAAM,EAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;YAC/D,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,GAAc,CAAC;YACxD,MAAM,kBAAkB,GAAG,IAAA,mCAAyB,EAClD,GAAG,EACH,MAAM,CAAC,mBAAmB,CAAC,KAA2B,CACvD,CAAC;YACF,MAAM,MAAM,GAAG,IAAA,uBAAa,EAC1B,OAAO,CAAC,gBAAgB,EACxB,GAAG,EACH,MAAM,CAAC,MAAM,CAAC,KAA2B,CAC1C,CAAC;YACF,MAAM,YAAY,GAAG,MAAM,0BAA0B,CACnD,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,gBAAgB,EACxB,MAAM,EACN,kBAAkB,CACnB,CAAC;YAEF,MAAM,YAAY,GAAG,MAAM,gCAAgC,CAAC,QAAQ,CAAC,CAAC;YAEtE,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;YAEvE,MAAM,QAAQ,GAA0C,EAAE,CAAC;YAC3D,IAAI,WAAW,EAAE;gBACf,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAC;gBACpE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;oBAC5B,MAAM,OAAO,GAAG,WAAW,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;oBAC/D,QAAQ,CAAC,IAAI,CAAC;wBACZ,SAAS,EAAE,OAAO,CAAC,gBAAgB;wBACnC,IAAI,EAAE,OAAO,CAAC,IAAI;qBACnB,CAAC,CAAC;iBACJ;aACF;YAED,MAAM,4BAA4B,GAChC,YACD,aADC,YAAY,uBAAZ,YAAY,CACV,kDAAkD,CAAuB,CAAC;YAE9E,MAAM,IAAI,GAAG,MAAM,IAAA,aAAM,EAAC;gBACxB,MAAM;gBACN,kBAAkB;gBAClB,UAAU,EAAE,OAAO,CAAC,gBAAgB;aACrC,CAAC,CAAC;YACH,MAAM,oBAAoB,GAAG,oBAAoB,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC;YAEnF,MAAM,aAAa,CAAC;gBAClB,QAAQ,EAAE,YAAY;gBACtB,UAAU,EAAE,WAAW;gBACvB,IAAI,EAAE;oBACJ,MAAM,EAAE,MAAM;oBACd,mBAAmB,EAAE,kBAAkB;oBACvC,gBAAgB,EAAE,SAAS;oBAC3B,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;oBACjC,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,kBAAkB;oBACjD,4BAA4B;oBAC5B,4BAA4B,EAAE,oBAAoB;oBAClD,iBAAiB,EAAE,SAAS;oBAC5B,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjC,GAAG,CAAC,WAAW;wBACb,CAAC,CAAC;4BACE,aAAa,EAAE,WAAW,CAAC,YAAY;4BACvC,aAAa,EAAE,WAAW,CAAC,gBAAgB;yBAC5C;wBACH,CAAC,CAAC,EAAE,CAAC;oBACP,GAAG,KAAK;iBACT;aACF,CAAC,CAAC;YAEH,MAAM,eAAe,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YAC/D,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,eAAe,EAAE,CAAC,CAAC;QAC5E,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AA7ID,kFA6IC;AAED,KAAK,UAAU,0BAA0B,CACvC,MAAc,EACd,UAAkB,EAClB,MAAc,EACd,kBAA0B;IAE1B,IAAI;QACF,MAAM,qBAAqB,GACzB,MAAM,0BAAS,CAAC,WAAW,CAAC,sCAAsC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACzF,MAAM,gBAAgB,GAAG,0BAAS,CAAC,YAAY,CAAC,mBAAmB,CAAC,UAAU,EAAE;YAC9E,kBAAkB;YAClB,UAAU,EAAE,qBAAqB;SAClC,CAAC,CAAC;QACH,IAAI,CAAC,gBAAgB,EAAE;YACrB,OAAO,IAAI,CAAC;SACb;QACD,MAAM,eAAe,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QACpE,OAAO,eAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;KACrC;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,6BAA6B,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC;KACb;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,EAC3B,QAAQ,EACR,UAAU,EACV,IAAI,GAKL;IACC,MAAM,IAAA,uBAAY,EAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;AACtE,CAAC;AAED,KAAK,UAAU,gCAAgC,CAAC,QAAgB;IAC9D,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,MAAM,EAAE,EAAE,oBAAoB,IAAA,SAAI,GAAE,EAAE,CAAC,CAAC;IACvE,MAAM,kBAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;IAC9D,MAAM,kBAAE,CAAC,SAAS,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAC3C,OAAO,YAAY,CAAC;AACtB,CAAC","sourcesContent":["import assert from 'assert';\nimport path from 'path';\nimport os from 'os';\n\nimport fs from 'fs-extra';\nimport { BuildFunction, BuildStepInput, BuildStepInputValueTypeName } from '@expo/steps';\nimport { Ios } from '@expo/eas-build-job';\nimport { IOSConfig } from '@expo/config-plugins';\nimport plist from '@expo/plist';\nimport { bunyan } from '@expo/logger';\nimport templateFile from '@expo/template-file';\nimport { v4 as uuid } from 'uuid';\n\nimport { IosBuildCredentialsSchema } from '../utils/ios/credentials/credentials';\nimport IosCredentialsManager, { Credentials } from '../utils/ios/credentials/manager';\nimport { resolveBuildConfiguration, resolveScheme } from '../utils/ios/resolve';\nimport { isTVOS } from '../utils/ios/tvos';\n\nconst DEFAULT_CREDENTIALS_TEMPLATE = `\n suppress_xcode_output(true)\n clean(<%- CLEAN %>)\n\n scheme(\"<%- SCHEME %>\")\n <% if (BUILD_CONFIGURATION) { %>\n configuration(\"<%- BUILD_CONFIGURATION %>\")\n <% } %>\n\n export_options({\n method: \"<%- EXPORT_METHOD %>\",\n provisioningProfiles: {<% _.forEach(PROFILES, function(profile) { %>\n \"<%- profile.BUNDLE_ID %>\" => \"<%- profile.UUID %>\",<% }); %>\n }<% if (ICLOUD_CONTAINER_ENVIRONMENT) { %>,\n iCloudContainerEnvironment: \"<%- ICLOUD_CONTAINER_ENVIRONMENT %>\"\n <% } %>\n })\n\n export_xcargs \"OTHER_CODE_SIGN_FLAGS=\\\\\"--keychain <%- KEYCHAIN_PATH %>\\\\\"\"\n\n disable_xcpretty(true)\n buildlog_path(\"<%- LOGS_DIRECTORY %>\")\n\n output_directory(\"<%- OUTPUT_DIRECTORY %>\")\n`;\n\nconst DEFAULT_SIMULATOR_TEMPLATE = `\n suppress_xcode_output(true)\n clean(<%- CLEAN %>)\n\n scheme(\"<%- SCHEME %>\")\n <% if (BUILD_CONFIGURATION) { %>\n configuration(\"<%- BUILD_CONFIGURATION %>\")\n <% } %>\n\n derived_data_path(\"<%- DERIVED_DATA_PATH %>\")\n skip_package_ipa(true)\n skip_archive(true)\n destination(\"<%- SCHEME_SIMULATOR_DESTINATION %>\")\n\n disable_xcpretty(true)\n buildlog_path(\"<%- LOGS_DIRECTORY %>\")\n`;\n\nexport function generateGymfileFromTemplateFunction(): BuildFunction {\n return new BuildFunction({\n namespace: 'eas',\n id: 'generate_gymfile_from_template',\n name: 'Generate Gymfile from template',\n inputProviders: [\n BuildStepInput.createProvider({\n id: 'template',\n required: false,\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n }),\n BuildStepInput.createProvider({\n id: 'credentials',\n required: false,\n allowedValueTypeName: BuildStepInputValueTypeName.JSON,\n }),\n BuildStepInput.createProvider({\n id: 'build_configuration',\n required: false,\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n }),\n BuildStepInput.createProvider({\n id: 'scheme',\n required: false,\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n }),\n BuildStepInput.createProvider({\n id: 'clean',\n required: true,\n allowedValueTypeName: BuildStepInputValueTypeName.BOOLEAN,\n defaultValue: false,\n }),\n BuildStepInput.createProvider({\n id: 'extra',\n required: false,\n allowedValueTypeName: BuildStepInputValueTypeName.JSON,\n }),\n ],\n fn: async (stepCtx, { inputs }) => {\n let credentials: Credentials | undefined = undefined;\n const rawCredentialsInput = inputs.credentials.value as Record<string, any> | undefined;\n if (rawCredentialsInput) {\n const { value, error } = IosBuildCredentialsSchema.validate(rawCredentialsInput, {\n stripUnknown: true,\n convert: true,\n abortEarly: false,\n });\n if (error) {\n throw error;\n }\n\n const credentialsManager = new IosCredentialsManager(value);\n credentials = await credentialsManager.prepare(stepCtx.logger);\n }\n\n const extra: Record<string, any> =\n (inputs.extra.value as Record<string, any> | undefined) ?? {};\n\n const templateInput = inputs.template.value as string | undefined;\n\n let template: string;\n if (templateInput) {\n template = templateInput;\n } else if (credentials) {\n template = DEFAULT_CREDENTIALS_TEMPLATE;\n } else {\n template = DEFAULT_SIMULATOR_TEMPLATE;\n }\n\n assert(stepCtx.global.staticContext.job, 'Job is not defined');\n const job = stepCtx.global.staticContext.job as Ios.Job;\n const buildConfiguration = resolveBuildConfiguration(\n job,\n inputs.build_configuration.value as string | undefined\n );\n const scheme = resolveScheme(\n stepCtx.workingDirectory,\n job,\n inputs.scheme.value as string | undefined\n );\n const entitlements = await maybeReadEntitlementsAsync(\n stepCtx.logger,\n stepCtx.workingDirectory,\n scheme,\n buildConfiguration\n );\n\n const templatePath = await saveTemplateToTemporaryFileAsync(template);\n\n const gymfilePath = path.join(stepCtx.workingDirectory, 'ios/Gymfile');\n\n const PROFILES: { BUNDLE_ID: string; UUID: string }[] = [];\n if (credentials) {\n const targets = Object.keys(credentials.targetProvisioningProfiles);\n for (const target of targets) {\n const profile = credentials.targetProvisioningProfiles[target];\n PROFILES.push({\n BUNDLE_ID: profile.bundleIdentifier,\n UUID: profile.uuid,\n });\n }\n }\n\n const ICLOUD_CONTAINER_ENVIRONMENT = (\n entitlements as Record<string, string | Record<string, string>>\n )?.['com.apple.developer.icloud-container-environment'] as string | undefined;\n\n const isTV = await isTVOS({\n scheme,\n buildConfiguration,\n workingDir: stepCtx.workingDirectory,\n });\n const simulatorDestination = `generic/platform=${isTV ? 'tvOS' : 'iOS'} Simulator`;\n\n await createGymfile({\n template: templatePath,\n outputFile: gymfilePath,\n vars: {\n SCHEME: scheme,\n BUILD_CONFIGURATION: buildConfiguration,\n OUTPUT_DIRECTORY: './build',\n CLEAN: String(inputs.clean.value),\n LOGS_DIRECTORY: stepCtx.global.buildLogsDirectory,\n ICLOUD_CONTAINER_ENVIRONMENT,\n SCHEME_SIMULATOR_DESTINATION: simulatorDestination,\n DERIVED_DATA_PATH: './build',\n ...(PROFILES ? { PROFILES } : {}),\n ...(credentials\n ? {\n KEYCHAIN_PATH: credentials.keychainPath,\n EXPORT_METHOD: credentials.distributionType,\n }\n : {}),\n ...extra,\n },\n });\n\n const gymfileContents = await fs.readFile(gymfilePath, 'utf8');\n stepCtx.logger.info(`Successfully generated Gymfile: ${gymfileContents}`);\n },\n });\n}\n\nasync function maybeReadEntitlementsAsync(\n logger: bunyan,\n workingDir: string,\n scheme: string,\n buildConfiguration: string\n): Promise<object | null> {\n try {\n const applicationTargetName =\n await IOSConfig.BuildScheme.getApplicationTargetNameForSchemeAsync(workingDir, scheme);\n const entitlementsPath = IOSConfig.Entitlements.getEntitlementsPath(workingDir, {\n buildConfiguration,\n targetName: applicationTargetName,\n });\n if (!entitlementsPath) {\n return null;\n }\n const entitlementsRaw = await fs.readFile(entitlementsPath, 'utf8');\n return plist.parse(entitlementsRaw);\n } catch (err) {\n logger.warn({ err }, 'Failed to read entitlements');\n return null;\n }\n}\n\nasync function createGymfile({\n template,\n outputFile,\n vars,\n}: {\n template: string;\n outputFile: string;\n vars: Record<string, string | number | any>;\n}): Promise<void> {\n await templateFile(template, vars, outputFile, { mustache: false });\n}\n\nasync function saveTemplateToTemporaryFileAsync(template: string): Promise<string> {\n const directory = path.join(os.tmpdir(), `gymfile-template-${uuid()}`);\n await fs.mkdir(directory, { recursive: true });\n const templatePath = path.join(directory, 'Gymfile.template');\n await fs.writeFile(templatePath, template);\n return templatePath;\n}\n"]}
|
package/dist/steps/functions/{utils/injectAndroidCredentials.js → injectAndroidCredentials.js}
RENAMED
|
@@ -9,7 +9,7 @@ const uuid_1 = require("uuid");
|
|
|
9
9
|
const steps_1 = require("@expo/steps");
|
|
10
10
|
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
11
11
|
const joi_1 = __importDefault(require("joi"));
|
|
12
|
-
const gradleConfig_1 = require("
|
|
12
|
+
const gradleConfig_1 = require("../utils/android/gradleConfig");
|
|
13
13
|
const KeystoreSchema = joi_1.default.object({
|
|
14
14
|
dataBase64: joi_1.default.string().required(),
|
|
15
15
|
keystorePassword: joi_1.default.string().allow('').required(),
|
|
@@ -21,7 +21,7 @@ const AndroidBuildCredentialsSchema = joi_1.default.object({
|
|
|
21
21
|
}).required();
|
|
22
22
|
function injectAndroidCredentialsFunction() {
|
|
23
23
|
return new steps_1.BuildFunction({
|
|
24
|
-
namespace: '
|
|
24
|
+
namespace: 'eas',
|
|
25
25
|
id: 'inject_android_credentials',
|
|
26
26
|
name: 'Inject Android credentials',
|
|
27
27
|
inputProviders: [
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"injectAndroidCredentials.js","sourceRoot":"","sources":["../../../src/steps/functions/injectAndroidCredentials.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAExB,+BAAoC;AACpC,uCAKqB;AACrB,wDAA0B;AAC1B,8CAAsB;AAGtB,gEAA8E;AAE9E,MAAM,cAAc,GAAG,aAAG,CAAC,MAAM,CAAC;IAChC,UAAU,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,gBAAgB,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IACnD,QAAQ,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,WAAW,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;CACpC,CAAC,CAAC;AAEH,MAAM,6BAA6B,GAAG,aAAG,CAAC,MAAM,CAAiC;IAC/E,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE;CACpC,CAAC,CAAC,QAAQ,EAAE,CAAC;AAEd,SAAgB,gCAAgC;IAC9C,OAAO,IAAI,qBAAa,CAAC;QACvB,SAAS,EAAE,KAAK;QAChB,EAAE,EAAE,4BAA4B;QAChC,IAAI,EAAE,4BAA4B;QAClC,cAAc,EAAE;YACd,sBAAc,CAAC,cAAc,CAAC;gBAC5B,EAAE,EAAE,aAAa;gBACjB,QAAQ,EAAE,IAAI;gBACd,oBAAoB,EAAE,mCAA2B,CAAC,IAAI;gBACtD,YAAY,EAAE,uCAAuC;aACtD,CAAC;SACH;QACD,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;YAChC,MAAM,mBAAmB,GAAG,MAAM,CAAC,WAAW,CAAC,KAA4B,CAAC;YAC5E,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,6BAA6B,CAAC,QAAQ,CAAC,mBAAmB,EAAE;gBACnF,YAAY,EAAE,IAAI;gBAClB,OAAO,EAAE,IAAI;gBACb,UAAU,EAAE,KAAK;aAClB,CAAC,CAAC;YACH,IAAI,KAAK,EAAE;gBACT,MAAM,KAAK,CAAC;aACb;YACD,MAAM,WAAW,GAAG,KAAK,CAAC;YAE1B,MAAM,kBAAkB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YAC/C,MAAM,IAAA,4CAA6B,EAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAChF,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AA7BD,4EA6BC;AAED,KAAK,UAAU,kBAAkB,CAC/B,QAA0B,EAC1B,gBAEC;IAED,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;IACnE,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,EAAE,YAAY,IAAA,SAAM,GAAE,EAAE,CAAC,CAAC;IAC/F,MAAM,kBAAE,CAAC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC9F,MAAM,eAAe,GAAG;QACtB,OAAO,EAAE;YACP,QAAQ,EAAE;gBACR,YAAY;gBACZ,gBAAgB,EAAE,gBAAgB,CAAC,QAAQ,CAAC,gBAAgB;gBAC5D,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,CAAC,QAAQ;gBAC5C,WAAW,EAAE,gBAAgB,CAAC,QAAQ,CAAC,WAAW;aACnD;SACF;KACF,CAAC;IACF,MAAM,kBAAE,CAAC,SAAS,CAChB,cAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,EAAE,kBAAkB,CAAC,EACrE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAChC,CAAC;AACJ,CAAC","sourcesContent":["import path from 'path';\n\nimport { v4 as uuidv4 } from 'uuid';\nimport {\n BuildFunction,\n BuildStepContext,\n BuildStepInput,\n BuildStepInputValueTypeName,\n} from '@expo/steps';\nimport fs from 'fs-extra';\nimport Joi from 'joi';\nimport { Android } from '@expo/eas-build-job';\n\nimport { injectCredentialsGradleConfig } from '../utils/android/gradleConfig';\n\nconst KeystoreSchema = Joi.object({\n dataBase64: Joi.string().required(),\n keystorePassword: Joi.string().allow('').required(),\n keyAlias: Joi.string().required(),\n keyPassword: Joi.string().allow(''),\n});\n\nconst AndroidBuildCredentialsSchema = Joi.object<{ keystore: Android.Keystore }>({\n keystore: KeystoreSchema.required(),\n}).required();\n\nexport function injectAndroidCredentialsFunction(): BuildFunction {\n return new BuildFunction({\n namespace: 'eas',\n id: 'inject_android_credentials',\n name: 'Inject Android credentials',\n inputProviders: [\n BuildStepInput.createProvider({\n id: 'credentials',\n required: true,\n allowedValueTypeName: BuildStepInputValueTypeName.JSON,\n defaultValue: '${ eas.job.secrets.buildCredentials }',\n }),\n ],\n fn: async (stepCtx, { inputs }) => {\n const rawCredentialsInput = inputs.credentials.value as Record<string, any>;\n const { value, error } = AndroidBuildCredentialsSchema.validate(rawCredentialsInput, {\n stripUnknown: true,\n convert: true,\n abortEarly: false,\n });\n if (error) {\n throw error;\n }\n const credentials = value;\n\n await restoreCredentials(stepCtx, credentials);\n await injectCredentialsGradleConfig(stepCtx.logger, stepCtx.workingDirectory);\n },\n });\n}\n\nasync function restoreCredentials(\n stepsCtx: BuildStepContext,\n buildCredentials: {\n keystore: Android.Keystore;\n }\n): Promise<void> {\n stepsCtx.logger.info(\"Writing secrets to the project's directory\");\n const keystorePath = path.join(stepsCtx.global.projectTargetDirectory, `keystore-${uuidv4()}`);\n await fs.writeFile(keystorePath, Buffer.from(buildCredentials.keystore.dataBase64, 'base64'));\n const credentialsJson = {\n android: {\n keystore: {\n keystorePath,\n keystorePassword: buildCredentials.keystore.keystorePassword,\n keyAlias: buildCredentials.keystore.keyAlias,\n keyPassword: buildCredentials.keystore.keyPassword,\n },\n },\n };\n await fs.writeFile(\n path.join(stepsCtx.global.projectTargetDirectory, 'credentials.json'),\n JSON.stringify(credentialsJson)\n );\n}\n"]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { BuildFunction, BuildStepEnv } from '@expo/steps';
|
|
2
|
+
import { BuildStepContext } from '@expo/steps/dist_esm/BuildStepContext';
|
|
3
|
+
export declare function createInstallNodeModulesBuildFunction(): BuildFunction;
|
|
4
|
+
export declare function installNodeModules(stepCtx: BuildStepContext, env: BuildStepEnv): Promise<void>;
|
|
@@ -6,22 +6,22 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.installNodeModules = exports.createInstallNodeModulesBuildFunction = void 0;
|
|
7
7
|
const steps_1 = require("@expo/steps");
|
|
8
8
|
const turtle_spawn_1 = __importDefault(require("@expo/turtle-spawn"));
|
|
9
|
-
const packageManager_1 = require("
|
|
10
|
-
const project_1 = require("
|
|
11
|
-
function createInstallNodeModulesBuildFunction(
|
|
9
|
+
const packageManager_1 = require("../../utils/packageManager");
|
|
10
|
+
const project_1 = require("../../utils/project");
|
|
11
|
+
function createInstallNodeModulesBuildFunction() {
|
|
12
12
|
return new steps_1.BuildFunction({
|
|
13
13
|
namespace: 'eas',
|
|
14
14
|
id: 'install_node_modules',
|
|
15
15
|
name: 'Install node modules',
|
|
16
16
|
fn: async (stepCtx, { env }) => {
|
|
17
|
-
await installNodeModules(stepCtx,
|
|
17
|
+
await installNodeModules(stepCtx, env);
|
|
18
18
|
},
|
|
19
19
|
});
|
|
20
20
|
}
|
|
21
21
|
exports.createInstallNodeModulesBuildFunction = createInstallNodeModulesBuildFunction;
|
|
22
|
-
async function installNodeModules(stepCtx,
|
|
22
|
+
async function installNodeModules(stepCtx, env) {
|
|
23
23
|
const { logger } = stepCtx;
|
|
24
|
-
const packageManager = (0, packageManager_1.resolvePackageManager)(
|
|
24
|
+
const packageManager = (0, packageManager_1.resolvePackageManager)(stepCtx.global.projectTargetDirectory);
|
|
25
25
|
const packagerRunDir = (0, packageManager_1.findPackagerRootDir)(stepCtx.workingDirectory);
|
|
26
26
|
let args = ['install'];
|
|
27
27
|
if (packageManager === packageManager_1.PackageManager.PNPM) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"installNodeModules.js","sourceRoot":"","sources":["../../../src/steps/functions/installNodeModules.ts"],"names":[],"mappings":";;;;;;AAAA,uCAA0D;AAE1D,sEAAuC;AAEvC,+DAIoC;AACpC,iDAAmD;AAEnD,SAAgB,qCAAqC;IACnD,OAAO,IAAI,qBAAa,CAAC;QACvB,SAAS,EAAE,KAAK;QAChB,EAAE,EAAE,sBAAsB;QAC1B,IAAI,EAAE,sBAAsB;QAC5B,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;YAC7B,MAAM,kBAAkB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACzC,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AATD,sFASC;AAEM,KAAK,UAAU,kBAAkB,CACtC,OAAyB,EACzB,GAAiB;IAEjB,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC3B,MAAM,cAAc,GAAG,IAAA,sCAAqB,EAAC,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;IACpF,MAAM,cAAc,GAAG,IAAA,oCAAmB,EAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACrE,IAAI,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;IACvB,IAAI,cAAc,KAAK,+BAAc,CAAC,IAAI,EAAE;QAC1C,IAAI,GAAG,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;KAC5C;SAAM,IAAI,cAAc,KAAK,+BAAc,CAAC,IAAI,EAAE;QACjD,MAAM,OAAO,GAAG,MAAM,IAAA,sBAAY,EAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC7D,IAAI,OAAO,EAAE;YACX,IAAI,GAAG,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;SACtC;KACF;IACD,MAAM,CAAC,IAAI,CAAC,YAAY,cAAc,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,cAAc,YAAY,CAAC,CAAC;IAC5F,MAAM,IAAA,sBAAK,EAAC,cAAc,EAAE,IAAI,EAAE;QAChC,GAAG,EAAE,cAAc;QACnB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,GAAG;KACJ,CAAC,CAAC;AACL,CAAC;AAtBD,gDAsBC","sourcesContent":["import { BuildFunction, BuildStepEnv } from '@expo/steps';\nimport { BuildStepContext } from '@expo/steps/dist_esm/BuildStepContext';\nimport spawn from '@expo/turtle-spawn';\n\nimport {\n findPackagerRootDir,\n PackageManager,\n resolvePackageManager,\n} from '../../utils/packageManager';\nimport { isUsingYarn2 } from '../../utils/project';\n\nexport function createInstallNodeModulesBuildFunction(): BuildFunction {\n return new BuildFunction({\n namespace: 'eas',\n id: 'install_node_modules',\n name: 'Install node modules',\n fn: async (stepCtx, { env }) => {\n await installNodeModules(stepCtx, env);\n },\n });\n}\n\nexport async function installNodeModules(\n stepCtx: BuildStepContext,\n env: BuildStepEnv\n): Promise<void> {\n const { logger } = stepCtx;\n const packageManager = resolvePackageManager(stepCtx.global.projectTargetDirectory);\n const packagerRunDir = findPackagerRootDir(stepCtx.workingDirectory);\n let args = ['install'];\n if (packageManager === PackageManager.PNPM) {\n args = ['install', '--no-frozen-lockfile'];\n } else if (packageManager === PackageManager.YARN) {\n const isYarn2 = await isUsingYarn2(stepCtx.workingDirectory);\n if (isYarn2) {\n args = ['install', '--no-immutable'];\n }\n }\n logger.info(`Running \"${packageManager} ${args.join(' ')}\" in ${packagerRunDir} directory`);\n await spawn(packageManager, args, {\n cwd: packagerRunDir,\n logger: stepCtx.logger,\n env,\n });\n}\n"]}
|
|
@@ -4,35 +4,37 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.createPrebuildBuildFunction = void 0;
|
|
7
|
+
const assert_1 = __importDefault(require("assert"));
|
|
7
8
|
const steps_1 = require("@expo/steps");
|
|
8
9
|
const turtle_spawn_1 = __importDefault(require("@expo/turtle-spawn"));
|
|
9
|
-
const packageManager_1 = require("
|
|
10
|
+
const packageManager_1 = require("../../utils/packageManager");
|
|
10
11
|
const installNodeModules_1 = require("./installNodeModules");
|
|
11
|
-
function createPrebuildBuildFunction(
|
|
12
|
+
function createPrebuildBuildFunction() {
|
|
12
13
|
return new steps_1.BuildFunction({
|
|
13
14
|
namespace: 'eas',
|
|
14
15
|
id: 'prebuild',
|
|
15
16
|
name: 'Prebuild',
|
|
16
17
|
inputProviders: [
|
|
17
|
-
steps_1.BuildStepInput.createProvider({
|
|
18
|
-
id: 'skip_dependency_update',
|
|
19
|
-
required: false,
|
|
20
|
-
allowedValueTypeName: steps_1.BuildStepInputValueTypeName.STRING,
|
|
21
|
-
}),
|
|
22
18
|
steps_1.BuildStepInput.createProvider({
|
|
23
19
|
id: 'clean',
|
|
24
20
|
defaultValue: false,
|
|
25
21
|
allowedValueTypeName: steps_1.BuildStepInputValueTypeName.BOOLEAN,
|
|
26
22
|
required: true,
|
|
27
23
|
}),
|
|
24
|
+
steps_1.BuildStepInput.createProvider({
|
|
25
|
+
id: 'apple_team_id',
|
|
26
|
+
allowedValueTypeName: steps_1.BuildStepInputValueTypeName.STRING,
|
|
27
|
+
required: false,
|
|
28
|
+
}),
|
|
28
29
|
],
|
|
29
30
|
fn: async (stepCtx, { inputs, env }) => {
|
|
30
31
|
const { logger } = stepCtx;
|
|
31
|
-
|
|
32
|
-
const packageManager = (0, packageManager_1.resolvePackageManager)(
|
|
33
|
-
|
|
32
|
+
const appleTeamId = inputs.apple_team_id.value;
|
|
33
|
+
const packageManager = (0, packageManager_1.resolvePackageManager)(stepCtx.global.projectTargetDirectory);
|
|
34
|
+
(0, assert_1.default)(stepCtx.global.staticContext.job, 'Job is not defined');
|
|
35
|
+
const job = stepCtx.global.staticContext.job;
|
|
36
|
+
const prebuildCommandArgs = getPrebuildCommandArgs(job, {
|
|
34
37
|
clean: inputs.clean.value,
|
|
35
|
-
skipDependencyUpdate: inputs.skip_dependency_update.value,
|
|
36
38
|
});
|
|
37
39
|
const argsWithExpo = ['expo', ...prebuildCommandArgs];
|
|
38
40
|
const options = {
|
|
@@ -41,6 +43,7 @@ function createPrebuildBuildFunction(ctx) {
|
|
|
41
43
|
env: {
|
|
42
44
|
EXPO_IMAGE_UTILS_NO_SHARP: '1',
|
|
43
45
|
...env,
|
|
46
|
+
...(appleTeamId ? { APPLE_TEAM_ID: appleTeamId } : {}),
|
|
44
47
|
},
|
|
45
48
|
};
|
|
46
49
|
if (packageManager === packageManager_1.PackageManager.NPM) {
|
|
@@ -55,37 +58,26 @@ function createPrebuildBuildFunction(ctx) {
|
|
|
55
58
|
else {
|
|
56
59
|
throw new Error(`Unsupported package manager: ${packageManager}`);
|
|
57
60
|
}
|
|
58
|
-
await (0, installNodeModules_1.installNodeModules)(stepCtx,
|
|
61
|
+
await (0, installNodeModules_1.installNodeModules)(stepCtx, env);
|
|
59
62
|
},
|
|
60
63
|
});
|
|
61
64
|
}
|
|
62
65
|
exports.createPrebuildBuildFunction = createPrebuildBuildFunction;
|
|
63
|
-
function getPrebuildCommandArgs(job, { clean
|
|
66
|
+
function getPrebuildCommandArgs(job, { clean }) {
|
|
64
67
|
var _a;
|
|
65
68
|
if ((_a = job.experimental) === null || _a === void 0 ? void 0 : _a.prebuildCommand) {
|
|
66
69
|
return sanitizeUserDefinedPrebuildCommand(job.experimental.prebuildCommand, job.platform, {
|
|
67
70
|
clean,
|
|
68
|
-
skipDependencyUpdate,
|
|
69
71
|
});
|
|
70
72
|
}
|
|
71
|
-
return [
|
|
72
|
-
'prebuild',
|
|
73
|
-
'--no-install',
|
|
74
|
-
'--platform',
|
|
75
|
-
job.platform,
|
|
76
|
-
...(skipDependencyUpdate ? ['--skip-dependency-update', skipDependencyUpdate] : []),
|
|
77
|
-
...(clean ? ['--clean'] : []),
|
|
78
|
-
];
|
|
73
|
+
return ['prebuild', '--no-install', '--platform', job.platform, ...(clean ? ['--clean'] : [])];
|
|
79
74
|
}
|
|
80
75
|
// TODO: deprecate prebuildCommand in eas.json
|
|
81
|
-
function sanitizeUserDefinedPrebuildCommand(userDefinedPrebuildCommand, platform, { clean
|
|
76
|
+
function sanitizeUserDefinedPrebuildCommand(userDefinedPrebuildCommand, platform, { clean }) {
|
|
82
77
|
let prebuildCommand = userDefinedPrebuildCommand;
|
|
83
78
|
if (!prebuildCommand.match(/(?:--platform| -p)/)) {
|
|
84
79
|
prebuildCommand = `${prebuildCommand} --platform ${platform}`;
|
|
85
80
|
}
|
|
86
|
-
if (skipDependencyUpdate) {
|
|
87
|
-
prebuildCommand = `${prebuildCommand} --skip-dependency-update ${skipDependencyUpdate}`;
|
|
88
|
-
}
|
|
89
81
|
if (clean) {
|
|
90
82
|
prebuildCommand = `${prebuildCommand} --clean`;
|
|
91
83
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prebuild.js","sourceRoot":"","sources":["../../../src/steps/functions/prebuild.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAI5B,uCAAyF;AACzF,sEAAuC;AAEvC,+DAAmF;AAEnF,6DAA0D;AAM1D,SAAgB,2BAA2B;IACzC,OAAO,IAAI,qBAAa,CAAC;QACvB,SAAS,EAAE,KAAK;QAChB,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,UAAU;QAChB,cAAc,EAAE;YACd,sBAAc,CAAC,cAAc,CAAC;gBAC5B,EAAE,EAAE,OAAO;gBACX,YAAY,EAAE,KAAK;gBACnB,oBAAoB,EAAE,mCAA2B,CAAC,OAAO;gBACzD,QAAQ,EAAE,IAAI;aACf,CAAC;YACF,sBAAc,CAAC,cAAc,CAAC;gBAC5B,EAAE,EAAE,eAAe;gBACnB,oBAAoB,EAAE,mCAA2B,CAAC,MAAM;gBACxD,QAAQ,EAAE,KAAK;aAChB,CAAC;SACH;QACD,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE;YACrC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;YAC3B,MAAM,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC,KAA2B,CAAC;YACrE,MAAM,cAAc,GAAG,IAAA,sCAAqB,EAAC,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;YAEpF,IAAA,gBAAM,EAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;YAC/D,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,GAAU,CAAC;YACpD,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,GAAG,EAAE;gBACtD,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAgB;aACrC,CAAC,CAAC;YACH,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,GAAG,mBAAmB,CAAC,CAAC;YACtD,MAAM,OAAO,GAAG;gBACd,GAAG,EAAE,OAAO,CAAC,gBAAgB;gBAC7B,MAAM;gBACN,GAAG,EAAE;oBACH,yBAAyB,EAAE,GAAG;oBAC9B,GAAG,GAAG;oBACN,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACvD;aACF,CAAC;YACF,IAAI,cAAc,KAAK,+BAAc,CAAC,GAAG,EAAE;gBACzC,MAAM,IAAA,sBAAK,EAAC,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;aAC3C;iBAAM,IAAI,cAAc,KAAK,+BAAc,CAAC,IAAI,EAAE;gBACjD,MAAM,IAAA,sBAAK,EAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;aAC5C;iBAAM,IAAI,cAAc,KAAK,+BAAc,CAAC,IAAI,EAAE;gBACjD,MAAM,IAAA,sBAAK,EAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;aAC5C;iBAAM;gBACL,MAAM,IAAI,KAAK,CAAC,gCAAgC,cAAc,EAAE,CAAC,CAAC;aACnE;YACD,MAAM,IAAA,uCAAkB,EAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACzC,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAlDD,kEAkDC;AAED,SAAS,sBAAsB,CAAC,GAAQ,EAAE,EAAE,KAAK,EAAmB;;IAClE,IAAI,MAAA,GAAG,CAAC,YAAY,0CAAE,eAAe,EAAE;QACrC,OAAO,kCAAkC,CAAC,GAAG,CAAC,YAAY,CAAC,eAAe,EAAE,GAAG,CAAC,QAAQ,EAAE;YACxF,KAAK;SACN,CAAC,CAAC;KACJ;IACD,OAAO,CAAC,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjG,CAAC;AAED,8CAA8C;AAC9C,SAAS,kCAAkC,CACzC,0BAAkC,EAClC,QAAkB,EAClB,EAAE,KAAK,EAAmB;IAE1B,IAAI,eAAe,GAAG,0BAA0B,CAAC;IACjD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE;QAChD,eAAe,GAAG,GAAG,eAAe,eAAe,QAAQ,EAAE,CAAC;KAC/D;IACD,IAAI,KAAK,EAAE;QACT,eAAe,GAAG,GAAG,eAAe,UAAU,CAAC;KAChD;IACD,MAAM,gBAAgB,GAAG,MAAM,CAAC;IAChC,MAAM,iBAAiB,GAAG,OAAO,CAAC;IAClC,MAAM,oBAAoB,GAAG,WAAW,CAAC;IACzC,IAAI,eAAe,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE;QAChD,eAAe,GAAG,eAAe,CAAC,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;KAC7E;IACD,IAAI,eAAe,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE;QACjD,eAAe,GAAG,eAAe,CAAC,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;KAC9E;IACD,IAAI,eAAe,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE;QACpD,eAAe,GAAG,eAAe,CAAC,SAAS,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;KACjF;IACD,OAAO,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACpC,CAAC","sourcesContent":["import assert from 'assert';\n\nimport { Platform } from '@expo/config';\nimport { Job } from '@expo/eas-build-job';\nimport { BuildFunction, BuildStepInput, BuildStepInputValueTypeName } from '@expo/steps';\nimport spawn from '@expo/turtle-spawn';\n\nimport { PackageManager, resolvePackageManager } from '../../utils/packageManager';\n\nimport { installNodeModules } from './installNodeModules';\n\ntype PrebuildOptions = {\n clean?: boolean;\n};\n\nexport function createPrebuildBuildFunction(): BuildFunction {\n return new BuildFunction({\n namespace: 'eas',\n id: 'prebuild',\n name: 'Prebuild',\n inputProviders: [\n BuildStepInput.createProvider({\n id: 'clean',\n defaultValue: false,\n allowedValueTypeName: BuildStepInputValueTypeName.BOOLEAN,\n required: true,\n }),\n BuildStepInput.createProvider({\n id: 'apple_team_id',\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n required: false,\n }),\n ],\n fn: async (stepCtx, { inputs, env }) => {\n const { logger } = stepCtx;\n const appleTeamId = inputs.apple_team_id.value as string | undefined;\n const packageManager = resolvePackageManager(stepCtx.global.projectTargetDirectory);\n\n assert(stepCtx.global.staticContext.job, 'Job is not defined');\n const job = stepCtx.global.staticContext.job as Job;\n const prebuildCommandArgs = getPrebuildCommandArgs(job, {\n clean: inputs.clean.value as boolean,\n });\n const argsWithExpo = ['expo', ...prebuildCommandArgs];\n const options = {\n cwd: stepCtx.workingDirectory,\n logger,\n env: {\n EXPO_IMAGE_UTILS_NO_SHARP: '1',\n ...env,\n ...(appleTeamId ? { APPLE_TEAM_ID: appleTeamId } : {}),\n },\n };\n if (packageManager === PackageManager.NPM) {\n await spawn('npx', argsWithExpo, options);\n } else if (packageManager === PackageManager.YARN) {\n await spawn('yarn', argsWithExpo, options);\n } else if (packageManager === PackageManager.PNPM) {\n await spawn('pnpm', argsWithExpo, options);\n } else {\n throw new Error(`Unsupported package manager: ${packageManager}`);\n }\n await installNodeModules(stepCtx, env);\n },\n });\n}\n\nfunction getPrebuildCommandArgs(job: Job, { clean }: PrebuildOptions): string[] {\n if (job.experimental?.prebuildCommand) {\n return sanitizeUserDefinedPrebuildCommand(job.experimental.prebuildCommand, job.platform, {\n clean,\n });\n }\n return ['prebuild', '--no-install', '--platform', job.platform, ...(clean ? ['--clean'] : [])];\n}\n\n// TODO: deprecate prebuildCommand in eas.json\nfunction sanitizeUserDefinedPrebuildCommand(\n userDefinedPrebuildCommand: string,\n platform: Platform,\n { clean }: PrebuildOptions\n): string[] {\n let prebuildCommand = userDefinedPrebuildCommand;\n if (!prebuildCommand.match(/(?:--platform| -p)/)) {\n prebuildCommand = `${prebuildCommand} --platform ${platform}`;\n }\n if (clean) {\n prebuildCommand = `${prebuildCommand} --clean`;\n }\n const npxCommandPrefix = 'npx ';\n const expoCommandPrefix = 'expo ';\n const expoCliCommandPrefix = 'expo-cli ';\n if (prebuildCommand.startsWith(npxCommandPrefix)) {\n prebuildCommand = prebuildCommand.substring(npxCommandPrefix.length).trim();\n }\n if (prebuildCommand.startsWith(expoCommandPrefix)) {\n prebuildCommand = prebuildCommand.substring(expoCommandPrefix.length).trim();\n }\n if (prebuildCommand.startsWith(expoCliCommandPrefix)) {\n prebuildCommand = prebuildCommand.substring(expoCliCommandPrefix.length).trim();\n }\n return prebuildCommand.split(' ');\n}\n"]}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.resolveAppleTeamIdFromCredentialsFunction = void 0;
|
|
7
|
+
const steps_1 = require("@expo/steps");
|
|
8
|
+
const manager_1 = __importDefault(require("../utils/ios/credentials/manager"));
|
|
9
|
+
const credentials_1 = require("../utils/ios/credentials/credentials");
|
|
10
|
+
function resolveAppleTeamIdFromCredentialsFunction() {
|
|
11
|
+
return new steps_1.BuildFunction({
|
|
12
|
+
namespace: 'eas',
|
|
13
|
+
id: 'resolve_apple_team_id_from_credentials',
|
|
14
|
+
name: 'Resolve Apple team ID from credentials',
|
|
15
|
+
inputProviders: [
|
|
16
|
+
steps_1.BuildStepInput.createProvider({
|
|
17
|
+
id: 'credentials',
|
|
18
|
+
required: true,
|
|
19
|
+
allowedValueTypeName: steps_1.BuildStepInputValueTypeName.JSON,
|
|
20
|
+
defaultValue: '${ eas.job.secrets.buildCredentials }',
|
|
21
|
+
}),
|
|
22
|
+
],
|
|
23
|
+
outputProviders: [
|
|
24
|
+
steps_1.BuildStepOutput.createProvider({
|
|
25
|
+
id: 'apple_team_id',
|
|
26
|
+
required: true,
|
|
27
|
+
}),
|
|
28
|
+
],
|
|
29
|
+
fn: async (stepCtx, { inputs, outputs }) => {
|
|
30
|
+
const rawCredentialsInput = inputs.credentials.value;
|
|
31
|
+
const { value, error } = credentials_1.IosBuildCredentialsSchema.validate(rawCredentialsInput, {
|
|
32
|
+
stripUnknown: true,
|
|
33
|
+
convert: true,
|
|
34
|
+
abortEarly: false,
|
|
35
|
+
});
|
|
36
|
+
if (error) {
|
|
37
|
+
throw error;
|
|
38
|
+
}
|
|
39
|
+
const credentialsManager = new manager_1.default(value);
|
|
40
|
+
const credentials = await credentialsManager.prepare(stepCtx.logger);
|
|
41
|
+
stepCtx.logger.info(`Using Apple Team ID: ${credentials.teamId}`);
|
|
42
|
+
outputs.apple_team_id.set(credentials.teamId);
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
exports.resolveAppleTeamIdFromCredentialsFunction = resolveAppleTeamIdFromCredentialsFunction;
|
|
47
|
+
//# sourceMappingURL=resolveAppleTeamIdFromCredentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveAppleTeamIdFromCredentials.js","sourceRoot":"","sources":["../../../src/steps/functions/resolveAppleTeamIdFromCredentials.ts"],"names":[],"mappings":";;;;;;AAAA,uCAKqB;AAErB,+EAAqE;AACrE,sEAAiF;AAEjF,SAAgB,yCAAyC;IACvD,OAAO,IAAI,qBAAa,CAAC;QACvB,SAAS,EAAE,KAAK;QAChB,EAAE,EAAE,wCAAwC;QAC5C,IAAI,EAAE,wCAAwC;QAC9C,cAAc,EAAE;YACd,sBAAc,CAAC,cAAc,CAAC;gBAC5B,EAAE,EAAE,aAAa;gBACjB,QAAQ,EAAE,IAAI;gBACd,oBAAoB,EAAE,mCAA2B,CAAC,IAAI;gBACtD,YAAY,EAAE,uCAAuC;aACtD,CAAC;SACH;QACD,eAAe,EAAE;YACf,uBAAe,CAAC,cAAc,CAAC;gBAC7B,EAAE,EAAE,eAAe;gBACnB,QAAQ,EAAE,IAAI;aACf,CAAC;SACH;QACD,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;YACzC,MAAM,mBAAmB,GAAG,MAAM,CAAC,WAAW,CAAC,KAA4B,CAAC;YAC5E,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,uCAAyB,CAAC,QAAQ,CAAC,mBAAmB,EAAE;gBAC/E,YAAY,EAAE,IAAI;gBAClB,OAAO,EAAE,IAAI;gBACb,UAAU,EAAE,KAAK;aAClB,CAAC,CAAC;YACH,IAAI,KAAK,EAAE;gBACT,MAAM,KAAK,CAAC;aACb;YAED,MAAM,kBAAkB,GAAG,IAAI,iBAAqB,CAAC,KAAK,CAAC,CAAC;YAC5D,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAErE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;YAClE,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAChD,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AArCD,8FAqCC","sourcesContent":["import {\n BuildFunction,\n BuildStepInput,\n BuildStepInputValueTypeName,\n BuildStepOutput,\n} from '@expo/steps';\n\nimport IosCredentialsManager from '../utils/ios/credentials/manager';\nimport { IosBuildCredentialsSchema } from '../utils/ios/credentials/credentials';\n\nexport function resolveAppleTeamIdFromCredentialsFunction(): BuildFunction {\n return new BuildFunction({\n namespace: 'eas',\n id: 'resolve_apple_team_id_from_credentials',\n name: 'Resolve Apple team ID from credentials',\n inputProviders: [\n BuildStepInput.createProvider({\n id: 'credentials',\n required: true,\n allowedValueTypeName: BuildStepInputValueTypeName.JSON,\n defaultValue: '${ eas.job.secrets.buildCredentials }',\n }),\n ],\n outputProviders: [\n BuildStepOutput.createProvider({\n id: 'apple_team_id',\n required: true,\n }),\n ],\n fn: async (stepCtx, { inputs, outputs }) => {\n const rawCredentialsInput = inputs.credentials.value as Record<string, any>;\n const { value, error } = IosBuildCredentialsSchema.validate(rawCredentialsInput, {\n stripUnknown: true,\n convert: true,\n abortEarly: false,\n });\n if (error) {\n throw error;\n }\n\n const credentialsManager = new IosCredentialsManager(value);\n const credentials = await credentialsManager.prepare(stepCtx.logger);\n\n stepCtx.logger.info(`Using Apple Team ID: ${credentials.teamId}`);\n outputs.apple_team_id.set(credentials.teamId);\n },\n });\n}\n"]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runFastlaneFunction = void 0;
|
|
4
|
+
const steps_1 = require("@expo/steps");
|
|
5
|
+
const fastlane_1 = require("../utils/ios/fastlane");
|
|
6
|
+
function runFastlaneFunction() {
|
|
7
|
+
return new steps_1.BuildFunction({
|
|
8
|
+
namespace: 'eas',
|
|
9
|
+
id: 'run_fastlane',
|
|
10
|
+
name: 'Run fastlane',
|
|
11
|
+
fn: async (stepCtx, { env }) => {
|
|
12
|
+
await (0, fastlane_1.runFastlaneGym)({
|
|
13
|
+
workingDir: stepCtx.workingDirectory,
|
|
14
|
+
env: Object.keys(env).reduce((acc, key) => {
|
|
15
|
+
var _a;
|
|
16
|
+
acc[key] = (_a = env[key]) !== null && _a !== void 0 ? _a : '';
|
|
17
|
+
return acc;
|
|
18
|
+
}, {}),
|
|
19
|
+
logger: stepCtx.logger,
|
|
20
|
+
buildLogsDirectory: stepCtx.global.buildLogsDirectory,
|
|
21
|
+
});
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
exports.runFastlaneFunction = runFastlaneFunction;
|
|
26
|
+
//# sourceMappingURL=runFastlane.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runFastlane.js","sourceRoot":"","sources":["../../../src/steps/functions/runFastlane.ts"],"names":[],"mappings":";;;AAAA,uCAA4C;AAE5C,oDAAuD;AAEvD,SAAgB,mBAAmB;IACjC,OAAO,IAAI,qBAAa,CAAC;QACvB,SAAS,EAAE,KAAK;QAChB,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,cAAc;QACpB,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;YAC7B,MAAM,IAAA,yBAAc,EAAC;gBACnB,UAAU,EAAE,OAAO,CAAC,gBAAgB;gBACpC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;;oBACxC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAA,GAAG,CAAC,GAAG,CAAC,mCAAI,EAAE,CAAC;oBAC1B,OAAO,GAAG,CAAC;gBACb,CAAC,EAAE,EAA4B,CAAC;gBAChC,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,kBAAkB,EAAE,OAAO,CAAC,MAAM,CAAC,kBAAkB;aACtD,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAjBD,kDAiBC","sourcesContent":["import { BuildFunction } from '@expo/steps';\n\nimport { runFastlaneGym } from '../utils/ios/fastlane';\n\nexport function runFastlaneFunction(): BuildFunction {\n return new BuildFunction({\n namespace: 'eas',\n id: 'run_fastlane',\n name: 'Run fastlane',\n fn: async (stepCtx, { env }) => {\n await runFastlaneGym({\n workingDir: stepCtx.workingDirectory,\n env: Object.keys(env).reduce((acc, key) => {\n acc[key] = env[key] ?? '';\n return acc;\n }, {} as Record<string, string>),\n logger: stepCtx.logger,\n buildLogsDirectory: stepCtx.global.buildLogsDirectory,\n });\n },\n });\n}\n"]}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.runGradleFunction = void 0;
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
const assert_1 = __importDefault(require("assert"));
|
|
9
|
+
const steps_1 = require("@expo/steps");
|
|
10
|
+
const gradle_1 = require("../utils/android/gradle");
|
|
11
|
+
function runGradleFunction() {
|
|
12
|
+
return new steps_1.BuildFunction({
|
|
13
|
+
namespace: 'eas',
|
|
14
|
+
id: 'run_gradle',
|
|
15
|
+
name: 'Run gradle',
|
|
16
|
+
inputProviders: [
|
|
17
|
+
steps_1.BuildStepInput.createProvider({
|
|
18
|
+
id: 'command',
|
|
19
|
+
required: false,
|
|
20
|
+
allowedValueTypeName: steps_1.BuildStepInputValueTypeName.STRING,
|
|
21
|
+
}),
|
|
22
|
+
],
|
|
23
|
+
fn: async (stepCtx, { env, inputs }) => {
|
|
24
|
+
(0, assert_1.default)(stepCtx.global.staticContext.job, 'Job is required');
|
|
25
|
+
const command = (0, gradle_1.resolveGradleCommand)(stepCtx.global.staticContext.job, inputs.command.value);
|
|
26
|
+
await (0, gradle_1.runGradleCommand)({
|
|
27
|
+
logger: stepCtx.logger,
|
|
28
|
+
gradleCommand: command,
|
|
29
|
+
androidDir: path_1.default.join(stepCtx.workingDirectory, 'android'),
|
|
30
|
+
env,
|
|
31
|
+
});
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
exports.runGradleFunction = runGradleFunction;
|
|
36
|
+
//# sourceMappingURL=runGradle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runGradle.js","sourceRoot":"","sources":["../../../src/steps/functions/runGradle.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,oDAA4B;AAE5B,uCAAyF;AAEzF,oDAAiF;AAEjF,SAAgB,iBAAiB;IAC/B,OAAO,IAAI,qBAAa,CAAC;QACvB,SAAS,EAAE,KAAK;QAChB,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,YAAY;QAClB,cAAc,EAAE;YACd,sBAAc,CAAC,cAAc,CAAC;gBAC5B,EAAE,EAAE,SAAS;gBACb,QAAQ,EAAE,KAAK;gBACf,oBAAoB,EAAE,mCAA2B,CAAC,MAAM;aACzD,CAAC;SACH;QACD,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;YACrC,IAAA,gBAAM,EAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;YAC5D,MAAM,OAAO,GAAG,IAAA,6BAAoB,EAClC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,EAChC,MAAM,CAAC,OAAO,CAAC,KAA2B,CAC3C,CAAC;YACF,MAAM,IAAA,yBAAgB,EAAC;gBACrB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,aAAa,EAAE,OAAO;gBACtB,UAAU,EAAE,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,SAAS,CAAC;gBAC1D,GAAG;aACJ,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AA1BD,8CA0BC","sourcesContent":["import path from 'path';\nimport assert from 'assert';\n\nimport { BuildFunction, BuildStepInput, BuildStepInputValueTypeName } from '@expo/steps';\n\nimport { resolveGradleCommand, runGradleCommand } from '../utils/android/gradle';\n\nexport function runGradleFunction(): BuildFunction {\n return new BuildFunction({\n namespace: 'eas',\n id: 'run_gradle',\n name: 'Run gradle',\n inputProviders: [\n BuildStepInput.createProvider({\n id: 'command',\n required: false,\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n }),\n ],\n fn: async (stepCtx, { env, inputs }) => {\n assert(stepCtx.global.staticContext.job, 'Job is required');\n const command = resolveGradleCommand(\n stepCtx.global.staticContext.job,\n inputs.command.value as string | undefined\n );\n await runGradleCommand({\n logger: stepCtx.logger,\n gradleCommand: command,\n androidDir: path.join(stepCtx.workingDirectory, 'android'),\n env,\n });\n },\n });\n}\n"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { BuildFunction } from '@expo/steps';
|
|
2
|
-
import { CustomBuildContext } from '
|
|
2
|
+
import { CustomBuildContext } from '../../customBuildContext';
|
|
3
3
|
export declare function createUploadArtifactBuildFunction(ctx: CustomBuildContext): BuildFunction;
|
|
@@ -7,7 +7,7 @@ exports.createUploadArtifactBuildFunction = void 0;
|
|
|
7
7
|
const path_1 = __importDefault(require("path"));
|
|
8
8
|
const steps_1 = require("@expo/steps");
|
|
9
9
|
const nullthrows_1 = __importDefault(require("nullthrows"));
|
|
10
|
-
const context_1 = require("
|
|
10
|
+
const context_1 = require("../../context");
|
|
11
11
|
var BuildArtifactType;
|
|
12
12
|
(function (BuildArtifactType) {
|
|
13
13
|
BuildArtifactType["APPLICATION_ARCHIVE"] = "application-archive";
|
|
@@ -15,7 +15,7 @@ var BuildArtifactType;
|
|
|
15
15
|
})(BuildArtifactType || (BuildArtifactType = {}));
|
|
16
16
|
function createUploadArtifactBuildFunction(ctx) {
|
|
17
17
|
return new steps_1.BuildFunction({
|
|
18
|
-
namespace: '
|
|
18
|
+
namespace: 'eas',
|
|
19
19
|
id: 'upload_artifact',
|
|
20
20
|
name: 'Upload artifact',
|
|
21
21
|
inputProviders: [
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uploadArtifact.js","sourceRoot":"","sources":["../../../src/steps/functions/uploadArtifact.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAExB,uCAAyF;AACzF,4DAAoC;AAEpC,2CAA6C;AAG7C,IAAK,iBAGJ;AAHD,WAAK,iBAAiB;IACpB,gEAA2C,CAAA;IAC3C,sDAAiC,CAAA;AACnC,CAAC,EAHI,iBAAiB,KAAjB,iBAAiB,QAGrB;AAED,SAAgB,iCAAiC,CAAC,GAAuB;IACvE,OAAO,IAAI,qBAAa,CAAC;QACvB,SAAS,EAAE,KAAK;QAChB,EAAE,EAAE,iBAAiB;QACrB,IAAI,EAAE,iBAAiB;QACvB,cAAc,EAAE;YACd,sBAAc,CAAC,cAAc,CAAC;gBAC5B,EAAE,EAAE,MAAM;gBACV,YAAY,EAAE,iBAAiB,CAAC,mBAAmB;gBACnD,aAAa,EAAE,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,cAAc,CAAC;gBACxF,QAAQ,EAAE,IAAI;gBACd,oBAAoB,EAAE,mCAA2B,CAAC,MAAM;aACzD,CAAC;YACF,sBAAc,CAAC,cAAc,CAAC;gBAC5B,EAAE,EAAE,MAAM;gBACV,QAAQ,EAAE,IAAI;gBACd,oBAAoB,EAAE,mCAA2B,CAAC,MAAM;aACzD,CAAC;SACH;QACD,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;YACjC,MAAM,YAAY,GAAG,mCAAmC,CACtD,IAAA,oBAAU,EAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CACzC,CAAC;YACF,MAAM,QAAQ,GAAG,cAAI,CAAC,OAAO,CAC3B,QAAQ,CAAC,gBAAgB,EACzB,IAAA,oBAAU,EAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CACzC,CAAC;YACF,MAAM,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QAClF,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AA9BD,8EA8BC;AAED,SAAS,mCAAmC,CAAC,KAAa;IACxD,MAAM,aAAa,GAAa,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACjE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;QAClC,MAAM,IAAI,KAAK,CACb,IAAI,KAAK,mDAAmD,aAAa;aACtE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;aACpB,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAC;KACH;IACD,OAAO,KAAK,KAAK,iBAAiB,CAAC,mBAAmB;QACpD,CAAC,CAAC,sBAAY,CAAC,mBAAmB;QAClC,CAAC,CAAC,sBAAY,CAAC,eAAe,CAAC;AACnC,CAAC","sourcesContent":["import path from 'path';\n\nimport { BuildFunction, BuildStepInput, BuildStepInputValueTypeName } from '@expo/steps';\nimport nullthrows from 'nullthrows';\n\nimport { ArtifactType } from '../../context';\nimport { CustomBuildContext } from '../../customBuildContext';\n\nenum BuildArtifactType {\n APPLICATION_ARCHIVE = 'application-archive',\n BUILD_ARTIFACT = 'build-artifact',\n}\n\nexport function createUploadArtifactBuildFunction(ctx: CustomBuildContext): BuildFunction {\n return new BuildFunction({\n namespace: 'eas',\n id: 'upload_artifact',\n name: 'Upload artifact',\n inputProviders: [\n BuildStepInput.createProvider({\n id: 'type',\n defaultValue: BuildArtifactType.APPLICATION_ARCHIVE,\n allowedValues: [BuildArtifactType.APPLICATION_ARCHIVE, BuildArtifactType.BUILD_ARTIFACT],\n required: true,\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n }),\n BuildStepInput.createProvider({\n id: 'path',\n required: true,\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n }),\n ],\n fn: async (stepsCtx, { inputs }) => {\n const artifactType = validateAndConvertBuildArtifactType(\n nullthrows(inputs.type.value).toString()\n );\n const filePath = path.resolve(\n stepsCtx.workingDirectory,\n nullthrows(inputs.path.value).toString()\n );\n await ctx.runtimeApi.uploadArtifacts(artifactType, [filePath], stepsCtx.logger);\n },\n });\n}\n\nfunction validateAndConvertBuildArtifactType(input: string): ArtifactType {\n const allowedValues: string[] = Object.values(BuildArtifactType);\n if (!allowedValues.includes(input)) {\n throw new Error(\n `\"${input}\" is not allowed artifact type, allowed values: ${allowedValues\n .map((i) => `\"${i}\"`)\n .join(', ')}`\n );\n }\n return input === BuildArtifactType.APPLICATION_ARCHIVE\n ? ArtifactType.APPLICATION_ARCHIVE\n : ArtifactType.BUILD_ARTIFACTS;\n}\n"]}
|