/src/wasm-tools/crates/wit-smith/src/config.rs
Line | Count | Source |
1 | | use arbitrary::{Arbitrary, Result, Unstructured}; |
2 | | |
3 | | #[derive(Debug, Clone)] |
4 | | #[cfg_attr(feature = "clap", derive(clap::Parser))] |
5 | | pub struct Config { |
6 | | #[cfg_attr(feature = "clap", clap(long, default_value_t = Config::default().max_packages))] |
7 | | pub max_packages: usize, |
8 | | #[cfg_attr(feature = "clap", clap(long, default_value_t = Config::default().max_type_size))] |
9 | | pub max_type_size: usize, |
10 | | #[cfg_attr(feature = "clap", clap(long, default_value_t = Config::default().max_interface_items))] |
11 | | pub max_interface_items: usize, |
12 | | #[cfg_attr(feature = "clap", clap(long, default_value_t = Config::default().max_world_items))] |
13 | | pub max_world_items: usize, |
14 | | #[cfg_attr(feature = "clap", clap(long, default_value_t = Config::default().max_pkg_items))] |
15 | | pub max_pkg_items: usize, |
16 | | #[cfg_attr(feature = "clap", clap(long, default_value_t = Config::default().max_type_parts))] |
17 | | pub max_type_parts: usize, |
18 | | #[cfg_attr(feature = "clap", clap(long, default_value_t = Config::default().max_files_per_package))] |
19 | | pub max_files_per_package: usize, |
20 | | #[cfg_attr(feature = "clap", clap(long, default_value_t = Config::default().max_resource_items))] |
21 | | pub max_resource_items: usize, |
22 | | #[cfg_attr(feature = "clap", clap(long = "async", default_value_t = Config::default().async_))] |
23 | | pub async_: bool, |
24 | | #[cfg_attr(feature = "clap", clap(long, default_value_t = Config::default().futures))] |
25 | | pub futures: bool, |
26 | | #[cfg_attr(feature = "clap", clap(long, default_value_t = Config::default().streams))] |
27 | | pub streams: bool, |
28 | | #[cfg_attr(feature = "clap", clap(long, default_value_t = Config::default().error_context))] |
29 | | pub error_context: bool, |
30 | | #[cfg_attr(feature = "clap", clap(long, default_value_t = Config::default().fixed_length_lists))] |
31 | | pub fixed_length_lists: bool, |
32 | | #[cfg_attr(feature = "clap", clap(long, default_value_t = Config::default().world_include))] |
33 | | pub world_include: bool, |
34 | | } |
35 | | |
36 | | impl Default for Config { |
37 | 0 | fn default() -> Config { |
38 | 0 | Config { |
39 | 0 | max_packages: 10, |
40 | 0 | max_type_size: 100, |
41 | 0 | max_interface_items: 10, |
42 | 0 | max_world_items: 10, |
43 | 0 | max_pkg_items: 10, |
44 | 0 | max_type_parts: 10, |
45 | 0 | max_files_per_package: 10, |
46 | 0 | max_resource_items: 10, |
47 | 0 | async_: false, |
48 | 0 | futures: false, |
49 | 0 | streams: false, |
50 | 0 | error_context: false, |
51 | 0 | fixed_length_lists: false, |
52 | 0 | world_include: false, |
53 | 0 | } |
54 | 0 | } |
55 | | } |
56 | | |
57 | | impl Arbitrary<'_> for Config { |
58 | 4.49k | fn arbitrary(u: &mut Unstructured<'_>) -> Result<Config> { |
59 | | Ok(Config { |
60 | 4.49k | max_packages: u.int_in_range(1..=20)?, |
61 | 4.49k | max_files_per_package: u.int_in_range(1..=10)?, |
62 | 4.49k | max_type_size: u.int_in_range(0..=1000)?, |
63 | 4.49k | max_interface_items: u.int_in_range(0..=20)?, |
64 | 4.49k | max_world_items: u.int_in_range(0..=10)?, |
65 | 4.49k | max_pkg_items: u.int_in_range(1..=10)?, |
66 | 4.49k | max_type_parts: u.int_in_range(1..=10)?, |
67 | 4.49k | max_resource_items: u.int_in_range(0..=10)?, |
68 | 4.49k | async_: u.arbitrary()?, |
69 | 4.49k | futures: u.arbitrary()?, |
70 | 4.49k | streams: u.arbitrary()?, |
71 | 4.49k | error_context: u.arbitrary()?, |
72 | 4.49k | fixed_length_lists: u.arbitrary()?, |
73 | | world_include: false, |
74 | | }) |
75 | 4.49k | } |
76 | | } |