Skip to content

Commit c60182e

Browse files
pietroalbiniJoshua Nelson
authored and
Joshua Nelson
committed
docbuilder: remove DocBuilderOptions
1 parent 5fa1950 commit c60182e

File tree

6 files changed

+40
-96
lines changed

6 files changed

+40
-96
lines changed

src/bin/cratesfyi.rs

Lines changed: 9 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@ use cratesfyi::db::{self, add_path_into_database, Pool, PoolClient};
77
use cratesfyi::index::Index;
88
use cratesfyi::utils::{remove_crate_priority, set_crate_priority};
99
use cratesfyi::{
10-
BuildQueue, Config, Context, DocBuilder, DocBuilderOptions, Metrics, RustwideBuilder, Server,
11-
Storage,
10+
BuildQueue, Config, Context, DocBuilder, Metrics, RustwideBuilder, Server, Storage,
1211
};
1312
use failure::{err_msg, Error, ResultExt};
1413
use once_cell::sync::OnceCell;
@@ -230,31 +229,13 @@ struct Build {
230229
#[structopt(name = "SKIP_IF_EXISTS", short = "s", long = "skip")]
231230
skip_if_exists: bool,
232231

233-
/// Skips building documentation if build log exists
234-
#[structopt(name = "SKIP_IF_LOG_EXISTS", long = "skip-if-log-exists")]
235-
skip_if_log_exists: bool,
236-
237232
#[structopt(subcommand)]
238233
subcommand: BuildSubcommand,
239234
}
240235

241236
impl Build {
242237
pub fn handle_args(self, ctx: BinContext) -> Result<(), Error> {
243-
let docbuilder = {
244-
let config = ctx.config()?;
245-
let mut doc_options =
246-
DocBuilderOptions::new(config.prefix.clone(), config.registry_index_path.clone());
247-
248-
doc_options.skip_if_exists = self.skip_if_exists;
249-
250-
doc_options
251-
.check_paths()
252-
.context("The given paths were invalid")?;
253-
254-
DocBuilder::new(doc_options, ctx.pool()?, ctx.build_queue()?)
255-
};
256-
257-
self.subcommand.handle_args(ctx, docbuilder)
238+
self.subcommand.handle_args(ctx, self.skip_if_exists)
258239
}
259240
}
260241

@@ -297,19 +278,17 @@ enum BuildSubcommand {
297278

298279
/// Unlocks cratesfyi daemon to continue building new crates
299280
Unlock,
300-
301-
PrintOptions,
302281
}
303282

