Skip to content

Commit 8c64713

Browse files
jyn514Joshua Nelson
authored andcommitted
Add support for overriding remote docker images
Previously, only local images could be overridden. This adds a new env variable DOCSRS_DOCKER_IMAGE, and makes the existing variable DOCS_RS_LOCAL_DOCKER_IMAGE a synonym for it. At some point I want to remove the old name, but that requires updating forge first.
1 parent e85bfdf commit 8c64713

File tree

2 files changed

+11
-5
lines changed

2 files changed

+11
-5
lines changed

src/config.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ pub struct Config {
5757
pub(crate) build_attempts: u16,
5858
pub(crate) rustwide_workspace: PathBuf,
5959
pub(crate) inside_docker: bool,
60-
pub(crate) local_docker_image: Option<String>,
60+
pub(crate) docker_image: Option<String>,
6161
pub(crate) toolchain: String,
6262
pub(crate) build_cpu_limit: Option<u32>,
6363
pub(crate) include_default_targets: bool,
@@ -108,7 +108,8 @@ impl Config {
108108

109109
rustwide_workspace: env("CRATESFYI_RUSTWIDE_WORKSPACE", PathBuf::from(".workspace"))?,
110110
inside_docker: env("DOCS_RS_DOCKER", false)?,
111-
local_docker_image: maybe_env("DOCS_RS_LOCAL_DOCKER_IMAGE")?,
111+
docker_image: maybe_env("DOCS_RS_LOCAL_DOCKER_IMAGE")?
112+
.or(maybe_env("DOCSRS_DOCKER_IMAGE")?),
112113
toolchain: env("CRATESFYI_TOOLCHAIN", "nightly".to_string())?,
113114
build_cpu_limit: maybe_env("DOCS_RS_BUILD_CPU_LIMIT")?,
114115
include_default_targets: env("DOCSRS_INCLUDE_DEFAULT_TARGETS", true)?,

src/docbuilder/rustwide_builder.rs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use docsrs_metadata::{Metadata, DEFAULT_TARGETS, HOST_TARGET};
1515
use failure::ResultExt;
1616
use log::{debug, info, warn, LevelFilter};
1717
use postgres::Client;
18-
use rustwide::cmd::{Command, SandboxBuilder, SandboxImage};
18+
use rustwide::cmd::{Command, CommandError, SandboxBuilder, SandboxImage};
1919
use rustwide::logging::{self, LogStorage};
2020
use rustwide::toolchain::ToolchainError;
2121
use rustwide::{Build, Crate, Toolchain, Workspace, WorkspaceBuilder};
@@ -53,8 +53,13 @@ impl RustwideBuilder {
5353

5454
let mut builder = WorkspaceBuilder::new(&config.rustwide_workspace, USER_AGENT)
5555
.running_inside_docker(config.inside_docker);
56-
if let Some(custom_image) = &config.local_docker_image {
57-
builder = builder.sandbox_image(SandboxImage::local(&custom_image)?);
56+
if let Some(custom_image) = &config.docker_image {
57+
let image = match SandboxImage::local(&custom_image) {
58+
Ok(i) => i,
59+
Err(CommandError::SandboxImageMissing(_)) => SandboxImage::remote(custom_image)?,
60+
Err(err) => return Err(err.into()),
61+
};
62+
builder = builder.sandbox_image(image);
5863
}
5964
if cfg!(test) {
6065
builder = builder.fast_init(true);

0 commit comments

Comments
 (0)