cardano_serialization_lib_json_schema_gen/
main.rs1use std::fs;
2use std::path::Path;
3
4use cardano_serialization_lib::*;
5
6macro_rules! gen_json_schema {
8 ($name:ident) => {
9 let dest_path = Path::new(&"schemas").join(&format!("{}.json", stringify!($name)));
11 fs::write(&dest_path, serde_json::to_string_pretty(&schemars::schema_for!($name)).unwrap()).unwrap();
12 }
13}
14
15fn main() {
16 let schema_path = Path::new(&"schemas");
17 if !schema_path.exists() {
18 fs::create_dir(schema_path).unwrap();
19 } else {
20 let files = schema_path.read_dir().unwrap();
21 for file in files {
22 let file = file.unwrap();
23 if file.file_type().unwrap().is_file() {
24 let filename = file.file_name().into_string().unwrap();
25 if filename.ends_with(".json") {
26 fs::remove_file(file.path()).unwrap();
27 }
28 }
29 }
30 }
31
32 gen_json_schema!(UnitInterval);
34 gen_json_schema!(Transaction);
35 gen_json_schema!(TransactionInputs);
36 gen_json_schema!(TransactionOutputs);
37 gen_json_schema!(Certificates);
38 gen_json_schema!(TransactionBody);
39 gen_json_schema!(TransactionInput);
40 gen_json_schema!(TransactionOutput);
41 gen_json_schema!(StakeRegistration);
42 gen_json_schema!(StakeDeregistration);
43 gen_json_schema!(StakeDelegation);
44 gen_json_schema!(Ed25519KeyHashes);
45 gen_json_schema!(Relays);
46 gen_json_schema!(PoolParams);
47 gen_json_schema!(PoolRegistration);
48 gen_json_schema!(PoolRetirement);
49 gen_json_schema!(GenesisKeyDelegation);
50 gen_json_schema!(MoveInstantaneousRewardsCert);
51 gen_json_schema!(Certificate);
52 gen_json_schema!(MIRPot);
54 gen_json_schema!(MIRToStakeCredentials);
55 gen_json_schema!(MoveInstantaneousReward);
56 gen_json_schema!(MIREnum);
57 gen_json_schema!(Ipv4);
58 gen_json_schema!(Ipv6);
59 gen_json_schema!(URL);
60 gen_json_schema!(DNSRecordAorAAAA);
61 gen_json_schema!(DNSRecordSRV);
62 gen_json_schema!(SingleHostAddr);
63 gen_json_schema!(SingleHostName);
64 gen_json_schema!(MultiHostName);
65 gen_json_schema!(Relay);
66 gen_json_schema!(PoolMetadata);
68 gen_json_schema!(Credentials);
69 gen_json_schema!(RewardAddresses);
70 gen_json_schema!(Withdrawals);
71 gen_json_schema!(TransactionWitnessSet);
72 gen_json_schema!(ScriptPubkey);
73 gen_json_schema!(ScriptAll);
74 gen_json_schema!(ScriptAny);
75 gen_json_schema!(ScriptNOfK);
76 gen_json_schema!(TimelockStart);
77 gen_json_schema!(TimelockExpiry);
78 gen_json_schema!(NativeScript);
79 gen_json_schema!(NativeScripts);
81 gen_json_schema!(Update);
82 gen_json_schema!(GenesisHashes);
83 gen_json_schema!(ScriptHashes);
84 gen_json_schema!(ProposedProtocolParameterUpdates);
85 gen_json_schema!(ProtocolVersion);
86 gen_json_schema!(ProtocolParamUpdate);
87 gen_json_schema!(TransactionBodies);
88 gen_json_schema!(TransactionWitnessSets);
89 gen_json_schema!(AuxiliaryDataSet);
90 gen_json_schema!(Block);
91 gen_json_schema!(Header);
92 gen_json_schema!(OperationalCert);
93 gen_json_schema!(HeaderBody);
94 gen_json_schema!(AssetName);
95 gen_json_schema!(AssetNames);
96 gen_json_schema!(Assets);
97 gen_json_schema!(MultiAsset);
98 gen_json_schema!(MintAssets);
99 gen_json_schema!(MintsAssets);
100 gen_json_schema!(Mint);
101 gen_json_schema!(NetworkId);
102 gen_json_schema!(NetworkIdKind);
103 gen_json_schema!(ScriptRef);
104 gen_json_schema!(DataOption);
105 gen_json_schema!(HeaderLeaderCertEnum);
106
107 gen_json_schema!(PublicKey);
109 gen_json_schema!(Vkey);
110 gen_json_schema!(Vkeywitness);
112 gen_json_schema!(Vkeywitnesses);
113 gen_json_schema!(BootstrapWitness);
114 gen_json_schema!(BootstrapWitnesses);
115 gen_json_schema!(Ed25519Signature);
116 gen_json_schema!(Ed25519KeyHash);
117 gen_json_schema!(ScriptHash);
118 gen_json_schema!(TransactionHash);
119 gen_json_schema!(GenesisDelegateHash);
120 gen_json_schema!(GenesisHash);
121 gen_json_schema!(AuxiliaryDataHash);
122 gen_json_schema!(PoolMetadataHash);
123 gen_json_schema!(VRFKeyHash);
124 gen_json_schema!(BlockHash);
125 gen_json_schema!(DataHash);
126 gen_json_schema!(ScriptDataHash);
127 gen_json_schema!(AnchorDataHash);
128 gen_json_schema!(VRFVKey);
129 gen_json_schema!(KESVKey);
130 gen_json_schema!(Nonce);
131 gen_json_schema!(VRFCert);
132 gen_json_schema!(Credential);
134 gen_json_schema!(CredType);
135 gen_json_schema!(Address);
136 gen_json_schema!(RewardAddress);
137 gen_json_schema!(PlutusScript);
139 gen_json_schema!(PlutusScripts);
140 gen_json_schema!(CostModel);
142 gen_json_schema!(Costmdls);
143 gen_json_schema!(ExUnitPrices);
144 gen_json_schema!(ExUnits);
145 gen_json_schema!(Language);
146 gen_json_schema!(LanguageKind);
147 gen_json_schema!(Languages);
148 gen_json_schema!(Redeemer);
153 gen_json_schema!(RedeemerTag);
154 gen_json_schema!(RedeemerTagKind);
155 gen_json_schema!(Redeemers);
156 gen_json_schema!(TransactionMetadatum);
159 gen_json_schema!(GeneralTransactionMetadata);
160 gen_json_schema!(AuxiliaryData);
161 gen_json_schema!(BigNum);
163 gen_json_schema!(BigInt);
164 gen_json_schema!(Int);
165 gen_json_schema!(Value);
166 gen_json_schema!(TransactionUnspentOutput);
167 gen_json_schema!(TransactionUnspentOutputs);
168
169 gen_json_schema!(DRep);
170 gen_json_schema!(Anchor);
171 gen_json_schema!(Voter);
172 gen_json_schema!(Voters);
173 gen_json_schema!(GovernanceActionId);
174 gen_json_schema!(GovernanceActionIds);
175 gen_json_schema!(VotingProcedure);
176 gen_json_schema!(VotingProcedures);
177 gen_json_schema!(CommitteeHotAuth);
178 gen_json_schema!(CommitteeColdResign);
179 gen_json_schema!(DRepDeregistration);
180 gen_json_schema!(DRepRegistration);
181 gen_json_schema!(DRepUpdate);
182 gen_json_schema!(StakeAndVoteDelegation);
183 gen_json_schema!(StakeRegistrationAndDelegation);
184 gen_json_schema!(StakeVoteRegistrationAndDelegation);
185 gen_json_schema!(VoteDelegation);
186 gen_json_schema!(VoteRegistrationAndDelegation);
187
188 gen_json_schema!(VotingProposal);
189 gen_json_schema!(VotingProposals);
190 gen_json_schema!(GovernanceAction);
191 gen_json_schema!(HardForkInitiationAction);
192 gen_json_schema!(UpdateCommitteeAction);
193 gen_json_schema!(NewConstitutionAction);
194 gen_json_schema!(NoConfidenceAction);
195 gen_json_schema!(ParameterChangeAction);
196 gen_json_schema!(TreasuryWithdrawals);
197 gen_json_schema!(TreasuryWithdrawalsAction);
198 gen_json_schema!(Committee);
199 gen_json_schema!(Constitution);
200 gen_json_schema!(DRepVotingThresholds);
201 gen_json_schema!(PoolVotingThresholds);
202}