feat: allow taking a local path
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
Signed-off-by: kjuulh <contact@kjuulh.io>
This commit is contained in:
parent
83f9816cce
commit
09546907e5
@ -1,3 +1,5 @@
|
|||||||
|
use std::path::PathBuf;
|
||||||
|
|
||||||
use tonic::transport::{Channel, ClientTlsConfig};
|
use tonic::transport::{Channel, ClientTlsConfig};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
@ -14,15 +16,18 @@ pub struct State {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub enum Backend {
|
pub enum Backend {
|
||||||
Local,
|
Local { path_override: Option<PathBuf> },
|
||||||
Remote { url: String },
|
Remote { url: String },
|
||||||
}
|
}
|
||||||
|
|
||||||
impl State {
|
impl State {
|
||||||
pub async fn new(backend: Backend) -> anyhow::Result<Self> {
|
pub async fn new(backend: Backend) -> anyhow::Result<Self> {
|
||||||
let (querier, commander) = match &backend {
|
let (querier, commander) = match &backend {
|
||||||
Backend::Local => {
|
Backend::Local { path_override } => {
|
||||||
let storage = Storage::new();
|
let mut storage = Storage::new();
|
||||||
|
if let Some(path_override) = path_override {
|
||||||
|
storage.with_base(path_override);
|
||||||
|
}
|
||||||
let engine = storage.load()?;
|
let engine = storage.load()?;
|
||||||
let events = Events::default();
|
let events = Events::default();
|
||||||
let engine = SharedEngine::from(engine);
|
let engine = SharedEngine::from(engine);
|
||||||
@ -53,15 +58,21 @@ impl State {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn unlock(&self) {
|
pub fn unlock(&self) {
|
||||||
if let Backend::Local = &self.backend {
|
if let Backend::Local { path_override } = &self.backend {
|
||||||
let storage = Storage::new();
|
let mut storage = Storage::new();
|
||||||
|
if let Some(path_override) = path_override {
|
||||||
|
storage.with_base(path_override);
|
||||||
|
}
|
||||||
storage.clear_lock_file();
|
storage.clear_lock_file();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn info(&self) -> Option<anyhow::Result<String>> {
|
pub fn info(&self) -> Option<anyhow::Result<String>> {
|
||||||
if let Backend::Local = &self.backend {
|
if let Backend::Local { path_override } = &self.backend {
|
||||||
let storage = Storage::new();
|
let mut storage = Storage::new();
|
||||||
|
if let Some(path_override) = path_override {
|
||||||
|
storage.with_base(path_override);
|
||||||
|
}
|
||||||
return Some(storage.info());
|
return Some(storage.info());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
use std::path::PathBuf;
|
||||||
|
|
||||||
use clap::{Parser, Subcommand, ValueEnum};
|
use clap::{Parser, Subcommand, ValueEnum};
|
||||||
use hyperlog_tui::{
|
use hyperlog_tui::{
|
||||||
commander,
|
commander,
|
||||||
@ -15,6 +17,9 @@ struct Command {
|
|||||||
|
|
||||||
#[arg(long = "backend-url", required_if_eq("backend", "remote"))]
|
#[arg(long = "backend-url", required_if_eq("backend", "remote"))]
|
||||||
backend_url: Option<String>,
|
backend_url: Option<String>,
|
||||||
|
|
||||||
|
#[arg(long = "local-path")]
|
||||||
|
local_path: Option<PathBuf>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(ValueEnum, Clone)]
|
#[derive(ValueEnum, Clone)]
|
||||||
@ -90,7 +95,9 @@ pub async fn execute() -> anyhow::Result<()> {
|
|||||||
let backend_url = cli.backend_url;
|
let backend_url = cli.backend_url;
|
||||||
|
|
||||||
let backend = match backend {
|
let backend = match backend {
|
||||||
BackendArg::Local => Backend::Local,
|
BackendArg::Local => Backend::Local {
|
||||||
|
path_override: cli.local_path.clone(),
|
||||||
|
},
|
||||||
BackendArg::Remote => Backend::Remote {
|
BackendArg::Remote => Backend::Remote {
|
||||||
url: backend_url.expect("backend-url to be set"),
|
url: backend_url.expect("backend-url to be set"),
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user