Skip to content
This repository has been archived by the owner on Jun 29, 2023. It is now read-only.

Commit

Permalink
fix: stable input fields and args
Browse files Browse the repository at this point in the history
  • Loading branch information
kjuulh committed Mar 14, 2023
1 parent ea27fa8 commit 756a080
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 37 deletions.
2 changes: 2 additions & 0 deletions crates/dagger-codegen/src/rust/functions.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ use dagger_core::introspection::{FullTypeFields, TypeRef};
use genco::prelude::rust;
use genco::quote;
use genco::tokens::quoted;
use itertools::Itertools;

use crate::functions::{
type_field_has_optional, type_ref_is_enum, type_ref_is_list, type_ref_is_list_of_objects,
Expand Down Expand Up @@ -405,6 +406,7 @@ pub fn format_optional_args(
.map(|t| {
t.into_iter()
.filter(|t| type_ref_is_optional(&t.input_value.type_))
.sorted_by_key(|val| &val.input_value.name)
.collect::<Vec<_>>()
})
.pipe(|t| render_optional_field_args(funcs, t))
Expand Down
6 changes: 5 additions & 1 deletion crates/dagger-codegen/src/rust/templates/input_tmpl.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
use dagger_core::introspection::{FullType, FullTypeInputFields};
use genco::prelude::rust;
use genco::quote;
use itertools::Itertools;

use crate::functions::CommonFunctions;
use crate::rust::functions::{format_name, format_struct_name};
Expand All @@ -20,7 +21,10 @@ pub fn render_input_fields(
funcs: &CommonFunctions,
fields: &[FullTypeInputFields],
) -> Option<rust::Tokens> {
let rendered_fields = fields.iter().map(|f| render_input_field(funcs, f));
let rendered_fields = fields
.iter()
.sorted_by_key(|val| &val.input_value.name)
.map(|f| render_input_field(funcs, f));

if rendered_fields.len() == 0 {
None
Expand Down
72 changes: 36 additions & 36 deletions crates/dagger-sdk/src/gen.rs
Original file line number Diff line number Diff line change
Expand Up @@ -106,8 +106,8 @@ impl Into<SocketId> for String {
}
#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)]
pub struct BuildArg {
pub value: String,
pub name: String,
pub value: String,
}
#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)]
pub struct PipelineLabel {
Expand Down Expand Up @@ -137,13 +137,13 @@ pub struct Container {

#[derive(Builder, Debug, PartialEq)]
pub struct ContainerBuildOpts<'a> {
/// Additional build arguments.
#[builder(setter(into, strip_option), default)]
pub build_args: Option<Vec<BuildArg>>,
/// Path to the Dockerfile to use.
/// Default: './Dockerfile'.
#[builder(setter(into, strip_option), default)]
pub dockerfile: Option<&'a str>,
/// Additional build arguments.
#[builder(setter(into, strip_option), default)]
pub build_args: Option<Vec<BuildArg>>,
/// Target build stage to build.
#[builder(setter(into, strip_option), default)]
pub target: Option<&'a str>,
Expand All @@ -162,20 +162,20 @@ pub struct ContainerExecOpts<'a> {
/// Command to run instead of the container's default command (e.g., ["run", "main.go"]).
#[builder(setter(into, strip_option), default)]
pub args: Option<Vec<&'a str>>,
/// Content to write to the command's standard input before closing (e.g., "Hello world").
#[builder(setter(into, strip_option), default)]
pub stdin: Option<&'a str>,
/// Redirect the command's standard output to a file in the container (e.g., "/tmp/stdout").
#[builder(setter(into, strip_option), default)]
pub redirect_stdout: Option<&'a str>,
/// Redirect the command's standard error to a file in the container (e.g., "/tmp/stderr").
#[builder(setter(into, strip_option), default)]
pub redirect_stderr: Option<&'a str>,
/// Provide dagger access to the executed command.
/// Do not use this option unless you trust the command being executed.
/// The command being executed WILL BE GRANTED FULL ACCESS TO YOUR HOST FILESYSTEM.
#[builder(setter(into, strip_option), default)]
pub experimental_privileged_nesting: Option<bool>,
/// Redirect the command's standard error to a file in the container (e.g., "/tmp/stderr").
#[builder(setter(into, strip_option), default)]
pub redirect_stderr: Option<&'a str>,
/// Redirect the command's standard output to a file in the container (e.g., "/tmp/stdout").
#[builder(setter(into, strip_option), default)]
pub redirect_stdout: Option<&'a str>,
/// Content to write to the command's standard input before closing (e.g., "Hello world").
#[builder(setter(into, strip_option), default)]
pub stdin: Option<&'a str>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ContainerExportOpts {
Expand Down Expand Up @@ -217,15 +217,6 @@ pub struct ContainerWithDirectoryOpts<'a> {
}
#[derive(Builder, Debug, PartialEq)]
pub struct ContainerWithExecOpts<'a> {
/// Content to write to the command's standard input before closing (e.g., "Hello world").
#[builder(setter(into, strip_option), default)]
pub stdin: Option<&'a str>,
/// Redirect the command's standard output to a file in the container (e.g., "/tmp/stdout").
#[builder(setter(into, strip_option), default)]
pub redirect_stdout: Option<&'a str>,
/// Redirect the command's standard error to a file in the container (e.g., "/tmp/stderr").
#[builder(setter(into, strip_option), default)]
pub redirect_stderr: Option<&'a str>,
/// Provides dagger access to the executed command.
/// Do not use this option unless you trust the command being executed.
/// The command being executed WILL BE GRANTED FULL ACCESS TO YOUR HOST FILESYSTEM.
Expand All @@ -237,15 +228,24 @@ pub struct ContainerWithExecOpts<'a> {
/// when absolutely necessary and only with trusted commands.
#[builder(setter(into, strip_option), default)]
pub insecure_root_capabilities: Option<bool>,
/// Redirect the command's standard error to a file in the container (e.g., "/tmp/stderr").
#[builder(setter(into, strip_option), default)]
pub redirect_stderr: Option<&'a str>,
/// Redirect the command's standard output to a file in the container (e.g., "/tmp/stdout").
#[builder(setter(into, strip_option), default)]
pub redirect_stdout: Option<&'a str>,
/// Content to write to the command's standard input before closing (e.g., "Hello world").
#[builder(setter(into, strip_option), default)]
pub stdin: Option<&'a str>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ContainerWithExposedPortOpts<'a> {
/// Transport layer network protocol
#[builder(setter(into, strip_option), default)]
pub protocol: Option<NetworkProtocol>,
/// Optional port description
#[builder(setter(into, strip_option), default)]
pub description: Option<&'a str>,
/// Transport layer network protocol
#[builder(setter(into, strip_option), default)]
pub protocol: Option<NetworkProtocol>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ContainerWithFileOpts {
Expand All @@ -256,12 +256,12 @@ pub struct ContainerWithFileOpts {
}
#[derive(Builder, Debug, PartialEq)]
pub struct ContainerWithMountedCacheOpts {
/// Identifier of the directory to use as the cache volume's root.
#[builder(setter(into, strip_option), default)]
pub source: Option<DirectoryId>,
/// Sharing mode of the cache volume.
#[builder(setter(into, strip_option), default)]
pub sharing: Option<CacheSharingMode>,
/// Identifier of the directory to use as the cache volume's root.
#[builder(setter(into, strip_option), default)]
pub source: Option<DirectoryId>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct ContainerWithNewFileOpts<'a> {
Expand Down Expand Up @@ -1485,16 +1485,16 @@ pub struct Directory {

#[derive(Builder, Debug, PartialEq)]
pub struct DirectoryDockerBuildOpts<'a> {
/// Build arguments to use in the build.
#[builder(setter(into, strip_option), default)]
pub build_args: Option<Vec<BuildArg>>,
/// Path to the Dockerfile to use (e.g., "frontend.Dockerfile").
/// Defaults: './Dockerfile'.
#[builder(setter(into, strip_option), default)]
pub dockerfile: Option<&'a str>,
/// The platform to build.
#[builder(setter(into, strip_option), default)]
pub platform: Option<Platform>,
/// Build arguments to use in the build.
#[builder(setter(into, strip_option), default)]
pub build_args: Option<Vec<BuildArg>>,
/// Target build stage to build.
#[builder(setter(into, strip_option), default)]
pub target: Option<&'a str>,
Expand Down Expand Up @@ -2073,10 +2073,10 @@ pub struct GitRef {

#[derive(Builder, Debug, PartialEq)]
pub struct GitRefTreeOpts<'a> {
#[builder(setter(into, strip_option), default)]
pub ssh_known_hosts: Option<&'a str>,
#[builder(setter(into, strip_option), default)]
pub ssh_auth_socket: Option<SocketId>,
#[builder(setter(into, strip_option), default)]
pub ssh_known_hosts: Option<&'a str>,
}

impl GitRef {
Expand Down Expand Up @@ -2480,12 +2480,12 @@ pub struct QueryDirectoryOpts {
}
#[derive(Builder, Debug, PartialEq)]
pub struct QueryGitOpts {
/// Set to true to keep .git directory.
#[builder(setter(into, strip_option), default)]
pub keep_git_dir: Option<bool>,
/// A service which must be started before the repo is fetched.
#[builder(setter(into, strip_option), default)]
pub experimental_service_host: Option<ContainerId>,
/// Set to true to keep .git directory.
#[builder(setter(into, strip_option), default)]
pub keep_git_dir: Option<bool>,
}
#[derive(Builder, Debug, PartialEq)]
pub struct QueryHttpOpts {
Expand Down

0 comments on commit 756a080

Please sign in to comment.