soil_cli/params/
offchain_worker_params.rs1use clap::{ArgAction, Args};
15use soil_network::config::Role;
16use soil_service::config::OffchainWorkerConfig;
17
18use crate::{error, OffchainWorkerEnabled};
19
20#[derive(Debug, Clone, Args)]
22pub struct OffchainWorkerParams {
23 #[arg(
25 long = "offchain-worker",
26 value_name = "ENABLED",
27 value_enum,
28 ignore_case = true,
29 default_value_t = OffchainWorkerEnabled::WhenAuthority
30 )]
31 pub enabled: OffchainWorkerEnabled,
32
33 #[arg(long = "enable-offchain-indexing", value_name = "ENABLE_OFFCHAIN_INDEXING", default_value_t = false, action = ArgAction::Set)]
37 pub indexing_enabled: bool,
38}
39
40impl OffchainWorkerParams {
41 pub fn offchain_worker(&self, role: &Role) -> error::Result<OffchainWorkerConfig> {
43 let enabled = match (&self.enabled, role) {
44 (OffchainWorkerEnabled::WhenAuthority, Role::Authority { .. }) => true,
45 (OffchainWorkerEnabled::Always, _) => true,
46 (OffchainWorkerEnabled::Never, _) => false,
47 (OffchainWorkerEnabled::WhenAuthority, _) => false,
48 };
49
50 let indexing_enabled = self.indexing_enabled;
51 Ok(OffchainWorkerConfig { enabled, indexing_enabled })
52 }
53}