diff --git a/one/src/daemon.rs b/one/src/daemon.rs index cdd777a8e..24dd97366 100644 --- a/one/src/daemon.rs +++ b/one/src/daemon.rs @@ -15,8 +15,8 @@ use swagger::{auth::MakeAllowAllAuthenticator, EmptyContext}; use tracing::{debug, info, warn}; use crate::{ - default_directory, feature_flags::*, handle_signals, http, http_metrics, metrics, - network::Ipfs, DBOpts, Info, LogOpts, Network, + default_directory, handle_signals, http, http_metrics, metrics, network::Ipfs, DBOpts, Info, + LogOpts, Network, }; #[derive(Args, Debug)] @@ -139,23 +139,35 @@ pub struct DaemonOpts { )] cors_allow_origins: Vec, - /// Enable experimental feature flags + /// Allow experimental features #[arg( long, - use_value_delimiter = true, - value_delimiter = ',', - env = "CERAMIC_ONE_EXPERIMENTAL_FEATURE_FLAGS" + default_value_t = false, + env = "CERAMIC_ONE_EXPERIMENTAL_FEATURES" )] - experimental_feature_flags: Vec, + experimental_features: bool, + + /// Allow deprecated features + #[arg(long, default_value_t = false, env = "CERAMIC_ONE_DEPRECATED_FEATURES")] + deprecated_features: bool, - /// Enable feature flags + /// Enable authentication; Requires using the experimental-features flag #[arg( long, - use_value_delimiter = true, - value_delimiter = ',', - env = "CERAMIC_ONE_FEATURE_FLAGS" + default_value_t = false, + env = "CERAMIC_ONE_AUTHENTICATION", + requires = "experimental_features" )] - feature_flags: Vec, + authentication: bool, + + /// Enable event validation; Requires using the experimental-features flag + #[arg( + long, + default_value_t = false, + env = "CERAMIC_ONE_EVENT_VALIDATION", + requires = "experimental_features" + )] + event_validation: bool, } // Start the daemon process @@ -201,15 +213,8 @@ pub async fn run(opts: DaemonOpts) -> Result<()> { // Construct services from pool let interest_svc = Arc::new(InterestService::new(sqlite_pool.clone())); - let event_svc = Arc::new( - EventService::try_new( - sqlite_pool.clone(), - true, - opts.experimental_feature_flags - .contains(&ExperimentalFeatureFlags::EventValidation), - ) - .await?, - ); + let event_svc = + Arc::new(EventService::try_new(sqlite_pool.clone(), true, opts.event_validation).await?); let network = opts.network.to_network(&opts.local_network_id)?; @@ -358,10 +363,7 @@ pub async fn run(opts: DaemonOpts) -> Result<()> { interest_api_store, Arc::new(model_api_store), ); - if opts - .experimental_feature_flags - .contains(&ExperimentalFeatureFlags::Authentication) - { + if opts.authentication { ceramic_server.with_authentication(true); } let ceramic_service = ceramic_api_server::server::MakeService::new(ceramic_server); diff --git a/one/src/feature_flags.rs b/one/src/feature_flags.rs deleted file mode 100644 index 20e113147..000000000 --- a/one/src/feature_flags.rs +++ /dev/null @@ -1,55 +0,0 @@ -use anyhow::{anyhow, Result}; - -#[derive(Clone, Debug, PartialEq)] -pub(crate) enum ExperimentalFeatureFlags { - None, - Authentication, - EventValidation, -} - -impl std::str::FromStr for ExperimentalFeatureFlags { - type Err = anyhow::Error; - - fn from_str(value: &str) -> Result { - match value.to_ascii_lowercase().as_str() { - "none" => Ok(ExperimentalFeatureFlags::None), - "authentication" => Ok(ExperimentalFeatureFlags::Authentication), - "event-validation" => Ok(ExperimentalFeatureFlags::EventValidation), - _ => Err(anyhow!("invalid value")), - } - } -} - -impl std::fmt::Display for ExperimentalFeatureFlags { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - match self { - ExperimentalFeatureFlags::None => write!(f, "none"), - ExperimentalFeatureFlags::Authentication => write!(f, "authentication"), - ExperimentalFeatureFlags::EventValidation => write!(f, "event-validation"), - } - } -} - -#[derive(Clone, Debug, PartialEq)] -pub(crate) enum FeatureFlags { - None, -} - -impl std::fmt::Display for FeatureFlags { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - match self { - FeatureFlags::None => write!(f, "none"), - } - } -} - -impl std::str::FromStr for FeatureFlags { - type Err = anyhow::Error; - - fn from_str(value: &str) -> Result { - match value.to_ascii_lowercase().as_str() { - "none" => Ok(FeatureFlags::None), - _ => Err(anyhow!("invalid value")), - } - } -} diff --git a/one/src/lib.rs b/one/src/lib.rs index 73d3937ab..a5ac65e60 100644 --- a/one/src/lib.rs +++ b/one/src/lib.rs @@ -2,7 +2,6 @@ #![warn(missing_docs)] mod daemon; -mod feature_flags; mod http; mod http_metrics; mod metrics;