1#[macro_export]
2macro_rules! deploy_wasm {
3 () => {
4 "./target/wasm32-unknown-unknown/release/{}.deploy.wasm"
5 };
6}
7
8pub const DEFAULT_GAS: usize = 500_000_000;
9pub const DEFAULT_GAS_PRICE: usize = 1;
10
11#[macro_export]
12macro_rules! default_cargo_template {
13 () => {
14 r#"
15[package]
16name = "{}"
17version = "0.1.0"
18edition = "2018"
19
20[lib]
21path = "src/lib.rs"
22crate-type = ["cdylib"]
23
24# See the following examples
25# https://github.com/second-state/SewUp/tree/main/examples/hello-contract
26# https://github.com/second-state/SewUp/tree/main/examples/default-contract
27
28[dependencies]
29sewup = "*"
30sewup-derive = "*"
31anyhow = "*"
32# thiserror = "*"
33
34[profile.release]
35incremental = false
36panic = "abort"
37lto = true
38opt-level = "z"
39
40[profile.release.package.{}]
41incremental = false
42opt-level = "z"
43
44[features]
45constructor = []
46constructor-test = []"#
47 };
48}
49
50pub const DEFAULT_CONTRACT: &str = r#"
51use sewup_derive::{ewasm_constructor, ewasm_fn, ewasm_fn_sig, ewasm_main, ewasm_test};
52
53#[ewasm_constructor]
54fn constructor() {}
55
56#[ewasm_fn]
57fn hello() -> anyhow::Result<String> {
58 Ok("hello world".to_string())
59}
60
61#[ewasm_main]
62fn main() -> anyhow::Result<()> {
63 let contract = sewup::primitives::Contract::new()?;
64 match contract.get_function_selector()? {
65 ewasm_fn_sig!(hello) => hello()?,
66 _ => panic!("unknown handle"),
67 };
68 Ok(())
69}
70
71#[ewasm_test]
72mod tests {
73 use super::*;
74 use sewup_derive::{ewasm_assert_eq, ewasm_assert_ok};
75
76 #[ewasm_test]
77 fn test_get_greeting() {
78 // The default mode does not use anything successful return from Rust
79 // The only thing is return ok or not
80 ewasm_assert_eq!(hello(), vec![]);
81 ewasm_assert_ok!(hello());
82 }
83}"#;
84
85#[macro_export]
86macro_rules! rusty_cargo_template {
87 () => {
88 r#"
89[package]
90name = "{}"
91version = "0.1.0"
92edition = "2018"
93
94[lib]
95path = "src/lib.rs"
96crate-type = ["cdylib"]
97
98# See the following examples
99# https://github.com/second-state/SewUp/tree/main/examples/rusty-contract
100
101[dependencies]
102sewup = "*"
103sewup-derive = "*"
104
105[profile.release]
106incremental = false
107panic = "abort"
108lto = true
109opt-level = "z"
110
111[profile.release.package.{}]
112incremental = false
113opt-level = "z"
114
115[features]
116constructor = []
117constructor-test = []"#
118 };
119}
120
121pub const RUSTY_CONTRACT: &str = r#"
122use sewup_derive::{ewasm_constructor, ewasm_fn, ewasm_fn_sig, ewasm_main, ewasm_test};
123
124#[ewasm_constructor]
125fn constructor() {}
126
127#[ewasm_fn]
128fn handler() -> Result<(), &'static str> {
129 Ok(())
130}
131
132#[ewasm_main(rusty)]
133fn main() -> Result<(), &'static str> {
134 use sewup::primitives::Contract;
135 use sewup_derive::ewasm_input_from;
136
137 let contract = Contract::new().map_err(|_| "NewContractError")?;
138 match contract
139 .get_function_selector()
140 .map_err(|_| "FailGetFnSelector")?
141 {
142 ewasm_fn_sig!(handler) => handler()?,
143 _ => return Err("UnknownHandle"),
144 };
145
146 Ok(())
147}
148
149#[ewasm_test]
150mod tests {
151 use super::*;
152 use sewup::primitives::Contract;
153 use sewup_derive::{ewasm_assert_eq, ewasm_rusty_assert_ok, ewasm_rusty_err_output};
154
155 #[ewasm_test]
156 fn test_handler_ok() {
157 ewasm_rusty_assert_ok!(handler());
158 }
159}"#;
160
161pub const AUTO_CONTRACT: &str = r#"
162use sewup_derive::{ewasm_constructor, ewasm_fn, ewasm_fn_sig, ewasm_main, ewasm_test};
163
164#[ewasm_constructor]
165fn constructor() {}
166
167#[ewasm_fn]
168fn handler() -> anyhow::Result<sewup::primitives::EwasmAny> {
169 Ok(().into())
170}
171
172
173#[ewasm_main(auto)]
174fn main() -> anyhow::Result<sewup::primitives::EwasmAny> {
175 use sewup_derive::ewasm_input_from;
176 let contract = sewup::primitives::Contract::new()?;
177
178 match contract.get_function_selector()? {
179 ewasm_fn_sig!(handler) => handler(),
180 _ => return Err(anyhow::anyhow!("Unknow Error")),
181 }
182}
183
184#[ewasm_test]
185mod tests {
186 use super::*;
187 use sewup_derive::{ewasm_assert_eq, ewasm_assert_ok, ewasm_auto_assert_eq, ewasm_err_output};
188
189 #[ewasm_test]
190 fn test_handler() {
191 ewasm_auto_assert_eq!(handler(), ());
192 }
193}"#;