304283
impl BuildSubcommand {
305-
pub fn handle_args(self, ctx: BinContext, mut docbuilder: DocBuilder) -> Result<(), Error> {
284+
pub fn handle_args(self, ctx: BinContext, skip_if_exists: bool) -> Result<(), Error> {
285+
let mut docbuilder = DocBuilder::new(ctx.config()?, ctx.pool()?, ctx.build_queue()?);
286+
306287
let rustwide_builder = || -> Result<RustwideBuilder, Error> {
307-
Ok(RustwideBuilder::init(
308-
ctx.config()?,
309-
ctx.pool()?,
310-
ctx.metrics()?,
311-
ctx.storage()?,
312-
)?)
288+
let mut builder =
289+
RustwideBuilder::init(ctx.config()?, ctx.pool()?, ctx.metrics()?, ctx.storage()?)?;
290+
builder.set_skip_build_if_exists(skip_if_exists);
291+
Ok(builder)
313292
};
314293

315294
match self {
@@ -371,7 +350,6 @@ impl BuildSubcommand {
371350

372351
Self::Lock => docbuilder.lock().context("Failed to lock")?,
373352
Self::Unlock => docbuilder.unlock().context("Failed to unlock")?,
374-
Self::PrintOptions => println!("{:?}", docbuilder.options()),
375353
}
376354

377355
Ok(())

src/docbuilder/mod.rs

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
mod crates;
22
mod limits;
3-
pub(crate) mod options;
43
mod queue;
54
mod rustwide_builder;
65

@@ -11,33 +10,32 @@ pub(crate) use self::rustwide_builder::{BuildResult, DocCoverage};
1110
use crate::db::Pool;
1211
use crate::error::Result;
1312
use crate::index::Index;
14-
use crate::BuildQueue;
15-
use crate::DocBuilderOptions;
13+
use crate::{BuildQueue, Config};
1614
use std::fs;
1715
use std::path::PathBuf;
1816
use std::sync::Arc;
1917

2018
/// chroot based documentation builder
2119
pub struct DocBuilder {
22-
options: DocBuilderOptions,
20+
config: Arc<Config>,
2321
index: Index,
2422
db: Pool,
2523
build_queue: Arc<BuildQueue>,
2624
}
2725

2826
impl DocBuilder {
29-
pub fn new(options: DocBuilderOptions, db: Pool, build_queue: Arc<BuildQueue>) -> DocBuilder {
30-
let index = Index::new(&options.registry_index_path).expect("valid index");
27+
pub fn new(config: Arc<Config>, db: Pool, build_queue: Arc<BuildQueue>) -> DocBuilder {
28+
let index = Index::new(&config.registry_index_path).expect("valid index");
3129
DocBuilder {
30+
config,
3231
build_queue,
33-
options,
3432
index,
3533
db,
3634
}
3735
}
3836

3937
fn lock_path(&self) -> PathBuf {
40-
self.options.prefix.join("cratesfyi.lock")
38+
self.config.prefix.join("cratesfyi.lock")
4139
}
4240

4341
/// Creates a lock file. Daemon will check this lock file and stop operating if its exists.
@@ -64,9 +62,4 @@ impl DocBuilder {
6462
pub fn is_locked(&self) -> bool {
6563
self.lock_path().exists()
6664
}
67-
68-
/// Returns a reference of options
69-
pub fn options(&self) -> &DocBuilderOptions {
70-
&self.options
71-
}
7265
}

src/docbuilder/options.rs

Lines changed: 0 additions & 31 deletions
This file was deleted.

src/docbuilder/rustwide_builder.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ pub struct RustwideBuilder {
6464
storage: Arc<Storage>,
6565
metrics: Arc<Metrics>,
6666
rustc_version: String,
67+
skip_build_if_exists: bool,
6768
}
6869

6970
impl RustwideBuilder {
@@ -92,9 +93,14 @@ impl RustwideBuilder {
9293
storage,
9394
metrics,
9495
rustc_version: String::new(),
96+
skip_build_if_exists: false,
9597
})
9698
}
9799

100+
pub fn set_skip_build_if_exists(&mut self, should: bool) {
101+
self.skip_build_if_exists = should;
102+
}
103+
98104
fn prepare_sandbox(&self, limits: &Limits) -> SandboxBuilder {
99105
SandboxBuilder::new()
100106
.cpu_limit(self.config.build_cpu_limit.map(|limit| limit as f32))
@@ -252,7 +258,7 @@ impl RustwideBuilder {
252258

253259
pub fn build_world(&mut self, doc_builder: &mut DocBuilder) -> Result<()> {
254260
crates_from_path(
255-
&doc_builder.options().registry_index_path.clone(),
261+
&self.config.registry_index_path.clone(),
256262
&mut |name, version| {
257263
if let Err(err) = self.build_package(doc_builder, name, version, None) {
258264
warn!("failed to build package {} {}: {}", name, version, err);
@@ -284,7 +290,7 @@ impl RustwideBuilder {
284290
) -> Result<bool> {
285291
let mut conn = self.db.get()?;
286292

287-
if !self.should_build(&mut conn, &doc_builder, name, version)? {
293+
if !self.should_build(&mut conn, name, version)? {
288294
return Ok(false);
289295
}
290296

@@ -634,14 +640,8 @@ impl RustwideBuilder {
634640
.map(|t| t.1)
635641
}
636642

637-
fn should_build(
638-
&self,
639-
conn: &mut Client,
640-
docbuilder: &DocBuilder,
641-
name: &str,
642-
version: &str,
643-
) -> Result<bool> {
644-
if docbuilder.options().skip_if_exists {
643+
fn should_build(&self, conn: &mut Client, name: &str, version: &str) -> Result<bool> {
644+
if self.skip_build_if_exists {
645645
// Check whether no successful builds are present in the database.
646646
Ok(conn
647647
.query(

src/lib.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
pub use self::build_queue::BuildQueue;
66
pub use self::config::Config;
77
pub use self::context::Context;
8-
pub use self::docbuilder::options::DocBuilderOptions;
98
pub use self::docbuilder::DocBuilder;
109
pub use self::docbuilder::RustwideBuilder;
1110
pub use self::metrics::Metrics;

src/utils/daemon.rs

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@
44
55
use crate::{
66
utils::{queue_builder, update_release_activity, GithubUpdater},
7-
Context, DocBuilder, DocBuilderOptions,
7+
Context, DocBuilder,
88
};
99
use chrono::{Timelike, Utc};
1010
use failure::Error;
1111
use log::{debug, error, info};
1212
use std::thread;
1313
use std::time::{Duration, Instant};
1414

15-
fn start_registry_watcher(opts: DocBuilderOptions, context: &dyn Context) -> Result<(), Error> {
15+
fn start_registry_watcher(context: &dyn Context) -> Result<(), Error> {
1616
let pool = context.pool()?;
1717
let build_queue = context.build_queue()?;
1818
let config = context.config()?;
@@ -26,7 +26,7 @@ fn start_registry_watcher(opts: DocBuilderOptions, context: &dyn Context) -> Res
2626
let mut last_gc = Instant::now();
2727
loop {
2828
let mut doc_builder =
29-
DocBuilder::new(opts.clone(), pool.clone(), build_queue.clone());
29+
DocBuilder::new(config.clone(), pool.clone(), build_queue.clone());
3030

3131
if doc_builder.is_locked() {
3232
debug!("Lock file exists, skipping checking new crates");
@@ -51,14 +51,10 @@ fn start_registry_watcher(opts: DocBuilderOptions, context: &dyn Context) -> Res
5151

5252
pub fn start_daemon(context: &dyn Context, enable_registry_watcher: bool) -> Result<(), Error> {
5353
let config = context.config()?;
54-
let dbopts = DocBuilderOptions::new(config.prefix.clone(), config.registry_index_path.clone());
55-
56-
// check paths once
57-
dbopts.check_paths().unwrap();
5854

5955
if enable_registry_watcher {
6056
// check new crates every minute
61-
start_registry_watcher(dbopts.clone(), context)?;
57+
start_registry_watcher(context)?;
6258
}
6359

6460
// build new crates every minute
@@ -70,8 +66,17 @@ pub fn start_daemon(context: &dyn Context, enable_registry_watcher: bool) -> Res
7066
thread::Builder::new()
7167
.name("build queue reader".to_string())
7268
.spawn(move || {
73-
let doc_builder = DocBuilder::new(dbopts.clone(), pool.clone(), build_queue.clone());
74-
queue_builder(doc_builder, cloned_config, pool, build_queue, metrics, storage).unwrap();
69+
let doc_builder =
70+
DocBuilder::new(cloned_config.clone(), pool.clone(), build_queue.clone());
71+
queue_builder(
72+
doc_builder,
73+
cloned_config,
74+
pool,
75+
build_queue,
76+
metrics,
77+
storage,
78+
)
79+
.unwrap();
7580
})
7681
.unwrap();
7782

0 commit comments

Comments
 (0)