mirror of
https://github.com/kjuulh/dagger-rs.git
synced 2025-07-25 19:09:22 +02:00
feat(sdk): move to &str instead of String and introduce builder.
This will make the api much easier to use, as we can now rely on "" instead of "".into() for normal string values. Introduced builder as well, which makes it much easier to use *Opts, as it can handle the building of that, and get the benefits from String -> &str, as that is currently not allowed for optional values
This commit is contained in:
@@ -1,49 +1,41 @@
|
||||
use dagger_sdk::HostDirectoryOpts;
|
||||
use rand::Rng;
|
||||
|
||||
fn main() -> eyre::Result<()> {
|
||||
let client = dagger_sdk::connect()?;
|
||||
|
||||
let host_source_dir = client.host().directory(
|
||||
"./examples/caching/app".into(),
|
||||
Some(HostDirectoryOpts {
|
||||
exclude: Some(vec!["node_modules".into(), "ci/".into()]),
|
||||
include: None,
|
||||
}),
|
||||
"./examples/caching/app",
|
||||
Some(
|
||||
dagger_sdk::HostDirectoryOptsBuilder::default()
|
||||
.exclude(vec!["node_modules", "ci/"])
|
||||
.build()?,
|
||||
),
|
||||
);
|
||||
|
||||
let node_cache = client.cache_volume("node".into()).id()?;
|
||||
let node_cache = client.cache_volume("node").id()?;
|
||||
|
||||
let source = client
|
||||
.container(None)
|
||||
.from("node:16".into())
|
||||
.with_mounted_directory("/src".into(), host_source_dir.id()?)
|
||||
.with_mounted_cache("/src/node_modules".into(), node_cache, None);
|
||||
.from("node:16")
|
||||
.with_mounted_directory("/src", host_source_dir.id()?)
|
||||
.with_mounted_cache("/src/node_modules", node_cache, None);
|
||||
|
||||
let runner = source
|
||||
.with_workdir("/src".into())
|
||||
.with_exec(vec!["npm".into(), "install".into()], None);
|
||||
.with_workdir("/src")
|
||||
.with_exec(vec!["npm", "install"], None);
|
||||
|
||||
let test = runner.with_exec(
|
||||
vec![
|
||||
"npm".into(),
|
||||
"test".into(),
|
||||
"--".into(),
|
||||
"--watchAll=false".into(),
|
||||
],
|
||||
None,
|
||||
);
|
||||
let test = runner.with_exec(vec!["npm", "test", "--", "--watchAll=false"], None);
|
||||
|
||||
let build_dir = test
|
||||
.with_exec(vec!["npm".into(), "run".into(), "build".into()], None)
|
||||
.directory("./build".into());
|
||||
.with_exec(vec!["npm", "run", "build"], None)
|
||||
.directory("./build");
|
||||
|
||||
let mut rng = rand::thread_rng();
|
||||
|
||||
let ref_ = client
|
||||
.container(None)
|
||||
.from("nginx".into())
|
||||
.with_directory("/usr/share/nginx/html".into(), build_dir.id()?, None)
|
||||
.from("nginx")
|
||||
.with_directory("/usr/share/nginx/html", build_dir.id()?, None)
|
||||
.publish(
|
||||
format!("ttl.sh/hello-dagger-rs-{}:1h", rng.gen::<u64>()),
|
||||
None,
|
||||
|
Reference in New Issue
Block a user