cardano_serialization_lib_json_schema_gen/
main.rs

1use std::fs;
2use std::path::Path;
3
4use cardano_serialization_lib::*;
5
6//#[macro_export]
7macro_rules! gen_json_schema {
8    ($name:ident) => {
9        //let out_dir = std::env::var_os("OUT_DIR").expect("no env");
10        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    // lib.rs
33    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!(CertificateEnum);
53    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!(RelayEnum);
67    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!(NativeScriptEnum);
80    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    // crypto.rs
108    gen_json_schema!(PublicKey);
109    gen_json_schema!(Vkey);
110    //gen_json_schema!(Vkeys);
111    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    // address.rs
133    gen_json_schema!(Credential);
134    gen_json_schema!(CredType);
135    gen_json_schema!(Address);
136    gen_json_schema!(RewardAddress);
137    // plutus.rs
138    gen_json_schema!(PlutusScript);
139    gen_json_schema!(PlutusScripts);
140    // gen_json_schema!(ConstrPlutusData);
141    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!(PlutusMap);
149    // gen_json_schema!(PlutusData);
150    // gen_json_schema!(PlutusList);
151    // gen_json_schema!(PlutusDataEnum);
152    gen_json_schema!(Redeemer);
153    gen_json_schema!(RedeemerTag);
154    gen_json_schema!(RedeemerTagKind);
155    gen_json_schema!(Redeemers);
156    //gen_json_schema!(Strings);
157    // metadata.rs
158    gen_json_schema!(TransactionMetadatum);
159    gen_json_schema!(GeneralTransactionMetadata);
160    gen_json_schema!(AuxiliaryData);
161    // utils.rs
162    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}