Skip to content

Commit 4ce5e85

Browse files
committed
add SandboxBuilder image override
1 parent 7a4ef73 commit 4ce5e85

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

src/build.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,8 @@ impl BuildDirectory {
175175
self.workspace.builds_dir().join(&self.name)
176176
}
177177

178-
fn source_dir(&self) -> PathBuf {
178+
/// Get the path to the source code on the host machine (outside the sandbox).
179+
pub fn source_dir(&self) -> PathBuf {
179180
self.build_dir().join("source")
180181
}
181182

src/cmd/sandbox.rs

+16-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ use std::path::{Path, PathBuf};
88
use std::time::Duration;
99

1010
/// The Docker image used for sandboxing.
11+
#[derive(Clone)]
1112
pub struct SandboxImage {
1213
name: String,
1314
}
@@ -146,6 +147,7 @@ pub struct SandboxBuilder {
146147
user: Option<String>,
147148
cmd: Vec<String>,
148149
enable_networking: bool,
150+
image: Option<SandboxImage>,
149151
}
150152

151153
impl SandboxBuilder {
@@ -160,6 +162,7 @@ impl SandboxBuilder {
160162
user: None,
161163
cmd: Vec::new(),
162164
enable_networking: true,
165+
image: None,
163166
}
164167
}
165168

@@ -203,6 +206,14 @@ impl SandboxBuilder {
203206
self
204207
}
205208

209+
/// Override the image used for this sandbox.
210+
///
211+
/// By default rustwide will use the image from the `Workspace`.
212+
pub fn image(mut self, image: SandboxImage) -> Self {
213+
self.image = Some(image);
214+
self
215+
}
216+
206217
pub(super) fn env<S1: Into<String>, S2: Into<String>>(mut self, key: S1, value: S2) -> Self {
207218
self.env.push((key.into(), value.into()));
208219
self
@@ -274,7 +285,11 @@ impl SandboxBuilder {
274285
args.push("--isolation=process".into());
275286
}
276287

277-
args.push(workspace.sandbox_image().name.clone());
288+
if let Some(image) = self.image {
289+
args.push(image.name);
290+
} else {
291+
args.push(workspace.sandbox_image().name.clone());
292+
}
278293

279294
for arg in self.cmd {
280295
args.push(arg);

0 commit comments

Comments
 (0)