diff --git a/.env.seed b/.env.seed index 47c0bec7..45d56d4d 100644 --- a/.env.seed +++ b/.env.seed @@ -1,2 +1,2 @@ RADICLE_DOMAIN=seed.radicle.xyz -RADICLE_NODE_OPTIONS=--tracking-policy track --tracking-scope all +RADICLE_NODE_OPTIONS=--tracking-policy track --tracking-scope all --force diff --git a/radicle-node/src/main.rs b/radicle-node/src/main.rs index 55774f16..7bfb55d2 100644 --- a/radicle-node/src/main.rs +++ b/radicle-node/src/main.rs @@ -1,4 +1,4 @@ -use std::{net, process}; +use std::{fs, net, process}; use anyhow::{anyhow, Context as _}; use crossbeam_channel as chan; @@ -26,6 +26,7 @@ Options --git-daemon
Address to bind git-daemon to (default 0.0.0.0:9418) --tracking-policy (track|block) Default tracking policy --tracking-scope (trusted|all) Default scope for tracking policies + --force Force start even if an existing control socket is found --help Print help --listen
Address to listen on @@ -38,6 +39,7 @@ struct Options { daemon: Option, limits: service::config::Limits, listen: Vec, + force: bool, tracking_policy: Policy, tracking_scope: Scope, } @@ -54,6 +56,7 @@ impl Options { let mut daemon = None; let mut tracking_policy = Policy::default(); let mut tracking_scope = Scope::default(); + let mut force = false; while let Some(arg) = parser.next()? { match arg { @@ -65,6 +68,9 @@ impl Options { let addr = parser.value()?.parse()?; external_addresses.push(addr); } + Long("force") => { + force = true; + } Long("git-daemon") => { let addr = parser.value()?.parse()?; daemon = Some(addr); @@ -113,6 +119,7 @@ impl Options { connect, daemon, external_addresses, + force, limits, listen, tracking_policy, @@ -155,6 +162,10 @@ fn execute() -> anyhow::Result<()> { let (notify, signals) = chan::bounded(1); signals::install(notify)?; + if options.force { + log::debug!(target: "node", "Removing existing control socket.."); + fs::remove_file(home.socket()).ok(); + } Runtime::init(home, config, options.listen, proxy, daemon, signals, signer)?.run()?; Ok(())