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:
@@ -4,37 +4,30 @@ fn main() -> eyre::Result<()> {
|
||||
let client = dagger_sdk::connect()?;
|
||||
|
||||
let host_source_dir = client.host().directory(
|
||||
"examples/build-the-application/app".into(),
|
||||
"examples/build-the-application/app",
|
||||
Some(HostDirectoryOpts {
|
||||
exclude: Some(vec!["node_modules".into(), "ci/".into()]),
|
||||
include: None,
|
||||
marker: std::marker::PhantomData,
|
||||
}),
|
||||
);
|
||||
|
||||
let source = client
|
||||
.container(None)
|
||||
.from("node:16".into())
|
||||
.with_mounted_directory("/src".into(), host_source_dir.id()?);
|
||||
.from("node:16")
|
||||
.with_mounted_directory("/src", host_source_dir.id()?);
|
||||
|
||||
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 _ = build_dir.export("./build".into());
|
||||
let _ = build_dir.export("./build");
|
||||
|
||||
let entries = build_dir.entries(None);
|
||||
|
||||
|
@@ -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,
|
||||
|
@@ -7,7 +7,7 @@ fn main() -> eyre::Result<()> {
|
||||
|
||||
let context_dir = client
|
||||
.host()
|
||||
.directory("./examples/existing-dockerfile/app".into(), None);
|
||||
.directory("./examples/existing-dockerfile/app", None);
|
||||
|
||||
let ref_ = client
|
||||
.container(None)
|
||||
|
@@ -3,8 +3,8 @@ fn main() -> eyre::Result<()> {
|
||||
|
||||
let version = client
|
||||
.container(None)
|
||||
.from("golang:1.19".into())
|
||||
.with_exec(vec!["go".into(), "version".into()], None)
|
||||
.from("golang:1.19")
|
||||
.with_exec(vec!["go", "version".into()], None)
|
||||
.stdout()?;
|
||||
|
||||
println!("Hello from Dagger and {}", version.trim());
|
||||
|
@@ -5,42 +5,35 @@ fn main() -> eyre::Result<()> {
|
||||
let client = dagger_sdk::connect()?;
|
||||
|
||||
let host_source_dir = client.host().directory(
|
||||
"examples/publish-the-application/app".into(),
|
||||
"examples/publish-the-application/app",
|
||||
Some(HostDirectoryOpts {
|
||||
exclude: Some(vec!["node_modules".into(), "ci/".into()]),
|
||||
exclude: Some(vec!["node_modules", "ci/"]),
|
||||
include: None,
|
||||
marker: std::marker::PhantomData,
|
||||
}),
|
||||
);
|
||||
|
||||
let source = client
|
||||
.container(None)
|
||||
.from("node:16".into())
|
||||
.with_mounted_directory("/src".into(), host_source_dir.id()?);
|
||||
.from("node:16")
|
||||
.with_mounted_directory("/src", host_source_dir.id()?);
|
||||
|
||||
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,
|
||||
|
@@ -6,45 +6,38 @@ fn main() -> eyre::Result<()> {
|
||||
let output = "examples/publish-the-application/app/build";
|
||||
|
||||
let host_source_dir = client.host().directory(
|
||||
"examples/publish-the-application/app".into(),
|
||||
"examples/publish-the-application/app",
|
||||
Some(HostDirectoryOpts {
|
||||
exclude: Some(vec!["node_modules".into(), "ci/".into()]),
|
||||
exclude: Some(vec!["node_modules", "ci/"]),
|
||||
include: None,
|
||||
marker: std::marker::PhantomData,
|
||||
}),
|
||||
);
|
||||
|
||||
let source = client
|
||||
.container(None)
|
||||
.from("node:16".into())
|
||||
.with_mounted_directory("/src".into(), host_source_dir.id()?);
|
||||
.from("node:16")
|
||||
.with_mounted_directory("/src", host_source_dir.id()?);
|
||||
|
||||
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 _ = test
|
||||
.with_exec(vec!["npm".into(), "run".into(), "build".into()], None)
|
||||
.directory("./build".into())
|
||||
.export(output.into());
|
||||
.with_exec(vec!["npm", "run", "build"], None)
|
||||
.directory("./build")
|
||||
.export(output);
|
||||
|
||||
let mut rng = rand::thread_rng();
|
||||
|
||||
let ref_ = client
|
||||
.container(None)
|
||||
.from("nginx".into())
|
||||
.from("nginx")
|
||||
.with_directory(
|
||||
"/usr/share/nginx/html".into(),
|
||||
client.host().directory(output.into(), None).id()?,
|
||||
"/usr/share/nginx/html",
|
||||
client.host().directory(output, None).id()?,
|
||||
None,
|
||||
)
|
||||
.publish(
|
||||
|
@@ -4,32 +4,25 @@ fn main() -> eyre::Result<()> {
|
||||
let client = dagger_sdk::connect()?;
|
||||
|
||||
let host_source_dir = client.host().directory(
|
||||
"examples/test-the-application/app".into(),
|
||||
"examples/test-the-application/app",
|
||||
Some(HostDirectoryOpts {
|
||||
exclude: Some(vec!["node_modules".into(), "ci/".into()]),
|
||||
exclude: Some(vec!["node_modules", "ci/"]),
|
||||
include: None,
|
||||
marker: std::marker::PhantomData,
|
||||
}),
|
||||
);
|
||||
|
||||
let source = client
|
||||
.container(None)
|
||||
.from("node:16".into())
|
||||
.with_mounted_directory("/src".into(), host_source_dir.id()?);
|
||||
.from("node:16")
|
||||
.with_mounted_directory("/src", host_source_dir.id()?);
|
||||
|
||||
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 out = runner
|
||||
.with_exec(
|
||||
vec![
|
||||
"npm".into(),
|
||||
"test".into(),
|
||||
"--".into(),
|
||||
"--watchAll=false".into(),
|
||||
],
|
||||
None,
|
||||
)
|
||||
.with_exec(vec!["npm", "test", "--", "--watchAll=false"], None)
|
||||
.stderr()?;
|
||||
|
||||
println!("{}", out);
|
||||
|
Reference in New Issue
Block a user