rustferry_remote/
schema.rs1use schemars::{JsonSchema, schema_for};
4
5use crate::{
6 ArtifactDownloadRequest, ArtifactDownloadResult, ArtifactListRequest, ArtifactManifest,
7 CancellationAck, CancellationRequest, CleanupConfirmation, CleanupRequest, CompileHandoff,
8 CompilePhaseEvidence, EventPage, EventRequest, GitSnapshotDescriptor, HandshakeRequest,
9 HandshakeResponse, IosDeviceBuildRequest, IosDeviceBuildResult, JobHandle,
10 ProviderDoctorReport, ProviderDoctorRequest, RemoteBuildEvent, SealedUnsignedArchive,
11 SnapshotArtifactDescriptor, SnapshotArtifactReceipt, SnapshotBuildComplete, SnapshotBuildStart,
12 SnapshotJobAccepted, SnapshotSessionError, SourceBundleDescriptor,
13};
14
15#[derive(JsonSchema)]
20#[schemars(title = "Ferry Remote Build Protocol v1", untagged)]
21#[allow(clippy::large_enum_variant)]
22pub enum RemoteProtocolV1Document {
23 HandshakeRequest(HandshakeRequest),
25 HandshakeResponse(HandshakeResponse),
27 ProviderDoctorRequest(ProviderDoctorRequest),
29 ProviderDoctorReport(ProviderDoctorReport),
31 IosDeviceBuildRequest(IosDeviceBuildRequest),
33 CompileHandoff(CompileHandoff),
35 SnapshotBuildStart(SnapshotBuildStart),
37 SourceBundleDescriptor(SourceBundleDescriptor),
39 GitSnapshotDescriptor(GitSnapshotDescriptor),
41 SnapshotJobAccepted(SnapshotJobAccepted),
43 SnapshotArtifactDescriptor(SnapshotArtifactDescriptor),
45 SnapshotArtifactReceipt(SnapshotArtifactReceipt),
47 SnapshotBuildComplete(SnapshotBuildComplete),
49 SnapshotSessionError(SnapshotSessionError),
51 CompilePhaseEvidence(CompilePhaseEvidence),
53 SealedUnsignedArchive(SealedUnsignedArchive),
55 JobHandle(JobHandle),
57 RemoteBuildEvent(RemoteBuildEvent),
59 EventPage(EventPage),
61 EventRequest(EventRequest),
63 CancellationRequest(CancellationRequest),
65 CancellationAck(CancellationAck),
67 ArtifactListRequest(ArtifactListRequest),
69 ArtifactDownloadRequest(ArtifactDownloadRequest),
71 ArtifactDownloadResult(ArtifactDownloadResult),
73 CleanupRequest(CleanupRequest),
75 CleanupConfirmation(CleanupConfirmation),
77 IosDeviceBuildResult(IosDeviceBuildResult),
79 ArtifactManifest(ArtifactManifest),
81}
82
83pub fn protocol_v1_schema_json() -> Result<String, serde_json::Error> {
89 let mut json = serde_json::to_string_pretty(&schema_for!(RemoteProtocolV1Document))?;
90 json.push('\n');
91 Ok(json)
92}