feat: add actual remote
Some checks failed
continuous-integration/drone/push Build is failing

Signed-off-by: kjuulh <contact@kjuulh.io>
This commit is contained in:
2024-05-30 22:24:01 +02:00
parent 3f22148bfa
commit 73c6ba25b1
4 changed files with 235 additions and 104 deletions

View File

@@ -1,4 +1,4 @@
use tonic::transport::Channel;
use tonic::transport::{Channel, ClientTlsConfig};
use crate::{
commander::Commander, events::Events, querier::Querier, shared_engine::SharedEngine,
@@ -17,7 +17,7 @@ pub struct State {
pub enum Backend {
Local,
Remote,
Remote { url: String },
}
impl State {
@@ -32,8 +32,9 @@ impl State {
Querier::local(&engine),
Commander::local(engine.clone(), storage.clone(), events.clone())?,
),
Backend::Remote => {
let channel = Channel::from_static("http://localhost:4000")
Backend::Remote { url } => {
let channel = Channel::from_shared(url)?
.tls_config(ClientTlsConfig::new())?
.connect()
.await?;

View File

@@ -12,6 +12,9 @@ struct Command {
#[arg(long, default_value = "local")]
backend: BackendArg,
#[arg(long = "backend-url", required_if_eq("backend", "remote"))]
backend_url: Option<String>,
}
#[derive(ValueEnum, Clone)]
@@ -20,15 +23,6 @@ enum BackendArg {
Remote,
}
impl From<BackendArg> for Backend {
fn from(value: BackendArg) -> Self {
match value {
BackendArg::Local => Backend::Local,
BackendArg::Remote => Backend::Remote,
}
}
}
#[derive(Subcommand)]
enum Commands {
#[cfg(feature = "include_server")]
@@ -93,6 +87,14 @@ pub async fn execute() -> anyhow::Result<()> {
}
let backend = cli.backend;
let backend_url = cli.backend_url;
let backend = match backend {
BackendArg::Local => Backend::Local,
BackendArg::Remote => Backend::Remote {
url: backend_url.expect("backend-url to be set"),
},
};
match cli.command {
#[cfg(feature = "include_server")]
@@ -111,7 +113,7 @@ pub async fn execute() -> anyhow::Result<()> {
.await?;
}
Some(Commands::Exec { commands }) => {
let state = State::new(backend.into()).await?;
let state = State::new(backend).await?;
match commands {
ExecCommands::CreateRoot { root } => {
state
@@ -136,7 +138,7 @@ pub async fn execute() -> anyhow::Result<()> {
}
}
Some(Commands::Query { commands }) => {
let state = State::new(backend.into()).await?;
let state = State::new(backend).await?;
match commands {
QueryCommands::Get { root, path } => {
let res = state.querier.get(
@@ -153,7 +155,7 @@ pub async fn execute() -> anyhow::Result<()> {
}
}
Some(Commands::CreateRoot { name }) => {
let state = State::new(backend.into()).await?;
let state = State::new(backend).await?;
state
.commander
.execute(commander::Command::CreateRoot { root: name })
@@ -161,16 +163,16 @@ pub async fn execute() -> anyhow::Result<()> {
println!("Root was successfully created, now run:\n\n$ hyperlog");
}
Some(Commands::Info {}) => {
let state = State::new(backend.into()).await?;
let state = State::new(backend).await?;
println!("graph stored at: {}", state.storage.info()?)
}
Some(Commands::ClearLock {}) => {
let state = State::new(backend.into()).await?;
let state = State::new(backend).await?;
state.storage.clear_lock_file();
println!("cleared lock file");
}
None => {
let state = State::new(backend.into()).await?;
let state = State::new(backend).await?;
hyperlog_tui::execute(state).await?;
}
}