feat(cli): add `--rescan_mode` CLI option, fix storybook cmd

feat/selector-improvements
Tomáš Mládek 2023-11-17 17:21:26 +01:00
parent b050eaf893
commit 28861370a7
3 changed files with 34 additions and 9 deletions

View File

@ -26,7 +26,7 @@ use upend_base::hash::{sha256hash, UpMultihash};
use upend_db::jobs::JobContainer;
use upend_db::stores::fs::FsStore;
use upend_db::stores::UpStore;
use upend_db::UpEndDatabase;
use upend_db::{BlobMode, UpEndDatabase};
use crate::util::exec::block_background;
@ -152,6 +152,10 @@ struct ServeArgs {
#[arg(long)]
no_initial_update: bool,
/// Which mode to use for rescanning the vault.
#[arg(long)]
rescan_mode: Option<BlobMode>,
/// Clean up temporary files (e.g. previews) on start.
#[arg(long)]
clean: bool,
@ -444,19 +448,25 @@ async fn main() -> Result<()> {
};
if !args.no_initial_update {
if !open_result.new {
if !open_result.new || args.rescan_mode.is_some() {
info!("Running update...");
block_background::<_, _, anyhow::Error>(move || {
let connection = upend.connection()?;
let connection: upend_db::UpEndConnection = upend.connection()?;
let tree_mode = args.rescan_mode.unwrap_or_else(|| {
connection
.get_vault_options()
.unwrap()
.blob_mode
.unwrap_or_default()
});
let _ = state.store.update(
&upend,
job_container.clone(),
upend_db::stores::UpdateOptions {
initial: false,
tree_mode: connection
.get_vault_options()?
.blob_mode
.unwrap_or_default(),
tree_mode,
},
);
let _ = extractors::extract_all(upend, state.store, job_container);

View File

@ -619,3 +619,18 @@ pub enum BlobMode {
/// Only store files, don't place them anywhere
StoreOnly,
}
impl std::str::FromStr for BlobMode {
type Err = anyhow::Error;
fn from_str(s: &str) -> Result<Self, Self::Err> {
match s {
"flat" => Ok(BlobMode::Flat),
"mirror" => Ok(BlobMode::Mirror),
"incoming" => Ok(BlobMode::Incoming(None)),
s if s.starts_with("incoming:") => Ok(BlobMode::Incoming(Some(s[9..].to_string()))),
"store_only" => Ok(BlobMode::StoreOnly),
_ => Err(anyhow!("Unknown blob mode: {}", s)),
}
}
}

View File

@ -12,7 +12,7 @@
"clean": "rm -frv dist public/vendor",
"storybook": "npm-run-all -p -r storybook:serve storybook:upend",
"storybook:serve": "storybook dev -p 6006",
"storybook:upend": "cargo run --release -- serve ../example_vault --bind 127.0.0.1:8099 --no-browser --reinitialize",
"storybook:upend": "cargo run --release -- serve ../example_vault --bind 127.0.0.1:8099 --no-browser --reinitialize --rescan-mode mirror",
"build-storybook": "storybook build"
},
"devDependencies": {
@ -78,4 +78,4 @@
"three": "^0.147.0",
"wavesurfer.js": "^6.6.4"
}
}
}