implement sort by name and type

This commit is contained in:
Kasper Juul Hermansen 2023-02-01 16:42:50 +01:00
parent 26069a82a6
commit d9b51c1ac9
Signed by: kjuulh
GPG Key ID: 57B6E1465221F912
2 changed files with 366 additions and 364 deletions

View File

@ -49,9 +49,11 @@ impl CodeGeneration {
output.append(render_base_types()); output.append(render_base_types());
output.push(); output.push();
let types = get_types(schema)?; let mut types = get_types(schema)?;
//let remaining: Vec<Option<String>> = types.into_iter().map(type_name).collect(); //let remaining: Vec<Option<String>> = types.into_iter().map(type_name).collect();
//
types.sort_by_key(|a| a.name.as_ref());
for (handler, types) in self.group_by_handlers(&types) { for (handler, types) in self.group_by_handlers(&types) {
for t in types { for t in types {
if let Some(_) = self.type_name(&t) { if let Some(_) = self.type_name(&t) {

View File

@ -2,8 +2,8 @@ use dagger_core::{Boolean, Input, Int, Scalar};
// code generated by dagger. DO NOT EDIT. // code generated by dagger. DO NOT EDIT.
/// A content-addressed socket identifier. /// A global cache volume identifier.
pub struct SocketID(Scalar); pub struct CacheID(Scalar);
/// A unique container identifier. Null designates an empty container (scratch). /// A unique container identifier. Null designates an empty container (scratch).
pub struct ContainerID(Scalar); pub struct ContainerID(Scalar);
@ -14,16 +14,16 @@ pub struct DirectoryID(Scalar);
/// A file identifier. /// A file identifier.
pub struct FileID(Scalar); pub struct FileID(Scalar);
/// A unique identifier for a secret.
pub struct SecretID(Scalar);
/// A global cache volume identifier.
pub struct CacheID(Scalar);
/// The platform config OS and architecture in a Container. /// The platform config OS and architecture in a Container.
/// The format is [os]/[platform]/[version] (e.g. darwin/arm64/v7, windows/amd64, linux/arm64). /// The format is [os]/[platform]/[version] (e.g. darwin/arm64/v7, windows/amd64, linux/arm64).
pub struct Platform(Scalar); pub struct Platform(Scalar);
/// A unique identifier for a secret.
pub struct SecretID(Scalar);
/// A content-addressed socket identifier.
pub struct SocketID(Scalar);
/// ///
pub struct BuildArg { pub struct BuildArg {
pub name: String, pub name: String,
@ -33,320 +33,6 @@ pub struct BuildArg {
impl Input for BuildArg {} impl Input for BuildArg {}
/// A reference to a secret value, which can be handled more safely than the value itself.
pub struct Secret {}
impl Secret {
/// The identifier for this secret.
pub fn id(&self) -> SecretID {
todo!()
}
/// The value of this secret.
pub fn plaintext(&self) -> String {
todo!()
}
}
impl Input for Secret {}
/// A set of scripts and/or extensions
pub struct Project {}
impl Project {
/// extensions in this project
pub fn extensions(&self) -> Option<Vec<Project>> {
todo!()
}
/// Code files generated by the SDKs in the project
pub fn generated_code(&self) -> Directory {
todo!()
}
/// install the project's schema
pub fn install(&self) -> Boolean {
todo!()
}
/// name of the project
pub fn name(&self) -> String {
todo!()
}
/// schema provided by the project
pub fn schema(&self) -> Option<String> {
todo!()
}
/// sdk used to generate code for and/or execute this project
pub fn sdk(&self) -> Option<String> {
todo!()
}
}
impl Input for Project {}
/// A file.
pub struct File {}
impl File {
/// Retrieves the contents of the file.
pub fn contents(&self) -> String {
todo!()
}
/// Writes the file to a file path on the host.
pub fn export(&self, path: String) -> Boolean {
todo!()
}
/// Retrieves the content-addressed identifier of the file.
pub fn id(&self) -> FileID {
todo!()
}
/// Retrieves a secret referencing the contents of this file.
pub fn secret(&self) -> Secret {
todo!()
}
/// Gets the size of the file, in bytes.
pub fn size(&self) -> Int {
todo!()
}
/// Retrieves this file with its created/modified timestamps set to the given time, in seconds from the Unix epoch.
pub fn with_timestamps(&self, timestamp: Int) -> File {
todo!()
}
}
impl Input for File {}
/// A simple key value object that represents an environment variable.
pub struct EnvVariable {}
impl EnvVariable {
/// The environment variable name.
pub fn name(&self) -> String {
todo!()
}
/// The environment variable value.
pub fn value(&self) -> String {
todo!()
}
}
impl Input for EnvVariable {}
/// A directory.
pub struct Directory {}
impl Directory {
/// Gets the difference between this directory and an another directory.
pub fn diff(&self, other: DirectoryID) -> Directory {
todo!()
}
/// Retrieves a directory at the given path.
pub fn directory(&self, path: String) -> Directory {
todo!()
}
/// Builds a new Docker container from this directory.
/// # Arguments
///
/// * `dockerfile` - Path to the Dockerfile to use.
/// Defaults to './Dockerfile'.
/// * `platform` - The platform to build.
/// * `buildArgs` - Additional build arguments.
/// * `target` - Target build stage to build.
pub fn docker_build(
&self,
dockerfile: Option<String>,
platform: Option<Platform>,
build_args: Option<Vec<BuildArg>>,
target: Option<String>,
) -> Container {
todo!()
}
/// Returns a list of files and directories at the given path.
pub fn entries(&self, path: Option<String>) -> Vec<String> {
todo!()
}
/// Writes the contents of the directory to a path on the host.
pub fn export(&self, path: String) -> Boolean {
todo!()
}
/// Retrieves a file at the given path.
pub fn file(&self, path: String) -> File {
todo!()
}
/// The content-addressed identifier of the directory.
pub fn id(&self) -> DirectoryID {
todo!()
}
/// load a project's metadata
pub fn load_project(&self, config_path: String) -> Project {
todo!()
}
/// Creates a named sub-pipeline.
pub fn pipeline(&self, name: String, description: Option<String>) -> Directory {
todo!()
}
/// Retrieves this directory plus a directory written at the given path.
/// # Arguments
///
/// * `exclude` - Exclude artifacts that match the given pattern.
/// (e.g. ["node_modules/", ".git*"]).
/// * `include` - Include only artifacts that match the given pattern.
/// (e.g. ["app/", "package.*"]).
pub fn with_directory(
&self,
path: String,
directory: DirectoryID,
exclude: Option<Vec<String>>,
include: Option<Vec<String>>,
) -> Directory {
todo!()
}
/// Retrieves this directory plus the contents of the given file copied to the given path.
pub fn with_file(&self, path: String, source: FileID, permissions: Option<Int>) -> Directory {
todo!()
}
/// Retrieves this directory plus a new directory created at the given path.
pub fn with_new_directory(&self, path: String, permissions: Option<Int>) -> Directory {
todo!()
}
/// Retrieves this directory plus a new file written at the given path.
pub fn with_new_file(
&self,
path: String,
contents: String,
permissions: Option<Int>,
) -> Directory {
todo!()
}
/// Retrieves this directory with all file/dir timestamps set to the given time, in seconds from the Unix epoch.
pub fn with_timestamps(&self, timestamp: Int) -> Directory {
todo!()
}
/// Retrieves this directory with the directory at the given path removed.
pub fn without_directory(&self, path: String) -> Directory {
todo!()
}
/// Retrieves this directory with the file at the given path removed.
pub fn without_file(&self, path: String) -> Directory {
todo!()
}
}
impl Input for Directory {}
///
pub struct Query {}
impl Query {
/// Constructs a cache volume for a given cache key.
/// # Arguments
///
/// * `key` - A string identifier to target this cache volume (e.g. "myapp-cache").
pub fn cache_volume(&self, key: String) -> CacheVolume {
todo!()
}
/// Loads a container from ID.
/// Null ID returns an empty container (scratch).
/// Optional platform argument initializes new containers to execute and publish as that platform. Platform defaults to that of the builder's host.
pub fn container(&self, id: Option<ContainerID>, platform: Option<Platform>) -> Container {
todo!()
}
/// The default platform of the builder.
pub fn default_platform(&self) -> Platform {
todo!()
}
/// Load a directory by ID. No argument produces an empty directory.
pub fn directory(&self, id: Option<DirectoryID>) -> Directory {
todo!()
}
/// Loads a file by ID.
pub fn file(&self, id: FileID) -> Option<File> {
todo!()
}
/// Queries a git repository.
pub fn git(&self, url: String, keep_git_dir: Option<Boolean>) -> GitRepository {
todo!()
}
/// Queries the host environment.
pub fn host(&self) -> Host {
todo!()
}
/// Returns a file containing an http remote url content.
pub fn http(&self, url: String) -> File {
todo!()
}
/// Creates a named sub-pipeline
pub fn pipeline(&self, name: String, description: Option<String>) -> Query {
todo!()
}
/// Look up a project by name
pub fn project(&self, name: String) -> Project {
todo!()
}
/// Loads a secret from its ID.
pub fn secret(&self, id: SecretID) -> Secret {
todo!()
}
/// Loads a socket by its ID.
pub fn socket(&self, id: Option<SocketID>) -> Socket {
todo!()
}
}
impl Input for Query {}
/// An environment variable on the host environment.
pub struct HostVariable {}
impl HostVariable {
/// A secret referencing the value of this variable.
pub fn secret(&self) -> Secret {
todo!()
}
/// The value of this variable.
pub fn value(&self) -> String {
todo!()
}
}
impl Input for HostVariable {}
/// A directory whose contents persist across runs. /// A directory whose contents persist across runs.
pub struct CacheVolume {} pub struct CacheVolume {}
@ -682,6 +368,177 @@ impl Container {
impl Input for Container {} impl Input for Container {}
/// A directory.
pub struct Directory {}
impl Directory {
/// Gets the difference between this directory and an another directory.
pub fn diff(&self, other: DirectoryID) -> Directory {
todo!()
}
/// Retrieves a directory at the given path.
pub fn directory(&self, path: String) -> Directory {
todo!()
}
/// Builds a new Docker container from this directory.
/// # Arguments
///
/// * `dockerfile` - Path to the Dockerfile to use.
/// Defaults to './Dockerfile'.
/// * `platform` - The platform to build.
/// * `buildArgs` - Additional build arguments.
/// * `target` - Target build stage to build.
pub fn docker_build(
&self,
dockerfile: Option<String>,
platform: Option<Platform>,
build_args: Option<Vec<BuildArg>>,
target: Option<String>,
) -> Container {
todo!()
}
/// Returns a list of files and directories at the given path.
pub fn entries(&self, path: Option<String>) -> Vec<String> {
todo!()
}
/// Writes the contents of the directory to a path on the host.
pub fn export(&self, path: String) -> Boolean {
todo!()
}
/// Retrieves a file at the given path.
pub fn file(&self, path: String) -> File {
todo!()
}
/// The content-addressed identifier of the directory.
pub fn id(&self) -> DirectoryID {
todo!()
}
/// load a project's metadata
pub fn load_project(&self, config_path: String) -> Project {
todo!()
}
/// Creates a named sub-pipeline.
pub fn pipeline(&self, name: String, description: Option<String>) -> Directory {
todo!()
}
/// Retrieves this directory plus a directory written at the given path.
/// # Arguments
///
/// * `exclude` - Exclude artifacts that match the given pattern.
/// (e.g. ["node_modules/", ".git*"]).
/// * `include` - Include only artifacts that match the given pattern.
/// (e.g. ["app/", "package.*"]).
pub fn with_directory(
&self,
path: String,
directory: DirectoryID,
exclude: Option<Vec<String>>,
include: Option<Vec<String>>,
) -> Directory {
todo!()
}
/// Retrieves this directory plus the contents of the given file copied to the given path.
pub fn with_file(&self, path: String, source: FileID, permissions: Option<Int>) -> Directory {
todo!()
}
/// Retrieves this directory plus a new directory created at the given path.
pub fn with_new_directory(&self, path: String, permissions: Option<Int>) -> Directory {
todo!()
}
/// Retrieves this directory plus a new file written at the given path.
pub fn with_new_file(
&self,
path: String,
contents: String,
permissions: Option<Int>,
) -> Directory {
todo!()
}
/// Retrieves this directory with all file/dir timestamps set to the given time, in seconds from the Unix epoch.
pub fn with_timestamps(&self, timestamp: Int) -> Directory {
todo!()
}
/// Retrieves this directory with the directory at the given path removed.
pub fn without_directory(&self, path: String) -> Directory {
todo!()
}
/// Retrieves this directory with the file at the given path removed.
pub fn without_file(&self, path: String) -> Directory {
todo!()
}
}
impl Input for Directory {}
/// A simple key value object that represents an environment variable.
pub struct EnvVariable {}
impl EnvVariable {
/// The environment variable name.
pub fn name(&self) -> String {
todo!()
}
/// The environment variable value.
pub fn value(&self) -> String {
todo!()
}
}
impl Input for EnvVariable {}
/// A file.
pub struct File {}
impl File {
/// Retrieves the contents of the file.
pub fn contents(&self) -> String {
todo!()
}
/// Writes the file to a file path on the host.
pub fn export(&self, path: String) -> Boolean {
todo!()
}
/// Retrieves the content-addressed identifier of the file.
pub fn id(&self) -> FileID {
todo!()
}
/// Retrieves a secret referencing the contents of this file.
pub fn secret(&self) -> Secret {
todo!()
}
/// Gets the size of the file, in bytes.
pub fn size(&self) -> Int {
todo!()
}
/// Retrieves this file with its created/modified timestamps set to the given time, in seconds from the Unix epoch.
pub fn with_timestamps(&self, timestamp: Int) -> File {
todo!()
}
}
impl Input for File {}
/// A git ref (tag, branch or commit). /// A git ref (tag, branch or commit).
pub struct GitRef {} pub struct GitRef {}
@ -703,22 +560,37 @@ impl GitRef {
impl Input for GitRef {} impl Input for GitRef {}
/// A simple key value object that represents a label. /// A git repository.
pub struct Label {} pub struct GitRepository {}
impl Label { impl GitRepository {
/// The label name. /// Returns details on one branch.
pub fn name(&self) -> String { pub fn branch(&self, name: String) -> GitRef {
todo!() todo!()
} }
/// The label value. /// Lists of branches on the repository.
pub fn value(&self) -> String { pub fn branches(&self) -> Vec<String> {
todo!()
}
/// Returns details on one commit.
pub fn commit(&self, id: String) -> GitRef {
todo!()
}
/// Returns details on one tag.
pub fn tag(&self, name: String) -> GitRef {
todo!()
}
/// Lists of tags on the repository.
pub fn tags(&self) -> Vec<String> {
todo!() todo!()
} }
} }
impl Input for Label {} impl Input for GitRepository {}
/// Information about the host execution environment. /// Information about the host execution environment.
pub struct Host {} pub struct Host {}
@ -752,6 +624,166 @@ impl Host {
impl Input for Host {} impl Input for Host {}
/// An environment variable on the host environment.
pub struct HostVariable {}
impl HostVariable {
/// A secret referencing the value of this variable.
pub fn secret(&self) -> Secret {
todo!()
}
/// The value of this variable.
pub fn value(&self) -> String {
todo!()
}
}
impl Input for HostVariable {}
/// A simple key value object that represents a label.
pub struct Label {}
impl Label {
/// The label name.
pub fn name(&self) -> String {
todo!()
}
/// The label value.
pub fn value(&self) -> String {
todo!()
}
}
impl Input for Label {}
/// A set of scripts and/or extensions
pub struct Project {}
impl Project {
/// extensions in this project
pub fn extensions(&self) -> Option<Vec<Project>> {
todo!()
}
/// Code files generated by the SDKs in the project
pub fn generated_code(&self) -> Directory {
todo!()
}
/// install the project's schema
pub fn install(&self) -> Boolean {
todo!()
}
/// name of the project
pub fn name(&self) -> String {
todo!()
}
/// schema provided by the project
pub fn schema(&self) -> Option<String> {
todo!()
}
/// sdk used to generate code for and/or execute this project
pub fn sdk(&self) -> Option<String> {
todo!()
}
}
impl Input for Project {}
///
pub struct Query {}
impl Query {
/// Constructs a cache volume for a given cache key.
/// # Arguments
///
/// * `key` - A string identifier to target this cache volume (e.g. "myapp-cache").
pub fn cache_volume(&self, key: String) -> CacheVolume {
todo!()
}
/// Loads a container from ID.
/// Null ID returns an empty container (scratch).
/// Optional platform argument initializes new containers to execute and publish as that platform. Platform defaults to that of the builder's host.
pub fn container(&self, id: Option<ContainerID>, platform: Option<Platform>) -> Container {
todo!()
}
/// The default platform of the builder.
pub fn default_platform(&self) -> Platform {
todo!()
}
/// Load a directory by ID. No argument produces an empty directory.
pub fn directory(&self, id: Option<DirectoryID>) -> Directory {
todo!()
}
/// Loads a file by ID.
pub fn file(&self, id: FileID) -> Option<File> {
todo!()
}
/// Queries a git repository.
pub fn git(&self, url: String, keep_git_dir: Option<Boolean>) -> GitRepository {
todo!()
}
/// Queries the host environment.
pub fn host(&self) -> Host {
todo!()
}
/// Returns a file containing an http remote url content.
pub fn http(&self, url: String) -> File {
todo!()
}
/// Creates a named sub-pipeline
pub fn pipeline(&self, name: String, description: Option<String>) -> Query {
todo!()
}
/// Look up a project by name
pub fn project(&self, name: String) -> Project {
todo!()
}
/// Loads a secret from its ID.
pub fn secret(&self, id: SecretID) -> Secret {
todo!()
}
/// Loads a socket by its ID.
pub fn socket(&self, id: Option<SocketID>) -> Socket {
todo!()
}
}
impl Input for Query {}
/// A reference to a secret value, which can be handled more safely than the value itself.
pub struct Secret {}
impl Secret {
/// The identifier for this secret.
pub fn id(&self) -> SecretID {
todo!()
}
/// The value of this secret.
pub fn plaintext(&self) -> String {
todo!()
}
}
impl Input for Secret {}
/// ///
pub struct Socket {} pub struct Socket {}
@ -763,35 +795,3 @@ impl Socket {
} }
impl Input for Socket {} impl Input for Socket {}
/// A git repository.
pub struct GitRepository {}
impl GitRepository {
/// Returns details on one branch.
pub fn branch(&self, name: String) -> GitRef {
todo!()
}
/// Lists of branches on the repository.
pub fn branches(&self) -> Vec<String> {
todo!()
}
/// Returns details on one commit.
pub fn commit(&self, id: String) -> GitRef {
todo!()
}
/// Returns details on one tag.
pub fn tag(&self, name: String) -> GitRef {
todo!()
}
/// Lists of tags on the repository.
pub fn tags(&self) -> Vec<String> {
todo!()
}
}
impl Input for GitRepository {}