Skip to content

Commit a0b4385

Browse files
committed
refresh a corpus repositories by updating all of them.
1 parent a4300c8 commit a0b4385

File tree

3 files changed

+32
-4
lines changed

3 files changed

+32
-4
lines changed

Diff for: gitoxide-core/src/corpus/mod.rs

+29-4
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,37 @@ pub mod engine {
3939

4040
/// Run on the existing set of repositories we have already seen or obtain them from `path` if there is none yet.
4141
pub fn run(&mut self, corpus_path: PathBuf) -> anyhow::Result<()> {
42+
let (corpus_path, corpus_id) = self.prepare_corpus_path(corpus_path)?;
43+
let gitoxide_id = self.gitoxide_version_id_or_insert()?;
44+
let runner_id = self.runner_id_or_insert()?;
45+
let repos = self.find_repos_or_insert(&corpus_path, corpus_id)?;
46+
self.perform_run(gitoxide_id, runner_id, repos)
47+
}
48+
49+
pub fn refresh(&mut self, corpus_path: PathBuf) -> anyhow::Result<()> {
50+
let (corpus_path, corpus_id) = self.prepare_corpus_path(corpus_path)?;
51+
let repos = self.refresh_repos(&corpus_path, corpus_id)?;
52+
self.progress.set_name("refresh repos");
53+
self.progress.info(format!(
54+
"Added or updated {} repositories under {corpus_path:?}",
55+
repos.len()
56+
));
57+
Ok(())
58+
}
59+
}
60+
61+
impl<P> Engine<P>
62+
where
63+
P: gix::Progress,
64+
{
65+
fn perform_run(&self, _gitoxide_id: Id, _runner_id: Id, _repos: Vec<db::Repo>) -> anyhow::Result<()> {
66+
todo!()
67+
}
68+
69+
fn prepare_corpus_path(&self, corpus_path: PathBuf) -> anyhow::Result<(PathBuf, Id)> {
4270
let corpus_path = gix::path::realpath(corpus_path)?;
4371
let corpus_id = self.corpus_id_or_insert(&corpus_path)?;
44-
let _gitoxide_id = self.gitoxide_version_id_or_insert()?;
45-
let _runner_id = self.runner_id_or_insert()?;
46-
let _repos = self.find_repos_or_insert(&corpus_path, corpus_id)?;
47-
todo!("do run on repos")
72+
Ok((corpus_path, corpus_id))
4873
}
4974

5075
fn find_repos(&mut self, corpus_id: Id) -> anyhow::Result<Vec<db::Repo>> {

Diff for: src/plumbing/main.rs

+1
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@ pub fn main() -> Result<()> {
139139
let mut engine = core::corpus::Engine::open_or_create(db, env!("GITOXIDE_VERSION").into(), progress)?;
140140
match cmd {
141141
crate::plumbing::options::corpus::SubCommands::Run => engine.run(path),
142+
crate::plumbing::options::corpus::SubCommands::Refresh => engine.refresh(path),
142143
}
143144
},
144145
),

Diff for: src/plumbing/options/mod.rs

+2
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,8 @@ pub mod corpus {
145145
pub enum SubCommands {
146146
/// Perform a corpus run on all registered repositories.
147147
Run,
148+
/// Re-read all repositories under the corpus directory, and add or update them.
149+
Refresh,
148150
}
149151
}
150152

0 commit comments

Comments
 (0)