From dca142b1e6a747e15d4224fe6b5f9b62d07ab7bc Mon Sep 17 00:00:00 2001 From: kjuulh Date: Tue, 14 Mar 2023 22:09:04 +0100 Subject: [PATCH] fix: stable input fields and args --- crates/dagger-codegen/src/rust/functions.rs | 2 + .../src/rust/templates/input_tmpl.rs | 6 +- crates/dagger-sdk/src/gen.rs | 72 +++++++++---------- 3 files changed, 43 insertions(+), 37 deletions(-) diff --git a/crates/dagger-codegen/src/rust/functions.rs b/crates/dagger-codegen/src/rust/functions.rs index f097f50..4726b10 100644 --- a/crates/dagger-codegen/src/rust/functions.rs +++ b/crates/dagger-codegen/src/rust/functions.rs @@ -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, @@ -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::>() }) .pipe(|t| render_optional_field_args(funcs, t)) diff --git a/crates/dagger-codegen/src/rust/templates/input_tmpl.rs b/crates/dagger-codegen/src/rust/templates/input_tmpl.rs index 9f062cd..aa03e59 100644 --- a/crates/dagger-codegen/src/rust/templates/input_tmpl.rs +++ b/crates/dagger-codegen/src/rust/templates/input_tmpl.rs @@ -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}; @@ -20,7 +21,10 @@ pub fn render_input_fields( funcs: &CommonFunctions, fields: &[FullTypeInputFields], ) -> Option { - 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 diff --git a/crates/dagger-sdk/src/gen.rs b/crates/dagger-sdk/src/gen.rs index e24be01..4122415 100644 --- a/crates/dagger-sdk/src/gen.rs +++ b/crates/dagger-sdk/src/gen.rs @@ -106,8 +106,8 @@ impl Into 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 { @@ -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>, /// 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>, /// Target build stage to build. #[builder(setter(into, strip_option), default)] pub target: Option<&'a str>, @@ -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>, - /// 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, + /// 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 { @@ -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. @@ -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, + /// 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, /// 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, } #[derive(Builder, Debug, PartialEq)] pub struct ContainerWithFileOpts { @@ -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, /// Sharing mode of the cache volume. #[builder(setter(into, strip_option), default)] pub sharing: Option, + /// Identifier of the directory to use as the cache volume's root. + #[builder(setter(into, strip_option), default)] + pub source: Option, } #[derive(Builder, Debug, PartialEq)] pub struct ContainerWithNewFileOpts<'a> { @@ -1485,6 +1485,9 @@ 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>, /// Path to the Dockerfile to use (e.g., "frontend.Dockerfile"). /// Defaults: './Dockerfile'. #[builder(setter(into, strip_option), default)] @@ -1492,9 +1495,6 @@ pub struct DirectoryDockerBuildOpts<'a> { /// The platform to build. #[builder(setter(into, strip_option), default)] pub platform: Option, - /// Build arguments to use in the build. - #[builder(setter(into, strip_option), default)] - pub build_args: Option>, /// Target build stage to build. #[builder(setter(into, strip_option), default)] pub target: Option<&'a str>, @@ -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, + #[builder(setter(into, strip_option), default)] + pub ssh_known_hosts: Option<&'a str>, } impl GitRef { @@ -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, /// A service which must be started before the repo is fetched. #[builder(setter(into, strip_option), default)] pub experimental_service_host: Option, + /// Set to true to keep .git directory. + #[builder(setter(into, strip_option), default)] + pub keep_git_dir: Option, } #[derive(Builder, Debug, PartialEq)] pub struct QueryHttpOpts {