@ankhorage/deploy 0.4.0 → 0.5.0
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/CHANGELOG.md +6 -0
- package/README.md +1 -1
- package/dist/domain/AndroidDeploymentIntent.d.ts +10 -0
- package/dist/domain/AndroidDeploymentIntent.d.ts.map +1 -0
- package/dist/domain/AndroidDeploymentIntent.js +3 -0
- package/dist/domain/AndroidDeploymentIntent.js.map +1 -0
- package/dist/domain/AndroidDeploymentPublication.d.ts +12 -0
- package/dist/domain/AndroidDeploymentPublication.d.ts.map +1 -0
- package/dist/domain/AndroidDeploymentPublication.js +2 -0
- package/dist/domain/AndroidDeploymentPublication.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/project/android/ProjectAndroidDeploymentAccess.d.ts +7 -0
- package/dist/project/android/ProjectAndroidDeploymentAccess.d.ts.map +1 -0
- package/dist/project/android/ProjectAndroidDeploymentAccess.js +2 -0
- package/dist/project/android/ProjectAndroidDeploymentAccess.js.map +1 -0
- package/dist/project/android/ProjectAndroidDeploymentExecution.d.ts +12 -0
- package/dist/project/android/ProjectAndroidDeploymentExecution.d.ts.map +1 -0
- package/dist/project/android/ProjectAndroidDeploymentExecution.js +2 -0
- package/dist/project/android/ProjectAndroidDeploymentExecution.js.map +1 -0
- package/dist/project/android/ProjectAndroidDeploymentInspection.d.ts +21 -0
- package/dist/project/android/ProjectAndroidDeploymentInspection.d.ts.map +1 -0
- package/dist/project/android/ProjectAndroidDeploymentInspection.js +2 -0
- package/dist/project/android/ProjectAndroidDeploymentInspection.js.map +1 -0
- package/dist/project/android/ProjectAndroidDeploymentRuntime.d.ts +13 -0
- package/dist/project/android/ProjectAndroidDeploymentRuntime.d.ts.map +1 -0
- package/dist/project/android/ProjectAndroidDeploymentRuntime.js +12 -0
- package/dist/project/android/ProjectAndroidDeploymentRuntime.js.map +1 -0
- package/dist/project/android/ProjectAndroidExecutionState.d.ts +10 -0
- package/dist/project/android/ProjectAndroidExecutionState.d.ts.map +1 -0
- package/dist/project/android/ProjectAndroidExecutionState.js +2 -0
- package/dist/project/android/ProjectAndroidExecutionState.js.map +1 -0
- package/dist/project/android/createProjectAndroidDeploymentPlan.d.ts +4 -0
- package/dist/project/android/createProjectAndroidDeploymentPlan.d.ts.map +1 -0
- package/dist/project/android/createProjectAndroidDeploymentPlan.js +13 -0
- package/dist/project/android/createProjectAndroidDeploymentPlan.js.map +1 -0
- package/dist/project/android/executeProjectAndroidDeployment.d.ts +12 -0
- package/dist/project/android/executeProjectAndroidDeployment.d.ts.map +1 -0
- package/dist/project/android/executeProjectAndroidDeployment.js +164 -0
- package/dist/project/android/executeProjectAndroidDeployment.js.map +1 -0
- package/dist/project/android/executeProjectAndroidStep.d.ts +15 -0
- package/dist/project/android/executeProjectAndroidStep.d.ts.map +1 -0
- package/dist/project/android/executeProjectAndroidStep.js +124 -0
- package/dist/project/android/executeProjectAndroidStep.js.map +1 -0
- package/dist/project/android/inspectProjectAndroidDeployment.d.ts +11 -0
- package/dist/project/android/inspectProjectAndroidDeployment.d.ts.map +1 -0
- package/dist/project/android/inspectProjectAndroidDeployment.js +90 -0
- package/dist/project/android/inspectProjectAndroidDeployment.js.map +1 -0
- package/dist/project/android/inspectProjectAndroidEasSetup.d.ts +5 -0
- package/dist/project/android/inspectProjectAndroidEasSetup.d.ts.map +1 -0
- package/dist/project/android/inspectProjectAndroidEasSetup.js +18 -0
- package/dist/project/android/inspectProjectAndroidEasSetup.js.map +1 -0
- package/dist/project/android/inspectProjectAndroidGooglePlay.d.ts +16 -0
- package/dist/project/android/inspectProjectAndroidGooglePlay.d.ts.map +1 -0
- package/dist/project/android/inspectProjectAndroidGooglePlay.js +52 -0
- package/dist/project/android/inspectProjectAndroidGooglePlay.js.map +1 -0
- package/dist/project/android/normalizeProjectAndroidDesired.d.ts +13 -0
- package/dist/project/android/normalizeProjectAndroidDesired.d.ts.map +1 -0
- package/dist/project/android/normalizeProjectAndroidDesired.js +25 -0
- package/dist/project/android/normalizeProjectAndroidDesired.js.map +1 -0
- package/dist/project/android/readCurrentProjectAndroidDeployment.d.ts +8 -0
- package/dist/project/android/readCurrentProjectAndroidDeployment.d.ts.map +1 -0
- package/dist/project/android/readCurrentProjectAndroidDeployment.js +44 -0
- package/dist/project/android/readCurrentProjectAndroidDeployment.js.map +1 -0
- package/dist/project/android/recordProjectAndroidDeployment.d.ts +21 -0
- package/dist/project/android/recordProjectAndroidDeployment.d.ts.map +1 -0
- package/dist/project/android/recordProjectAndroidDeployment.js +36 -0
- package/dist/project/android/recordProjectAndroidDeployment.js.map +1 -0
- package/dist/project/android/resolveProjectAndroidDeploymentAccess.d.ts +9 -0
- package/dist/project/android/resolveProjectAndroidDeploymentAccess.d.ts.map +1 -0
- package/dist/project/android/resolveProjectAndroidDeploymentAccess.js +7 -0
- package/dist/project/android/resolveProjectAndroidDeploymentAccess.js.map +1 -0
- package/dist/project/android/scopeProjectAndroidDeploymentAccess.d.ts +3 -0
- package/dist/project/android/scopeProjectAndroidDeploymentAccess.d.ts.map +1 -0
- package/dist/project/android/scopeProjectAndroidDeploymentAccess.js +7 -0
- package/dist/project/android/scopeProjectAndroidDeploymentAccess.js.map +1 -0
- package/dist/project/areDeploymentPlansEqual.d.ts +3 -0
- package/dist/project/areDeploymentPlansEqual.d.ts.map +1 -0
- package/dist/project/areDeploymentPlansEqual.js +4 -0
- package/dist/project/areDeploymentPlansEqual.js.map +1 -0
- package/dist/project/index.d.ts +6 -0
- package/dist/project/index.d.ts.map +1 -1
- package/dist/project/index.js +3 -0
- package/dist/project/index.js.map +1 -1
- package/dist/project/setupBlockingOutcome.d.ts +14 -0
- package/dist/project/setupBlockingOutcome.d.ts.map +1 -0
- package/dist/project/setupBlockingOutcome.js +38 -0
- package/dist/project/setupBlockingOutcome.js.map +1 -0
- package/dist/project/web/areDeploymentPlansEqual.d.ts +1 -2
- package/dist/project/web/areDeploymentPlansEqual.d.ts.map +1 -1
- package/dist/project/web/areDeploymentPlansEqual.js +1 -3
- package/dist/project/web/areDeploymentPlansEqual.js.map +1 -1
- package/dist/project/web/inspectProjectWebSetup.d.ts.map +1 -1
- package/dist/project/web/inspectProjectWebSetup.js +7 -2
- package/dist/project/web/inspectProjectWebSetup.js.map +1 -1
- package/dist/project/web/setupBlockingOutcome.d.ts.map +1 -1
- package/dist/project/web/setupBlockingOutcome.js +9 -31
- package/dist/project/web/setupBlockingOutcome.js.map +1 -1
- package/dist/providers/eas/android/EasAndroidBuildArtifact.d.ts +8 -0
- package/dist/providers/eas/android/EasAndroidBuildArtifact.d.ts.map +1 -0
- package/dist/providers/eas/android/EasAndroidBuildArtifact.js +2 -0
- package/dist/providers/eas/android/EasAndroidBuildArtifact.js.map +1 -0
- package/dist/providers/eas/android/buildAndroidWithEas.d.ts +25 -0
- package/dist/providers/eas/android/buildAndroidWithEas.d.ts.map +1 -0
- package/dist/providers/eas/android/buildAndroidWithEas.js +58 -0
- package/dist/providers/eas/android/buildAndroidWithEas.js.map +1 -0
- package/dist/providers/eas/android/generateLocalAndroidFingerprint.d.ts +15 -0
- package/dist/providers/eas/android/generateLocalAndroidFingerprint.d.ts.map +1 -0
- package/dist/providers/eas/android/generateLocalAndroidFingerprint.js +51 -0
- package/dist/providers/eas/android/generateLocalAndroidFingerprint.js.map +1 -0
- package/dist/providers/eas/android/inspectEasAndroidConfig.d.ts +28 -0
- package/dist/providers/eas/android/inspectEasAndroidConfig.d.ts.map +1 -0
- package/dist/providers/eas/android/inspectEasAndroidConfig.js +40 -0
- package/dist/providers/eas/android/inspectEasAndroidConfig.js.map +1 -0
- package/dist/providers/eas/android/parseEasAndroidBuild.d.ts +3 -0
- package/dist/providers/eas/android/parseEasAndroidBuild.d.ts.map +1 -0
- package/dist/providers/eas/android/parseEasAndroidBuild.js +45 -0
- package/dist/providers/eas/android/parseEasAndroidBuild.js.map +1 -0
- package/dist/providers/eas/android/parseEasAndroidConfig.d.ts +3 -0
- package/dist/providers/eas/android/parseEasAndroidConfig.d.ts.map +1 -0
- package/dist/providers/eas/android/parseEasAndroidConfig.js +59 -0
- package/dist/providers/eas/android/parseEasAndroidConfig.js.map +1 -0
- package/dist/providers/eas/createEasSetupAdapter.d.ts +13 -0
- package/dist/providers/eas/createEasSetupAdapter.d.ts.map +1 -0
- package/dist/providers/eas/createEasSetupAdapter.js +72 -0
- package/dist/providers/eas/createEasSetupAdapter.js.map +1 -0
- package/dist/providers/eas/publishWebToEas.js +1 -1
- package/dist/providers/eas/publishWebToEas.js.map +1 -1
- package/dist/providers/eas/resolveEasProcessEnvironment.d.ts +2 -0
- package/dist/providers/eas/resolveEasProcessEnvironment.d.ts.map +1 -1
- package/dist/providers/eas/resolveEasProcessEnvironment.js +15 -14
- package/dist/providers/eas/resolveEasProcessEnvironment.js.map +1 -1
- package/dist/providers/googlePlay/GooglePlayTokenFactory.d.ts +7 -0
- package/dist/providers/googlePlay/GooglePlayTokenFactory.d.ts.map +1 -0
- package/dist/providers/googlePlay/GooglePlayTokenFactory.js +14 -0
- package/dist/providers/googlePlay/GooglePlayTokenFactory.js.map +1 -0
- package/dist/providers/googlePlay/GooglePlayTrackState.d.ts +12 -0
- package/dist/providers/googlePlay/GooglePlayTrackState.d.ts.map +1 -0
- package/dist/providers/googlePlay/GooglePlayTrackState.js +35 -0
- package/dist/providers/googlePlay/GooglePlayTrackState.js.map +1 -0
- package/dist/providers/googlePlay/GooglePlayTransport.d.ts +15 -0
- package/dist/providers/googlePlay/GooglePlayTransport.d.ts.map +1 -0
- package/dist/providers/googlePlay/GooglePlayTransport.js +12 -0
- package/dist/providers/googlePlay/GooglePlayTransport.js.map +1 -0
- package/dist/providers/googlePlay/commitGooglePlayEdit.d.ts +8 -0
- package/dist/providers/googlePlay/commitGooglePlayEdit.d.ts.map +1 -0
- package/dist/providers/googlePlay/commitGooglePlayEdit.js +17 -0
- package/dist/providers/googlePlay/commitGooglePlayEdit.js.map +1 -0
- package/dist/providers/googlePlay/createGooglePlaySetupAdapter.d.ts +6 -0
- package/dist/providers/googlePlay/createGooglePlaySetupAdapter.d.ts.map +1 -0
- package/dist/providers/googlePlay/createGooglePlaySetupAdapter.js +32 -0
- package/dist/providers/googlePlay/createGooglePlaySetupAdapter.js.map +1 -0
- package/dist/providers/googlePlay/downloadAndroidArchive.d.ts +9 -0
- package/dist/providers/googlePlay/downloadAndroidArchive.d.ts.map +1 -0
- package/dist/providers/googlePlay/downloadAndroidArchive.js +28 -0
- package/dist/providers/googlePlay/downloadAndroidArchive.js.map +1 -0
- package/dist/providers/googlePlay/googlePlayUrls.d.ts +6 -0
- package/dist/providers/googlePlay/googlePlayUrls.d.ts.map +1 -0
- package/dist/providers/googlePlay/googlePlayUrls.js +18 -0
- package/dist/providers/googlePlay/googlePlayUrls.js.map +1 -0
- package/dist/providers/googlePlay/insertGooglePlayEdit.d.ts +7 -0
- package/dist/providers/googlePlay/insertGooglePlayEdit.d.ts.map +1 -0
- package/dist/providers/googlePlay/insertGooglePlayEdit.js +32 -0
- package/dist/providers/googlePlay/insertGooglePlayEdit.js.map +1 -0
- package/dist/providers/googlePlay/inspectGooglePlayTrack.d.ts +27 -0
- package/dist/providers/googlePlay/inspectGooglePlayTrack.d.ts.map +1 -0
- package/dist/providers/googlePlay/inspectGooglePlayTrack.js +80 -0
- package/dist/providers/googlePlay/inspectGooglePlayTrack.js.map +1 -0
- package/dist/providers/googlePlay/publishAndroidToGooglePlay.d.ts +32 -0
- package/dist/providers/googlePlay/publishAndroidToGooglePlay.d.ts.map +1 -0
- package/dist/providers/googlePlay/publishAndroidToGooglePlay.js +74 -0
- package/dist/providers/googlePlay/publishAndroidToGooglePlay.js.map +1 -0
- package/dist/providers/googlePlay/resolveGooglePlayAccessToken.d.ts +17 -0
- package/dist/providers/googlePlay/resolveGooglePlayAccessToken.d.ts.map +1 -0
- package/dist/providers/googlePlay/resolveGooglePlayAccessToken.js +62 -0
- package/dist/providers/googlePlay/resolveGooglePlayAccessToken.js.map +1 -0
- package/dist/providers/googlePlay/updateGooglePlayTrack.d.ts +12 -0
- package/dist/providers/googlePlay/updateGooglePlayTrack.d.ts.map +1 -0
- package/dist/providers/googlePlay/updateGooglePlayTrack.js +26 -0
- package/dist/providers/googlePlay/updateGooglePlayTrack.js.map +1 -0
- package/dist/providers/googlePlay/uploadGooglePlayBundle.d.ts +9 -0
- package/dist/providers/googlePlay/uploadGooglePlayBundle.d.ts.map +1 -0
- package/dist/providers/googlePlay/uploadGooglePlayBundle.js +34 -0
- package/dist/providers/googlePlay/uploadGooglePlayBundle.js.map +1 -0
- package/dist/providers/googlePlay/verifyGooglePlayPublication.d.ts +23 -0
- package/dist/providers/googlePlay/verifyGooglePlayPublication.d.ts.map +1 -0
- package/dist/providers/googlePlay/verifyGooglePlayPublication.js +31 -0
- package/dist/providers/googlePlay/verifyGooglePlayPublication.js.map +1 -0
- package/dist/targets/android/createAndroidDeploymentRevision.d.ts +3 -0
- package/dist/targets/android/createAndroidDeploymentRevision.d.ts.map +1 -0
- package/dist/targets/android/createAndroidDeploymentRevision.js +11 -0
- package/dist/targets/android/createAndroidDeploymentRevision.js.map +1 -0
- package/dist/targets/android/createAndroidTargetPlanContributor.d.ts +3 -0
- package/dist/targets/android/createAndroidTargetPlanContributor.d.ts.map +1 -0
- package/dist/targets/android/createAndroidTargetPlanContributor.js +26 -0
- package/dist/targets/android/createAndroidTargetPlanContributor.js.map +1 -0
- package/dist/targets/android/isAndroidDeploymentIntentValid.d.ts +3 -0
- package/dist/targets/android/isAndroidDeploymentIntentValid.d.ts.map +1 -0
- package/dist/targets/android/isAndroidDeploymentIntentValid.js +7 -0
- package/dist/targets/android/isAndroidDeploymentIntentValid.js.map +1 -0
- package/dist/targets/android/normalizeAndroidProviders.d.ts +16 -0
- package/dist/targets/android/normalizeAndroidProviders.d.ts.map +1 -0
- package/dist/targets/android/normalizeAndroidProviders.js +16 -0
- package/dist/targets/android/normalizeAndroidProviders.js.map +1 -0
- package/package.json +3 -2
- package/dist/providers/eas/createEasHostingSetupAdapter.d.ts +0 -7
- package/dist/providers/eas/createEasHostingSetupAdapter.d.ts.map +0 -1
- package/dist/providers/eas/createEasHostingSetupAdapter.js +0 -76
- package/dist/providers/eas/createEasHostingSetupAdapter.js.map +0 -1
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { buildAndroidWithEas } from '../../providers/eas/android/buildAndroidWithEas';
|
|
2
|
+
import { generateLocalAndroidFingerprint } from '../../providers/eas/android/generateLocalAndroidFingerprint';
|
|
3
|
+
import { inspectEasAndroidConfig } from '../../providers/eas/android/inspectEasAndroidConfig';
|
|
4
|
+
import { publishAndroidToGooglePlay } from '../../providers/googlePlay/publishAndroidToGooglePlay';
|
|
5
|
+
import { verifyGooglePlayPublication } from '../../providers/googlePlay/verifyGooglePlayPublication';
|
|
6
|
+
import { createAndroidDeploymentRevision } from '../../targets/android/createAndroidDeploymentRevision';
|
|
7
|
+
export async function executeProjectAndroidStep(options) {
|
|
8
|
+
switch (options.step.id) {
|
|
9
|
+
case 'android:prepare':
|
|
10
|
+
return prepareStep(options);
|
|
11
|
+
case 'android:build':
|
|
12
|
+
return buildStep(options);
|
|
13
|
+
case 'android:publish':
|
|
14
|
+
return publishStep(options);
|
|
15
|
+
case 'android:verify':
|
|
16
|
+
return verifyStep(options);
|
|
17
|
+
case 'android:remove':
|
|
18
|
+
return removeStep();
|
|
19
|
+
default:
|
|
20
|
+
return failed('ANDROID_STEP_UNSUPPORTED', 'Unsupported Android deployment step.');
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
async function prepareStep(options) {
|
|
24
|
+
const expected = options.inspection.desiredRevision;
|
|
25
|
+
if (expected === undefined)
|
|
26
|
+
return failed('ANDROID_REVISION_MISSING', 'Planned Android revision is missing.');
|
|
27
|
+
const config = await inspectEasAndroidConfig({
|
|
28
|
+
projectRoot: options.inspection.projectRoot,
|
|
29
|
+
packageName: options.packageName,
|
|
30
|
+
buildProfile: options.inspection.intent.buildProfile,
|
|
31
|
+
...options.access,
|
|
32
|
+
runProcess: options.runtime.runProcess,
|
|
33
|
+
});
|
|
34
|
+
if (config.status === 'action-required')
|
|
35
|
+
return { status: 'action-required', action: config.action };
|
|
36
|
+
if (config.status === 'failed')
|
|
37
|
+
return { status: 'failed', error: config.failure };
|
|
38
|
+
const fingerprint = await generateLocalAndroidFingerprint({
|
|
39
|
+
projectRoot: options.inspection.projectRoot,
|
|
40
|
+
profileEnvironment: config.config.profileEnvironment,
|
|
41
|
+
runProcess: options.runtime.runProcess,
|
|
42
|
+
});
|
|
43
|
+
if (fingerprint.status === 'failed')
|
|
44
|
+
return { status: 'failed', error: fingerprint.failure };
|
|
45
|
+
const revision = createAndroidDeploymentRevision(fingerprint.fingerprint, options.inspection.intent);
|
|
46
|
+
if (revision !== expected) {
|
|
47
|
+
return failed('ANDROID_SOURCE_CHANGED_AFTER_PLAN', 'Android source changed after the deployment plan was created.');
|
|
48
|
+
}
|
|
49
|
+
options.state.fingerprint = fingerprint.fingerprint;
|
|
50
|
+
return { status: 'completed' };
|
|
51
|
+
}
|
|
52
|
+
async function buildStep(options) {
|
|
53
|
+
if (options.state.fingerprint === null)
|
|
54
|
+
return failed('ANDROID_FINGERPRINT_MISSING', 'Prepared Android fingerprint is missing.');
|
|
55
|
+
const result = await buildAndroidWithEas({
|
|
56
|
+
projectRoot: options.inspection.projectRoot,
|
|
57
|
+
buildProfile: options.inspection.intent.buildProfile,
|
|
58
|
+
expectedFingerprint: options.state.fingerprint,
|
|
59
|
+
...options.access,
|
|
60
|
+
runProcess: options.runtime.runProcess,
|
|
61
|
+
});
|
|
62
|
+
if (result.status === 'action-required')
|
|
63
|
+
return { status: 'action-required', action: result.action };
|
|
64
|
+
if (result.status === 'failed')
|
|
65
|
+
return { status: 'failed', error: result.failure };
|
|
66
|
+
options.state.build = result.artifact;
|
|
67
|
+
return { status: 'completed' };
|
|
68
|
+
}
|
|
69
|
+
async function publishStep(options) {
|
|
70
|
+
const revision = options.inspection.desiredRevision;
|
|
71
|
+
if (options.state.build === null || revision === undefined) {
|
|
72
|
+
return failed('ANDROID_BUILD_MISSING', 'Completed Android build is missing.');
|
|
73
|
+
}
|
|
74
|
+
const result = await publishAndroidToGooglePlay({
|
|
75
|
+
packageName: options.packageName,
|
|
76
|
+
revision,
|
|
77
|
+
intent: options.inspection.intent,
|
|
78
|
+
build: options.state.build,
|
|
79
|
+
...options.access,
|
|
80
|
+
createToken: options.runtime.createGooglePlayToken,
|
|
81
|
+
request: options.runtime.requestGooglePlay,
|
|
82
|
+
downloadArchive: options.runtime.downloadArchive,
|
|
83
|
+
});
|
|
84
|
+
if (result.status === 'action-required')
|
|
85
|
+
return { status: 'action-required', action: result.action };
|
|
86
|
+
if (result.status === 'failed')
|
|
87
|
+
return { status: 'failed', error: result.failure };
|
|
88
|
+
options.state.publication = result.publication;
|
|
89
|
+
return { status: 'completed' };
|
|
90
|
+
}
|
|
91
|
+
async function verifyStep(options) {
|
|
92
|
+
if (options.state.publication === null) {
|
|
93
|
+
return failed('ANDROID_PUBLICATION_MISSING', 'Android publication result is missing.');
|
|
94
|
+
}
|
|
95
|
+
const result = await verifyGooglePlayPublication({
|
|
96
|
+
packageName: options.packageName,
|
|
97
|
+
publication: options.state.publication,
|
|
98
|
+
...options.access,
|
|
99
|
+
createToken: options.runtime.createGooglePlayToken,
|
|
100
|
+
request: options.runtime.requestGooglePlay,
|
|
101
|
+
});
|
|
102
|
+
if (result.status === 'action-required')
|
|
103
|
+
return { status: 'action-required', action: result.action };
|
|
104
|
+
options.state.verification = result.verification;
|
|
105
|
+
return result.verification.ok
|
|
106
|
+
? { status: 'completed' }
|
|
107
|
+
: failed('ANDROID_VERIFICATION_FAILED', 'Published Android deployment verification failed.');
|
|
108
|
+
}
|
|
109
|
+
function removeStep() {
|
|
110
|
+
return {
|
|
111
|
+
status: 'action-required',
|
|
112
|
+
action: {
|
|
113
|
+
type: 'manual-action',
|
|
114
|
+
target: 'android',
|
|
115
|
+
provider: 'google-play',
|
|
116
|
+
code: 'ANDROID_REMOVAL_REQUIRES_MANUAL_ACTION',
|
|
117
|
+
message: 'Review Google Play release state before removing the Android deployment target.',
|
|
118
|
+
},
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
function failed(code, message) {
|
|
122
|
+
return { status: 'failed', error: { code, message, target: 'android' } };
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=executeProjectAndroidStep.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executeProjectAndroidStep.js","sourceRoot":"","sources":["../../../src/project/android/executeProjectAndroidStep.ts"],"names":[],"mappings":"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","sourcesContent":["import type { DeploymentPlanStep } from '../../domain/DeploymentPlanStep';\nimport type { DeploymentStepOutcome } from '../../domain/DeploymentStepOutcome';\nimport { buildAndroidWithEas } from '../../providers/eas/android/buildAndroidWithEas';\nimport { generateLocalAndroidFingerprint } from '../../providers/eas/android/generateLocalAndroidFingerprint';\nimport { inspectEasAndroidConfig } from '../../providers/eas/android/inspectEasAndroidConfig';\nimport { publishAndroidToGooglePlay } from '../../providers/googlePlay/publishAndroidToGooglePlay';\nimport { verifyGooglePlayPublication } from '../../providers/googlePlay/verifyGooglePlayPublication';\nimport { createAndroidDeploymentRevision } from '../../targets/android/createAndroidDeploymentRevision';\nimport type { ProjectAndroidDeploymentInspection } from './ProjectAndroidDeploymentInspection';\nimport type { ProjectAndroidDeploymentRuntime } from './ProjectAndroidDeploymentRuntime';\nimport type { ProjectAndroidExecutionState } from './ProjectAndroidExecutionState';\nimport type { ResolvedProjectAndroidDeploymentAccess } from './resolveProjectAndroidDeploymentAccess';\n\nexport async function executeProjectAndroidStep(options: {\n readonly step: DeploymentPlanStep;\n readonly inspection: ProjectAndroidDeploymentInspection;\n readonly packageName: string;\n readonly access: ResolvedProjectAndroidDeploymentAccess;\n readonly runtime: ProjectAndroidDeploymentRuntime;\n readonly state: ProjectAndroidExecutionState;\n}): Promise<DeploymentStepOutcome> {\n switch (options.step.id) {\n case 'android:prepare':\n return prepareStep(options);\n case 'android:build':\n return buildStep(options);\n case 'android:publish':\n return publishStep(options);\n case 'android:verify':\n return verifyStep(options);\n case 'android:remove':\n return removeStep();\n default:\n return failed('ANDROID_STEP_UNSUPPORTED', 'Unsupported Android deployment step.');\n }\n}\n\nasync function prepareStep(\n options: Parameters<typeof executeProjectAndroidStep>[0],\n): Promise<DeploymentStepOutcome> {\n const expected = options.inspection.desiredRevision;\n if (expected === undefined)\n return failed('ANDROID_REVISION_MISSING', 'Planned Android revision is missing.');\n const config = await inspectEasAndroidConfig({\n projectRoot: options.inspection.projectRoot,\n packageName: options.packageName,\n buildProfile: options.inspection.intent.buildProfile,\n ...options.access,\n runProcess: options.runtime.runProcess,\n });\n if (config.status === 'action-required')\n return { status: 'action-required', action: config.action };\n if (config.status === 'failed') return { status: 'failed', error: config.failure };\n const fingerprint = await generateLocalAndroidFingerprint({\n projectRoot: options.inspection.projectRoot,\n profileEnvironment: config.config.profileEnvironment,\n runProcess: options.runtime.runProcess,\n });\n if (fingerprint.status === 'failed') return { status: 'failed', error: fingerprint.failure };\n const revision = createAndroidDeploymentRevision(\n fingerprint.fingerprint,\n options.inspection.intent,\n );\n if (revision !== expected) {\n return failed(\n 'ANDROID_SOURCE_CHANGED_AFTER_PLAN',\n 'Android source changed after the deployment plan was created.',\n );\n }\n options.state.fingerprint = fingerprint.fingerprint;\n return { status: 'completed' };\n}\n\nasync function buildStep(\n options: Parameters<typeof executeProjectAndroidStep>[0],\n): Promise<DeploymentStepOutcome> {\n if (options.state.fingerprint === null)\n return failed('ANDROID_FINGERPRINT_MISSING', 'Prepared Android fingerprint is missing.');\n const result = await buildAndroidWithEas({\n projectRoot: options.inspection.projectRoot,\n buildProfile: options.inspection.intent.buildProfile,\n expectedFingerprint: options.state.fingerprint,\n ...options.access,\n runProcess: options.runtime.runProcess,\n });\n if (result.status === 'action-required')\n return { status: 'action-required', action: result.action };\n if (result.status === 'failed') return { status: 'failed', error: result.failure };\n options.state.build = result.artifact;\n return { status: 'completed' };\n}\n\nasync function publishStep(\n options: Parameters<typeof executeProjectAndroidStep>[0],\n): Promise<DeploymentStepOutcome> {\n const revision = options.inspection.desiredRevision;\n if (options.state.build === null || revision === undefined) {\n return failed('ANDROID_BUILD_MISSING', 'Completed Android build is missing.');\n }\n const result = await publishAndroidToGooglePlay({\n packageName: options.packageName,\n revision,\n intent: options.inspection.intent,\n build: options.state.build,\n ...options.access,\n createToken: options.runtime.createGooglePlayToken,\n request: options.runtime.requestGooglePlay,\n downloadArchive: options.runtime.downloadArchive,\n });\n if (result.status === 'action-required')\n return { status: 'action-required', action: result.action };\n if (result.status === 'failed') return { status: 'failed', error: result.failure };\n options.state.publication = result.publication;\n return { status: 'completed' };\n}\n\nasync function verifyStep(\n options: Parameters<typeof executeProjectAndroidStep>[0],\n): Promise<DeploymentStepOutcome> {\n if (options.state.publication === null) {\n return failed('ANDROID_PUBLICATION_MISSING', 'Android publication result is missing.');\n }\n const result = await verifyGooglePlayPublication({\n packageName: options.packageName,\n publication: options.state.publication,\n ...options.access,\n createToken: options.runtime.createGooglePlayToken,\n request: options.runtime.requestGooglePlay,\n });\n if (result.status === 'action-required')\n return { status: 'action-required', action: result.action };\n options.state.verification = result.verification;\n return result.verification.ok\n ? { status: 'completed' }\n : failed('ANDROID_VERIFICATION_FAILED', 'Published Android deployment verification failed.');\n}\n\nfunction removeStep(): DeploymentStepOutcome {\n return {\n status: 'action-required',\n action: {\n type: 'manual-action',\n target: 'android',\n provider: 'google-play',\n code: 'ANDROID_REMOVAL_REQUIRES_MANUAL_ACTION',\n message: 'Review Google Play release state before removing the Android deployment target.',\n },\n };\n}\n\nfunction failed(code: string, message: string): DeploymentStepOutcome {\n return { status: 'failed', error: { code, message, target: 'android' } };\n}\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { AndroidDeploymentIntent } from '../../domain/AndroidDeploymentIntent';
|
|
2
|
+
import type { ProjectAndroidDeploymentAccess } from './ProjectAndroidDeploymentAccess';
|
|
3
|
+
import type { ProjectAndroidDeploymentInspectionResult } from './ProjectAndroidDeploymentInspection';
|
|
4
|
+
import type { ProjectAndroidDeploymentRuntime } from './ProjectAndroidDeploymentRuntime';
|
|
5
|
+
export interface InspectProjectAndroidDeploymentOptions extends ProjectAndroidDeploymentAccess {
|
|
6
|
+
readonly projectRoot: string;
|
|
7
|
+
readonly intent: AndroidDeploymentIntent;
|
|
8
|
+
}
|
|
9
|
+
export declare function inspectProjectAndroidDeployment(options: InspectProjectAndroidDeploymentOptions): Promise<ProjectAndroidDeploymentInspectionResult>;
|
|
10
|
+
export declare function inspectProjectAndroidDeploymentWithRuntime(options: InspectProjectAndroidDeploymentOptions, runtime: ProjectAndroidDeploymentRuntime): Promise<ProjectAndroidDeploymentInspectionResult>;
|
|
11
|
+
//# sourceMappingURL=inspectProjectAndroidDeployment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspectProjectAndroidDeployment.d.ts","sourceRoot":"","sources":["../../../src/project/android/inspectProjectAndroidDeployment.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAWpF,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AACvF,OAAO,KAAK,EAAE,wCAAwC,EAAE,MAAM,sCAAsC,CAAC;AACrG,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AAKzF,MAAM,WAAW,sCAAuC,SAAQ,8BAA8B;IAC5F,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAC;CAC1C;AAED,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,sCAAsC,GAC9C,OAAO,CAAC,wCAAwC,CAAC,CAEnD;AAED,wBAAsB,0CAA0C,CAC9D,OAAO,EAAE,sCAAsC,EAC/C,OAAO,EAAE,+BAA+B,GACvC,OAAO,CAAC,wCAAwC,CAAC,CAgCnD"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { generateLocalAndroidFingerprint } from '../../providers/eas/android/generateLocalAndroidFingerprint';
|
|
2
|
+
import { inspectEasAndroidConfig } from '../../providers/eas/android/inspectEasAndroidConfig';
|
|
3
|
+
import { createAndroidDeploymentRevision } from '../../targets/android/createAndroidDeploymentRevision';
|
|
4
|
+
import { isAndroidDeploymentIntentValid } from '../../targets/android/isAndroidDeploymentIntentValid';
|
|
5
|
+
import { resolveDeployProject } from '../resolveDeployProject';
|
|
6
|
+
import { inspectProjectAndroidEasSetup } from './inspectProjectAndroidEasSetup';
|
|
7
|
+
import { inspectProjectAndroidGooglePlay } from './inspectProjectAndroidGooglePlay';
|
|
8
|
+
import { normalizeProjectAndroidDesired } from './normalizeProjectAndroidDesired';
|
|
9
|
+
import { projectAndroidDeploymentRuntime } from './ProjectAndroidDeploymentRuntime';
|
|
10
|
+
import { readCurrentProjectAndroidDeployment } from './readCurrentProjectAndroidDeployment';
|
|
11
|
+
import { resolveProjectAndroidDeploymentAccess } from './resolveProjectAndroidDeploymentAccess';
|
|
12
|
+
export function inspectProjectAndroidDeployment(options) {
|
|
13
|
+
return inspectProjectAndroidDeploymentWithRuntime(options, projectAndroidDeploymentRuntime);
|
|
14
|
+
}
|
|
15
|
+
export async function inspectProjectAndroidDeploymentWithRuntime(options, runtime) {
|
|
16
|
+
try {
|
|
17
|
+
if (!isAndroidDeploymentIntentValid(options.intent))
|
|
18
|
+
return invalidIntent();
|
|
19
|
+
const project = await resolveDeployProject({ projectRoot: options.projectRoot });
|
|
20
|
+
const normalized = normalizeProjectAndroidDesired(project.deploy);
|
|
21
|
+
if (!normalized.ok)
|
|
22
|
+
return normalized;
|
|
23
|
+
if (!normalized.enabled || normalized.packageName === undefined) {
|
|
24
|
+
const current = await readCurrentProjectAndroidDeployment({
|
|
25
|
+
projectRoot: project.projectRoot,
|
|
26
|
+
});
|
|
27
|
+
return success(project.projectRoot, normalized.desired, current, options.intent, undefined, []);
|
|
28
|
+
}
|
|
29
|
+
return inspectEnabledProject(project.projectRoot, normalized.desired, normalized.packageName, options, runtime);
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return failure('ANDROID_PROJECT_INSPECTION_FAILED', 'Android deployment project inspection failed.');
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
async function inspectEnabledProject(projectRoot, desired, packageName, options, runtime) {
|
|
36
|
+
const access = resolveProjectAndroidDeploymentAccess(options);
|
|
37
|
+
const config = await inspectEasAndroidConfig({
|
|
38
|
+
projectRoot,
|
|
39
|
+
packageName,
|
|
40
|
+
buildProfile: options.intent.buildProfile,
|
|
41
|
+
...access,
|
|
42
|
+
runProcess: runtime.runProcess,
|
|
43
|
+
});
|
|
44
|
+
const [easSetup, google] = await Promise.all([
|
|
45
|
+
inspectProjectAndroidEasSetup(projectRoot, access, runtime),
|
|
46
|
+
inspectProjectAndroidGooglePlay({ packageName, track: options.intent.track, access, runtime }),
|
|
47
|
+
]);
|
|
48
|
+
const current = await readCurrentProjectAndroidDeployment({
|
|
49
|
+
projectRoot,
|
|
50
|
+
packageName,
|
|
51
|
+
trackState: google.trackState,
|
|
52
|
+
});
|
|
53
|
+
if (config.status === 'failed')
|
|
54
|
+
return { ok: false, failure: config.failure };
|
|
55
|
+
if (config.status === 'action-required') {
|
|
56
|
+
return success(projectRoot, desired, current, options.intent, undefined, [
|
|
57
|
+
easSetup,
|
|
58
|
+
google.setup,
|
|
59
|
+
]);
|
|
60
|
+
}
|
|
61
|
+
const fingerprint = await generateLocalAndroidFingerprint({
|
|
62
|
+
projectRoot,
|
|
63
|
+
profileEnvironment: config.config.profileEnvironment,
|
|
64
|
+
runProcess: runtime.runProcess,
|
|
65
|
+
});
|
|
66
|
+
if (fingerprint.status === 'failed')
|
|
67
|
+
return { ok: false, failure: fingerprint.failure };
|
|
68
|
+
const revision = createAndroidDeploymentRevision(fingerprint.fingerprint, options.intent);
|
|
69
|
+
return success(projectRoot, desired, current, options.intent, revision, [easSetup, google.setup]);
|
|
70
|
+
}
|
|
71
|
+
function success(projectRoot, desired, current, intent, desiredRevision, setups) {
|
|
72
|
+
return {
|
|
73
|
+
ok: true,
|
|
74
|
+
inspection: {
|
|
75
|
+
projectRoot,
|
|
76
|
+
desired,
|
|
77
|
+
current,
|
|
78
|
+
intent,
|
|
79
|
+
...(desiredRevision === undefined ? {} : { desiredRevision }),
|
|
80
|
+
setups,
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
function invalidIntent() {
|
|
85
|
+
return failure('INVALID_ANDROID_DEPLOYMENT_INTENT', 'Android deployment intent is invalid.');
|
|
86
|
+
}
|
|
87
|
+
function failure(code, message) {
|
|
88
|
+
return { ok: false, failure: { code, message, target: 'android' } };
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=inspectProjectAndroidDeployment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspectProjectAndroidDeployment.js","sourceRoot":"","sources":["../../../src/project/android/inspectProjectAndroidDeployment.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AppDeployManifest } from '@ankhorage/contracts/deploy';\n\nimport type { AndroidDeploymentIntent } from '../../domain/AndroidDeploymentIntent';\nimport type { DeploymentCurrentState } from '../../domain/DeploymentCurrentState';\nimport type { DeploymentProviderSetupInspectionResult } from '../../domain/DeploymentProviderSetupInspectionResult';\nimport { generateLocalAndroidFingerprint } from '../../providers/eas/android/generateLocalAndroidFingerprint';\nimport { inspectEasAndroidConfig } from '../../providers/eas/android/inspectEasAndroidConfig';\nimport { createAndroidDeploymentRevision } from '../../targets/android/createAndroidDeploymentRevision';\nimport { isAndroidDeploymentIntentValid } from '../../targets/android/isAndroidDeploymentIntentValid';\nimport { resolveDeployProject } from '../resolveDeployProject';\nimport { inspectProjectAndroidEasSetup } from './inspectProjectAndroidEasSetup';\nimport { inspectProjectAndroidGooglePlay } from './inspectProjectAndroidGooglePlay';\nimport { normalizeProjectAndroidDesired } from './normalizeProjectAndroidDesired';\nimport type { ProjectAndroidDeploymentAccess } from './ProjectAndroidDeploymentAccess';\nimport type { ProjectAndroidDeploymentInspectionResult } from './ProjectAndroidDeploymentInspection';\nimport type { ProjectAndroidDeploymentRuntime } from './ProjectAndroidDeploymentRuntime';\nimport { projectAndroidDeploymentRuntime } from './ProjectAndroidDeploymentRuntime';\nimport { readCurrentProjectAndroidDeployment } from './readCurrentProjectAndroidDeployment';\nimport { resolveProjectAndroidDeploymentAccess } from './resolveProjectAndroidDeploymentAccess';\n\nexport interface InspectProjectAndroidDeploymentOptions extends ProjectAndroidDeploymentAccess {\n readonly projectRoot: string;\n readonly intent: AndroidDeploymentIntent;\n}\n\nexport function inspectProjectAndroidDeployment(\n options: InspectProjectAndroidDeploymentOptions,\n): Promise<ProjectAndroidDeploymentInspectionResult> {\n return inspectProjectAndroidDeploymentWithRuntime(options, projectAndroidDeploymentRuntime);\n}\n\nexport async function inspectProjectAndroidDeploymentWithRuntime(\n options: InspectProjectAndroidDeploymentOptions,\n runtime: ProjectAndroidDeploymentRuntime,\n): Promise<ProjectAndroidDeploymentInspectionResult> {\n try {\n if (!isAndroidDeploymentIntentValid(options.intent)) return invalidIntent();\n const project = await resolveDeployProject({ projectRoot: options.projectRoot });\n const normalized = normalizeProjectAndroidDesired(project.deploy);\n if (!normalized.ok) return normalized;\n if (!normalized.enabled || normalized.packageName === undefined) {\n const current = await readCurrentProjectAndroidDeployment({\n projectRoot: project.projectRoot,\n });\n return success(\n project.projectRoot,\n normalized.desired,\n current,\n options.intent,\n undefined,\n [],\n );\n }\n return inspectEnabledProject(\n project.projectRoot,\n normalized.desired,\n normalized.packageName,\n options,\n runtime,\n );\n } catch {\n return failure(\n 'ANDROID_PROJECT_INSPECTION_FAILED',\n 'Android deployment project inspection failed.',\n );\n }\n}\n\nasync function inspectEnabledProject(\n projectRoot: string,\n desired: AppDeployManifest,\n packageName: string,\n options: InspectProjectAndroidDeploymentOptions,\n runtime: ProjectAndroidDeploymentRuntime,\n): Promise<ProjectAndroidDeploymentInspectionResult> {\n const access = resolveProjectAndroidDeploymentAccess(options);\n const config = await inspectEasAndroidConfig({\n projectRoot,\n packageName,\n buildProfile: options.intent.buildProfile,\n ...access,\n runProcess: runtime.runProcess,\n });\n const [easSetup, google] = await Promise.all([\n inspectProjectAndroidEasSetup(projectRoot, access, runtime),\n inspectProjectAndroidGooglePlay({ packageName, track: options.intent.track, access, runtime }),\n ]);\n const current = await readCurrentProjectAndroidDeployment({\n projectRoot,\n packageName,\n trackState: google.trackState,\n });\n if (config.status === 'failed') return { ok: false, failure: config.failure };\n if (config.status === 'action-required') {\n return success(projectRoot, desired, current, options.intent, undefined, [\n easSetup,\n google.setup,\n ]);\n }\n const fingerprint = await generateLocalAndroidFingerprint({\n projectRoot,\n profileEnvironment: config.config.profileEnvironment,\n runProcess: runtime.runProcess,\n });\n if (fingerprint.status === 'failed') return { ok: false, failure: fingerprint.failure };\n const revision = createAndroidDeploymentRevision(fingerprint.fingerprint, options.intent);\n return success(projectRoot, desired, current, options.intent, revision, [easSetup, google.setup]);\n}\n\nfunction success(\n projectRoot: string,\n desired: AppDeployManifest,\n current: DeploymentCurrentState,\n intent: AndroidDeploymentIntent,\n desiredRevision: string | undefined,\n setups: readonly DeploymentProviderSetupInspectionResult[],\n): ProjectAndroidDeploymentInspectionResult {\n return {\n ok: true,\n inspection: {\n projectRoot,\n desired,\n current,\n intent,\n ...(desiredRevision === undefined ? {} : { desiredRevision }),\n setups,\n },\n };\n}\n\nfunction invalidIntent(): ProjectAndroidDeploymentInspectionResult {\n return failure('INVALID_ANDROID_DEPLOYMENT_INTENT', 'Android deployment intent is invalid.');\n}\n\nfunction failure(code: string, message: string): ProjectAndroidDeploymentInspectionResult {\n return { ok: false, failure: { code, message, target: 'android' } };\n}\n"]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { DeploymentProviderSetupInspectionResult } from '../../domain/DeploymentProviderSetupInspectionResult';
|
|
2
|
+
import type { ProjectAndroidDeploymentRuntime } from './ProjectAndroidDeploymentRuntime';
|
|
3
|
+
import type { ResolvedProjectAndroidDeploymentAccess } from './resolveProjectAndroidDeploymentAccess';
|
|
4
|
+
export declare function inspectProjectAndroidEasSetup(projectRoot: string, access: ResolvedProjectAndroidDeploymentAccess, runtime: ProjectAndroidDeploymentRuntime): Promise<DeploymentProviderSetupInspectionResult>;
|
|
5
|
+
//# sourceMappingURL=inspectProjectAndroidEasSetup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspectProjectAndroidEasSetup.d.ts","sourceRoot":"","sources":["../../../src/project/android/inspectProjectAndroidEasSetup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uCAAuC,EAAE,MAAM,sDAAsD,CAAC;AAGpH,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AACzF,OAAO,KAAK,EAAE,sCAAsC,EAAE,MAAM,yCAAyC,CAAC;AAGtG,wBAAgB,6BAA6B,CAC3C,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,sCAAsC,EAC9C,OAAO,EAAE,+BAA+B,GACvC,OAAO,CAAC,uCAAuC,CAAC,CAalD"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { inspectDeploymentProviderSetup } from '../../engine/inspectDeploymentProviderSetup';
|
|
2
|
+
import { createEasSetupAdapter } from '../../providers/eas/createEasSetupAdapter';
|
|
3
|
+
import { scopeProjectAndroidDeploymentAccess } from './scopeProjectAndroidDeploymentAccess';
|
|
4
|
+
export function inspectProjectAndroidEasSetup(projectRoot, access, runtime) {
|
|
5
|
+
return inspectDeploymentProviderSetup({
|
|
6
|
+
adapter: createEasSetupAdapter({
|
|
7
|
+
projectRoot,
|
|
8
|
+
runProcess: runtime.runProcess,
|
|
9
|
+
target: 'android',
|
|
10
|
+
capability: 'build',
|
|
11
|
+
}),
|
|
12
|
+
context: {
|
|
13
|
+
target: 'android',
|
|
14
|
+
...scopeProjectAndroidDeploymentAccess(access, 'eas'),
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=inspectProjectAndroidEasSetup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspectProjectAndroidEasSetup.js","sourceRoot":"","sources":["../../../src/project/android/inspectProjectAndroidEasSetup.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,8BAA8B,EAAE,MAAM,6CAA6C,CAAC;AAC7F,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAGlF,OAAO,EAAE,mCAAmC,EAAE,MAAM,uCAAuC,CAAC;AAE5F,MAAM,UAAU,6BAA6B,CAC3C,WAAmB,EACnB,MAA8C,EAC9C,OAAwC;IAExC,OAAO,8BAA8B,CAAC;QACpC,OAAO,EAAE,qBAAqB,CAAC;YAC7B,WAAW;YACX,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,OAAO;SACpB,CAAC;QACF,OAAO,EAAE;YACP,MAAM,EAAE,SAAS;YACjB,GAAG,mCAAmC,CAAC,MAAM,EAAE,KAAK,CAAC;SACtD;KACF,CAAC,CAAC;AACL,CAAC","sourcesContent":["import type { DeploymentProviderSetupInspectionResult } from '../../domain/DeploymentProviderSetupInspectionResult';\nimport { inspectDeploymentProviderSetup } from '../../engine/inspectDeploymentProviderSetup';\nimport { createEasSetupAdapter } from '../../providers/eas/createEasSetupAdapter';\nimport type { ProjectAndroidDeploymentRuntime } from './ProjectAndroidDeploymentRuntime';\nimport type { ResolvedProjectAndroidDeploymentAccess } from './resolveProjectAndroidDeploymentAccess';\nimport { scopeProjectAndroidDeploymentAccess } from './scopeProjectAndroidDeploymentAccess';\n\nexport function inspectProjectAndroidEasSetup(\n projectRoot: string,\n access: ResolvedProjectAndroidDeploymentAccess,\n runtime: ProjectAndroidDeploymentRuntime,\n): Promise<DeploymentProviderSetupInspectionResult> {\n return inspectDeploymentProviderSetup({\n adapter: createEasSetupAdapter({\n projectRoot,\n runProcess: runtime.runProcess,\n target: 'android',\n capability: 'build',\n }),\n context: {\n target: 'android',\n ...scopeProjectAndroidDeploymentAccess(access, 'eas'),\n },\n });\n}\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { AndroidDeploymentTrack } from '../../domain/AndroidDeploymentIntent';
|
|
2
|
+
import type { DeploymentProviderSetupInspectionResult } from '../../domain/DeploymentProviderSetupInspectionResult';
|
|
3
|
+
import type { GooglePlayTrackState } from '../../providers/googlePlay/GooglePlayTrackState';
|
|
4
|
+
import type { ProjectAndroidDeploymentRuntime } from './ProjectAndroidDeploymentRuntime';
|
|
5
|
+
import type { ResolvedProjectAndroidDeploymentAccess } from './resolveProjectAndroidDeploymentAccess';
|
|
6
|
+
export interface ProjectAndroidGooglePlayInspection {
|
|
7
|
+
readonly setup: DeploymentProviderSetupInspectionResult;
|
|
8
|
+
readonly trackState: GooglePlayTrackState | null;
|
|
9
|
+
}
|
|
10
|
+
export declare function inspectProjectAndroidGooglePlay(options: {
|
|
11
|
+
readonly packageName: string;
|
|
12
|
+
readonly track: AndroidDeploymentTrack;
|
|
13
|
+
readonly access: ResolvedProjectAndroidDeploymentAccess;
|
|
14
|
+
readonly runtime: ProjectAndroidDeploymentRuntime;
|
|
15
|
+
}): Promise<ProjectAndroidGooglePlayInspection>;
|
|
16
|
+
//# sourceMappingURL=inspectProjectAndroidGooglePlay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspectProjectAndroidGooglePlay.d.ts","sourceRoot":"","sources":["../../../src/project/android/inspectProjectAndroidGooglePlay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,KAAK,EAAE,uCAAuC,EAAE,MAAM,sDAAsD,CAAC;AAIpH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iDAAiD,CAAC;AAE5F,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AACzF,OAAO,KAAK,EAAE,sCAAsC,EAAE,MAAM,yCAAyC,CAAC;AAGtG,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,KAAK,EAAE,uCAAuC,CAAC;IACxD,QAAQ,CAAC,UAAU,EAAE,oBAAoB,GAAG,IAAI,CAAC;CAClD;AAED,wBAAsB,+BAA+B,CAAC,OAAO,EAAE;IAC7D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,sCAAsC,CAAC;IACxD,QAAQ,CAAC,OAAO,EAAE,+BAA+B,CAAC;CACnD,GAAG,OAAO,CAAC,kCAAkC,CAAC,CAmB9C"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { inspectDeploymentProviderSetup } from '../../engine/inspectDeploymentProviderSetup';
|
|
2
|
+
import { createGooglePlaySetupAdapter } from '../../providers/googlePlay/createGooglePlaySetupAdapter';
|
|
3
|
+
import { inspectGooglePlayTrack } from '../../providers/googlePlay/inspectGooglePlayTrack';
|
|
4
|
+
import { scopeProjectAndroidDeploymentAccess } from './scopeProjectAndroidDeploymentAccess';
|
|
5
|
+
export async function inspectProjectAndroidGooglePlay(options) {
|
|
6
|
+
const access = scopeProjectAndroidDeploymentAccess(options.access, 'google-play');
|
|
7
|
+
const setup = await inspectDeploymentProviderSetup({
|
|
8
|
+
adapter: createGooglePlaySetupAdapter({ createToken: options.runtime.createGooglePlayToken }),
|
|
9
|
+
context: { target: 'android', ...access },
|
|
10
|
+
});
|
|
11
|
+
if (!isReady(setup))
|
|
12
|
+
return { setup, trackState: null };
|
|
13
|
+
const inspected = await inspectGooglePlayTrack({
|
|
14
|
+
packageName: options.packageName,
|
|
15
|
+
track: options.track,
|
|
16
|
+
...access,
|
|
17
|
+
createToken: options.runtime.createGooglePlayToken,
|
|
18
|
+
request: options.runtime.requestGooglePlay,
|
|
19
|
+
});
|
|
20
|
+
if (inspected.status === 'completed')
|
|
21
|
+
return { setup, trackState: inspected.state };
|
|
22
|
+
if (inspected.status === 'failed') {
|
|
23
|
+
return { setup: { ok: false, failure: inspected.failure }, trackState: null };
|
|
24
|
+
}
|
|
25
|
+
return { setup: actionSetup(inspected.action), trackState: null };
|
|
26
|
+
}
|
|
27
|
+
function isReady(result) {
|
|
28
|
+
return (result.ok &&
|
|
29
|
+
result.inspection.authentication.status === 'authenticated' &&
|
|
30
|
+
result.inspection.provisioning.length === 0 &&
|
|
31
|
+
result.inspection.capabilities.some((capability) => capability.capability === 'publish' && capability.status === 'available'));
|
|
32
|
+
}
|
|
33
|
+
function actionSetup(action) {
|
|
34
|
+
const authentication = action.type === 'authentication'
|
|
35
|
+
? { status: 'required', action }
|
|
36
|
+
: { status: 'authenticated' };
|
|
37
|
+
const provisioning = action.type === 'authentication'
|
|
38
|
+
? [{ type: 'authentication', action }]
|
|
39
|
+
: [{ type: 'manual-action', action }];
|
|
40
|
+
return {
|
|
41
|
+
ok: true,
|
|
42
|
+
inspection: {
|
|
43
|
+
provider: 'google-play',
|
|
44
|
+
authentication,
|
|
45
|
+
capabilities: [
|
|
46
|
+
{ capability: 'publish', status: 'unavailable', reason: 'Provider setup is incomplete.' },
|
|
47
|
+
],
|
|
48
|
+
provisioning,
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=inspectProjectAndroidGooglePlay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspectProjectAndroidGooglePlay.js","sourceRoot":"","sources":["../../../src/project/android/inspectProjectAndroidGooglePlay.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AndroidDeploymentTrack } from '../../domain/AndroidDeploymentIntent';\nimport type { DeploymentProviderSetupInspectionResult } from '../../domain/DeploymentProviderSetupInspectionResult';\nimport type { DeploymentRequiredAction } from '../../domain/DeploymentRequiredAction';\nimport { inspectDeploymentProviderSetup } from '../../engine/inspectDeploymentProviderSetup';\nimport { createGooglePlaySetupAdapter } from '../../providers/googlePlay/createGooglePlaySetupAdapter';\nimport type { GooglePlayTrackState } from '../../providers/googlePlay/GooglePlayTrackState';\nimport { inspectGooglePlayTrack } from '../../providers/googlePlay/inspectGooglePlayTrack';\nimport type { ProjectAndroidDeploymentRuntime } from './ProjectAndroidDeploymentRuntime';\nimport type { ResolvedProjectAndroidDeploymentAccess } from './resolveProjectAndroidDeploymentAccess';\nimport { scopeProjectAndroidDeploymentAccess } from './scopeProjectAndroidDeploymentAccess';\n\nexport interface ProjectAndroidGooglePlayInspection {\n readonly setup: DeploymentProviderSetupInspectionResult;\n readonly trackState: GooglePlayTrackState | null;\n}\n\nexport async function inspectProjectAndroidGooglePlay(options: {\n readonly packageName: string;\n readonly track: AndroidDeploymentTrack;\n readonly access: ResolvedProjectAndroidDeploymentAccess;\n readonly runtime: ProjectAndroidDeploymentRuntime;\n}): Promise<ProjectAndroidGooglePlayInspection> {\n const access = scopeProjectAndroidDeploymentAccess(options.access, 'google-play');\n const setup = await inspectDeploymentProviderSetup({\n adapter: createGooglePlaySetupAdapter({ createToken: options.runtime.createGooglePlayToken }),\n context: { target: 'android', ...access },\n });\n if (!isReady(setup)) return { setup, trackState: null };\n const inspected = await inspectGooglePlayTrack({\n packageName: options.packageName,\n track: options.track,\n ...access,\n createToken: options.runtime.createGooglePlayToken,\n request: options.runtime.requestGooglePlay,\n });\n if (inspected.status === 'completed') return { setup, trackState: inspected.state };\n if (inspected.status === 'failed') {\n return { setup: { ok: false, failure: inspected.failure }, trackState: null };\n }\n return { setup: actionSetup(inspected.action), trackState: null };\n}\n\nfunction isReady(result: DeploymentProviderSetupInspectionResult): boolean {\n return (\n result.ok &&\n result.inspection.authentication.status === 'authenticated' &&\n result.inspection.provisioning.length === 0 &&\n result.inspection.capabilities.some(\n (capability) => capability.capability === 'publish' && capability.status === 'available',\n )\n );\n}\n\nfunction actionSetup(action: DeploymentRequiredAction): DeploymentProviderSetupInspectionResult {\n const authentication =\n action.type === 'authentication'\n ? { status: 'required' as const, action }\n : { status: 'authenticated' as const };\n const provisioning =\n action.type === 'authentication'\n ? [{ type: 'authentication' as const, action }]\n : [{ type: 'manual-action' as const, action }];\n return {\n ok: true,\n inspection: {\n provider: 'google-play',\n authentication,\n capabilities: [\n { capability: 'publish', status: 'unavailable', reason: 'Provider setup is incomplete.' },\n ],\n provisioning,\n },\n };\n}\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { AppDeployManifest } from '@ankhorage/contracts/deploy';
|
|
2
|
+
import type { DeploymentFailure } from '../../domain/DeploymentFailure';
|
|
3
|
+
export type NormalizeProjectAndroidDesiredResult = {
|
|
4
|
+
readonly ok: true;
|
|
5
|
+
readonly desired: AppDeployManifest;
|
|
6
|
+
readonly enabled: boolean;
|
|
7
|
+
readonly packageName?: string;
|
|
8
|
+
} | {
|
|
9
|
+
readonly ok: false;
|
|
10
|
+
readonly failure: DeploymentFailure;
|
|
11
|
+
};
|
|
12
|
+
export declare function normalizeProjectAndroidDesired(deploy: AppDeployManifest | null): NormalizeProjectAndroidDesiredResult;
|
|
13
|
+
//# sourceMappingURL=normalizeProjectAndroidDesired.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalizeProjectAndroidDesired.d.ts","sourceRoot":"","sources":["../../../src/project/android/normalizeProjectAndroidDesired.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGxE,MAAM,MAAM,oCAAoC,GAC5C;IACE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B,GACD;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAA;CAAE,CAAC;AAEhE,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,iBAAiB,GAAG,IAAI,GAC/B,oCAAoC,CAqBtC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { normalizeAndroidProviders } from '../../targets/android/normalizeAndroidProviders';
|
|
2
|
+
export function normalizeProjectAndroidDesired(deploy) {
|
|
3
|
+
const android = deploy?.targets.android;
|
|
4
|
+
if (android?.enabled !== true) {
|
|
5
|
+
return { ok: true, desired: { targets: {} }, enabled: false };
|
|
6
|
+
}
|
|
7
|
+
const normalized = normalizeAndroidProviders(android.providers);
|
|
8
|
+
if (!normalized.ok)
|
|
9
|
+
return normalized;
|
|
10
|
+
return {
|
|
11
|
+
ok: true,
|
|
12
|
+
enabled: true,
|
|
13
|
+
packageName: android.package,
|
|
14
|
+
desired: {
|
|
15
|
+
targets: {
|
|
16
|
+
android: {
|
|
17
|
+
enabled: true,
|
|
18
|
+
package: android.package,
|
|
19
|
+
providers: normalized.providers,
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=normalizeProjectAndroidDesired.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalizeProjectAndroidDesired.js","sourceRoot":"","sources":["../../../src/project/android/normalizeProjectAndroidDesired.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,yBAAyB,EAAE,MAAM,iDAAiD,CAAC;AAW5F,MAAM,UAAU,8BAA8B,CAC5C,MAAgC;IAEhC,MAAM,OAAO,GAAG,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC;IACxC,IAAI,OAAO,EAAE,OAAO,KAAK,IAAI,EAAE,CAAC;QAC9B,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAChE,CAAC;IACD,MAAM,UAAU,GAAG,yBAAyB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChE,IAAI,CAAC,UAAU,CAAC,EAAE;QAAE,OAAO,UAAU,CAAC;IACtC,OAAO;QACL,EAAE,EAAE,IAAI;QACR,OAAO,EAAE,IAAI;QACb,WAAW,EAAE,OAAO,CAAC,OAAO;QAC5B,OAAO,EAAE;YACP,OAAO,EAAE;gBACP,OAAO,EAAE;oBACP,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,SAAS,EAAE,UAAU,CAAC,SAAS;iBAChC;aACF;SACF;KACF,CAAC;AACJ,CAAC","sourcesContent":["import type { AppDeployManifest } from '@ankhorage/contracts/deploy';\n\nimport type { DeploymentFailure } from '../../domain/DeploymentFailure';\nimport { normalizeAndroidProviders } from '../../targets/android/normalizeAndroidProviders';\n\nexport type NormalizeProjectAndroidDesiredResult =\n | {\n readonly ok: true;\n readonly desired: AppDeployManifest;\n readonly enabled: boolean;\n readonly packageName?: string;\n }\n | { readonly ok: false; readonly failure: DeploymentFailure };\n\nexport function normalizeProjectAndroidDesired(\n deploy: AppDeployManifest | null,\n): NormalizeProjectAndroidDesiredResult {\n const android = deploy?.targets.android;\n if (android?.enabled !== true) {\n return { ok: true, desired: { targets: {} }, enabled: false };\n }\n const normalized = normalizeAndroidProviders(android.providers);\n if (!normalized.ok) return normalized;\n return {\n ok: true,\n enabled: true,\n packageName: android.package,\n desired: {\n targets: {\n android: {\n enabled: true,\n package: android.package,\n providers: normalized.providers,\n },\n },\n },\n };\n}\n"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { DeploymentCurrentState } from '../../domain/DeploymentCurrentState';
|
|
2
|
+
import type { GooglePlayTrackState } from '../../providers/googlePlay/GooglePlayTrackState';
|
|
3
|
+
export declare function readCurrentProjectAndroidDeployment(options: {
|
|
4
|
+
readonly projectRoot: string;
|
|
5
|
+
readonly packageName?: string;
|
|
6
|
+
readonly trackState?: GooglePlayTrackState | null;
|
|
7
|
+
}): Promise<DeploymentCurrentState>;
|
|
8
|
+
//# sourceMappingURL=readCurrentProjectAndroidDeployment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readCurrentProjectAndroidDeployment.d.ts","sourceRoot":"","sources":["../../../src/project/android/readCurrentProjectAndroidDeployment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EAEvB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iDAAiD,CAAC;AAW5F,wBAAsB,mCAAmC,CAAC,OAAO,EAAE;IACjE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;CACnD,GAAG,OAAO,CAAC,sBAAsB,CAAC,CASlC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { listProjectDeploymentHistory } from '../history/listProjectDeploymentHistory';
|
|
2
|
+
export async function readCurrentProjectAndroidDeployment(options) {
|
|
3
|
+
const history = await listProjectDeploymentHistory({ projectRoot: options.projectRoot });
|
|
4
|
+
const evidence = history
|
|
5
|
+
.map(parseEvidence)
|
|
6
|
+
.filter((item) => item !== null)
|
|
7
|
+
.filter((item) => matchesRequestedPackage(item, options.packageName))
|
|
8
|
+
.filter((item) => matchesRemoteTrack(item, options.trackState))
|
|
9
|
+
.sort((left, right) => right.recordedAt.localeCompare(left.recordedAt))[0];
|
|
10
|
+
return evidence === undefined ? { targets: {} } : { targets: { android: observed(evidence) } };
|
|
11
|
+
}
|
|
12
|
+
function parseEvidence(record) {
|
|
13
|
+
if (record.execution.status !== 'completed' || record.verification?.ok !== true)
|
|
14
|
+
return null;
|
|
15
|
+
const match = /^android-(\d+)-([a-f\d]{64})$/i.exec(record.deploymentId);
|
|
16
|
+
if (match === null)
|
|
17
|
+
return null;
|
|
18
|
+
const versionCode = Number(match[1]);
|
|
19
|
+
const revision = match[2];
|
|
20
|
+
if (!Number.isSafeInteger(versionCode) || versionCode <= 0 || revision === undefined)
|
|
21
|
+
return null;
|
|
22
|
+
const desired = record.plan.changes.find((change) => change.target === 'android')?.desired;
|
|
23
|
+
if (desired?.target !== 'android')
|
|
24
|
+
return null;
|
|
25
|
+
return { revision, versionCode, packageName: desired.package, recordedAt: record.recordedAt };
|
|
26
|
+
}
|
|
27
|
+
function matchesRequestedPackage(item, packageName) {
|
|
28
|
+
return packageName === undefined || item.packageName === packageName;
|
|
29
|
+
}
|
|
30
|
+
function matchesRemoteTrack(item, trackState) {
|
|
31
|
+
if (trackState === undefined)
|
|
32
|
+
return true;
|
|
33
|
+
if (trackState === null)
|
|
34
|
+
return false;
|
|
35
|
+
return trackState.releases.some((release) => release.versionCodes.includes(item.versionCode));
|
|
36
|
+
}
|
|
37
|
+
function observed(item) {
|
|
38
|
+
return {
|
|
39
|
+
package: item.packageName,
|
|
40
|
+
providers: { build: 'eas', publish: 'google-play' },
|
|
41
|
+
revision: item.revision,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=readCurrentProjectAndroidDeployment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readCurrentProjectAndroidDeployment.js","sourceRoot":"","sources":["../../../src/project/android/readCurrentProjectAndroidDeployment.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n DeploymentCurrentState,\n DeploymentObservedAndroidTarget,\n} from '../../domain/DeploymentCurrentState';\nimport type { GooglePlayTrackState } from '../../providers/googlePlay/GooglePlayTrackState';\nimport type { ProjectDeploymentHistoryRecord } from '../history/ProjectDeploymentHistoryRecord';\nimport { listProjectDeploymentHistory } from '../history/listProjectDeploymentHistory';\n\ninterface AndroidHistoryEvidence {\n readonly revision: string;\n readonly versionCode: number;\n readonly packageName: string;\n readonly recordedAt: string;\n}\n\nexport async function readCurrentProjectAndroidDeployment(options: {\n readonly projectRoot: string;\n readonly packageName?: string;\n readonly trackState?: GooglePlayTrackState | null;\n}): Promise<DeploymentCurrentState> {\n const history = await listProjectDeploymentHistory({ projectRoot: options.projectRoot });\n const evidence = history\n .map(parseEvidence)\n .filter((item): item is AndroidHistoryEvidence => item !== null)\n .filter((item) => matchesRequestedPackage(item, options.packageName))\n .filter((item) => matchesRemoteTrack(item, options.trackState))\n .sort((left, right) => right.recordedAt.localeCompare(left.recordedAt))[0];\n return evidence === undefined ? { targets: {} } : { targets: { android: observed(evidence) } };\n}\n\nfunction parseEvidence(record: ProjectDeploymentHistoryRecord): AndroidHistoryEvidence | null {\n if (record.execution.status !== 'completed' || record.verification?.ok !== true) return null;\n const match = /^android-(\\d+)-([a-f\\d]{64})$/i.exec(record.deploymentId);\n if (match === null) return null;\n const versionCode = Number(match[1]);\n const revision = match[2];\n if (!Number.isSafeInteger(versionCode) || versionCode <= 0 || revision === undefined) return null;\n const desired = record.plan.changes.find((change) => change.target === 'android')?.desired;\n if (desired?.target !== 'android') return null;\n return { revision, versionCode, packageName: desired.package, recordedAt: record.recordedAt };\n}\n\nfunction matchesRequestedPackage(item: AndroidHistoryEvidence, packageName: string | undefined) {\n return packageName === undefined || item.packageName === packageName;\n}\n\nfunction matchesRemoteTrack(\n item: AndroidHistoryEvidence,\n trackState: GooglePlayTrackState | null | undefined,\n) {\n if (trackState === undefined) return true;\n if (trackState === null) return false;\n return trackState.releases.some((release) => release.versionCodes.includes(item.versionCode));\n}\n\nfunction observed(item: AndroidHistoryEvidence): DeploymentObservedAndroidTarget {\n return {\n package: item.packageName,\n providers: { build: 'eas', publish: 'google-play' },\n revision: item.revision,\n };\n}\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { AndroidDeploymentPublication } from '../../domain/AndroidDeploymentPublication';
|
|
2
|
+
import type { DeploymentExecutionResult } from '../../domain/DeploymentExecutionResult';
|
|
3
|
+
import type { DeploymentFailure } from '../../domain/DeploymentFailure';
|
|
4
|
+
import type { DeploymentPlan } from '../../domain/DeploymentPlan';
|
|
5
|
+
import type { DeploymentVerificationResult } from '../../domain/DeploymentVerificationResult';
|
|
6
|
+
import type { ProjectAndroidDeploymentInspection } from './ProjectAndroidDeploymentInspection';
|
|
7
|
+
export type RecordProjectAndroidHistoryResult = {
|
|
8
|
+
readonly recorded: true;
|
|
9
|
+
} | {
|
|
10
|
+
readonly recorded: false;
|
|
11
|
+
readonly failure: DeploymentFailure;
|
|
12
|
+
};
|
|
13
|
+
export declare function recordProjectAndroidDeployment(options: {
|
|
14
|
+
readonly inspection: ProjectAndroidDeploymentInspection;
|
|
15
|
+
readonly publication: AndroidDeploymentPublication;
|
|
16
|
+
readonly plan: DeploymentPlan;
|
|
17
|
+
readonly execution: DeploymentExecutionResult;
|
|
18
|
+
readonly verification: DeploymentVerificationResult;
|
|
19
|
+
readonly recordedAt: string;
|
|
20
|
+
}): Promise<RecordProjectAndroidHistoryResult>;
|
|
21
|
+
//# sourceMappingURL=recordProjectAndroidDeployment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recordProjectAndroidDeployment.d.ts","sourceRoot":"","sources":["../../../src/project/android/recordProjectAndroidDeployment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,2CAA2C,CAAC;AAC9F,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AACxF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,2CAA2C,CAAC;AAG9F,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,sCAAsC,CAAC;AAE/F,MAAM,MAAM,iCAAiC,GAC3C;IAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAA;CAAE,CAAC;AAElG,wBAAsB,8BAA8B,CAAC,OAAO,EAAE;IAC5D,QAAQ,CAAC,UAAU,EAAE,kCAAkC,CAAC;IACxD,QAAQ,CAAC,WAAW,EAAE,4BAA4B,CAAC;IACnD,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,yBAAyB,CAAC;IAC9C,QAAQ,CAAC,YAAY,EAAE,4BAA4B,CAAC;IACpD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B,GAAG,OAAO,CAAC,iCAAiC,CAAC,CAoB7C"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { PROJECT_DEPLOYMENT_HISTORY_SCHEMA_VERSION } from '../history/historySchemaVersion';
|
|
2
|
+
import { recordProjectDeploymentHistory } from '../history/recordProjectDeploymentHistory';
|
|
3
|
+
export async function recordProjectAndroidDeployment(options) {
|
|
4
|
+
const revision = options.inspection.desiredRevision;
|
|
5
|
+
if (revision === undefined)
|
|
6
|
+
return historyFailure('ANDROID_HISTORY_REVISION_MISSING');
|
|
7
|
+
try {
|
|
8
|
+
await recordProjectDeploymentHistory({
|
|
9
|
+
projectRoot: options.inspection.projectRoot,
|
|
10
|
+
record: {
|
|
11
|
+
schemaVersion: PROJECT_DEPLOYMENT_HISTORY_SCHEMA_VERSION,
|
|
12
|
+
deploymentId: `android-${options.publication.versionCode}-${revision}`,
|
|
13
|
+
recordedAt: options.recordedAt,
|
|
14
|
+
desired: options.inspection.desired,
|
|
15
|
+
plan: options.plan,
|
|
16
|
+
execution: options.execution,
|
|
17
|
+
verification: options.verification,
|
|
18
|
+
},
|
|
19
|
+
});
|
|
20
|
+
return { recorded: true };
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return historyFailure('ANDROID_HISTORY_RECORD_FAILED');
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function historyFailure(code) {
|
|
27
|
+
return {
|
|
28
|
+
recorded: false,
|
|
29
|
+
failure: {
|
|
30
|
+
code,
|
|
31
|
+
message: 'Android deployment history could not be recorded.',
|
|
32
|
+
target: 'android',
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=recordProjectAndroidDeployment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recordProjectAndroidDeployment.js","sourceRoot":"","sources":["../../../src/project/android/recordProjectAndroidDeployment.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,yCAAyC,EAAE,MAAM,iCAAiC,CAAC;AAC5F,OAAO,EAAE,8BAA8B,EAAE,MAAM,2CAA2C,CAAC;AAM3F,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,OAOpD;IACC,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC;IACpD,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,cAAc,CAAC,kCAAkC,CAAC,CAAC;IACtF,IAAI,CAAC;QACH,MAAM,8BAA8B,CAAC;YACnC,WAAW,EAAE,OAAO,CAAC,UAAU,CAAC,WAAW;YAC3C,MAAM,EAAE;gBACN,aAAa,EAAE,yCAAyC;gBACxD,YAAY,EAAE,WAAW,OAAO,CAAC,WAAW,CAAC,WAAW,IAAI,QAAQ,EAAE;gBACtE,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO;gBACnC,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,YAAY,EAAE,OAAO,CAAC,YAAY;aACnC;SACF,CAAC,CAAC;QACH,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,cAAc,CAAC,+BAA+B,CAAC,CAAC;IACzD,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO;QACL,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE;YACP,IAAI;YACJ,OAAO,EAAE,mDAAmD;YAC5D,MAAM,EAAE,SAAS;SAClB;KACF,CAAC;AACJ,CAAC","sourcesContent":["import type { AndroidDeploymentPublication } from '../../domain/AndroidDeploymentPublication';\nimport type { DeploymentExecutionResult } from '../../domain/DeploymentExecutionResult';\nimport type { DeploymentFailure } from '../../domain/DeploymentFailure';\nimport type { DeploymentPlan } from '../../domain/DeploymentPlan';\nimport type { DeploymentVerificationResult } from '../../domain/DeploymentVerificationResult';\nimport { PROJECT_DEPLOYMENT_HISTORY_SCHEMA_VERSION } from '../history/historySchemaVersion';\nimport { recordProjectDeploymentHistory } from '../history/recordProjectDeploymentHistory';\nimport type { ProjectAndroidDeploymentInspection } from './ProjectAndroidDeploymentInspection';\n\nexport type RecordProjectAndroidHistoryResult =\n { readonly recorded: true } | { readonly recorded: false; readonly failure: DeploymentFailure };\n\nexport async function recordProjectAndroidDeployment(options: {\n readonly inspection: ProjectAndroidDeploymentInspection;\n readonly publication: AndroidDeploymentPublication;\n readonly plan: DeploymentPlan;\n readonly execution: DeploymentExecutionResult;\n readonly verification: DeploymentVerificationResult;\n readonly recordedAt: string;\n}): Promise<RecordProjectAndroidHistoryResult> {\n const revision = options.inspection.desiredRevision;\n if (revision === undefined) return historyFailure('ANDROID_HISTORY_REVISION_MISSING');\n try {\n await recordProjectDeploymentHistory({\n projectRoot: options.inspection.projectRoot,\n record: {\n schemaVersion: PROJECT_DEPLOYMENT_HISTORY_SCHEMA_VERSION,\n deploymentId: `android-${options.publication.versionCode}-${revision}`,\n recordedAt: options.recordedAt,\n desired: options.inspection.desired,\n plan: options.plan,\n execution: options.execution,\n verification: options.verification,\n },\n });\n return { recorded: true };\n } catch {\n return historyFailure('ANDROID_HISTORY_RECORD_FAILED');\n }\n}\n\nfunction historyFailure(code: string): RecordProjectAndroidHistoryResult {\n return {\n recorded: false,\n failure: {\n code,\n message: 'Android deployment history could not be recorded.',\n target: 'android',\n },\n };\n}\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { DeploymentCredentialReference } from '../../domain/DeploymentCredentialReference';
|
|
2
|
+
import type { DeploymentSecretResolver } from '../../domain/DeploymentSecretResolver';
|
|
3
|
+
import type { ProjectAndroidDeploymentAccess } from './ProjectAndroidDeploymentAccess';
|
|
4
|
+
export interface ResolvedProjectAndroidDeploymentAccess {
|
|
5
|
+
readonly credentials: readonly DeploymentCredentialReference[];
|
|
6
|
+
readonly resolveSecret: DeploymentSecretResolver;
|
|
7
|
+
}
|
|
8
|
+
export declare function resolveProjectAndroidDeploymentAccess(access: ProjectAndroidDeploymentAccess): ResolvedProjectAndroidDeploymentAccess;
|
|
9
|
+
//# sourceMappingURL=resolveProjectAndroidDeploymentAccess.d.ts.map
|