Skip to content

Commit 55aa886

Browse files
authored
admin: Merge SyncToIndex admin commands (#12815)
2 parents 023c709 + 932bd4e commit 55aa886

File tree

3 files changed

+56
-14
lines changed

3 files changed

+56
-14
lines changed

src/bin/crates-admin/enqueue_job.rs

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,6 @@ pub enum Command {
4747
force: bool,
4848
},
4949
SyncCratesFeed,
50-
SyncToGitIndex {
51-
name: String,
52-
},
53-
SyncToSparseIndex {
54-
name: String,
55-
},
5650
SyncUpdatesFeed,
5751
TrustpubCleanup,
5852
UpdateDownloads,
@@ -146,14 +140,6 @@ pub async fn run(command: Command) -> Result<()> {
146140
Command::SyncCratesFeed => {
147141
jobs::rss::SyncCratesFeed.enqueue(&mut conn).await?;
148142
}
149-
Command::SyncToGitIndex { name } => {
150-
jobs::SyncToGitIndex::new(name).enqueue(&mut conn).await?;
151-
}
152-
Command::SyncToSparseIndex { name } => {
153-
jobs::SyncToSparseIndex::new(name)
154-
.enqueue(&mut conn)
155-
.await?;
156-
}
157143
Command::SyncUpdatesFeed => {
158144
jobs::rss::SyncUpdatesFeed.enqueue(&mut conn).await?;
159145
}

src/bin/crates-admin/main.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ mod migrate;
1111
mod populate;
1212
mod render_og_images;
1313
mod render_readmes;
14+
mod sync_index;
1415
mod test_email;
1516
mod transfer_crates;
1617
mod upload_index;
@@ -26,6 +27,7 @@ enum Command {
2627
DeleteVersion(delete_version::Opts),
2728
Populate(populate::Opts),
2829
RenderReadmes(render_readmes::Opts),
30+
SyncIndex(sync_index::Opts),
2931
TestEmail(test_email::Opts),
3032
TransferCrates(transfer_crates::Opts),
3133
VerifyToken(verify_token::Opts),
@@ -58,6 +60,7 @@ async fn main() -> anyhow::Result<()> {
5860
Command::DeleteVersion(opts) => delete_version::run(opts).await,
5961
Command::Populate(opts) => populate::run(opts).await,
6062
Command::RenderReadmes(opts) => render_readmes::run(opts).await,
63+
Command::SyncIndex(opts) => sync_index::run(opts).await,
6164
Command::TestEmail(opts) => test_email::run(opts).await,
6265
Command::TransferCrates(opts) => transfer_crates::run(opts).await,
6366
Command::VerifyToken(opts) => verify_token::run(opts).await,

src/bin/crates-admin/sync_index.rs

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
use anyhow::{Result, bail};
2+
use clap::builder::ArgAction;
3+
use crates_io::db;
4+
use crates_io::schema::crates;
5+
use crates_io::worker::jobs;
6+
use crates_io_worker::BackgroundJob;
7+
use diesel::dsl::exists;
8+
use diesel::prelude::*;
9+
use diesel_async::RunQueryDsl;
10+
11+
#[derive(clap::Parser, Debug)]
12+
#[command(
13+
name = "sync-index",
14+
about = "Synchronize crate index data to git and sparse indexes"
15+
)]
16+
pub struct Opts {
17+
/// Name of the crate to synchronize
18+
name: String,
19+
20+
/// Skip syncing to the git index
21+
#[arg(long = "no-git", action = ArgAction::SetFalse)]
22+
git: bool,
23+
24+
/// Skip syncing to the sparse index
25+
#[arg(long = "no-sparse", action = ArgAction::SetFalse)]
26+
sparse: bool,
27+
}
28+
29+
pub async fn run(opts: Opts) -> Result<()> {
30+
let mut conn = db::oneoff_connection().await?;
31+
32+
let query = crates::table.filter(crates::name.eq(&opts.name));
33+
let crate_exists: bool = diesel::select(exists(query)).get_result(&mut conn).await?;
34+
if !crate_exists {
35+
bail!("Crate `{}` does not exist", opts.name);
36+
}
37+
38+
if opts.git {
39+
println!("Enqueueing SyncToGitIndex job for `{}`", opts.name);
40+
jobs::SyncToGitIndex::new(&opts.name)
41+
.enqueue(&mut conn)
42+
.await?;
43+
}
44+
45+
if opts.sparse {
46+
println!("Enqueueing SyncToSparseIndex job for `{}`", opts.name);
47+
jobs::SyncToSparseIndex::new(&opts.name)
48+
.enqueue(&mut conn)
49+
.await?;
50+
}
51+
52+
Ok(())
53+
}

0 commit comments

Comments
 (0)