From 092ccfdcbc895a73fd5c0efce378fbd5165b4386 Mon Sep 17 00:00:00 2001 From: Alexis Sellier Date: Thu, 3 Nov 2022 13:05:28 +0100 Subject: [PATCH] Add `profile::env` module Signed-off-by: Alexis Sellier --- radicle-node/src/main.rs | 4 +++- radicle/src/profile.rs | 18 +++++++++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/radicle-node/src/main.rs b/radicle-node/src/main.rs index 8185a45b..f63fede2 100644 --- a/radicle-node/src/main.rs +++ b/radicle-node/src/main.rs @@ -2,6 +2,7 @@ use std::{env, net, process, thread}; use anyhow::Context as _; +use radicle::profile; use radicle_node::crypto::ssh::keystore::MemorySigner; use radicle_node::logger; use radicle_node::prelude::Address; @@ -18,6 +19,7 @@ struct Options { impl Options { fn from_env() -> Result { use lexopt::prelude::*; + let mut parser = lexopt::Parser::from_env(); let mut connect = Vec::new(); let mut listen = Vec::new(); @@ -53,7 +55,7 @@ fn main() -> anyhow::Result<()> { let signer = match profile.signer() { Ok(signer) => signer.boxed(), Err(err) => { - let passphrase = env::var("RAD_PASSPHRASE") + let passphrase = env::var(profile::env::RAD_PASSPHRASE) .context("Either ssh-agent must be initialized, or `RAD_PASSPHRASE` must be set") .context(err)?; MemorySigner::load(&profile.keystore, &passphrase)?.boxed() diff --git a/radicle/src/profile.rs b/radicle/src/profile.rs index 0f773177..597d5282 100644 --- a/radicle/src/profile.rs +++ b/radicle/src/profile.rs @@ -10,8 +10,8 @@ //! node/ //! radicle.sock # Node control socket //! +use std::io; use std::path::PathBuf; -use std::{env, io}; use thiserror::Error; @@ -22,6 +22,18 @@ use crate::node; use crate::storage::git::transport; use crate::storage::git::Storage; +/// Environment variables used by radicle. +pub mod env { + pub use std::env::*; + + /// Path to the radicle home folder. + pub const RAD_HOME: &str = "RAD_HOME"; + /// Path to the radicle node socket file. + pub const RAD_SOCKET: &str = "RAD_SOCKET"; + /// Passphrase for the encrypted radicle secret key. + pub const RAD_PASSPHRASE: &str = "RAD_PASSPHRASE"; +} + #[derive(Debug, Error)] pub enum Error { #[error(transparent)] @@ -107,7 +119,7 @@ impl Profile { /// Get the path to the radicle node socket. pub fn node(&self) -> PathBuf { - env::var_os("RAD_SOCKET") + env::var_os(env::RAD_SOCKET) .map(PathBuf::from) .unwrap_or_else(|| self.home.join("node").join(node::DEFAULT_SOCKET_NAME)) } @@ -115,7 +127,7 @@ impl Profile { /// Get the path to the radicle home folder. pub fn home() -> Result { - if let Some(home) = env::var_os("RAD_HOME") { + if let Some(home) = env::var_os(env::RAD_HOME) { Ok(PathBuf::from(home)) } else if let Some(home) = env::var_os("HOME") { Ok(PathBuf::from(home).join(".radicle"))