From 31cc9ddb4fe25e5f617fcd271fa5a1f377688673 Mon Sep 17 00:00:00 2001 From: Xenia Date: Mon, 3 Feb 2025 16:10:40 +0100 Subject: [PATCH 01/63] chore: update to oci references (#352) --- Tiltfile | 4 ++-- default.nix | 2 +- deploy/helm/stackable-cockpit/values.yaml | 2 +- docker/Dockerfile | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Tiltfile b/Tiltfile index 1c7dd45c..de8ddd65 100644 --- a/Tiltfile +++ b/Tiltfile @@ -1,8 +1,8 @@ # If tilt_options.json exists read it and load the default_registry value from it settings = read_json('tilt_options.json', default={}) -registry = settings.get('default_registry', 'docker.stackable.tech/sandbox') +registry = settings.get('default_registry', 'oci.stackable.tech/sandbox') -# Configure default registry either read from config file above, or with default value of "docker.stackable.tech/sandbox" +# Configure default registry either read from config file above, or with default value of "oci.stackable.tech/sandbox" default_registry(registry) meta = read_json('nix/meta.json') diff --git a/default.nix b/default.nix index 41cc396d..cac82bf0 100644 --- a/default.nix +++ b/default.nix @@ -33,7 +33,7 @@ }; } , meta ? pkgs.lib.importJSON ./nix/meta.json -, dockerName ? "docker.stackable.tech/sandbox/${meta.operator.name}" +, dockerName ? "oci.stackable.tech/sandbox/${meta.operator.name}" , dockerTag ? null , web ? js2nix.buildEnv { # js2nix doesn't import peer dependencies, so we use overlays to patch them in explicitly diff --git a/deploy/helm/stackable-cockpit/values.yaml b/deploy/helm/stackable-cockpit/values.yaml index 39a7c6d6..c8c18b2a 100644 --- a/deploy/helm/stackable-cockpit/values.yaml +++ b/deploy/helm/stackable-cockpit/values.yaml @@ -1,7 +1,7 @@ # Default values for stackable-cockpit. --- image: - repository: docker.stackable.tech/stackable/stackable-cockpit + repository: oci.stackable.tech/sdp/stackable-cockpit pullPolicy: IfNotPresent imagePullSecrets: [] diff --git a/docker/Dockerfile b/docker/Dockerfile index c4b4674d..197e2007 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,6 +1,6 @@ # Using inlined version of ubi8-rust-builder, ends at ## END OF ubi8-rust-builder # Each modification (apart from removing ONBUILD clauses) should be preceded by a ## PATCH comment explaining the change -#FROM docker.stackable.tech/stackable/ubi8-rust-builder AS builder +#FROM oci.stackable.tech/sdp/ubi8-rust-builder AS builder FROM registry.access.redhat.com/ubi8/ubi-minimal@sha256:987ae81ce046652ee4a2c3df54dad5e82faa1b078dab5d09f7cfaae11784ed30 AS builder LABEL maintainer="Stackable GmbH" From 70049cae5ff027f7e6f0e69d0503a8bb4b751a75 Mon Sep 17 00:00:00 2001 From: Nick <10092581+NickLarsenNZ@users.noreply.github.com> Date: Tue, 4 Feb 2025 14:15:50 +0100 Subject: [PATCH 02/63] fix: Use native CA certificates (#351) * fix: Use native CA certificates * chore(stackablectl): update changelog * chore: set pre-release version This is not usually done at this stage, but we want to produce a pre-release for testing, and it should not show the stable version. * chore: Set PR number in the Changelog --- Cargo.lock | 3 ++- Cargo.nix | 14 ++++++++++---- Cargo.toml | 2 +- extra/man/stackablectl.1 | 4 ++-- rust/stackablectl/CHANGELOG.md | 6 ++++++ rust/stackablectl/Cargo.toml | 2 +- 6 files changed, 22 insertions(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1216edd0..62cf7e2e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2500,6 +2500,7 @@ dependencies = [ "pin-project-lite", "quinn", "rustls", + "rustls-native-certs", "rustls-pemfile", "rustls-pki-types", "serde", @@ -3134,7 +3135,7 @@ dependencies = [ [[package]] name = "stackablectl" -version = "24.11.3" +version = "24.11.4-native-certs" dependencies = [ "clap", "clap_complete", diff --git a/Cargo.nix b/Cargo.nix index 4664c1f2..df23dee6 100644 --- a/Cargo.nix +++ b/Cargo.nix @@ -7885,6 +7885,12 @@ rec { target = { target, features }: (!("wasm32" == target."arch" or null)); features = [ "std" "tls12" ]; } + { + name = "rustls-native-certs"; + packageId = "rustls-native-certs"; + optional = true; + target = { target, features }: (!("wasm32" == target."arch" or null)); + } { name = "rustls-pemfile"; packageId = "rustls-pemfile"; @@ -8052,7 +8058,7 @@ rec { "stream" = [ "tokio/fs" "dep:tokio-util" "dep:wasm-streams" ]; "zstd" = [ "dep:async-compression" "async-compression?/zstd" "dep:tokio-util" ]; }; - resolvedDefaultFeatures = [ "__rustls" "__rustls-ring" "__tls" "blocking" "json" "rustls-tls" "rustls-tls-webpki-roots" ]; + resolvedDefaultFeatures = [ "__rustls" "__rustls-ring" "__tls" "blocking" "json" "rustls-tls" "rustls-tls-native-roots" "rustls-tls-webpki-roots" ]; }; "ring" = rec { crateName = "ring"; @@ -9672,7 +9678,7 @@ rec { name = "reqwest"; packageId = "reqwest"; usesDefaultFeatures = false; - features = [ "json" "rustls-tls" ]; + features = [ "json" "rustls-tls-native-roots" ]; } { name = "semver"; @@ -10061,7 +10067,7 @@ rec { }; "stackablectl" = rec { crateName = "stackablectl"; - version = "24.11.3"; + version = "24.11.4-native-certs"; edition = "2021"; crateBin = [ { @@ -10126,7 +10132,7 @@ rec { name = "reqwest"; packageId = "reqwest"; usesDefaultFeatures = false; - features = [ "json" "rustls-tls" ]; + features = [ "json" "rustls-tls-native-roots" ]; } { name = "semver"; diff --git a/Cargo.toml b/Cargo.toml index 66b79cdb..56c0f77c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -38,7 +38,7 @@ phf = "0.11" phf_codegen = "0.11" rand = "0.8" regex = "1.10" -reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls"] } +reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls-native-roots"] } rstest = "0.22" semver = { version = "1.0", features = ["serde"] } serde = { version = "1.0", features = ["derive"] } diff --git a/extra/man/stackablectl.1 b/extra/man/stackablectl.1 index aae68e97..c0b5e6ac 100644 --- a/extra/man/stackablectl.1 +++ b/extra/man/stackablectl.1 @@ -1,6 +1,6 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' -.TH stackablectl 1 "stackablectl 24.11.3" +.TH stackablectl 1 "stackablectl 24.11.4-native-certs" .SH NAME stackablectl \- Command line tool to interact with the Stackable Data Platform .SH SYNOPSIS @@ -108,6 +108,6 @@ EXPERIMENTAL: Launch a debug container for a Pod stackablectl\-help(1) Print this message or the help of the given subcommand(s) .SH VERSION -v24.11.3 +v24.11.4\-native\-certs .SH AUTHORS Stackable GmbH diff --git a/rust/stackablectl/CHANGELOG.md b/rust/stackablectl/CHANGELOG.md index d834f1a9..fd8ee617 100644 --- a/rust/stackablectl/CHANGELOG.md +++ b/rust/stackablectl/CHANGELOG.md @@ -4,6 +4,12 @@ All notable changes to this project will be documented in this file. ## [Unreleased] +### Fixes + +- Use `rustls-native-certs` so that `stackablectl` can be used in environments with internal PKI ([#351]). + +[#351]: https://github.com/stackabletech/stackable-cockpit/pull/351 + ## [24.11.3] - 2025-01-27 ### Added diff --git a/rust/stackablectl/Cargo.toml b/rust/stackablectl/Cargo.toml index 3244a18c..2cf933e4 100644 --- a/rust/stackablectl/Cargo.toml +++ b/rust/stackablectl/Cargo.toml @@ -2,7 +2,7 @@ name = "stackablectl" description = "Command line tool to interact with the Stackable Data Platform" # See /Cargo.toml -version = "24.11.3" +version = "24.11.4-native-certs" authors.workspace = true license.workspace = true edition.workspace = true From 283fe93556c00a8fb920db6d170a953a118a9bef Mon Sep 17 00:00:00 2001 From: Techassi Date: Tue, 11 Mar 2025 10:29:01 +0100 Subject: [PATCH 03/63] docs: Update release links to 24.11.3 (#358) --- docs/modules/stackablectl/pages/installation.adoc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/modules/stackablectl/pages/installation.adoc b/docs/modules/stackablectl/pages/installation.adoc index a2d2df77..7c828b04 100644 --- a/docs/modules/stackablectl/pages/installation.adoc +++ b/docs/modules/stackablectl/pages/installation.adoc @@ -1,7 +1,7 @@ = Installation :page-aliases: stable@stackablectl::installation.adoc -:latest-release: https://github.com/stackabletech/stackable-cockpit/releases/tag/stackablectl-24.11.1 +:latest-release: https://github.com/stackabletech/stackable-cockpit/releases/tag/stackablectl-24.11.3 :fish-comp-loations: https://fishshell.com/docs/current/completions.html#where-to-put-completions :nushell-comp-locations: https://www.nushell.sh/book/custom_commands.html#persisting @@ -23,14 +23,14 @@ You can also use the following command: [source,console] ---- -$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-24.11.1/stackablectl-x86_64-unknown-linux-gnu +$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-24.11.3/stackablectl-x86_64-unknown-linux-gnu ---- **aarch64** (arm64): [source,console] ---- -$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-24.11.1/stackablectl-aarch64-unknown-linux-gnu +$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-24.11.3/stackablectl-aarch64-unknown-linux-gnu ---- Install the binary into a directory in the `$PATH`, and make it executable: @@ -60,14 +60,14 @@ You can also use the following command: [source,console] ---- -$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-24.11.1/stackablectl-x86_64-apple-darwin +$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-24.11.3/stackablectl-x86_64-apple-darwin ---- **aarch64** (arm64): [source,console] ---- -$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-24.11.1/stackablectl-aarch64-apple-darwin +$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-24.11.3/stackablectl-aarch64-apple-darwin ---- Install the binary into a directory in the `$PATH`, and make it executable: From 06b221d7ca6514275c0dcbc2e7c07e118334c265 Mon Sep 17 00:00:00 2001 From: Techassi Date: Thu, 13 Mar 2025 13:48:21 +0100 Subject: [PATCH 04/63] fix: Install correct operator version when using OCI registry (#360) chore: Update default Helm chart version to 0.0.0-dev --- rust/stackable-cockpit/src/constants.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust/stackable-cockpit/src/constants.rs b/rust/stackable-cockpit/src/constants.rs index cf03e4c5..6f255eba 100644 --- a/rust/stackable-cockpit/src/constants.rs +++ b/rust/stackable-cockpit/src/constants.rs @@ -25,7 +25,7 @@ pub const HELM_REPO_INDEX_FILE: &str = "index.yaml"; pub const HELM_OCI_BASE: &str = "oci.stackable.tech"; pub const HELM_OCI_REGISTRY: &str = "oci://oci.stackable.tech/sdp-charts"; -pub const HELM_DEFAULT_CHART_VERSION: &str = ">0.0.0-0"; +pub const HELM_DEFAULT_CHART_VERSION: &str = "0.0.0-dev"; pub const PRODUCT_NAMES: &[&str] = &[ "airflow", From c8f92b6b071e85f6b3998c20251c987f61c58aca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B6nke=20Liebau?= Date: Thu, 13 Mar 2025 17:28:26 +0100 Subject: [PATCH 05/63] Adapt text about no prebuilt windows binaries to say "it is impossible" (#361) * Adapt text about no prebuilt windows binaries to say "it is impossible" * Add recommendation for wsl * Apply suggestions from code review by Lars Co-authored-by: Lars Francke --------- Co-authored-by: Lars Francke --- docs/modules/stackablectl/pages/installation.adoc | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/docs/modules/stackablectl/pages/installation.adoc b/docs/modules/stackablectl/pages/installation.adoc index 7c828b04..0f4870f2 100644 --- a/docs/modules/stackablectl/pages/installation.adoc +++ b/docs/modules/stackablectl/pages/installation.adoc @@ -96,8 +96,14 @@ up asking if you want to allow access for `stackablectl`. You must allow access. Windows:: + -- -Currently, there are no pre-built binaries available for Windows. Please refer to xref:#building-from-source[this] -section to learn how to build the binary from source. +Currently, there are no pre-built binaries available for Windows. +At the time of writing, compiling `stackablectl` on Windows was impossible due to upstream bugs. +While it may have become possible since then, it'll still provide significant challenges due to high technical complexity +related to FFI, cgo and Windows-specific issues. + +For Windows users, WSL will probably be the best option for using `stackablectl`. + +If you do want to attempt compiling for Windows, please refer to xref:#building-from-source[this] section - and if you are successful, by all means, give us a shout and we will reward you handsomely! -- ==== From 3604c1e5e216503b36f37edd0df13b8fa0d232ce Mon Sep 17 00:00:00 2001 From: Nick <10092581+NickLarsenNZ@users.noreply.github.com> Date: Wed, 19 Mar 2025 12:59:10 +0100 Subject: [PATCH 06/63] fix(stackable-cockpit/stacklet): Use heritage label for looking up minio (#364) * fix(stackable-cockpit/stacklet): Use heritage label for looking up minio Fixes #363 * chore: Update changelog --- rust/stackable-cockpit/src/platform/stacklet/minio.rs | 2 +- rust/stackablectl/CHANGELOG.md | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/rust/stackable-cockpit/src/platform/stacklet/minio.rs b/rust/stackable-cockpit/src/platform/stacklet/minio.rs index e7e77a40..c881409a 100644 --- a/rust/stackable-cockpit/src/platform/stacklet/minio.rs +++ b/rust/stackable-cockpit/src/platform/stacklet/minio.rs @@ -13,7 +13,7 @@ pub(super) async fn list(client: &Client, namespace: Option<&str>) -> Result Date: Thu, 27 Mar 2025 10:09:28 +0100 Subject: [PATCH 07/63] chore(instrumentation): Reduce noise from instrumented functions (#365) * chore(instrumentation): Reduce noise from instrumented functions * chore(instrumentation): Improve trace events with fields * chore(instrumentation): Further improvements of tracing events * chore: Clean up format! * chore(instrumentation): Remove unused import * chore(instrumentation): Add comments for future improvements * chore(instrumentation): Tidy up helm repo list * chore(instrumentation): Add comment for future change * chore(stackablectl): Update changelog * chore(instrumentation): Fix clippy lints * chore(instrumentation): Split instrumentation fields across mutliple lines --- rust/helm-sys/src/lib.rs | 2 + .../src/engine/docker/mod.rs | 2 +- rust/stackable-cockpit/src/engine/kind/mod.rs | 6 +- .../src/engine/minikube/mod.rs | 6 +- rust/stackable-cockpit/src/helm.rs | 11 ++-- rust/stackable-cockpit/src/oci.rs | 30 ++++----- .../src/platform/demo/spec.rs | 11 +++- .../src/platform/manifests.rs | 13 ++-- .../src/platform/operator/mod.rs | 15 +++-- .../src/platform/release/spec.rs | 55 +++++++++++------ .../src/platform/stack/spec.rs | 14 +++-- .../src/utils/chartsource.rs | 3 + rust/stackable-cockpit/src/utils/check.rs | 4 +- rust/stackablectl/CHANGELOG.md | 2 + rust/stackablectl/src/cli/mod.rs | 16 +++-- rust/stackablectl/src/cmds/demo.rs | 16 +++-- rust/stackablectl/src/cmds/operator.rs | 61 ++++++++++++------- rust/stackablectl/src/cmds/release.rs | 3 +- rust/stackablectl/src/cmds/stack.rs | 8 +-- rust/stackablectl/src/cmds/stacklet.rs | 4 +- 20 files changed, 176 insertions(+), 106 deletions(-) diff --git a/rust/helm-sys/src/lib.rs b/rust/helm-sys/src/lib.rs index 1e934586..9c7d66d4 100644 --- a/rust/helm-sys/src/lib.rs +++ b/rust/helm-sys/src/lib.rs @@ -56,6 +56,8 @@ pub fn uninstall_helm_release( } } +// TODO (@NickLarsenNZ): Add tracing to helm-sys, maybe? +// #[instrument] pub fn check_helm_release_exists(release_name: &str, namespace: &str) -> bool { let release_name = CString::new(release_name).unwrap(); let namespace = CString::new(namespace).unwrap(); diff --git a/rust/stackable-cockpit/src/engine/docker/mod.rs b/rust/stackable-cockpit/src/engine/docker/mod.rs index 1a7e515e..697b0797 100644 --- a/rust/stackable-cockpit/src/engine/docker/mod.rs +++ b/rust/stackable-cockpit/src/engine/docker/mod.rs @@ -19,7 +19,7 @@ pub enum Error { } /// Checks if Docker is running on the system -#[instrument] +#[instrument(skip_all)] pub async fn check_if_docker_is_running() -> Result<()> { debug!("Checking if Docker is running"); diff --git a/rust/stackable-cockpit/src/engine/kind/mod.rs b/rust/stackable-cockpit/src/engine/kind/mod.rs index 96a159c5..85b8843f 100644 --- a/rust/stackable-cockpit/src/engine/kind/mod.rs +++ b/rust/stackable-cockpit/src/engine/kind/mod.rs @@ -64,7 +64,7 @@ impl Cluster { } /// Create a new local cluster by calling the kind binary. - #[instrument] + #[instrument(skip_all)] pub async fn create(&self) -> Result<()> { info!("Creating local cluster using kind"); @@ -109,7 +109,7 @@ impl Cluster { } /// Creates a kind cluster if it doesn't exist already. - #[instrument] + #[instrument(skip_all)] pub async fn create_if_not_exists(&self) -> Result<()> { info!("Creating cluster if it doesn't exist using kind"); @@ -131,7 +131,7 @@ impl Cluster { } /// Check if a kind cluster with the provided name already exists. - #[instrument] + #[instrument(skip_all)] async fn check_if_cluster_exists(cluster_name: &str) -> Result { debug!("Checking if kind cluster exists"); diff --git a/rust/stackable-cockpit/src/engine/minikube/mod.rs b/rust/stackable-cockpit/src/engine/minikube/mod.rs index a8a929f5..dab6e959 100644 --- a/rust/stackable-cockpit/src/engine/minikube/mod.rs +++ b/rust/stackable-cockpit/src/engine/minikube/mod.rs @@ -41,7 +41,7 @@ impl Cluster { } /// Create a new local cluster by calling the Minikube binary - #[instrument] + #[instrument(skip_all)] pub async fn create(&self) -> Result<(), Error> { info!("Creating local cluster using Minikube"); @@ -70,7 +70,7 @@ impl Cluster { } /// Creates a Minikube cluster if it doesn't exist already. - #[instrument] + #[instrument(skip_all)] pub async fn create_if_not_exists(&self) -> Result<(), Error> { info!("Creating cluster if it doesn't exist using Minikube"); @@ -92,7 +92,7 @@ impl Cluster { } /// Check if a kind cluster with the provided name already exists. - #[instrument] + #[instrument(skip_all)] async fn check_if_cluster_exists(cluster_name: &str) -> Result { debug!("Checking if Minikube cluster exists"); diff --git a/rust/stackable-cockpit/src/helm.rs b/rust/stackable-cockpit/src/helm.rs index 25bca566..fd263aad 100644 --- a/rust/stackable-cockpit/src/helm.rs +++ b/rust/stackable-cockpit/src/helm.rs @@ -182,7 +182,7 @@ pub struct ChartVersion<'a> { /// /// This function expects the fully qualified Helm release name. In case of our /// operators this is: `-operator`. -#[instrument] +#[instrument(skip(values_yaml), fields(with_values = values_yaml.is_some()))] pub fn install_release_from_repo_or_registry( release_name: &str, ChartVersion { @@ -239,8 +239,8 @@ pub fn install_release_from_repo_or_registry( let chart_version = chart_version.unwrap_or(HELM_DEFAULT_CHART_VERSION); debug!( - "Installing Helm release {} ({}) from chart {}", - release_name, chart_version, full_chart_name + release_name, + chart_version, full_chart_name, "Installing Helm release" ); install_release( @@ -260,6 +260,7 @@ pub fn install_release_from_repo_or_registry( /// /// This function expects the fully qualified Helm release name. In case of our /// operators this is: `-operator`. +#[instrument(fields(with_values = values_yaml.is_some()))] fn install_release( release_name: &str, chart_name: &str, @@ -388,10 +389,10 @@ pub fn add_repo(repository_name: &str, repository_url: &str) -> Result<(), Error } /// Retrieves the Helm index file from the repository URL. -#[instrument] +#[instrument(skip_all, fields(%repo_url))] pub async fn get_helm_index(repo_url: T) -> Result where - T: AsRef + std::fmt::Debug, + T: AsRef + std::fmt::Display + std::fmt::Debug, { debug!("Get Helm repo index file"); diff --git a/rust/stackable-cockpit/src/oci.rs b/rust/stackable-cockpit/src/oci.rs index 0c8eea63..337cc876 100644 --- a/rust/stackable-cockpit/src/oci.rs +++ b/rust/stackable-cockpit/src/oci.rs @@ -2,7 +2,7 @@ use std::collections::HashMap; use serde::Deserialize; use snafu::{OptionExt, ResultExt, Snafu}; -use tracing::debug; +use tracing::{debug, instrument}; use url::Url; use urlencoding::encode; @@ -117,6 +117,8 @@ impl OciUrlExt for Url { } } +// TODO (@NickLarsenNZ): Look into why a HashMap is used here when the key is inside each entry in the value +#[instrument] pub async fn get_oci_index<'a>() -> Result, Error> { let mut source_index_files: HashMap<&str, ChartSourceMetadata> = HashMap::new(); @@ -133,12 +135,12 @@ pub async fn get_oci_index<'a>() -> Result }, ); } - let base_url = format!("https://{}/api/v2.0", HELM_OCI_BASE); + let base_url = format!("https://{HELM_OCI_BASE}/api/v2.0"); // fetch all operators let url = format!( - "{}/repositories?page_size={}&q=name=~sdp-charts/", - base_url, 100 + "{base_url}/repositories?page_size={page_size}&q=name=~sdp-charts/", + page_size = 100 ); // reuse connections @@ -153,16 +155,20 @@ pub async fn get_oci_index<'a>() -> Result .await .context(ParseRepositoriesSnafu)?; - debug!("OCI repos {:?}", repositories); + debug!( + count = repositories.len(), + "Received response for OCI repositories" + ); for repository in &repositories { // fetch all artifacts pro operator + // NOTE (@NickLarsenNZ): I think repository_name should be helm_chart_name. let (project_name, repository_name) = repository .name .split_once('/') .context(UnexpectedOciRepositoryNameSnafu)?; - debug!("OCI repo parts {} and {}", project_name, repository_name); + tracing::trace!(project_name, repository_name, "OCI repository parts"); let mut artifacts = Vec::new(); let mut page = 1; @@ -196,17 +202,7 @@ pub async fn get_oci_index<'a>() -> Result .replace("-arm64", "") .replace("-amd64", ""); - debug!( - "OCI resolved artifact {}, {}, {}", - release_version.to_string(), - repository_name.to_string(), - release_artifact.name.to_string() - ); - - debug!( - "Repo/Artifact/Tag: {:?} / {:?} / {:?}", - repository, artifact, release_artifact - ); + tracing::trace!(repository_name, release_version, "OCI resolved artifact"); let entry = ChartSourceEntry { name: repository_name.to_string(), diff --git a/rust/stackable-cockpit/src/platform/demo/spec.rs b/rust/stackable-cockpit/src/platform/demo/spec.rs index 59aaa8d9..af464125 100644 --- a/rust/stackable-cockpit/src/platform/demo/spec.rs +++ b/rust/stackable-cockpit/src/platform/demo/spec.rs @@ -134,6 +134,11 @@ impl DemoSpec { Ok(()) } + #[instrument(skip_all, fields( + stack_name = %self.stack, + operator_namespace = %install_parameters.operator_namespace, + product_namespace = %install_parameters.product_namespace, + ))] pub async fn install( &self, stack_list: StackList, @@ -177,7 +182,11 @@ impl DemoSpec { .await } - #[instrument(skip_all)] + #[instrument(skip_all, fields( + stack_name = %self.stack, + operator_namespace = %install_params.operator_namespace, + product_namespace = %install_params.product_namespace, + ))] async fn prepare_manifests( &self, install_params: DemoInstallParameters, diff --git a/rust/stackable-cockpit/src/platform/manifests.rs b/rust/stackable-cockpit/src/platform/manifests.rs index 86b604f4..b92814c1 100644 --- a/rust/stackable-cockpit/src/platform/manifests.rs +++ b/rust/stackable-cockpit/src/platform/manifests.rs @@ -62,7 +62,7 @@ pub enum Error { pub trait InstallManifestsExt { // TODO (Techassi): This step shouldn't care about templating the manifests nor fetching them from remote - #[instrument(skip_all)] + #[instrument(skip_all, fields(%product_namespace))] #[allow(async_fn_in_trait)] async fn install_manifests( manifests: &[ManifestSpec], @@ -72,12 +72,12 @@ pub trait InstallManifestsExt { client: &Client, transfer_client: &xfer::Client, ) -> Result<(), Error> { - debug!("Installing demo / stack manifests"); + debug!("Installing manifests"); for manifest in manifests { match manifest { ManifestSpec::HelmChart(helm_file) => { - debug!("Installing manifest from Helm chart {}", helm_file); + debug!(helm_file, "Installing manifest from Helm chart"); // Read Helm chart YAML and apply templating let helm_file = helm_file.into_path_or_url().context(ParsePathOrUrlSnafu { @@ -89,10 +89,7 @@ pub trait InstallManifestsExt { .await .context(FileTransferSnafu)?; - info!( - "Installing Helm chart {} ({})", - helm_chart.name, helm_chart.version - ); + info!(helm_chart.name, helm_chart.version, "Installing Helm chart",); // Assumption: that all manifest helm charts refer to repos not registries helm::add_repo(&helm_chart.repo.name, &helm_chart.repo.url).context( @@ -122,7 +119,7 @@ pub trait InstallManifestsExt { })?; } ManifestSpec::PlainYaml(manifest_file) => { - debug!("Installing YAML manifest from {}", manifest_file); + debug!(manifest_file, "Installing YAML manifest"); // Read YAML manifest and apply templating let path_or_url = diff --git a/rust/stackable-cockpit/src/platform/operator/mod.rs b/rust/stackable-cockpit/src/platform/operator/mod.rs index eedcf9f9..5adbb768 100644 --- a/rust/stackable-cockpit/src/platform/operator/mod.rs +++ b/rust/stackable-cockpit/src/platform/operator/mod.rs @@ -178,13 +178,20 @@ impl OperatorSpec { } /// Installs the operator using Helm. - #[instrument(skip_all)] + #[instrument(skip_all, fields( + %namespace, + name = %self.name, + // NOTE (@NickLarsenNZ): Option doesn't impl Display, so we need to call + // display for the inner type if it exists. Otherwise we gte the Debug + // impl for the whole Option. + version = self.version.as_ref().map(tracing::field::display), + ))] pub fn install( &self, namespace: &str, chart_source: &ChartSourceType, ) -> Result<(), helm::Error> { - info!("Installing operator {}", self); + info!(operator = %self, "Installing operator"); let version = self.version.as_ref().map(|v| v.to_string()); let helm_name = self.helm_name(); @@ -213,10 +220,10 @@ impl OperatorSpec { } /// Uninstalls the operator using Helm. - #[instrument] + #[instrument(skip_all, fields(%namespace))] pub fn uninstall(&self, namespace: T) -> Result<(), helm::Error> where - T: AsRef + std::fmt::Debug, + T: AsRef + std::fmt::Display + std::fmt::Debug, { match helm::uninstall_release(&self.helm_name(), namespace.as_ref(), true) { Ok(status) => { diff --git a/rust/stackable-cockpit/src/platform/release/spec.rs b/rust/stackable-cockpit/src/platform/release/spec.rs index cf4bb8cd..eb815e55 100644 --- a/rust/stackable-cockpit/src/platform/release/spec.rs +++ b/rust/stackable-cockpit/src/platform/release/spec.rs @@ -3,7 +3,7 @@ use indexmap::IndexMap; use serde::{Deserialize, Serialize}; use snafu::{ResultExt, Snafu}; use tokio::task::JoinError; -use tracing::{info, instrument}; +use tracing::{info, instrument, Instrument, Span}; #[cfg(feature = "openapi")] use utoipa::ToSchema; @@ -50,7 +50,11 @@ pub struct ReleaseSpec { impl ReleaseSpec { /// Installs a release by installing individual operators. - #[instrument(skip_all)] + #[instrument(skip_all, fields( + %namespace, + product.included = tracing::field::Empty, + product.excluded = tracing::field::Empty, + ))] pub async fn install( &self, include_products: &[String], @@ -60,29 +64,44 @@ impl ReleaseSpec { ) -> Result<()> { info!("Installing release"); + include_products.iter().for_each(|product| { + Span::current().record("product.included", product); + }); + exclude_products.iter().for_each(|product| { + Span::current().record("product.excluded", product); + }); + let namespace = namespace.to_string(); futures::stream::iter(self.filter_products(include_products, exclude_products)) .map(|(product_name, product)| { + let task_span = + tracing::debug_span!("install_operator", product_name = tracing::field::Empty); + let namespace = namespace.clone(); let chart_source = chart_source.clone(); // Helm installs currently `block_in_place`, so we need to spawn each job onto a separate task to // get useful parallelism. - tokio::spawn(async move { - info!("Installing {product_name}-operator"); - - // Create operator spec - let operator = OperatorSpec::new(&product_name, Some(product.version.clone())) - .context(OperatorSpecParseSnafu)?; - - // Install operator - operator - .install(&namespace, &chart_source) - .context(HelmInstallSnafu)?; - - info!("Installed {product_name}-operator"); - - Ok(()) - }) + tokio::spawn( + async move { + Span::current().record("product_name", &product_name); + info!("Installing {product_name}-operator"); + + // Create operator spec + let operator = + OperatorSpec::new(&product_name, Some(product.version.clone())) + .context(OperatorSpecParseSnafu)?; + + // Install operator + operator + .install(&namespace, &chart_source) + .context(HelmInstallSnafu)?; + + info!("Installed {product_name}-operator"); + + Ok(()) + } + .instrument(task_span), + ) }) .buffer_unordered(10) .map(|res| res.context(BackgroundTaskSnafu)?) diff --git a/rust/stackable-cockpit/src/platform/stack/spec.rs b/rust/stackable-cockpit/src/platform/stack/spec.rs index 2a20ba5d..3cd839fc 100644 --- a/rust/stackable-cockpit/src/platform/stack/spec.rs +++ b/rust/stackable-cockpit/src/platform/stack/spec.rs @@ -151,7 +151,13 @@ impl StackSpec { } // TODO (Techassi): Can we get rid of the release list and just use the release spec instead - #[instrument(skip(self, release_list, client, transfer_client))] + #[instrument(skip_all, fields( + stack_name = %install_parameters.stack_name, + // NOTE (@NickLarsenNZ): Option doesn't impl Display, so we need to call + // display for the inner type if it exists. Otherwise we gte the Debug + // impl for the whole Option. + demo_name = install_parameters.demo_name.as_ref().map(tracing::field::display), + ))] pub async fn install( &self, release_list: release::ReleaseList, @@ -192,15 +198,15 @@ impl StackSpec { .await } - #[instrument(skip(self, release_list))] + #[instrument(skip_all, fields(release = %self.release, %operator_namespace))] pub async fn install_release( &self, release_list: release::ReleaseList, operator_namespace: &str, - product_namespace: &str, + _product_namespace: &str, // TODO (@NickLarsenNZ): remove this field chart_source: &ChartSourceType, ) -> Result<(), Error> { - info!("Trying to install release {}", self.release); + info!(self.release, "Trying to install release"); // Get the release by name let release = release_list diff --git a/rust/stackable-cockpit/src/utils/chartsource.rs b/rust/stackable-cockpit/src/utils/chartsource.rs index 5a829e04..d84c1a13 100644 --- a/rust/stackable-cockpit/src/utils/chartsource.rs +++ b/rust/stackable-cockpit/src/utils/chartsource.rs @@ -4,6 +4,9 @@ use serde::Deserialize; #[derive(Clone, Debug, Deserialize)] pub struct ChartSourceMetadata { + // TODO (@NickLarsenNZ): Add a field for the repo name. + // This would remove the need for the nested HashMaps + // See: around rust/stackablectl/src/cmds/operator.rs:519 pub entries: HashMap>, } diff --git a/rust/stackable-cockpit/src/utils/check.rs b/rust/stackable-cockpit/src/utils/check.rs index 8abf551b..bb67806c 100644 --- a/rust/stackable-cockpit/src/utils/check.rs +++ b/rust/stackable-cockpit/src/utils/check.rs @@ -9,7 +9,7 @@ pub fn binary_present>(name: T) -> bool { } /// Returns if ALL binaries in the list are present in the $PATH. -#[instrument] +#[instrument(skip_all)] pub fn binaries_present(names: &[&str]) -> bool { debug!("Checking if required binaries are present on the system"); @@ -24,7 +24,7 @@ pub fn binaries_present(names: &[&str]) -> bool { /// Returns [`None`] if all binaries in the list are present in the $PATH and /// if not, returns [`Some`] containing the name of the missing binary. -#[instrument] +#[instrument(skip_all)] pub fn binaries_present_with_name(names: &[&str]) -> Option { debug!("Checking if required binaries are present on the system"); diff --git a/rust/stackablectl/CHANGELOG.md b/rust/stackablectl/CHANGELOG.md index 52247895..c5743084 100644 --- a/rust/stackablectl/CHANGELOG.md +++ b/rust/stackablectl/CHANGELOG.md @@ -8,9 +8,11 @@ All notable changes to this project will be documented in this file. - Use `rustls-native-certs` so that `stackablectl` can be used in environments with internal PKI ([#351]). - Use `heritage` label when looking up the `minio-console` stacklet ([#364]). +- Improve tracing and log output ([#365]). [#351]: https://github.com/stackabletech/stackable-cockpit/pull/351 [#364]: https://github.com/stackabletech/stackable-cockpit/pull/364 +[#365]: https://github.com/stackabletech/stackable-cockpit/pull/365 ## [24.11.3] - 2025-01-27 diff --git a/rust/stackablectl/src/cli/mod.rs b/rust/stackablectl/src/cli/mod.rs index 6ac718b1..7bef7840 100644 --- a/rust/stackablectl/src/cli/mod.rs +++ b/rust/stackablectl/src/cli/mod.rs @@ -3,7 +3,7 @@ use std::env; use clap::{Parser, Subcommand, ValueEnum}; use directories::ProjectDirs; use snafu::{ResultExt, Snafu}; -use tracing::{debug, instrument, Level}; +use tracing::{instrument, Level}; use stackable_cockpit::{ constants::{HELM_REPO_NAME_DEV, HELM_REPO_NAME_STABLE, HELM_REPO_NAME_TEST}, @@ -135,9 +135,8 @@ impl Cli { /// Adds the default (or custom) Helm repository URLs. Internally this calls the Helm SDK written in Go through the /// `go-helm-wrapper`. - #[instrument] pub fn add_helm_repos(&self) -> Result<(), helm::Error> { - debug!("Add Helm repos"); + tracing::info!("Add Helm repos"); // Stable repository helm::add_repo(HELM_REPO_NAME_STABLE, &self.repos.helm_repo_stable)?; @@ -151,9 +150,9 @@ impl Cli { Ok(()) } - #[instrument] pub fn cache_settings(&self) -> Result { if self.no_cache { + tracing::debug!("Cache disabled"); Ok(Settings::disabled()) } else { let project_dir = ProjectDirs::from( @@ -163,11 +162,16 @@ impl Cli { ) .ok_or(CacheSettingsError::UserDir)?; - Ok(Settings::disk(project_dir.cache_dir())) + let cache_dir = project_dir.cache_dir(); + tracing::debug!( + cache_dir = %cache_dir.to_string_lossy(), + "Setting cache directory" + ); + Ok(Settings::disk(cache_dir)) } } - #[instrument] + #[instrument(skip_all)] pub async fn run(&self) -> Result { // FIXME (Techassi): There might be a better way to handle this with // the match later in this function. diff --git a/rust/stackablectl/src/cmds/demo.rs b/rust/stackablectl/src/cmds/demo.rs index 437977a6..b98ed723 100644 --- a/rust/stackablectl/src/cmds/demo.rs +++ b/rust/stackablectl/src/cmds/demo.rs @@ -160,7 +160,7 @@ pub enum CmdError { } impl DemoArgs { - #[instrument] + #[instrument(skip_all, fields(with_cache = !cli.no_cache))] pub async fn run(&self, cli: &Cli, cache: Cache) -> Result { debug!("Handle demo args"); @@ -211,7 +211,7 @@ impl DemoArgs { } /// Print out a list of demos, either as a table (plain), JSON or YAML -#[instrument] +#[instrument(skip_all)] async fn list_cmd(args: &DemoListArgs, cli: &Cli, list: demo::List) -> Result { info!("Listing demos"); @@ -259,13 +259,13 @@ async fn list_cmd(args: &DemoListArgs, cli: &Cli, list: demo::List) -> Result Result { - info!("Describing demo {}", args.demo_name); + info!(demo_name = %args.demo_name, "Describing demo"); let demo = list.get(&args.demo_name).ok_or(CmdError::NoSuchDemo { name: args.demo_name.clone(), @@ -315,7 +315,11 @@ async fn describe_cmd( } /// Install a specific demo -#[instrument(skip(list, transfer_client))] +#[instrument(skip_all, fields( + demo_name = %args.demo_name, + skip_release = args.skip_release, + %release_branch +))] async fn install_cmd( args: &DemoInstallArgs, cli: &Cli, @@ -323,7 +327,7 @@ async fn install_cmd( transfer_client: &xfer::Client, release_branch: &str, ) -> Result { - info!(%release_branch, "Installing demo {}", args.demo_name); + info!(demo_name = %args.demo_name, "Installing demo"); // Init result output and progress output let mut output = cli.result(); diff --git a/rust/stackablectl/src/cmds/operator.rs b/rust/stackablectl/src/cmds/operator.rs index 3f10b869..4616b966 100644 --- a/rust/stackablectl/src/cmds/operator.rs +++ b/rust/stackablectl/src/cmds/operator.rs @@ -187,7 +187,7 @@ impl OperatorArgs { } } -#[instrument] +#[instrument(skip_all)] async fn list_cmd(args: &OperatorListArgs, cli: &Cli) -> Result { debug!("Listing operators"); @@ -244,9 +244,9 @@ async fn list_cmd(args: &OperatorListArgs, cli: &Cli) -> Result Result { - debug!("Describing operator {}", args.operator_name); + debug!(operator_name = %args.operator_name, "Describing operator"); // Build map which maps artifacts to a chart source let source_index_files = @@ -303,7 +303,7 @@ async fn describe_cmd(args: &OperatorDescribeArgs, cli: &Cli) -> Result Result { info!("Installing operator(s)"); @@ -328,6 +328,8 @@ async fn install_cmd(args: &OperatorInstallArgs, cli: &Cli) -> Result Result Result { info!("Uninstalling operator(s)"); @@ -381,9 +383,9 @@ fn uninstall_cmd(args: &OperatorUninstallArgs, cli: &Cli) -> Result Result { - debug!("Listing installed operators"); + info!("Listing installed operators"); type ReleaseList = IndexMap; @@ -465,7 +467,20 @@ async fn build_source_index_file_list<'a>( ChartSourceType::OCI => { source_index_files = oci::get_oci_index().await.context(OciSnafu)?; - debug!("OCI Repository entries: {:?}", source_index_files); + debug!(count = source_index_files.len(), "OCI Repository entries"); + + // TODO (@NickLarsenNZ): Look into why this is so deeply nested with duplicate data. + // source_index_files + // .iter() + // .for_each(|(&repo_name, chart_source_metadata)| { + // let x = chart_source_metadata.entries.len(); + // tracing::trace!(repo_name, x, "thing"); + // let _ = &chart_source_metadata + // .entries + // .iter() + // // y (below) is a Vec + // .for_each(|(x, y)| tracing::error!(x, "blah {:?}", y)); + // }); } ChartSourceType::Repo => { for helm_repo_name in [ @@ -493,7 +508,7 @@ async fn build_source_index_file_list<'a>( /// Iterates over all valid operators and creates a list of versions grouped /// by stable, test and dev lines based on the list of Helm repo index files. -#[instrument] +#[instrument(skip_all)] fn build_versions_list( helm_index_files: &HashMap<&str, ChartSourceMetadata>, ) -> Result, CmdError> { @@ -503,7 +518,13 @@ fn build_versions_list( for operator in operator::VALID_OPERATORS { for (helm_repo_name, helm_repo_index_file) in helm_index_files { - let versions = list_operator_versions_from_repo(operator, helm_repo_index_file)?; + let span = tracing::info_span!( + "build_versions_list_iter", + helm.repository.name = %helm_repo_name, + operator_name = %operator, + ); + let versions = + span.in_scope(|| list_operator_versions_from_repo(operator, helm_repo_index_file))?; let entry = versions_list.entry(operator.to_string()); let entry = entry.or_insert(OperatorVersionList(HashMap::new())); entry.0.insert(helm_repo_name.to_string(), versions); @@ -515,18 +536,15 @@ fn build_versions_list( /// Builds a list of versions for one operator (by name) which is grouped by /// stable, test and dev lines based on the list of Helm repo index files. -#[instrument] +#[instrument(skip_all, fields(%operator_name))] fn build_versions_list_for_operator( operator_name: T, helm_index_files: &HashMap<&str, ChartSourceMetadata>, ) -> Result where - T: AsRef + std::fmt::Debug, + T: AsRef + std::fmt::Display + std::fmt::Debug, { - debug!( - "Build versions list for operator {}", - operator_name.as_ref() - ); + debug!("Build versions list for operator"); let mut versions_list = OperatorVersionList(HashMap::new()); let operator_name = operator_name.as_ref(); @@ -540,23 +558,24 @@ where } /// Builds a list of operator versions based on the provided Helm repo. -#[instrument] +#[instrument(skip_all, fields(%operator_name))] fn list_operator_versions_from_repo( operator_name: T, helm_repo: &ChartSourceMetadata, ) -> Result, CmdError> where - T: AsRef + std::fmt::Debug, + T: AsRef + std::fmt::Display + std::fmt::Debug, { - debug!("Listing operator versions from repo"); + debug!("Listing operator versions from repository"); - let operator_name = utils::operator_chart_name(operator_name.as_ref()); + let chart_name = utils::operator_chart_name(operator_name.as_ref()); - match helm_repo.entries.get(&operator_name) { + match helm_repo.entries.get(&chart_name) { Some(entries) => { let mut versions = entries .iter() .map(|entry| { + tracing::trace!(helm.chart.name = %chart_name, helm.chart.version = %entry.version, "Found operator chart version"); Version::parse(&entry.version).with_context(|_| InvalidHelmChartVersionSnafu { version: entry.version.clone(), }) diff --git a/rust/stackablectl/src/cmds/release.rs b/rust/stackablectl/src/cmds/release.rs index e0dca6fd..698dcdd8 100644 --- a/rust/stackablectl/src/cmds/release.rs +++ b/rust/stackablectl/src/cmds/release.rs @@ -211,7 +211,7 @@ async fn describe_cmd( cli: &Cli, release_list: release::ReleaseList, ) -> Result { - info!("Describing release"); + info!(release = %args.release, "Describing release"); let release = release_list.get(&args.release); @@ -272,6 +272,7 @@ async fn install_cmd( cli: &Cli, release_list: release::ReleaseList, ) -> Result { + info!(release = %args.release, "Installing release"); match release_list.get(&args.release) { Some(release) => { let mut output = cli.result(); diff --git a/rust/stackablectl/src/cmds/stack.rs b/rust/stackablectl/src/cmds/stack.rs index 7391f1f9..7f357c49 100644 --- a/rust/stackablectl/src/cmds/stack.rs +++ b/rust/stackablectl/src/cmds/stack.rs @@ -193,7 +193,7 @@ impl StackArgs { } } -#[instrument] +#[instrument(skip_all)] fn list_cmd( args: &StackListArgs, cli: &Cli, @@ -243,13 +243,13 @@ fn list_cmd( } } -#[instrument] +#[instrument(skip_all)] fn describe_cmd( args: &StackDescribeArgs, cli: &Cli, stack_list: stack::StackList, ) -> Result { - info!("Describing stack {}", args.stack_name); + info!(stack_name = %args.stack_name, "Describing stack"); match stack_list.get(&args.stack_name) { Some(stack) => match args.output_type { @@ -312,7 +312,7 @@ async fn install_cmd( stack_list: stack::StackList, transfer_client: &xfer::Client, ) -> Result { - info!("Installing stack {}", args.stack_name); + info!(stack_name = %args.stack_name, "Installing stack"); let files = cli.get_release_files().context(PathOrUrlParseSnafu)?; let release_list = release::ReleaseList::build(&files, transfer_client) diff --git a/rust/stackablectl/src/cmds/stacklet.rs b/rust/stackablectl/src/cmds/stacklet.rs index 55c3b6e8..420d704f 100644 --- a/rust/stackablectl/src/cmds/stacklet.rs +++ b/rust/stackablectl/src/cmds/stacklet.rs @@ -90,7 +90,7 @@ impl StackletArgs { } } -#[instrument] +#[instrument(skip_all)] async fn list_cmd(args: &StackletListArgs, cli: &Cli) -> Result { info!("Listing installed stacklets"); @@ -203,7 +203,7 @@ async fn list_cmd(args: &StackletListArgs, cli: &Cli) -> Result Result { info!("Displaying stacklet credentials"); From 772b55ad4cba8e1214ea9b5d4ebeeaa139dec962 Mon Sep 17 00:00:00 2001 From: Techassi Date: Thu, 27 Mar 2025 15:54:14 +0100 Subject: [PATCH 08/63] chore: Release stackablectl 25.3.0 (#367) --- Cargo.lock | 2 +- Cargo.nix | 2 +- docs/modules/stackablectl/pages/installation.adoc | 10 +++++----- extra/man/stackablectl.1 | 4 ++-- rust/stackablectl/CHANGELOG.md | 2 ++ rust/stackablectl/Cargo.toml | 2 +- 6 files changed, 12 insertions(+), 10 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 62cf7e2e..f38ed78c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3135,7 +3135,7 @@ dependencies = [ [[package]] name = "stackablectl" -version = "24.11.4-native-certs" +version = "25.3.0" dependencies = [ "clap", "clap_complete", diff --git a/Cargo.nix b/Cargo.nix index df23dee6..c19083fc 100644 --- a/Cargo.nix +++ b/Cargo.nix @@ -10067,7 +10067,7 @@ rec { }; "stackablectl" = rec { crateName = "stackablectl"; - version = "24.11.4-native-certs"; + version = "25.3.0"; edition = "2021"; crateBin = [ { diff --git a/docs/modules/stackablectl/pages/installation.adoc b/docs/modules/stackablectl/pages/installation.adoc index 0f4870f2..9c153893 100644 --- a/docs/modules/stackablectl/pages/installation.adoc +++ b/docs/modules/stackablectl/pages/installation.adoc @@ -1,7 +1,7 @@ = Installation :page-aliases: stable@stackablectl::installation.adoc -:latest-release: https://github.com/stackabletech/stackable-cockpit/releases/tag/stackablectl-24.11.3 +:latest-release: https://github.com/stackabletech/stackable-cockpit/releases/tag/stackablectl-25.3.0 :fish-comp-loations: https://fishshell.com/docs/current/completions.html#where-to-put-completions :nushell-comp-locations: https://www.nushell.sh/book/custom_commands.html#persisting @@ -23,14 +23,14 @@ You can also use the following command: [source,console] ---- -$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-24.11.3/stackablectl-x86_64-unknown-linux-gnu +$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-25.3.0/stackablectl-x86_64-unknown-linux-gnu ---- **aarch64** (arm64): [source,console] ---- -$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-24.11.3/stackablectl-aarch64-unknown-linux-gnu +$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-25.3.0/stackablectl-aarch64-unknown-linux-gnu ---- Install the binary into a directory in the `$PATH`, and make it executable: @@ -60,14 +60,14 @@ You can also use the following command: [source,console] ---- -$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-24.11.3/stackablectl-x86_64-apple-darwin +$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-25.3.0/stackablectl-x86_64-apple-darwin ---- **aarch64** (arm64): [source,console] ---- -$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-24.11.3/stackablectl-aarch64-apple-darwin +$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-25.3.0/stackablectl-aarch64-apple-darwin ---- Install the binary into a directory in the `$PATH`, and make it executable: diff --git a/extra/man/stackablectl.1 b/extra/man/stackablectl.1 index c0b5e6ac..d272b12c 100644 --- a/extra/man/stackablectl.1 +++ b/extra/man/stackablectl.1 @@ -1,6 +1,6 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' -.TH stackablectl 1 "stackablectl 24.11.4-native-certs" +.TH stackablectl 1 "stackablectl 25.3.0" .SH NAME stackablectl \- Command line tool to interact with the Stackable Data Platform .SH SYNOPSIS @@ -108,6 +108,6 @@ EXPERIMENTAL: Launch a debug container for a Pod stackablectl\-help(1) Print this message or the help of the given subcommand(s) .SH VERSION -v24.11.4\-native\-certs +v25.3.0 .SH AUTHORS Stackable GmbH diff --git a/rust/stackablectl/CHANGELOG.md b/rust/stackablectl/CHANGELOG.md index c5743084..8993683c 100644 --- a/rust/stackablectl/CHANGELOG.md +++ b/rust/stackablectl/CHANGELOG.md @@ -4,6 +4,8 @@ All notable changes to this project will be documented in this file. ## [Unreleased] +## [25.3.0] - 2025-03-27 + ### Fixes - Use `rustls-native-certs` so that `stackablectl` can be used in environments with internal PKI ([#351]). diff --git a/rust/stackablectl/Cargo.toml b/rust/stackablectl/Cargo.toml index 2cf933e4..6fa40591 100644 --- a/rust/stackablectl/Cargo.toml +++ b/rust/stackablectl/Cargo.toml @@ -2,7 +2,7 @@ name = "stackablectl" description = "Command line tool to interact with the Stackable Data Platform" # See /Cargo.toml -version = "24.11.4-native-certs" +version = "25.3.0" authors.workspace = true license.workspace = true edition.workspace = true From 3c848314dadfdbb3c4bfc3f6c6cfd3cad12b4b83 Mon Sep 17 00:00:00 2001 From: Sebastian Bernauer Date: Thu, 10 Apr 2025 11:50:54 +0200 Subject: [PATCH 09/63] fix: Prefix ui-http port endpoints with http:// (#368) * Prefix `ui-http` port endpoints with `http://`, * Prefix ui-http port endpoints with http:// * changelog --- rust/stackable-cockpit/src/platform/service.rs | 1 + rust/stackablectl/CHANGELOG.md | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/rust/stackable-cockpit/src/platform/service.rs b/rust/stackable-cockpit/src/platform/service.rs index 4586650b..8d84c1e2 100644 --- a/rust/stackable-cockpit/src/platform/service.rs +++ b/rust/stackable-cockpit/src/platform/service.rs @@ -311,6 +311,7 @@ fn endpoint_url(endpoint_host: &str, endpoint_port: i32, port_name: &str) -> Str // As we still support older operator versions we need to also include the "old" way of naming if port_name == "http" || port_name.starts_with("http-") + || port_name == "ui-http" || port_name == "ui" || port_name == "airflow" || port_name == "superset" diff --git a/rust/stackablectl/CHANGELOG.md b/rust/stackablectl/CHANGELOG.md index 8993683c..389d68ab 100644 --- a/rust/stackablectl/CHANGELOG.md +++ b/rust/stackablectl/CHANGELOG.md @@ -4,9 +4,13 @@ All notable changes to this project will be documented in this file. ## [Unreleased] +### Fixed + +- Prefix `ui-http` port endpoints with `http://`, as e.g. used by hbase-operator ([#368]). + ## [25.3.0] - 2025-03-27 -### Fixes +### Fixed - Use `rustls-native-certs` so that `stackablectl` can be used in environments with internal PKI ([#351]). - Use `heritage` label when looking up the `minio-console` stacklet ([#364]). @@ -15,6 +19,7 @@ All notable changes to this project will be documented in this file. [#351]: https://github.com/stackabletech/stackable-cockpit/pull/351 [#364]: https://github.com/stackabletech/stackable-cockpit/pull/364 [#365]: https://github.com/stackabletech/stackable-cockpit/pull/365 +[#368]: https://github.com/stackabletech/stackable-cockpit/pull/368 ## [24.11.3] - 2025-01-27 From 765f6da9c5612a76d982dc457d4da9ab2697c1de Mon Sep 17 00:00:00 2001 From: Nick <10092581+NickLarsenNZ@users.noreply.github.com> Date: Tue, 22 Apr 2025 15:46:47 +0200 Subject: [PATCH 10/63] refactor: Rename `--product-namespace` to `--namespace` (#373) * refactor: Rename --product-namespace to --namespace Also rename fields in various structs to make clear what they are for * chore: Add todo comments * chore: Update changelog --- extra/completions/_stackablectl | 18 +++++++++--------- extra/completions/stackablectl.bash | 12 ++++++------ extra/completions/stackablectl.elv | 18 +++++++++--------- extra/completions/stackablectl.fish | 6 +++--- extra/completions/stackablectl.nu | 12 ++++++------ rust/stackable-cockpit/src/constants.rs | 2 +- .../src/platform/demo/params.rs | 2 +- .../src/platform/demo/spec.rs | 10 +++++----- .../src/platform/namespace.rs | 1 + .../src/platform/stack/params.rs | 2 +- .../src/platform/stack/spec.rs | 11 ++++++----- rust/stackablectl/CHANGELOG.md | 9 ++++++++- rust/stackablectl/src/args/namespace.rs | 8 ++++---- rust/stackablectl/src/cmds/demo.rs | 8 ++++---- rust/stackablectl/src/cmds/stack.rs | 8 ++++---- rust/stackablectl/src/cmds/stacklet.rs | 6 +++--- rust/stackablectl/src/output/error.rs | 4 ++-- rust/stackablectl/src/output/result.rs | 4 ++-- 18 files changed, 75 insertions(+), 66 deletions(-) diff --git a/extra/completions/_stackablectl b/extra/completions/_stackablectl index 77f090de..e8717fbd 100644 --- a/extra/completions/_stackablectl +++ b/extra/completions/_stackablectl @@ -565,9 +565,9 @@ minikube\:"Use a minikube cluster"))' \ '--cluster-cp-nodes=[Number of control plane nodes in the local cluster]:CLUSTER_CP_NODES: ' \ '--operator-namespace=[Namespace where the operators are deployed]:OPERATOR_NAMESPACE: ' \ '--operator-ns=[Namespace where the operators are deployed]:OPERATOR_NAMESPACE: ' \ -'-n+[Namespace where the products (e.g. stacks or demos) are deployed]:PRODUCT_NAMESPACE: ' \ -'--product-namespace=[Namespace where the products (e.g. stacks or demos) are deployed]:PRODUCT_NAMESPACE: ' \ -'--product-ns=[Namespace where the products (e.g. stacks or demos) are deployed]:PRODUCT_NAMESPACE: ' \ +'-n+[Namespace where the stacks or demos are deployed]:NAMESPACE: ' \ +'--namespace=[Namespace where the stacks or demos are deployed]:NAMESPACE: ' \ +'--product-ns=[Namespace where the stacks or demos are deployed]:NAMESPACE: ' \ '--release=[Target a specific Stackable release]:RELEASE: ' \ '-l+[Log level this application uses]:LOG_LEVEL: ' \ '--log-level=[Log level this application uses]:LOG_LEVEL: ' \ @@ -696,9 +696,9 @@ json\:"Print output formatted as JSON" yaml\:"Print output formatted as YAML"))' \ '--operator-namespace=[Namespace where the operators are deployed]:OPERATOR_NAMESPACE: ' \ '--operator-ns=[Namespace where the operators are deployed]:OPERATOR_NAMESPACE: ' \ -'-n+[Namespace where the products (e.g. stacks or demos) are deployed]:PRODUCT_NAMESPACE: ' \ -'--product-namespace=[Namespace where the products (e.g. stacks or demos) are deployed]:PRODUCT_NAMESPACE: ' \ -'--product-ns=[Namespace where the products (e.g. stacks or demos) are deployed]:PRODUCT_NAMESPACE: ' \ +'-n+[Namespace where the stacks or demos are deployed]:NAMESPACE: ' \ +'--namespace=[Namespace where the stacks or demos are deployed]:NAMESPACE: ' \ +'--product-ns=[Namespace where the stacks or demos are deployed]:NAMESPACE: ' \ '-l+[Log level this application uses]:LOG_LEVEL: ' \ '--log-level=[Log level this application uses]:LOG_LEVEL: ' \ '*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ @@ -858,9 +858,9 @@ minikube\:"Use a minikube cluster"))' \ '--cluster-cp-nodes=[Number of control plane nodes in the local cluster]:CLUSTER_CP_NODES: ' \ '--operator-namespace=[Namespace where the operators are deployed]:OPERATOR_NAMESPACE: ' \ '--operator-ns=[Namespace where the operators are deployed]:OPERATOR_NAMESPACE: ' \ -'-n+[Namespace where the products (e.g. stacks or demos) are deployed]:PRODUCT_NAMESPACE: ' \ -'--product-namespace=[Namespace where the products (e.g. stacks or demos) are deployed]:PRODUCT_NAMESPACE: ' \ -'--product-ns=[Namespace where the products (e.g. stacks or demos) are deployed]:PRODUCT_NAMESPACE: ' \ +'-n+[Namespace where the stacks or demos are deployed]:NAMESPACE: ' \ +'--namespace=[Namespace where the stacks or demos are deployed]:NAMESPACE: ' \ +'--product-ns=[Namespace where the stacks or demos are deployed]:NAMESPACE: ' \ '--release=[Target a specific Stackable release]:RELEASE: ' \ '-l+[Log level this application uses]:LOG_LEVEL: ' \ '--log-level=[Log level this application uses]:LOG_LEVEL: ' \ diff --git a/extra/completions/stackablectl.bash b/extra/completions/stackablectl.bash index 6e066ef2..5000e636 100644 --- a/extra/completions/stackablectl.bash +++ b/extra/completions/stackablectl.bash @@ -2107,7 +2107,7 @@ _stackablectl() { return 0 ;; stackablectl__demo__install) - opts="-c -n -l -d -s -r -h -V --skip-release --stack-parameters --parameters --cluster --cluster-name --cluster-nodes --cluster-cp-nodes --operator-ns --operator-namespace --product-ns --product-namespace --release --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version " + opts="-c -n -l -d -s -r -h -V --skip-release --stack-parameters --parameters --cluster --cluster-name --cluster-nodes --cluster-cp-nodes --operator-ns --operator-namespace --product-ns --namespace --release --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version " if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -2149,7 +2149,7 @@ _stackablectl() { COMPREPLY=($(compgen -f "${cur}")) return 0 ;; - --product-namespace) + --namespace) COMPREPLY=($(compgen -f "${cur}")) return 0 ;; @@ -5119,7 +5119,7 @@ _stackablectl() { return 0 ;; stackablectl__stack__install) - opts="-c -n -l -d -s -r -h -V --skip-release --stack-parameters --parameters --cluster --cluster-name --cluster-nodes --cluster-cp-nodes --operator-ns --operator-namespace --product-ns --product-namespace --release --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version " + opts="-c -n -l -d -s -r -h -V --skip-release --stack-parameters --parameters --cluster --cluster-name --cluster-nodes --cluster-cp-nodes --operator-ns --operator-namespace --product-ns --namespace --release --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version " if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -5161,7 +5161,7 @@ _stackablectl() { COMPREPLY=($(compgen -f "${cur}")) return 0 ;; - --product-namespace) + --namespace) COMPREPLY=($(compgen -f "${cur}")) return 0 ;; @@ -5763,7 +5763,7 @@ _stackablectl() { return 0 ;; stackablectl__stacklet__list) - opts="-o -n -l -d -s -r -h -V --output --operator-ns --operator-namespace --product-ns --product-namespace --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version" + opts="-o -n -l -d -s -r -h -V --output --operator-ns --operator-namespace --product-ns --namespace --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -5785,7 +5785,7 @@ _stackablectl() { COMPREPLY=($(compgen -f "${cur}")) return 0 ;; - --product-namespace) + --namespace) COMPREPLY=($(compgen -f "${cur}")) return 0 ;; diff --git a/extra/completions/stackablectl.elv b/extra/completions/stackablectl.elv index a15e2228..e4a5694b 100644 --- a/extra/completions/stackablectl.elv +++ b/extra/completions/stackablectl.elv @@ -414,9 +414,9 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --cluster-cp-nodes 'Number of control plane nodes in the local cluster' cand --operator-namespace 'Namespace where the operators are deployed' cand --operator-ns 'Namespace where the operators are deployed' - cand -n 'Namespace where the products (e.g. stacks or demos) are deployed' - cand --product-namespace 'Namespace where the products (e.g. stacks or demos) are deployed' - cand --product-ns 'Namespace where the products (e.g. stacks or demos) are deployed' + cand -n 'Namespace where the stacks or demos are deployed' + cand --namespace 'Namespace where the stacks or demos are deployed' + cand --product-ns 'Namespace where the stacks or demos are deployed' cand --release 'Target a specific Stackable release' cand -l 'Log level this application uses' cand --log-level 'Log level this application uses' @@ -500,9 +500,9 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --output 'output' cand --operator-namespace 'Namespace where the operators are deployed' cand --operator-ns 'Namespace where the operators are deployed' - cand -n 'Namespace where the products (e.g. stacks or demos) are deployed' - cand --product-namespace 'Namespace where the products (e.g. stacks or demos) are deployed' - cand --product-ns 'Namespace where the products (e.g. stacks or demos) are deployed' + cand -n 'Namespace where the stacks or demos are deployed' + cand --namespace 'Namespace where the stacks or demos are deployed' + cand --product-ns 'Namespace where the stacks or demos are deployed' cand -l 'Log level this application uses' cand --log-level 'Log level this application uses' cand -d 'Provide one or more additional (custom) demo file(s)' @@ -610,9 +610,9 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --cluster-cp-nodes 'Number of control plane nodes in the local cluster' cand --operator-namespace 'Namespace where the operators are deployed' cand --operator-ns 'Namespace where the operators are deployed' - cand -n 'Namespace where the products (e.g. stacks or demos) are deployed' - cand --product-namespace 'Namespace where the products (e.g. stacks or demos) are deployed' - cand --product-ns 'Namespace where the products (e.g. stacks or demos) are deployed' + cand -n 'Namespace where the stacks or demos are deployed' + cand --namespace 'Namespace where the stacks or demos are deployed' + cand --product-ns 'Namespace where the stacks or demos are deployed' cand --release 'Target a specific Stackable release' cand -l 'Log level this application uses' cand --log-level 'Log level this application uses' diff --git a/extra/completions/stackablectl.fish b/extra/completions/stackablectl.fish index 12782682..79b9482f 100644 --- a/extra/completions/stackablectl.fish +++ b/extra/completions/stackablectl.fish @@ -256,7 +256,7 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from install" -l cluster-nodes -d 'Number of total nodes in the local cluster' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from install" -l cluster-cp-nodes -d 'Number of control plane nodes in the local cluster' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from install" -l operator-namespace -l operator-ns -d 'Namespace where the operators are deployed' -r -complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from install" -s n -l product-namespace -l product-ns -d 'Namespace where the products (e.g. stacks or demos) are deployed' -r +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from install" -s n -l namespace -l product-ns -d 'Namespace where the stacks or demos are deployed' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from install" -l release -d 'Target a specific Stackable release' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from install" -s l -l log-level -d 'Log level this application uses' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from install" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F @@ -302,7 +302,7 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from credentials" -s V -l version -d 'Print version' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from list" -s o -l output -r -f -a "{plain\t'Print output formatted as plain text',table\t'Print output formatted as a table',json\t'Print output formatted as JSON',yaml\t'Print output formatted as YAML'}" complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from list" -l operator-namespace -l operator-ns -d 'Namespace where the operators are deployed' -r -complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from list" -s n -l product-namespace -l product-ns -d 'Namespace where the products (e.g. stacks or demos) are deployed' -r +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from list" -s n -l namespace -l product-ns -d 'Namespace where the stacks or demos are deployed' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from list" -s l -l log-level -d 'Log level this application uses' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from list" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from list" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F @@ -366,7 +366,7 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fi complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from install" -l cluster-nodes -d 'Number of total nodes in the local cluster' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from install" -l cluster-cp-nodes -d 'Number of control plane nodes in the local cluster' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from install" -l operator-namespace -l operator-ns -d 'Namespace where the operators are deployed' -r -complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from install" -s n -l product-namespace -l product-ns -d 'Namespace where the products (e.g. stacks or demos) are deployed' -r +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from install" -s n -l namespace -l product-ns -d 'Namespace where the stacks or demos are deployed' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from install" -l release -d 'Target a specific Stackable release' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from install" -s l -l log-level -d 'Log level this application uses' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from install" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F diff --git a/extra/completions/stackablectl.nu b/extra/completions/stackablectl.nu index 6b19ee18..5bb59dd6 100644 --- a/extra/completions/stackablectl.nu +++ b/extra/completions/stackablectl.nu @@ -430,8 +430,8 @@ module completions { --cluster-cp-nodes: string # Number of control plane nodes in the local cluster --operator-namespace: string # Namespace where the operators are deployed --operator-ns: string # Namespace where the operators are deployed - --product-namespace(-n): string # Namespace where the products (e.g. stacks or demos) are deployed - --product-ns: string # Namespace where the products (e.g. stacks or demos) are deployed + --namespace(-n): string # Namespace where the stacks or demos are deployed + --product-ns: string # Namespace where the stacks or demos are deployed --release: string # Target a specific Stackable release --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files @@ -521,8 +521,8 @@ module completions { --output(-o): string@"nu-complete stackablectl stacklet list output_type" --operator-namespace: string # Namespace where the operators are deployed --operator-ns: string # Namespace where the operators are deployed - --product-namespace(-n): string # Namespace where the products (e.g. stacks or demos) are deployed - --product-ns: string # Namespace where the products (e.g. stacks or demos) are deployed + --namespace(-n): string # Namespace where the stacks or demos are deployed + --product-ns: string # Namespace where the stacks or demos are deployed --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files --demo-file(-d): string # Provide one or more additional (custom) demo file(s) @@ -643,8 +643,8 @@ module completions { --cluster-cp-nodes: string # Number of control plane nodes in the local cluster --operator-namespace: string # Namespace where the operators are deployed --operator-ns: string # Namespace where the operators are deployed - --product-namespace(-n): string # Namespace where the products (e.g. stacks or demos) are deployed - --product-ns: string # Namespace where the products (e.g. stacks or demos) are deployed + --namespace(-n): string # Namespace where the stacks or demos are deployed + --product-ns: string # Namespace where the stacks or demos are deployed --release: string # Target a specific Stackable release --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files diff --git a/rust/stackable-cockpit/src/constants.rs b/rust/stackable-cockpit/src/constants.rs index 6f255eba..ea8cf228 100644 --- a/rust/stackable-cockpit/src/constants.rs +++ b/rust/stackable-cockpit/src/constants.rs @@ -8,7 +8,7 @@ pub const DEFAULT_OPERATOR_NAMESPACE: &str = "stackable-operators"; // Currently lots of demos can only run in the default namespace, so we have to // keep "default" here, until we switch the demos. We can't switch them right // now, as the old stackablectl would break. -pub const DEFAULT_PRODUCT_NAMESPACE: &str = "default"; +pub const DEFAULT_NAMESPACE: &str = "default"; pub const DEFAULT_LOCAL_CLUSTER_NAME: &str = "stackable-data-platform"; diff --git a/rust/stackable-cockpit/src/platform/demo/params.rs b/rust/stackable-cockpit/src/platform/demo/params.rs index b5f613fa..5cb337de 100644 --- a/rust/stackable-cockpit/src/platform/demo/params.rs +++ b/rust/stackable-cockpit/src/platform/demo/params.rs @@ -4,7 +4,7 @@ use crate::platform::operator::ChartSourceType; pub struct DemoInstallParameters { pub operator_namespace: String, - pub product_namespace: String, + pub demo_namespace: String, pub stack_parameters: Vec, pub parameters: Vec, diff --git a/rust/stackable-cockpit/src/platform/demo/spec.rs b/rust/stackable-cockpit/src/platform/demo/spec.rs index af464125..75847116 100644 --- a/rust/stackable-cockpit/src/platform/demo/spec.rs +++ b/rust/stackable-cockpit/src/platform/demo/spec.rs @@ -137,7 +137,7 @@ impl DemoSpec { #[instrument(skip_all, fields( stack_name = %self.stack, operator_namespace = %install_parameters.operator_namespace, - product_namespace = %install_parameters.product_namespace, + demo_namespace = %install_parameters.demo_namespace, ))] pub async fn install( &self, @@ -153,12 +153,12 @@ impl DemoSpec { })?; // Check demo prerequisites - self.check_prerequisites(client, &install_parameters.product_namespace) + self.check_prerequisites(client, &install_parameters.demo_namespace) .await?; let stack_install_parameters = StackInstallParameters { operator_namespace: install_parameters.operator_namespace.clone(), - product_namespace: install_parameters.product_namespace.clone(), + stack_namespace: install_parameters.demo_namespace.clone(), parameters: install_parameters.stack_parameters.clone(), labels: install_parameters.stack_labels.clone(), skip_release: install_parameters.skip_release, @@ -185,7 +185,7 @@ impl DemoSpec { #[instrument(skip_all, fields( stack_name = %self.stack, operator_namespace = %install_params.operator_namespace, - product_namespace = %install_params.product_namespace, + demo_namespace = %install_params.demo_namespace, ))] async fn prepare_manifests( &self, @@ -204,7 +204,7 @@ impl DemoSpec { Self::install_manifests( &self.manifests, ¶ms, - &install_params.product_namespace, + &install_params.demo_namespace, install_params.labels, client, transfer_client, diff --git a/rust/stackable-cockpit/src/platform/namespace.rs b/rust/stackable-cockpit/src/platform/namespace.rs index df29f404..21d007cf 100644 --- a/rust/stackable-cockpit/src/platform/namespace.rs +++ b/rust/stackable-cockpit/src/platform/namespace.rs @@ -13,6 +13,7 @@ pub enum Error { /// Creates a namespace with `name` if needed (not already present in the /// cluster). +// TODO (@NickLarsenNZ): Take a &str instead of String (to avoid all the cloning) pub async fn create_if_needed(client: &Client, name: String) -> Result<(), Error> { client .create_namespace_if_needed(name) diff --git a/rust/stackable-cockpit/src/platform/stack/params.rs b/rust/stackable-cockpit/src/platform/stack/params.rs index 9268409d..39eb12ed 100644 --- a/rust/stackable-cockpit/src/platform/stack/params.rs +++ b/rust/stackable-cockpit/src/platform/stack/params.rs @@ -8,7 +8,7 @@ pub struct StackInstallParameters { pub stack_name: String, pub operator_namespace: String, - pub product_namespace: String, + pub stack_namespace: String, pub parameters: Vec, pub skip_release: bool, diff --git a/rust/stackable-cockpit/src/platform/stack/spec.rs b/rust/stackable-cockpit/src/platform/stack/spec.rs index 3cd839fc..7e2c87e1 100644 --- a/rust/stackable-cockpit/src/platform/stack/spec.rs +++ b/rust/stackable-cockpit/src/platform/stack/spec.rs @@ -166,7 +166,7 @@ impl StackSpec { transfer_client: &xfer::Client, ) -> Result<(), Error> { // First, we check if the prerequisites are met - self.check_prerequisites(client, &install_parameters.product_namespace) + self.check_prerequisites(client, &install_parameters.stack_namespace) .await?; // Second, we install the release if not opted out @@ -180,17 +180,18 @@ impl StackSpec { self.install_release( release_list, &install_parameters.operator_namespace, - &install_parameters.product_namespace, + &install_parameters.stack_namespace, &install_parameters.chart_source, ) .await?; } // Next, create the product namespace if needed - namespace::create_if_needed(client, install_parameters.product_namespace.clone()) + // TODO (@NickLarsenNZ): Remove clones (update create_if_needed to take a &str) + namespace::create_if_needed(client, install_parameters.stack_namespace.clone()) .await .context(CreateNamespaceSnafu { - namespace: install_parameters.product_namespace.clone(), + namespace: install_parameters.stack_namespace.clone(), })?; // Finally install the stack manifests @@ -240,7 +241,7 @@ impl StackSpec { Self::install_manifests( &self.manifests, ¶meters, - &install_params.product_namespace, + &install_params.stack_namespace, install_params.labels, client, transfer_client, diff --git a/rust/stackablectl/CHANGELOG.md b/rust/stackablectl/CHANGELOG.md index 389d68ab..019f653e 100644 --- a/rust/stackablectl/CHANGELOG.md +++ b/rust/stackablectl/CHANGELOG.md @@ -4,10 +4,18 @@ All notable changes to this project will be documented in this file. ## [Unreleased] +### Changed + +- Renamed `--product-namespace` argument to `--namespace` ([#373]). + - Kept `--product-namespace` as a hidden alias to be removed in a later release. + ### Fixed - Prefix `ui-http` port endpoints with `http://`, as e.g. used by hbase-operator ([#368]). +[#368]: https://github.com/stackabletech/stackable-cockpit/pull/368 +[#373]: https://github.com/stackabletech/stackable-cockpit/pull/373 + ## [25.3.0] - 2025-03-27 ### Fixed @@ -19,7 +27,6 @@ All notable changes to this project will be documented in this file. [#351]: https://github.com/stackabletech/stackable-cockpit/pull/351 [#364]: https://github.com/stackabletech/stackable-cockpit/pull/364 [#365]: https://github.com/stackabletech/stackable-cockpit/pull/365 -[#368]: https://github.com/stackabletech/stackable-cockpit/pull/368 ## [24.11.3] - 2025-01-27 diff --git a/rust/stackablectl/src/args/namespace.rs b/rust/stackablectl/src/args/namespace.rs index a86b9ec6..4dcb1cb0 100644 --- a/rust/stackablectl/src/args/namespace.rs +++ b/rust/stackablectl/src/args/namespace.rs @@ -1,5 +1,5 @@ use clap::Args; -use stackable_cockpit::constants::{DEFAULT_OPERATOR_NAMESPACE, DEFAULT_PRODUCT_NAMESPACE}; +use stackable_cockpit::constants::{DEFAULT_NAMESPACE, DEFAULT_OPERATOR_NAMESPACE}; #[derive(Debug, Args)] #[command(next_help_heading = "Namespace options")] @@ -8,7 +8,7 @@ pub struct CommonNamespaceArgs { #[arg(long, global = true, visible_aliases(["operator-ns"]), default_value = DEFAULT_OPERATOR_NAMESPACE, long_help = "Namespace where the operators are deployed")] pub operator_namespace: String, - /// Namespace where the products (e.g. stacks or demos) are deployed - #[arg(short = 'n', long, global = true, visible_aliases(["product-ns"]), default_value = DEFAULT_PRODUCT_NAMESPACE, long_help = "Namespace where the products (e.g. stacks or demos) are deployed")] - pub product_namespace: String, + /// Namespace where the stacks or demos are deployed + #[arg(short = 'n', long, global = true, visible_aliases(["product-ns"]), aliases(["product-namespace"]), default_value = DEFAULT_NAMESPACE, long_help = "Namespace where the stacks or demos are deployed")] + pub namespace: String, } diff --git a/rust/stackablectl/src/cmds/demo.rs b/rust/stackablectl/src/cmds/demo.rs index b98ed723..39a0d151 100644 --- a/rust/stackablectl/src/cmds/demo.rs +++ b/rust/stackablectl/src/cmds/demo.rs @@ -9,7 +9,7 @@ use tracing::{debug, info, instrument}; use stackable_cockpit::{ common::list, - constants::{DEFAULT_OPERATOR_NAMESPACE, DEFAULT_PRODUCT_NAMESPACE}, + constants::{DEFAULT_NAMESPACE, DEFAULT_OPERATOR_NAMESPACE}, platform::{ demo::{self, DemoInstallParameters}, operator::ChartSourceType, @@ -373,7 +373,7 @@ async fn install_cmd( let install_parameters = DemoInstallParameters { operator_namespace: args.namespaces.operator_namespace.clone(), - product_namespace: args.namespaces.product_namespace.clone(), + demo_namespace: args.namespaces.namespace.clone(), stack_parameters: args.stack_parameters.clone(), parameters: args.parameters.clone(), skip_release: args.skip_release, @@ -408,8 +408,8 @@ async fn install_cmd( let stacklet_cmd = format!( "stackablectl stacklet list{}", - if args.namespaces.product_namespace != DEFAULT_PRODUCT_NAMESPACE { - format!(" --product-namespace {}", args.namespaces.product_namespace) + if args.namespaces.namespace != DEFAULT_NAMESPACE { + format!(" --namespace {}", args.namespaces.namespace) } else { "".into() } diff --git a/rust/stackablectl/src/cmds/stack.rs b/rust/stackablectl/src/cmds/stack.rs index 7f357c49..3e5149d2 100644 --- a/rust/stackablectl/src/cmds/stack.rs +++ b/rust/stackablectl/src/cmds/stack.rs @@ -9,7 +9,7 @@ use tracing::{debug, info, instrument}; use stackable_cockpit::{ common::list, - constants::{DEFAULT_OPERATOR_NAMESPACE, DEFAULT_PRODUCT_NAMESPACE}, + constants::{DEFAULT_NAMESPACE, DEFAULT_OPERATOR_NAMESPACE}, platform::{ operator::ChartSourceType, release, @@ -342,7 +342,7 @@ async fn install_cmd( let install_parameters = StackInstallParameters { operator_namespace: args.namespaces.operator_namespace.clone(), - product_namespace: args.namespaces.product_namespace.clone(), + stack_namespace: args.namespaces.namespace.clone(), stack_name: args.stack_name.clone(), parameters: args.parameters.clone(), skip_release: args.skip_release, @@ -372,8 +372,8 @@ async fn install_cmd( let stacklet_cmd = format!( "stackablectl stacklet list{}", - if args.namespaces.product_namespace != DEFAULT_PRODUCT_NAMESPACE { - format!(" --product-namespace {}", args.namespaces.product_namespace) + if args.namespaces.namespace != DEFAULT_NAMESPACE { + format!(" --namespace {}", args.namespaces.namespace) } else { "".into() } diff --git a/rust/stackablectl/src/cmds/stacklet.rs b/rust/stackablectl/src/cmds/stacklet.rs index 420d704f..eed7edcf 100644 --- a/rust/stackablectl/src/cmds/stacklet.rs +++ b/rust/stackablectl/src/cmds/stacklet.rs @@ -7,7 +7,7 @@ use snafu::{ResultExt, Snafu}; use tracing::{info, instrument}; use stackable_cockpit::{ - constants::DEFAULT_PRODUCT_NAMESPACE, + constants::DEFAULT_NAMESPACE, platform::stacklet::{self, get_credentials_for_product, list_stacklets}, utils::k8s::{self, Client, DisplayCondition}, }; @@ -47,7 +47,7 @@ pub struct StackletCredentialsArgs { long, short = 'n', global = true, - default_value = DEFAULT_PRODUCT_NAMESPACE, + default_value = DEFAULT_NAMESPACE, visible_aliases(["product-ns"]), long_help = "Namespace in the cluster used to deploy the products. Use this to select a different namespace for credential lookup.")] @@ -99,7 +99,7 @@ async fn list_cmd(args: &StackletListArgs, cli: &Cli) -> Result Date: Wed, 23 Apr 2025 08:48:19 +0200 Subject: [PATCH 11/63] feat: Support templating the namespace in manifests (#355) * feat: Support templating the namespace * changelog * changelog * changelog * changelog * Rename product_namespace to namespace * changelog * Apply suggestions from code review Co-authored-by: Techassi * chore: Update shell completions They seemed to have been missed in #373 --------- Co-authored-by: Nick <10092581+NickLarsenNZ@users.noreply.github.com> Co-authored-by: Techassi Co-authored-by: Nick Larsen --- extra/completions/_stackablectl | 5 ++--- extra/completions/stackablectl.bash | 8 ++------ extra/completions/stackablectl.elv | 3 +-- extra/completions/stackablectl.fish | 2 +- extra/completions/stackablectl.nu | 3 +-- .../stackable-cockpit/src/platform/demo/spec.rs | 10 +++------- .../stackable-cockpit/src/platform/manifests.rs | 17 +++++++++++------ .../src/platform/stack/spec.rs | 12 ++++-------- rust/stackablectl/CHANGELOG.md | 8 +++++++- rust/stackablectl/src/cmds/stacklet.rs | 8 ++++---- rust/stackablectl/src/output/error.rs | 2 +- rust/stackablectl/src/output/result.rs | 6 +++--- 12 files changed, 40 insertions(+), 44 deletions(-) diff --git a/extra/completions/_stackablectl b/extra/completions/_stackablectl index e8717fbd..25c69764 100644 --- a/extra/completions/_stackablectl +++ b/extra/completions/_stackablectl @@ -659,9 +659,8 @@ repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based o case $line[1] in (credentials) _arguments "${_arguments_options[@]}" : \ -'-n+[Namespace in the cluster used to deploy the products]:PRODUCT_NAMESPACE: ' \ -'--product-namespace=[Namespace in the cluster used to deploy the products]:PRODUCT_NAMESPACE: ' \ -'--product-ns=[Namespace in the cluster used to deploy the products]:PRODUCT_NAMESPACE: ' \ +'-n+[Namespace in the cluster used to deploy the products]:NAMESPACE: ' \ +'--namespace=[Namespace in the cluster used to deploy the products]:NAMESPACE: ' \ '-l+[Log level this application uses]:LOG_LEVEL: ' \ '--log-level=[Log level this application uses]:LOG_LEVEL: ' \ '*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ diff --git a/extra/completions/stackablectl.bash b/extra/completions/stackablectl.bash index 5000e636..095ed06b 100644 --- a/extra/completions/stackablectl.bash +++ b/extra/completions/stackablectl.bash @@ -5567,17 +5567,13 @@ _stackablectl() { return 0 ;; stackablectl__stacklet__credentials) - opts="-n -l -d -s -r -h -V --product-ns --product-namespace --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version " + opts="-n -l -d -s -r -h -V --namespace --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version " if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 fi case "${prev}" in - --product-namespace) - COMPREPLY=($(compgen -f "${cur}")) - return 0 - ;; - --product-ns) + --namespace) COMPREPLY=($(compgen -f "${cur}")) return 0 ;; diff --git a/extra/completions/stackablectl.elv b/extra/completions/stackablectl.elv index e4a5694b..f943defe 100644 --- a/extra/completions/stackablectl.elv +++ b/extra/completions/stackablectl.elv @@ -475,8 +475,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| } &'stackablectl;stacklet;credentials'= { cand -n 'Namespace in the cluster used to deploy the products' - cand --product-namespace 'Namespace in the cluster used to deploy the products' - cand --product-ns 'Namespace in the cluster used to deploy the products' + cand --namespace 'Namespace in the cluster used to deploy the products' cand -l 'Log level this application uses' cand --log-level 'Log level this application uses' cand -d 'Provide one or more additional (custom) demo file(s)' diff --git a/extra/completions/stackablectl.fish b/extra/completions/stackablectl.fish index 79b9482f..7fe840ee 100644 --- a/extra/completions/stackablectl.fish +++ b/extra/completions/stackablectl.fish @@ -288,7 +288,7 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and not __fish_seen_subcommand_from credentials list help" -f -a "credentials" -d 'Display credentials for a stacklet' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and not __fish_seen_subcommand_from credentials list help" -f -a "list" -d 'List deployed stacklets' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and not __fish_seen_subcommand_from credentials list help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' -complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from credentials" -s n -l product-namespace -l product-ns -d 'Namespace in the cluster used to deploy the products' -r +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from credentials" -s n -l namespace -d 'Namespace in the cluster used to deploy the products' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from credentials" -s l -l log-level -d 'Log level this application uses' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from credentials" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from credentials" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F diff --git a/extra/completions/stackablectl.nu b/extra/completions/stackablectl.nu index 5bb59dd6..448f1f63 100644 --- a/extra/completions/stackablectl.nu +++ b/extra/completions/stackablectl.nu @@ -493,8 +493,7 @@ module completions { export extern "stackablectl stacklet credentials" [ product_name: string # The name of the product, for example 'superset' stacklet_name: string # The name of the stacklet, for example 'superset' - --product-namespace(-n): string # Namespace in the cluster used to deploy the products - --product-ns: string # Namespace in the cluster used to deploy the products + --namespace(-n): string # Namespace in the cluster used to deploy the products --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files --demo-file(-d): string # Provide one or more additional (custom) demo file(s) diff --git a/rust/stackable-cockpit/src/platform/demo/spec.rs b/rust/stackable-cockpit/src/platform/demo/spec.rs index 75847116..0d8ca246 100644 --- a/rust/stackable-cockpit/src/platform/demo/spec.rs +++ b/rust/stackable-cockpit/src/platform/demo/spec.rs @@ -97,18 +97,14 @@ impl DemoSpec { /// - Does the demo support to be installed in the requested namespace? /// - Does the cluster have enough resources available to run this demo? #[instrument(skip_all)] - pub async fn check_prerequisites( - &self, - client: &Client, - product_namespace: &str, - ) -> Result<(), Error> { + pub async fn check_prerequisites(&self, client: &Client, namespace: &str) -> Result<(), Error> { debug!("Checking prerequisites before installing demo"); // Returns an error if the demo doesn't support to be installed in the // requested namespace - if !self.supports_namespace(product_namespace) { + if !self.supports_namespace(namespace) { return Err(Error::UnsupportedNamespace { - requested: product_namespace.to_string(), + requested: namespace.to_owned(), supported: self.supported_namespaces.clone(), }); } diff --git a/rust/stackable-cockpit/src/platform/manifests.rs b/rust/stackable-cockpit/src/platform/manifests.rs index b92814c1..7a5df63a 100644 --- a/rust/stackable-cockpit/src/platform/manifests.rs +++ b/rust/stackable-cockpit/src/platform/manifests.rs @@ -62,18 +62,23 @@ pub enum Error { pub trait InstallManifestsExt { // TODO (Techassi): This step shouldn't care about templating the manifests nor fetching them from remote - #[instrument(skip_all, fields(%product_namespace))] + #[instrument(skip_all, fields(%namespace))] #[allow(async_fn_in_trait)] async fn install_manifests( manifests: &[ManifestSpec], parameters: &HashMap, - product_namespace: &str, + namespace: &str, labels: Labels, client: &Client, transfer_client: &xfer::Client, ) -> Result<(), Error> { debug!("Installing manifests"); + let mut parameters = parameters.clone(); + // We add the NAMESPACE parameter, so that stacks/demos can use that to render e.g. the + // fqdn service names [which contain the namespace]. + parameters.insert("NAMESPACE".to_owned(), namespace.to_owned()); + for manifest in manifests { match manifest { ManifestSpec::HelmChart(helm_file) => { @@ -85,7 +90,7 @@ pub trait InstallManifestsExt { })?; let helm_chart: helm::Chart = transfer_client - .get(&helm_file, &Template::new(parameters).then(Yaml::new())) + .get(&helm_file, &Template::new(¶meters).then(Yaml::new())) .await .context(FileTransferSnafu)?; @@ -111,7 +116,7 @@ pub trait InstallManifestsExt { chart_version: Some(&helm_chart.version), }, Some(&values_yaml), - product_namespace, + namespace, true, ) .context(InstallHelmReleaseSnafu { @@ -130,12 +135,12 @@ pub trait InstallManifestsExt { })?; let manifests = transfer_client - .get(&path_or_url, &Template::new(parameters)) + .get(&path_or_url, &Template::new(¶meters)) .await .context(FileTransferSnafu)?; client - .deploy_manifests(&manifests, product_namespace, labels.clone()) + .deploy_manifests(&manifests, namespace, labels.clone()) .await .context(DeployManifestSnafu)? } diff --git a/rust/stackable-cockpit/src/platform/stack/spec.rs b/rust/stackable-cockpit/src/platform/stack/spec.rs index 7e2c87e1..5bba6224 100644 --- a/rust/stackable-cockpit/src/platform/stack/spec.rs +++ b/rust/stackable-cockpit/src/platform/stack/spec.rs @@ -111,21 +111,17 @@ impl StackSpec { /// - Does the stack support to be installed in the requested namespace? /// - Does the cluster have enough resources available to run this stack? #[instrument(skip_all)] - pub async fn check_prerequisites( - &self, - client: &Client, - product_namespace: &str, - ) -> Result<(), Error> { + pub async fn check_prerequisites(&self, client: &Client, namespace: &str) -> Result<(), Error> { debug!("Checking prerequisites before installing stack"); // Returns an error if the stack doesn't support to be installed in the // requested product namespace. When installing a demo, this check is // already done on the demo spec level, however we still need to check // here, as stacks can be installed on their own. - if !self.supports_namespace(product_namespace) { + if !self.supports_namespace(namespace) { return Err(Error::UnsupportedNamespace { supported: self.supported_namespaces.clone(), - requested: product_namespace.to_string(), + requested: namespace.to_owned(), }); } @@ -204,7 +200,7 @@ impl StackSpec { &self, release_list: release::ReleaseList, operator_namespace: &str, - _product_namespace: &str, // TODO (@NickLarsenNZ): remove this field + _namespace: &str, // TODO (@NickLarsenNZ): remove this field chart_source: &ChartSourceType, ) -> Result<(), Error> { info!(self.release, "Trying to install release"); diff --git a/rust/stackablectl/CHANGELOG.md b/rust/stackablectl/CHANGELOG.md index 019f653e..8daf172d 100644 --- a/rust/stackablectl/CHANGELOG.md +++ b/rust/stackablectl/CHANGELOG.md @@ -4,9 +4,14 @@ All notable changes to this project will be documented in this file. ## [Unreleased] +### Added + +- Pass the stack/demo namespace as a templating variable `NAMESPACE` to manifests. + This should unblock demos to run in all namespaces, as they can template the namespace e.g. for the FQDN of services ([#355]). + ### Changed -- Renamed `--product-namespace` argument to `--namespace` ([#373]). +- Renamed `--product-namespace` argument to `--namespace` ([#373], [#355]). - Kept `--product-namespace` as a hidden alias to be removed in a later release. ### Fixed @@ -25,6 +30,7 @@ All notable changes to this project will be documented in this file. - Improve tracing and log output ([#365]). [#351]: https://github.com/stackabletech/stackable-cockpit/pull/351 +[#355]: https://github.com/stackabletech/stackable-cockpit/pull/355 [#364]: https://github.com/stackabletech/stackable-cockpit/pull/364 [#365]: https://github.com/stackabletech/stackable-cockpit/pull/365 diff --git a/rust/stackablectl/src/cmds/stacklet.rs b/rust/stackablectl/src/cmds/stacklet.rs index eed7edcf..ab87abb8 100644 --- a/rust/stackablectl/src/cmds/stacklet.rs +++ b/rust/stackablectl/src/cmds/stacklet.rs @@ -48,10 +48,10 @@ pub struct StackletCredentialsArgs { short = 'n', global = true, default_value = DEFAULT_NAMESPACE, - visible_aliases(["product-ns"]), + aliases(["product-ns", "product-namespace"]), long_help = "Namespace in the cluster used to deploy the products. Use this to select a different namespace for credential lookup.")] - pub product_namespace: String, + pub namespace: String, } #[derive(Debug, Args)] @@ -211,7 +211,7 @@ async fn credentials_cmd(args: &StackletCredentialsArgs) -> Result Result, post_hints: Vec, @@ -20,10 +20,10 @@ impl ContextExt for ResultContext { let mut ctx = tera::Context::new(); ctx.insert("default_operator_namespace", DEFAULT_OPERATOR_NAMESPACE); - ctx.insert("default_product_namespace", DEFAULT_NAMESPACE); + ctx.insert("default_namespace", DEFAULT_NAMESPACE); ctx.insert("used_operator_namespace", &self.used_operator_namespace); - ctx.insert("used_product_namespace", &self.used_product_namespace); + ctx.insert("used_namespace", &self.used_namespace); ctx.insert("command_hints", &self.command_hints); ctx.insert("post_hints", &self.post_hints); From fd6aa6eba0b18be2f61368d55a7c35fc0a5992a2 Mon Sep 17 00:00:00 2001 From: Xenia Date: Thu, 24 Apr 2025 08:08:25 +0200 Subject: [PATCH 12/63] ci: Update Makefile to include operator-templating changes (#374) --- Makefile | 46 +--------------------------------------------- 1 file changed, 1 insertion(+), 45 deletions(-) diff --git a/Makefile b/Makefile index c6e24209..23a16e7b 100644 --- a/Makefile +++ b/Makefile @@ -14,13 +14,10 @@ OPERATOR_NAME := stackable-cockpit VERSION := $(shell cargo metadata --format-version 1 | jq -r '.packages[] | select(.name=="stackable-cockpitd") | .version') ARCH := $(shell uname -m | sed -e 's#x86_64#amd64#' | sed -e 's#aarch64#arm64#') -DOCKER_REPO := docker.stackable.tech -ORGANIZATION := stackable OCI_REGISTRY_HOSTNAME := oci.stackable.tech OCI_REGISTRY_PROJECT_IMAGES := sdp OCI_REGISTRY_PROJECT_CHARTS := sdp-charts # This will be overwritten by an environmental variable if called from the github action -HELM_REPO := https://repo.stackable.tech/repository/helm-dev HELM_CHART_NAME := ${OPERATOR_NAME} HELM_CHART_ARTIFACT := target/helm/${OPERATOR_NAME}-${VERSION}.tgz @@ -32,34 +29,9 @@ SHELL=/usr/bin/env bash -euo pipefail ## Docker related targets docker-build: - docker build --force-rm --build-arg VERSION=${VERSION} -t "${DOCKER_REPO}/${ORGANIZATION}/${OPERATOR_NAME}:${VERSION}-${ARCH}" -f docker/Dockerfile . - docker tag "${DOCKER_REPO}/${ORGANIZATION}/${OPERATOR_NAME}:${VERSION}-${ARCH}" "${OCI_REGISTRY_HOSTNAME}/${OCI_REGISTRY_PROJECT_IMAGES}/${OPERATOR_NAME}:${VERSION}-${ARCH}" + docker build --force-rm --build-arg VERSION=${VERSION} -t "${OCI_REGISTRY_HOSTNAME}/${OCI_REGISTRY_PROJECT_IMAGES}/${OPERATOR_NAME}:${VERSION}-${ARCH}" -f docker/Dockerfile . docker-publish: - # Push to Nexus - echo "${NEXUS_PASSWORD}" | docker login --username github --password-stdin "${DOCKER_REPO}" - DOCKER_OUTPUT=$$(docker push --all-tags "${DOCKER_REPO}/${ORGANIZATION}/${OPERATOR_NAME}");\ - # Obtain the digest of the pushed image from the output of `docker push`, because signing by tag is deprecated and will be removed from cosign in the future\ - REPO_DIGEST_OF_IMAGE=$$(echo "$$DOCKER_OUTPUT" | awk '/^${VERSION}-${ARCH}: digest: sha256:[0-9a-f]{64} size: [0-9]+$$/ { print $$3 }');\ - if [ -z "$$REPO_DIGEST_OF_IMAGE" ]; then\ - echo 'Could not find repo digest for container image: ${DOCKER_REPO}/${ORGANIZATION}/${OPERATOR_NAME}:${VERSION}-${ARCH}';\ - exit 1;\ - fi;\ - # This generates a signature and publishes it to the registry, next to the image\ - # Uses the keyless signing flow with Github Actions as identity provider\ - cosign sign -y "${DOCKER_REPO}/${ORGANIZATION}/${OPERATOR_NAME}@$$REPO_DIGEST_OF_IMAGE";\ - # Generate the SBOM for the operator image, this leverages the already generated SBOM for the operator binary by cargo-cyclonedx\ - syft scan --output cyclonedx-json=sbom.json --select-catalogers "-cargo-auditable-binary-cataloger" --scope all-layers --source-name "${OPERATOR_NAME}" --source-version "${VERSION}" "${DOCKER_REPO}/${ORGANIZATION}/${OPERATOR_NAME}@$$REPO_DIGEST_OF_IMAGE";\ - # Determine the PURL for the container image\ - PURL="pkg:docker/${ORGANIZATION}/${OPERATOR_NAME}@$$REPO_DIGEST_OF_IMAGE?repository_url=${DOCKER_REPO}";\ - # Get metadata from the image\ - IMAGE_DESCRIPTION=$$(docker inspect --format='{{.Config.Labels.description}}' "${DOCKER_REPO}/${ORGANIZATION}/${OPERATOR_NAME}:${VERSION}-${ARCH}");\ - IMAGE_NAME=$$(docker inspect --format='{{.Config.Labels.name}}' "${DOCKER_REPO}/${ORGANIZATION}/${OPERATOR_NAME}:${VERSION}-${ARCH}");\ - # Merge the SBOM with the metadata for the operator\ - jq -s '{"metadata":{"component":{"description":"'"$$IMAGE_NAME. $$IMAGE_DESCRIPTION"'","supplier":{"name":"Stackable GmbH","url":["https://stackable.tech/"]},"author":"Stackable GmbH","purl":"'"$$PURL"'","publisher":"Stackable GmbH"}}} * .[0]' sbom.json > sbom.merged.json;\ - # Attest the SBOM to the image\ - cosign attest -y --predicate sbom.merged.json --type cyclonedx "${DOCKER_REPO}/${ORGANIZATION}/${OPERATOR_NAME}@$$REPO_DIGEST_OF_IMAGE" - # Push to Harbor # We need to use "value" here to prevent the variable from being recursively expanded by make (username contains a dollar sign, since it's a Harbor bot) docker login --username '${value OCI_REGISTRY_SDP_USERNAME}' --password '${OCI_REGISTRY_SDP_PASSWORD}' '${OCI_REGISTRY_HOSTNAME}' @@ -87,21 +59,9 @@ docker-publish: # This assumes "${DOCKER_REPO}/${ORGANIZATION}/${OPERATOR_NAME}:${VERSION}-amd64 and "${DOCKER_REPO}/${ORGANIZATION}/${OPERATOR_NAME}:${VERSION}-arm64 are build and pushed docker-manifest-list-build: - docker manifest create "${DOCKER_REPO}/${ORGANIZATION}/${OPERATOR_NAME}:${VERSION}" --amend "${DOCKER_REPO}/${ORGANIZATION}/${OPERATOR_NAME}:${VERSION}-amd64" --amend "${DOCKER_REPO}/${ORGANIZATION}/${OPERATOR_NAME}:${VERSION}-arm64" docker manifest create "${OCI_REGISTRY_HOSTNAME}/${OCI_REGISTRY_PROJECT_IMAGES}/${OPERATOR_NAME}:${VERSION}" --amend "${OCI_REGISTRY_HOSTNAME}/${OCI_REGISTRY_PROJECT_IMAGES}/${OPERATOR_NAME}:${VERSION}-amd64" --amend "${OCI_REGISTRY_HOSTNAME}/${OCI_REGISTRY_PROJECT_IMAGES}/${OPERATOR_NAME}:${VERSION}-arm64" docker-manifest-list-publish: - # Push to Nexus - echo "${NEXUS_PASSWORD}" | docker login --username github --password-stdin "${DOCKER_REPO}" - # `docker manifest push` directly returns the digest of the manifest list - # As it is an experimental feature, this might change in the future - # Further reading: https://docs.docker.com/reference/cli/docker/manifest/push/ - DIGEST_NEXUS=$$(docker manifest push "${DOCKER_REPO}/${ORGANIZATION}/${OPERATOR_NAME}:${VERSION}");\ - # Refer to image via its digest (oci.stackable.tech/sdp/airflow@sha256:0a1b2c...)\ - # This generates a signature and publishes it to the registry, next to the image\ - # Uses the keyless signing flow with Github Actions as identity provider\ - cosign sign -y "${DOCKER_REPO}/${ORGANIZATION}/${OPERATOR_NAME}:${VERSION}@$$DIGEST_NEXUS" - # Push to Harbor # We need to use "value" here to prevent the variable from being recursively expanded by make (username contains a dollar sign, since it's a Harbor bot) docker login --username '${value OCI_REGISTRY_SDP_USERNAME}' --password '${OCI_REGISTRY_SDP_PASSWORD}' '${OCI_REGISTRY_HOSTNAME}' @@ -118,9 +78,6 @@ print-docker-tag: @echo "${DOCKER_REPO}/${ORGANIZATION}/${OPERATOR_NAME}:${VERSION}" helm-publish: - # Push to Nexus - curl --fail -u "github:${NEXUS_PASSWORD}" --upload-file "${HELM_CHART_ARTIFACT}" "${HELM_REPO}/" - # Push to Harbor # We need to use "value" here to prevent the variable from being recursively expanded by make (username contains a dollar sign, since it's a Harbor bot) helm registry login --username '${value OCI_REGISTRY_SDP_CHARTS_USERNAME}' --password '${OCI_REGISTRY_SDP_CHARTS_PASSWORD}' '${OCI_REGISTRY_HOSTNAME}' @@ -166,7 +123,6 @@ chart-lint: compile-chart clean: chart-clean cargo clean - docker rmi --force "${DOCKER_REPO}/${ORGANIZATION}/${OPERATOR_NAME}:${VERSION}" docker rmi --force '${OCI_REGISTRY_HOSTNAME}/${OCI_REGISTRY_PROJECT_IMAGES}/${OPERATOR_NAME}:${VERSION}' regenerate-charts: chart-clean compile-chart From 480443d68b9b843fd56a64d06151ee96e4a3e63b Mon Sep 17 00:00:00 2001 From: Techassi Date: Fri, 25 Apr 2025 10:33:57 +0200 Subject: [PATCH 13/63] chore: Bump kube, k8s_openapi and stackable-operator (#369) * chore: Bump kube, k8s_openapi and stackable-operator Jaeger get the hell out of here! * chore: Apply 2024 formatting * chore: Update generated docs * ci: Bump Rust toolchain to 1.85.0 squash me * ci: Remove duplicate checks * chore: Update Nix files * ci: Bump cargo-udeps to 0.1.55 * ci: Use nightly Rust toolchain for pre-commit workflow * chore: Bump stackable-operator to 0.92.0 --- .github/workflows/pr_cockpit.yml | 2 +- .github/workflows/pr_general.yml | 62 +- .github/workflows/pr_pre-commit.yml | 2 +- .github/workflows/pr_stackablectl.yml | 2 +- .github/workflows/release_stackablectl.yml | 2 +- .pre-commit-config.yaml | 10 +- .vscode/settings.json | 10 +- Cargo.lock | 1006 ++++-- Cargo.nix | 3211 +++++++++++++---- Cargo.toml | 10 +- crate-hashes.json | 9 +- .../stackablectl/partials/commands/cache.adoc | 8 +- .../partials/commands/completions.adoc | 8 +- .../stackablectl/partials/commands/demo.adoc | 8 +- .../partials/commands/experimental-debug.adoc | 8 +- .../stackablectl/partials/commands/index.adoc | 8 +- .../partials/commands/operator.adoc | 8 +- .../partials/commands/release.adoc | 8 +- .../stackablectl/partials/commands/stack.adoc | 8 +- .../partials/commands/stacklet.adoc | 8 +- rust-toolchain.toml | 2 +- rust/helm-sys/src/lib.rs | 6 +- rust/stackable-cockpit/src/common/manifest.rs | 1 - rust/stackable-cockpit/src/engine/kind/mod.rs | 11 +- rust/stackable-cockpit/src/helm.rs | 9 +- rust/stackable-cockpit/src/oci.rs | 9 +- .../src/platform/cluster/resource_request.rs | 5 +- .../src/platform/credentials.rs | 2 +- .../src/platform/demo/spec.rs | 1 - .../src/platform/namespace.rs | 4 +- .../src/platform/operator/mod.rs | 22 +- .../stackable-cockpit/src/platform/product.rs | 1 - .../src/platform/release/spec.rs | 3 +- .../stackable-cockpit/src/platform/service.rs | 26 +- .../src/platform/stack/spec.rs | 1 - .../src/platform/stacklet/grafana.rs | 2 +- .../src/platform/stacklet/minio.rs | 2 +- .../src/platform/stacklet/mod.rs | 18 +- .../src/platform/stacklet/opensearch.rs | 2 +- .../src/platform/stacklet/prometheus.rs | 2 +- rust/stackable-cockpit/src/utils/check.rs | 4 +- .../stackable-cockpit/src/utils/k8s/client.rs | 20 +- .../src/utils/k8s/conditions.rs | 1 - rust/stackable-cockpit/src/utils/params.rs | 58 +- rust/stackable-cockpit/src/xfer/cache.rs | 2 +- rust/stackable-cockpitd/src/api_doc.rs | 2 +- rust/stackable-cockpitd/src/handlers/demos.rs | 2 +- .../src/handlers/releases.rs | 2 +- .../src/handlers/stacklets.rs | 5 +- .../stackable-cockpitd/src/handlers/stacks.rs | 2 +- rust/stackable-cockpitd/src/handlers/ui.rs | 17 +- .../src/handlers/ui_disabled.rs | 2 +- rust/stackable-cockpitd/src/main.rs | 4 +- .../src/middleware/authentication/htpasswd.rs | 6 +- .../src/middleware/authentication/mod.rs | 8 +- rust/stackablectl/README.md | 8 +- rust/stackablectl/src/args/cluster.rs | 3 +- rust/stackablectl/src/cli/mod.rs | 3 +- rust/stackablectl/src/cmds/cache.rs | 2 +- rust/stackablectl/src/cmds/completions.rs | 3 +- rust/stackablectl/src/cmds/debug.rs | 14 +- rust/stackablectl/src/cmds/demo.rs | 16 +- rust/stackablectl/src/cmds/operator.rs | 7 +- rust/stackablectl/src/cmds/release.rs | 5 +- rust/stackablectl/src/cmds/stack.rs | 16 +- rust/stackablectl/src/cmds/stacklet.rs | 5 +- rust/stackablectl/src/main.rs | 3 +- rust/xtask/src/completions.rs | 2 +- rust/xtask/src/openapi.rs | 11 +- rustfmt.toml | 6 + 70 files changed, 3417 insertions(+), 1349 deletions(-) create mode 100644 rustfmt.toml diff --git a/.github/workflows/pr_cockpit.yml b/.github/workflows/pr_cockpit.yml index 1c532a72..0c28a782 100644 --- a/.github/workflows/pr_cockpit.yml +++ b/.github/workflows/pr_cockpit.yml @@ -15,7 +15,7 @@ on: - "go.sum" env: - RUST_VERSION: 1.83.0 + RUST_VERSION: 1.85.0 GO_VERSION: '^1.22.5' CARGO_TERM_COLOR: always CARGO_INCREMENTAL: "0" diff --git a/.github/workflows/pr_general.yml b/.github/workflows/pr_general.yml index dde22fb7..b09e837d 100644 --- a/.github/workflows/pr_general.yml +++ b/.github/workflows/pr_general.yml @@ -4,7 +4,7 @@ name: Pull Request General on: workflow_call env: - RUST_VERSION: 1.83.0 + RUST_VERSION: 1.85.0 GO_VERSION: '^1.22.5' CARGO_TERM_COLOR: always CARGO_INCREMENTAL: "0" @@ -42,7 +42,7 @@ jobs: with: key: udeps cache-all-crates: "true" - - run: cargo install --locked cargo-udeps@0.1.50 + - run: cargo install --locked cargo-udeps@0.1.55 - run: cargo udeps --workspace run_cargodeny: @@ -63,62 +63,6 @@ jobs: with: command: check ${{ matrix.checks }} - run_rustfmt: - name: Run Rustfmt - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - submodules: recursive - - uses: dtolnay/rust-toolchain@0e66bd3e6b38ec0ad5312288c83e47c143e6b09e # v1 - with: - toolchain: ${{ env.RUST_VERSION }} - components: rustfmt - - run: cargo fmt --all -- --check - - run_clippy: - name: Run Clippy - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - submodules: recursive - - - uses: dtolnay/rust-toolchain@0e66bd3e6b38ec0ad5312288c83e47c143e6b09e # v1 - with: - toolchain: ${{ env.RUST_VERSION }} - components: clippy - - - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 - with: - go-version: ${{ env.GO_VERSION }} - - - uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3 - with: - key: clippy - - - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 - with: - node-version: 18 - cache: yarn - - - run: yarn install --frozen-lockfile - - name: Run clippy action to produce annotations - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - uses: giraffate/clippy-action@94e9bd8deab2618756ec5380f12eb35bcb0a88ca - if: env.GITHUB_TOKEN != null - with: - clippy_flags: --all-targets -- -D warnings - github_token: ${{ secrets.GITHUB_TOKEN }} - reporter: "github-pr-check" - - - name: Run clippy manually without annotations - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - if: env.GITHUB_TOKEN == null - run: cargo clippy --all-targets -- -D warnings - run_rustdoc: name: Run RustDoc runs-on: ubuntu-latest @@ -179,8 +123,6 @@ jobs: needs: - run_udeps - run_cargodeny - - run_clippy - - run_rustfmt - run_rustdoc - run_tests runs-on: ubuntu-latest diff --git a/.github/workflows/pr_pre-commit.yml b/.github/workflows/pr_pre-commit.yml index d60842da..6e3ca2fb 100644 --- a/.github/workflows/pr_pre-commit.yml +++ b/.github/workflows/pr_pre-commit.yml @@ -6,7 +6,7 @@ on: env: CARGO_TERM_COLOR: always - RUST_TOOLCHAIN_VERSION: "1.83.0" + RUST_TOOLCHAIN_VERSION: "nightly-2025-01-15" HADOLINT_VERSION: "v1.17.6" NIX_VERSION: "2.25.2" diff --git a/.github/workflows/pr_stackablectl.yml b/.github/workflows/pr_stackablectl.yml index 6f9510d0..1fcd59fc 100644 --- a/.github/workflows/pr_stackablectl.yml +++ b/.github/workflows/pr_stackablectl.yml @@ -14,7 +14,7 @@ on: - "extra/**" env: - RUST_VERSION: 1.83.0 + RUST_VERSION: 1.85.0 GO_VERSION: '^1.22.5' CARGO_TERM_COLOR: always CARGO_INCREMENTAL: "0" diff --git a/.github/workflows/release_stackablectl.yml b/.github/workflows/release_stackablectl.yml index 7eaa112d..2faf67eb 100644 --- a/.github/workflows/release_stackablectl.yml +++ b/.github/workflows/release_stackablectl.yml @@ -7,7 +7,7 @@ on: - "stackablectl-[0-9]+.[0-9]+.[0-9]+**" env: - RUST_VERSION: 1.83.0 + RUST_VERSION: 1.85.0 CARGO_TERM_COLOR: always CARGO_INCREMENTAL: "0" CARGO_PROFILE_DEV_DEBUG: "0" diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 51d94924..5342909d 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -20,8 +20,6 @@ repos: - repo: https://github.com/doublify/pre-commit-rust rev: eeee35a89e69d5772bdee97db1a6a898467b686e # 1.0 hooks: - - id: fmt - args: ["--all", "--", "--check"] - id: clippy args: ["--all-targets", "--all-features", "--", "-D", "warnings"] @@ -101,3 +99,11 @@ repos: entry: make regenerate-nix stages: [pre-commit, pre-merge-commit, manual] pass_filenames: false + + - id: cargo-rustfmt + name: cargo-rustfmt + language: system + # Pinning to a specific rustc version, so that we get consistent formatting + entry: cargo +nightly-2025-01-15 fmt --all -- --check + stages: [pre-commit] + pass_filenames: false diff --git a/.vscode/settings.json b/.vscode/settings.json index b48948ab..c5d5fdae 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,11 @@ { - "rust-analyzer.showUnlinkedFileNotification": false + "rust-analyzer.showUnlinkedFileNotification": false, + "rust-analyzer.cargo.features": "all", + "rust-analyzer.rustfmt.overrideCommand": [ + "rustfmt", + "+nightly-2025-01-15", + "--edition", + "2024", + "--" + ], } diff --git a/Cargo.lock b/Cargo.lock index f38ed78c..ba811d48 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -30,10 +30,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", - "getrandom", + "getrandom 0.2.15", "once_cell", "version_check", - "zerocopy", + "zerocopy 0.7.35", ] [[package]] @@ -134,6 +134,12 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "anyhow" +version = "1.0.97" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f" + [[package]] name = "arbitrary" version = "1.3.2" @@ -167,7 +173,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8da2537846e16b96d2972ee52a3b355663872a1a687ce6d57a3b6f6b6a181c89" dependencies = [ - "thiserror", + "thiserror 1.0.63", "tokio", ] @@ -190,7 +196,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.87", ] [[package]] @@ -201,7 +207,7 @@ checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.87", ] [[package]] @@ -223,8 +229,42 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3a6c9af12842a67734c9a2e355436e5d03b22383ed60cf13cd0c18fbfe3dcbcf" dependencies = [ "async-trait", - "axum-core", + "axum-core 0.4.3", + "bytes", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "itoa", + "matchit 0.7.3", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sync_wrapper 1.0.1", + "tokio", + "tower 0.4.13", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "axum" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de45108900e1f9b9242f7f2e254aa3e2c029c921c258fe9e6b4217eeebd54288" +dependencies = [ + "axum-core 0.5.2", "bytes", + "form_urlencoded", "futures-util", "http", "http-body", @@ -232,7 +272,7 @@ dependencies = [ "hyper", "hyper-util", "itoa", - "matchit", + "matchit 0.8.4", "memchr", "mime", "percent-encoding", @@ -244,7 +284,7 @@ dependencies = [ "serde_urlencoded", "sync_wrapper 1.0.1", "tokio", - "tower", + "tower 0.5.2", "tower-layer", "tower-service", "tracing", @@ -271,14 +311,34 @@ dependencies = [ "tracing", ] +[[package]] +name = "axum-core" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68464cd0412f486726fb3373129ef5d2993f90c34bc2bc1c1e9943b2f4fc7ca6" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "http-body-util", + "mime", + "pin-project-lite", + "rustversion", + "sync_wrapper 1.0.1", + "tower-layer", + "tower-service", + "tracing", +] + [[package]] name = "axum-extra" version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0be6ea09c9b96cb5076af0de2e383bd2bc0c18f827cf1967bdd353e0b910d733" dependencies = [ - "axum", - "axum-core", + "axum 0.7.5", + "axum-core 0.4.3", "bytes", "futures-util", "headers", @@ -288,21 +348,21 @@ dependencies = [ "mime", "pin-project-lite", "serde", - "tower", + "tower 0.4.13", "tower-layer", "tower-service", "tracing", ] [[package]] -name = "backoff" -version = "0.4.0" +name = "backon" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1" +checksum = "fd0b50b1b78dbadd44ab18b3c794e496f3a139abb9fbc27d9c94c4eebbb96496" dependencies = [ - "getrandom", - "instant", - "rand", + "fastrand", + "gloo-timers", + "tokio", ] [[package]] @@ -340,7 +400,7 @@ checksum = "e65938ed058ef47d92cf8b346cc76ef48984572ade631927e9937b5ffc7662c7" dependencies = [ "base64 0.22.1", "blowfish", - "getrandom", + "getrandom 0.2.15", "subtle", "zeroize", ] @@ -354,7 +414,7 @@ dependencies = [ "bitflags 2.6.0", "cexpr", "clang-sys", - "itertools", + "itertools 0.13.0", "log", "prettyplease", "proc-macro2", @@ -362,7 +422,7 @@ dependencies = [ "regex", "rustc-hash 1.1.0", "shlex", - "syn 2.0.77", + "syn 2.0.87", ] [[package]] @@ -435,9 +495,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.1" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" [[package]] name = "cc" @@ -521,9 +581,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.16" +version = "4.5.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed6719fffa43d0d87e5fd8caeab59be1554fb028cd30edc88fc4369b17971019" +checksum = "d8aa86934b44c19c50f87cc2790e19f54f7a67aedb64101c2e1a2e5ecfb73944" dependencies = [ "clap_builder", "clap_derive", @@ -531,9 +591,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.15" +version = "4.5.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "216aec2b177652e3846684cbfe25c9964d18ec45234f0f5da5157b207ed1aab6" +checksum = "2414dbb2dd0695280da6ea9261e327479e9d37b0630f6b53ba2a11c60c679fd9" dependencies = [ "anstream", "anstyle", @@ -562,21 +622,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.13" +version = "4.5.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0" +checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.87", ] [[package]] name = "clap_lex" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" +checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "clap_mangen" @@ -603,8 +663,8 @@ dependencies = [ "ansi-str", "console", "crossterm", - "strum", - "strum_macros", + "strum 0.26.3", + "strum_macros 0.26.4", "unicode-width", ] @@ -632,24 +692,33 @@ dependencies = [ [[package]] name = "const_format" -version = "0.2.32" +version = "0.2.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3a214c7af3d04997541b18d432afaff4c455e79e2029079647e72fc2bd27673" +checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" dependencies = [ "const_format_proc_macros", ] [[package]] name = "const_format_proc_macros" -version = "0.2.32" +version = "0.2.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7f6ff08fd20f4f299298a28e2dfa8a8ba1036e6cd2460ac1de7b425d76f2500" +checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" dependencies = [ "proc-macro2", "quote", "unicode-xid", ] +[[package]] +name = "convert_case" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baaaa0ecca5b51987b9423ccdc971514dd8b0bb7b4060b983d3664dad3f1f89f" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "core-foundation" version = "0.9.4" @@ -771,7 +840,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.77", + "syn 2.0.87", ] [[package]] @@ -782,7 +851,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.77", + "syn 2.0.87", ] [[package]] @@ -793,13 +862,13 @@ checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" [[package]] name = "delegate" -version = "0.12.0" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e018fccbeeb50ff26562ece792ed06659b9c2dae79ece77c4456bb10d9bf79b" +checksum = "b9b6483c2bbed26f97861cf57651d4f2b731964a28cd2257f934a4b452480d21" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.87", ] [[package]] @@ -811,17 +880,6 @@ dependencies = [ "powerfmt", ] -[[package]] -name = "derivative" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "derive_arbitrary" version = "1.3.2" @@ -830,7 +888,7 @@ checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.87", ] [[package]] @@ -878,7 +936,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.87", ] [[package]] @@ -889,9 +947,9 @@ checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" [[package]] name = "dockerfile-parser" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75799314f5fa405629a365a1f97d80f81edd17f22a0fc9c8ddb3ad191ad8dc08" +checksum = "aa53f9cb1532d7d7c19e269848ede84d7c80d59264c658469f0051a1d88c2780" dependencies = [ "enquote", "lazy_static", @@ -913,6 +971,18 @@ version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" +[[package]] +name = "educe" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417" +dependencies = [ + "enum-ordinalize", + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "either" version = "1.13.0" @@ -940,7 +1010,27 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06c36cb11dbde389f4096111698d8b567c0720e3452fd5ac3e6b4e47e1939932" dependencies = [ - "thiserror", + "thiserror 1.0.63", +] + +[[package]] +name = "enum-ordinalize" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fea0dcfa4e54eeb516fe454635a95753ddd39acda650ce703031c6973e315dd5" +dependencies = [ + "enum-ordinalize-derive", +] + +[[package]] +name = "enum-ordinalize-derive" +version = "4.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", ] [[package]] @@ -991,6 +1081,12 @@ dependencies = [ "regex-syntax 0.8.4", ] +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + [[package]] name = "flate2" version = "1.0.33" @@ -1001,21 +1097,18 @@ dependencies = [ "miniz_oxide 0.8.0", ] -[[package]] -name = "fluent-uri" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17c704e9dbe1ddd863da1e6ff3567795087b1eb201ce80d8fa81162e1516500d" -dependencies = [ - "bitflags 1.3.2", -] - [[package]] name = "fnv" version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + [[package]] name = "form_urlencoded" version = "1.2.1" @@ -1081,7 +1174,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.87", ] [[package]] @@ -1138,7 +1231,19 @@ checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", ] [[package]] @@ -1177,6 +1282,18 @@ dependencies = [ "walkdir", ] +[[package]] +name = "gloo-timers" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + [[package]] name = "h2" version = "0.4.6" @@ -1189,21 +1306,34 @@ dependencies = [ "futures-core", "futures-sink", "http", - "indexmap", + "indexmap 2.5.0", "slab", "tokio", "tokio-util", "tracing", ] +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + [[package]] name = "hashbrown" version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" + +[[package]] +name = "hashbrown" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" dependencies = [ - "ahash", "allocator-api2", + "equivalent", + "foldhash", ] [[package]] @@ -1260,6 +1390,17 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "hostname" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a56f203cd1c76362b69e3863fd987520ac36cf70a8c92627449b2f64a8cf7d65" +dependencies = [ + "cfg-if", + "libc", + "windows-link", +] + [[package]] name = "http" version = "1.1.0" @@ -1317,9 +1458,9 @@ dependencies = [ [[package]] name = "hyper" -version = "1.4.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" dependencies = [ "bytes", "futures-channel", @@ -1386,7 +1527,7 @@ dependencies = [ "http", "hyper", "hyper-util", - "thiserror", + "thiserror 1.0.63", "tokio", "tower-service", ] @@ -1406,9 +1547,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.7" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde7055719c54e36e95e8719f95883f22072a48ede39db7fc17a4e1d5281e9b9" +checksum = "497bbc33a26fdd4af9ed9c70d63f61cf56a938375fbb32df34db9b1cd6d643f2" dependencies = [ "bytes", "futures-channel", @@ -1416,10 +1557,10 @@ dependencies = [ "http", "http-body", "hyper", + "libc", "pin-project-lite", "socket2", "tokio", - "tower", "tower-service", "tracing", ] @@ -1479,6 +1620,16 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", +] + [[package]] name = "indexmap" version = "2.5.0" @@ -1486,7 +1637,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" dependencies = [ "equivalent", - "hashbrown", + "hashbrown 0.14.5", "serde", ] @@ -1499,21 +1650,6 @@ dependencies = [ "generic-array", ] -[[package]] -name = "instant" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "integer-encoding" -version = "3.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bb03732005da905c88227371639bf1ad885cc712789c011c31c5fb3ab3ccf02" - [[package]] name = "ipnet" version = "2.9.0" @@ -1535,6 +1671,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.11" @@ -1563,47 +1708,44 @@ dependencies = [ [[package]] name = "json-patch" -version = "2.0.0" +version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b1fb8864823fad91877e6caea0baca82e49e8db50f8e5c9f9a453e27d3330fc" +checksum = "159294d661a039f7644cea7e4d844e6b25aaf71c1ffe9d73a96d768c24b0faf4" dependencies = [ "jsonptr", "serde", "serde_json", - "thiserror", + "thiserror 1.0.63", ] [[package]] name = "jsonpath-rust" -version = "0.5.1" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19d8fe85bd70ff715f31ce8c739194b423d79811a19602115d611a3ec85d6200" +checksum = "0c00ae348f9f8fd2d09f82a98ca381c60df9e0820d8d79fce43e649b4dc3128b" dependencies = [ - "lazy_static", - "once_cell", "pest", "pest_derive", "regex", "serde_json", - "thiserror", + "thiserror 2.0.12", ] [[package]] name = "jsonptr" -version = "0.4.7" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c6e529149475ca0b2820835d3dce8fcc41c6b943ca608d32f35b449255e4627" +checksum = "a5a3cc660ba5d72bce0b3bb295bf20847ccbb40fd423f3f05b61273672e561fe" dependencies = [ - "fluent-uri", "serde", "serde_json", ] [[package]] name = "k8s-openapi" -version = "0.22.0" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19501afb943ae5806548bc3ebd7f3374153ca057a38f480ef30adfde5ef09755" +checksum = "2c75b990324f09bef15e791606b7b7a296d02fc88a344f6eba9390970a870ad5" dependencies = [ "base64 0.22.1", "chrono", @@ -1613,11 +1755,21 @@ dependencies = [ "serde_json", ] +[[package]] +name = "k8s-version" +version = "0.1.2" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1" +dependencies = [ + "darling", + "regex", + "snafu 0.8.4", +] + [[package]] name = "kube" -version = "0.93.1" +version = "0.99.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0365920075af1a2d23619c1ca801c492f2400157de42627f041a061716e76416" +checksum = "9a4eb20010536b48abe97fec37d23d43069bcbe9686adcf9932202327bc5ca6e" dependencies = [ "k8s-openapi", "kube-client", @@ -1628,9 +1780,9 @@ dependencies = [ [[package]] name = "kube-client" -version = "0.93.1" +version = "0.99.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d81336eb3a5b10a40c97a5a97ad66622e92bad942ce05ee789edd730aa4f8603" +checksum = "7fc2ed952042df20d15ac2fe9614d0ec14b6118eab89633985d4b36e688dccf1" dependencies = [ "base64 0.22.1", "bytes", @@ -1651,27 +1803,25 @@ dependencies = [ "k8s-openapi", "kube-core", "pem", - "rand", "rustls", - "rustls-pemfile", "secrecy", "serde", "serde_json", "serde_yaml", - "thiserror", + "thiserror 2.0.12", "tokio", "tokio-tungstenite", "tokio-util", - "tower", - "tower-http", + "tower 0.5.2", + "tower-http 0.6.2", "tracing", ] [[package]] name = "kube-core" -version = "0.93.1" +version = "0.99.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cce373a74d787d439063cdefab0f3672860bd7bac01a38e39019177e764a0fe6" +checksum = "ff0d0793db58e70ca6d689489183816cb3aa481673e7433dc618cf7e8007c675" dependencies = [ "chrono", "form_urlencoded", @@ -1680,46 +1830,48 @@ dependencies = [ "k8s-openapi", "schemars", "serde", + "serde-value", "serde_json", - "thiserror", + "thiserror 2.0.12", ] [[package]] name = "kube-derive" -version = "0.93.1" +version = "0.99.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04a26c9844791e127329be5dce9298b03f9e2ff5939076d5438c92dea5eb78f2" +checksum = "c562f58dc9f7ca5feac8a6ee5850ca221edd6f04ce0dd2ee873202a88cd494c9" dependencies = [ "darling", "proc-macro2", "quote", + "serde", "serde_json", - "syn 2.0.77", + "syn 2.0.87", ] [[package]] name = "kube-runtime" -version = "0.93.1" +version = "0.99.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b84733c0fed6085c9210b43ffb96248676c1e800d0ba38d15043275a792ffa4" +checksum = "88f34cfab9b4bd8633062e0e85edb81df23cb09f159f2e31c60b069ae826ffdc" dependencies = [ "ahash", "async-broadcast", "async-stream", "async-trait", - "backoff", - "derivative", + "backon", + "educe", "futures", - "hashbrown", + "hashbrown 0.15.2", + "hostname", "json-patch", - "jsonptr", "k8s-openapi", "kube-client", "parking_lot", "pin-project", "serde", "serde_json", - "thiserror", + "thiserror 2.0.12", "tokio", "tokio-util", "tracing", @@ -1733,9 +1885,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.158" +version = "0.2.171" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" +checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6" [[package]] name = "libloading" @@ -1744,7 +1896,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" dependencies = [ "cfg-if", - "windows-targets 0.52.6", + "windows-targets 0.48.5", ] [[package]] @@ -1811,6 +1963,12 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" +[[package]] +name = "matchit" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" + [[package]] name = "memchr" version = "2.7.4" @@ -1865,7 +2023,7 @@ checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" dependencies = [ "hermit-abi", "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", "windows-sys 0.52.0", ] @@ -1904,16 +2062,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi", - "libc", -] - [[package]] name = "num_enum" version = "0.7.3" @@ -1932,7 +2080,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.87", ] [[package]] @@ -1964,60 +2112,96 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "opentelemetry" -version = "0.23.0" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b69a91d4893e713e06f724597ad630f1fa76057a5e1026c0ca67054a9032a76" +checksum = "236e667b670a5cdf90c258f5a55794ec5ac5027e960c224bff8367a59e1e6426" dependencies = [ "futures-core", "futures-sink", "js-sys", - "once_cell", "pin-project-lite", - "thiserror", + "thiserror 2.0.12", + "tracing", ] [[package]] -name = "opentelemetry-jaeger" -version = "0.22.0" +name = "opentelemetry-appender-tracing" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501b471b67b746d9a07d4c29f8be00f952d1a2eca356922ede0098cbaddff19f" +checksum = "c513c7af3bec30113f3d4620134ff923295f1e9c580fda2b8abe0831f925ddc0" +dependencies = [ + "opentelemetry", + "tracing", + "tracing-core", + "tracing-subscriber", +] + +[[package]] +name = "opentelemetry-http" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8863faf2910030d139fb48715ad5ff2f35029fc5f244f6d5f689ddcf4d26253" +dependencies = [ + "async-trait", + "bytes", + "http", + "opentelemetry", + "reqwest", + "tracing", +] + +[[package]] +name = "opentelemetry-otlp" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bef114c6d41bea83d6dc60eb41720eedd0261a67af57b66dd2b84ac46c01d91" dependencies = [ "async-trait", "futures-core", - "futures-util", + "http", "opentelemetry", - "opentelemetry-semantic-conventions", + "opentelemetry-http", + "opentelemetry-proto", "opentelemetry_sdk", - "thrift", + "prost", + "reqwest", + "thiserror 2.0.12", "tokio", + "tonic", + "tracing", ] [[package]] -name = "opentelemetry-semantic-conventions" -version = "0.15.0" +name = "opentelemetry-proto" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1869fb4bb9b35c5ba8a1e40c9b128a7b4c010d07091e864a29da19e4fe2ca4d7" +checksum = "56f8870d3024727e99212eb3bb1762ec16e255e3e6f58eeb3dc8db1aa226746d" +dependencies = [ + "opentelemetry", + "opentelemetry_sdk", + "prost", + "tonic", +] [[package]] name = "opentelemetry_sdk" -version = "0.23.0" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae312d58eaa90a82d2e627fd86e075cf5230b3f11794e2ed74199ebbe572d4fd" +checksum = "84dfad6042089c7fc1f6118b7040dc2eb4ab520abbf410b79dc481032af39570" dependencies = [ "async-trait", "futures-channel", "futures-executor", "futures-util", "glob", - "lazy_static", - "once_cell", "opentelemetry", - "ordered-float 4.2.2", "percent-encoding", - "rand", - "thiserror", + "rand 0.8.5", + "serde_json", + "thiserror 2.0.12", "tokio", "tokio-stream", + "tracing", ] [[package]] @@ -2035,15 +2219,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "ordered-float" -version = "4.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a91171844676f8c7990ce64959210cd2eaef32c2612c50f9fae9f8aaa6065a6" -dependencies = [ - "num-traits", -] - [[package]] name = "overload" version = "0.1.1" @@ -2111,7 +2286,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd53dff83f26735fdc1ca837098ccf133605d794cdae66acfc2bfac3ec809d95" dependencies = [ "memchr", - "thiserror", + "thiserror 1.0.63", "ucd-trie", ] @@ -2135,7 +2310,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.87", ] [[package]] @@ -2175,7 +2350,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" dependencies = [ "phf_shared", - "rand", + "rand 0.8.5", ] [[package]] @@ -2204,7 +2379,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.87", ] [[package]] @@ -2231,7 +2406,7 @@ version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" dependencies = [ - "zerocopy", + "zerocopy 0.7.35", ] [[package]] @@ -2241,7 +2416,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba" dependencies = [ "proc-macro2", - "syn 2.0.77", + "syn 2.0.87", ] [[package]] @@ -2302,6 +2477,29 @@ dependencies = [ "xml-rs", ] +[[package]] +name = "prost" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" +dependencies = [ + "bytes", + "prost-derive", +] + +[[package]] +name = "prost-derive" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" +dependencies = [ + "anyhow", + "itertools 0.14.0", + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "quinn" version = "0.11.5" @@ -2315,7 +2513,7 @@ dependencies = [ "rustc-hash 2.0.0", "rustls", "socket2", - "thiserror", + "thiserror 1.0.63", "tokio", "tracing", ] @@ -2327,12 +2525,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fadfaed2cd7f389d0161bb73eeb07b7b78f8691047a6f3e73caaeae55310a4a6" dependencies = [ "bytes", - "rand", + "rand 0.8.5", "ring", "rustc-hash 2.0.0", "rustls", "slab", - "thiserror", + "thiserror 1.0.63", "tinyvec", "tracing", ] @@ -2359,6 +2557,12 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" + [[package]] name = "rand" version = "0.8.5" @@ -2366,8 +2570,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha", - "rand_core", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", + "zerocopy 0.8.24", ] [[package]] @@ -2377,7 +2592,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", ] [[package]] @@ -2386,7 +2611,16 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.15", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.2", ] [[package]] @@ -2419,9 +2653,9 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ - "getrandom", + "getrandom 0.2.15", "libredox 0.1.3", - "thiserror", + "thiserror 1.0.63", ] [[package]] @@ -2526,7 +2760,7 @@ checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ "cc", "cfg-if", - "getrandom", + "getrandom 0.2.15", "libc", "spin", "untrusted", @@ -2565,7 +2799,7 @@ dependencies = [ "regex", "relative-path", "rustc_version", - "syn 2.0.77", + "syn 2.0.87", "unicode-ident", ] @@ -2589,7 +2823,7 @@ dependencies = [ "proc-macro2", "quote", "rust-embed-utils", - "syn 2.0.77", + "syn 2.0.87", "walkdir", ] @@ -2645,9 +2879,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.12" +version = "0.23.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044" +checksum = "822ee9188ac4ec04a2f0531e55d035fb2de73f18b41a63c70c2712503b6fb13c" dependencies = [ "log", "once_cell", @@ -2683,15 +2917,15 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.8.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0" +checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" [[package]] name = "rustls-webpki" -version = "0.102.7" +version = "0.103.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84678086bd54edf2b415183ed7a94d0efb049f1b646a33e22a36f3794be6ae56" +checksum = "fef8b8769aaccf73098557a87cd1816b4f9c7c16811c9c77142aa695c16f2c03" dependencies = [ "ring", "rustls-pki-types", @@ -2730,9 +2964,9 @@ dependencies = [ [[package]] name = "schemars" -version = "0.8.21" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" +checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" dependencies = [ "dyn-clone", "schemars_derive", @@ -2743,14 +2977,14 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.21" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" +checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.77", + "syn 2.0.87", ] [[package]] @@ -2761,11 +2995,10 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "secrecy" -version = "0.8.0" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bd1c54ea06cfd2f6b63219704de0b9b4f72dcc2b8fdef820be6cd799780e91e" +checksum = "e891af845473308773346dc847b2c23ee78fe442e0472ac50e22a18a93d3ae5a" dependencies = [ - "serde", "zeroize", ] @@ -2803,9 +3036,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.209" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99fce0ffe7310761ca6bf9faf5115afbc19688edd00171d81b1bb1b116c63e09" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" dependencies = [ "serde_derive", ] @@ -2816,19 +3049,19 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c" dependencies = [ - "ordered-float 2.10.1", + "ordered-float", "serde", ] [[package]] name = "serde_derive" -version = "1.0.209" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5831b979fd7b5439637af1752d535ff49f4860c0f341d1baeb6faf0f4242170" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.87", ] [[package]] @@ -2839,14 +3072,14 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.87", ] [[package]] name = "serde_json" -version = "1.0.127" +version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8043c06d9f82bd7271361ed64f415fe5e12a77fdb52e573e7f06a516dea329ad" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" dependencies = [ "itoa", "memchr", @@ -2882,7 +3115,7 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap", + "indexmap 2.5.0", "itoa", "ryu", "serde", @@ -3007,14 +3240,14 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.87", ] [[package]] name = "socket2" -version = "0.5.7" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +checksum = "4f5fd57c80058a56cf5c777ab8a126398ece8e442983605d280a44ce79d0edef" dependencies = [ "libc", "windows-sys 0.52.0", @@ -3033,10 +3266,10 @@ dependencies = [ "bcrypt", "futures", "helm-sys", - "indexmap", + "indexmap 2.5.0", "k8s-openapi", "kube", - "rand", + "rand 0.8.5", "reqwest", "rstest", "semver", @@ -3067,7 +3300,7 @@ dependencies = [ name = "stackable-cockpitd" version = "0.0.0-dev" dependencies = [ - "axum", + "axum 0.7.5", "axum-extra", "bcrypt", "clap", @@ -3078,7 +3311,7 @@ dependencies = [ "stackable-cockpit", "stackable-cockpit-web", "tokio", - "tower-http", + "tower-http 0.5.2", "tracing", "tracing-subscriber", "utoipa", @@ -3088,22 +3321,21 @@ dependencies = [ [[package]] name = "stackable-operator" -version = "0.74.0" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.74.0#c77a5423b66bc1667b63af7d8bec00de88a5303f" +version = "0.92.0" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1" dependencies = [ "chrono", "clap", "const_format", "delegate", - "derivative", "dockerfile-parser", + "educe", "either", "futures", + "indexmap 2.5.0", "json-patch", "k8s-openapi", "kube", - "opentelemetry-jaeger", - "opentelemetry_sdk", "product-config", "regex", "schemars", @@ -3113,11 +3345,13 @@ dependencies = [ "serde_yaml", "snafu 0.8.4", "stackable-operator-derive", - "strum", + "stackable-shared", + "stackable-telemetry", + "stackable-versioned", + "strum 0.27.1", "tokio", "tracing", "tracing-appender", - "tracing-opentelemetry", "tracing-subscriber", "url", ] @@ -3125,12 +3359,71 @@ dependencies = [ [[package]] name = "stackable-operator-derive" version = "0.3.1" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.74.0#c77a5423b66bc1667b63af7d8bec00de88a5303f" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "stackable-shared" +version = "0.0.1" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1" +dependencies = [ + "kube", + "semver", + "serde", + "serde_yaml", + "snafu 0.8.4", +] + +[[package]] +name = "stackable-telemetry" +version = "0.6.0" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1" dependencies = [ + "axum 0.8.3", + "clap", + "futures-util", + "opentelemetry", + "opentelemetry-appender-tracing", + "opentelemetry-otlp", + "opentelemetry_sdk", + "pin-project", + "snafu 0.8.4", + "strum 0.27.1", + "tokio", + "tower 0.5.2", + "tracing", + "tracing-appender", + "tracing-opentelemetry", + "tracing-subscriber", +] + +[[package]] +name = "stackable-versioned" +version = "0.7.1" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1" +dependencies = [ + "stackable-versioned-macros", +] + +[[package]] +name = "stackable-versioned-macros" +version = "0.7.1" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1" +dependencies = [ + "convert_case", "darling", + "itertools 0.14.0", + "k8s-openapi", + "k8s-version", + "kube", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.87", ] [[package]] @@ -3144,10 +3437,10 @@ dependencies = [ "directories", "dotenvy", "futures", - "indexmap", + "indexmap 2.5.0", "lazy_static", "libc", - "rand", + "rand 0.8.5", "reqwest", "semver", "serde", @@ -3175,8 +3468,14 @@ name = "strum" version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" + +[[package]] +name = "strum" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f64def088c51c9510a8579e3c5d67c65349dcf755e5479ad3d010aa6454e2c32" dependencies = [ - "strum_macros", + "strum_macros 0.27.1", ] [[package]] @@ -3189,7 +3488,20 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.77", + "syn 2.0.87", +] + +[[package]] +name = "strum_macros" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c77a8c5abcaf0f9ce05d62342b7d298c346515365c36b673df4ebe3ced01fde8" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.87", ] [[package]] @@ -3211,9 +3523,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.77" +version = "2.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" +checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" dependencies = [ "proc-macro2", "quote", @@ -3249,7 +3561,7 @@ dependencies = [ "percent-encoding", "pest", "pest_derive", - "rand", + "rand 0.8.5", "regex", "serde", "serde_json", @@ -3275,50 +3587,48 @@ version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ - "thiserror-impl", + "thiserror-impl 1.0.63", ] [[package]] -name = "thiserror-impl" -version = "1.0.63" +name = "thiserror" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.77", + "thiserror-impl 2.0.12", ] [[package]] -name = "thread_local" -version = "1.1.8" +name = "thiserror-impl" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ - "cfg-if", - "once_cell", + "proc-macro2", + "quote", + "syn 2.0.87", ] [[package]] -name = "threadpool" -version = "1.8.1" +name = "thiserror-impl" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ - "num_cpus", + "proc-macro2", + "quote", + "syn 2.0.87", ] [[package]] -name = "thrift" -version = "0.17.0" +name = "thread_local" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e54bc85fc7faa8bc175c4bab5b92ba8d9a3ce893d0e9f42cc455c8ab16a9e09" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" dependencies = [ - "byteorder", - "integer-encoding", - "log", - "ordered-float 2.10.1", - "threadpool", + "cfg-if", + "once_cell", ] [[package]] @@ -3392,7 +3702,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.87", ] [[package]] @@ -3408,9 +3718,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.15" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" dependencies = [ "futures-core", "pin-project-lite", @@ -3419,9 +3729,9 @@ dependencies = [ [[package]] name = "tokio-tungstenite" -version = "0.23.1" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6989540ced10490aaf14e6bad2e3d33728a2813310a0c71d1574304c49631cd" +checksum = "7a9daff607c6d2bf6c16fd681ccb7eecc83e4e2cdc1ca067ffaadfca5de7f084" dependencies = [ "futures-util", "log", @@ -3455,11 +3765,42 @@ version = "0.22.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" dependencies = [ - "indexmap", + "indexmap 2.5.0", "toml_datetime", "winnow", ] +[[package]] +name = "tonic" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" +dependencies = [ + "async-stream", + "async-trait", + "axum 0.7.5", + "base64 0.22.1", + "bytes", + "flate2", + "h2", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-timeout", + "hyper-util", + "percent-encoding", + "pin-project", + "prost", + "socket2", + "tokio", + "tokio-stream", + "tower 0.4.13", + "tower-layer", + "tower-service", + "tracing", +] + [[package]] name = "tower" version = "0.4.13" @@ -3468,8 +3809,28 @@ checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" dependencies = [ "futures-core", "futures-util", + "indexmap 1.9.3", "pin-project", "pin-project-lite", + "rand 0.8.5", + "slab", + "tokio", + "tokio-util", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper 1.0.1", "tokio", "tokio-util", "tower-layer", @@ -3483,7 +3844,6 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" dependencies = [ - "base64 0.21.7", "bitflags 2.6.0", "bytes", "http", @@ -3493,6 +3853,23 @@ dependencies = [ "pin-project-lite", "tower-layer", "tower-service", +] + +[[package]] +name = "tower-http" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "403fa3b783d4b626a8ad51d766ab03cb6d2dbfc46b1c5d4448395e6628dc9697" +dependencies = [ + "base64 0.22.1", + "bitflags 2.6.0", + "bytes", + "http", + "http-body", + "mime", + "pin-project-lite", + "tower-layer", + "tower-service", "tracing", ] @@ -3527,7 +3904,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf" dependencies = [ "crossbeam-channel", - "thiserror", + "thiserror 1.0.63", "time", "tracing-subscriber", ] @@ -3540,14 +3917,14 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.87", ] [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" dependencies = [ "once_cell", "valuable", @@ -3566,9 +3943,9 @@ dependencies = [ [[package]] name = "tracing-opentelemetry" -version = "0.24.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f68803492bf28ab40aeccaecc7021096bd256baf7ca77c3d425d89b35a7be4e4" +checksum = "721f2d2569dce9f3dfbbddee5906941e953bfcdf736a62da3377f5751650cc36" dependencies = [ "js-sys", "once_cell", @@ -3621,19 +3998,18 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "tungstenite" -version = "0.23.0" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e2e2ce1e47ed2994fd43b04c8f618008d4cabdd5ee34027cf14f9d918edd9c8" +checksum = "4793cb5e56680ecbb1d843515b23b6de9a75eb04b66643e256a396d43be33c13" dependencies = [ - "byteorder", "bytes", "data-encoding", "http", "httparse", "log", - "rand", + "rand 0.9.0", "sha1", - "thiserror", + "thiserror 2.0.12", "utf-8", ] @@ -3729,6 +4105,12 @@ dependencies = [ "tinyvec", ] +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + [[package]] name = "unicode-width" version = "0.1.13" @@ -3789,7 +4171,7 @@ version = "4.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c5afb1a60e207dca502682537fefcfd9921e71d0b83e9576060f09abc6efab23" dependencies = [ - "indexmap", + "indexmap 2.5.0", "serde", "serde_json", "utoipa-gen", @@ -3804,7 +4186,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.87", ] [[package]] @@ -3813,7 +4195,7 @@ version = "7.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "943e0ff606c6d57d410fd5663a4d7c074ab2c5f14ab903b9514565e59fa1189e" dependencies = [ - "axum", + "axum 0.7.5", "mime_guess", "regex", "reqwest", @@ -3831,7 +4213,7 @@ version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" dependencies = [ - "getrandom", + "getrandom 0.2.15", ] [[package]] @@ -3892,6 +4274,15 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + [[package]] name = "wasm-bindgen" version = "0.2.93" @@ -3914,7 +4305,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.87", "wasm-bindgen-shared", ] @@ -3948,7 +4339,7 @@ checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.87", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -4022,7 +4413,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.48.0", ] [[package]] @@ -4040,6 +4431,12 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-link" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" + [[package]] name = "windows-registry" version = "0.2.0" @@ -4233,6 +4630,15 @@ version = "0.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags 2.6.0", +] + [[package]] name = "xml-rs" version = "0.8.21" @@ -4263,7 +4669,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ "byteorder", - "zerocopy-derive", + "zerocopy-derive 0.7.35", +] + +[[package]] +name = "zerocopy" +version = "0.8.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2586fea28e186957ef732a5f8b3be2da217d65c5969d4b1e17f973ebbe876879" +dependencies = [ + "zerocopy-derive 0.8.24", ] [[package]] @@ -4274,7 +4689,18 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.87", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a996a8f63c5c4448cd959ac1bab0aaa3306ccfd060472f85943ee0750f0169be" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", ] [[package]] @@ -4294,7 +4720,7 @@ dependencies = [ "crossbeam-utils", "displaydoc", "flate2", - "indexmap", + "indexmap 2.5.0", "num_enum", - "thiserror", + "thiserror 1.0.63", ] diff --git a/Cargo.nix b/Cargo.nix index c19083fc..ef95c5d6 100644 --- a/Cargo.nix +++ b/Cargo.nix @@ -198,7 +198,7 @@ rec { } { name = "getrandom"; - packageId = "getrandom"; + packageId = "getrandom 0.2.15"; optional = true; } { @@ -210,7 +210,7 @@ rec { } { name = "zerocopy"; - packageId = "zerocopy"; + packageId = "zerocopy 0.7.35"; usesDefaultFeatures = false; features = [ "simd" ]; } @@ -452,6 +452,20 @@ rec { ]; }; + "anyhow" = rec { + crateName = "anyhow"; + version = "1.0.97"; + edition = "2018"; + sha256 = "0kvspbiwncmmkdgrwjrimsmbmhzxc641p5ql99l2rjq6smmdbznw"; + authors = [ + "David Tolnay " + ]; + features = { + "backtrace" = [ "dep:backtrace" ]; + "default" = [ "std" ]; + }; + resolvedDefaultFeatures = [ "default" "std" ]; + }; "arbitrary" = rec { crateName = "arbitrary"; version = "1.3.2"; @@ -535,7 +549,7 @@ rec { dependencies = [ { name = "thiserror"; - packageId = "thiserror"; + packageId = "thiserror 1.0.63"; } { name = "tokio"; @@ -598,7 +612,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.87"; features = [ "full" "visit-mut" ]; } ]; @@ -625,7 +639,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.87"; usesDefaultFeatures = false; features = [ "full" "parsing" "printing" "proc-macro" "visit-mut" ]; } @@ -656,7 +670,7 @@ rec { ]; }; - "axum" = rec { + "axum 0.7.5" = rec { crateName = "axum"; version = "0.7.5"; edition = "2021"; @@ -668,7 +682,7 @@ rec { } { name = "axum-core"; - packageId = "axum-core"; + packageId = "axum-core 0.4.3"; } { name = "bytes"; @@ -709,7 +723,7 @@ rec { } { name = "matchit"; - packageId = "matchit"; + packageId = "matchit 0.7.3"; } { name = "memchr"; @@ -760,7 +774,7 @@ rec { } { name = "tower"; - packageId = "tower"; + packageId = "tower 0.4.13"; usesDefaultFeatures = false; features = [ "util" ]; } @@ -807,7 +821,7 @@ rec { } { name = "tower"; - packageId = "tower"; + packageId = "tower 0.4.13"; rename = "tower"; features = [ "util" "timeout" "limit" "load-shed" "steer" "filter" ]; } @@ -833,7 +847,186 @@ rec { }; resolvedDefaultFeatures = [ "default" "form" "http1" "http2" "json" "matched-path" "original-uri" "query" "tokio" "tower-log" "tracing" ]; }; - "axum-core" = rec { + "axum 0.8.3" = rec { + crateName = "axum"; + version = "0.8.3"; + edition = "2021"; + sha256 = "1222spmyw5s2dfggwn62474jkh72ld52abkz5wjbkyg1024i0ify"; + dependencies = [ + { + name = "axum-core"; + packageId = "axum-core 0.5.2"; + } + { + name = "bytes"; + packageId = "bytes"; + } + { + name = "form_urlencoded"; + packageId = "form_urlencoded"; + optional = true; + } + { + name = "futures-util"; + packageId = "futures-util"; + usesDefaultFeatures = false; + features = [ "alloc" ]; + } + { + name = "http"; + packageId = "http"; + } + { + name = "http-body"; + packageId = "http-body"; + } + { + name = "http-body-util"; + packageId = "http-body-util"; + } + { + name = "hyper"; + packageId = "hyper"; + optional = true; + } + { + name = "hyper-util"; + packageId = "hyper-util"; + optional = true; + features = [ "tokio" "server" "service" ]; + } + { + name = "itoa"; + packageId = "itoa"; + } + { + name = "matchit"; + packageId = "matchit 0.8.4"; + } + { + name = "memchr"; + packageId = "memchr"; + } + { + name = "mime"; + packageId = "mime"; + } + { + name = "percent-encoding"; + packageId = "percent-encoding"; + } + { + name = "pin-project-lite"; + packageId = "pin-project-lite"; + } + { + name = "rustversion"; + packageId = "rustversion"; + } + { + name = "serde"; + packageId = "serde"; + } + { + name = "serde_json"; + packageId = "serde_json"; + optional = true; + features = [ "raw_value" ]; + } + { + name = "serde_path_to_error"; + packageId = "serde_path_to_error"; + optional = true; + } + { + name = "serde_urlencoded"; + packageId = "serde_urlencoded"; + optional = true; + } + { + name = "sync_wrapper"; + packageId = "sync_wrapper 1.0.1"; + } + { + name = "tokio"; + packageId = "tokio"; + rename = "tokio"; + optional = true; + features = [ "time" ]; + } + { + name = "tower"; + packageId = "tower 0.5.2"; + usesDefaultFeatures = false; + features = [ "util" ]; + } + { + name = "tower-layer"; + packageId = "tower-layer"; + } + { + name = "tower-service"; + packageId = "tower-service"; + } + { + name = "tracing"; + packageId = "tracing"; + optional = true; + usesDefaultFeatures = false; + } + ]; + devDependencies = [ + { + name = "hyper"; + packageId = "hyper"; + features = [ "client" ]; + } + { + name = "serde"; + packageId = "serde"; + features = [ "derive" ]; + } + { + name = "serde_json"; + packageId = "serde_json"; + features = [ "raw_value" ]; + } + { + name = "tokio"; + packageId = "tokio"; + rename = "tokio"; + features = [ "macros" "rt" "rt-multi-thread" "net" "test-util" ]; + } + { + name = "tower"; + packageId = "tower 0.5.2"; + rename = "tower"; + features = [ "util" "timeout" "limit" "load-shed" "steer" "filter" ]; + } + { + name = "tracing"; + packageId = "tracing"; + } + ]; + features = { + "__private" = [ "tokio" "http1" "dep:reqwest" ]; + "__private_docs" = [ "axum-core/__private_docs" "tower/full" "dep:tower-http" ]; + "default" = [ "form" "http1" "json" "matched-path" "original-uri" "query" "tokio" "tower-log" "tracing" ]; + "form" = [ "dep:form_urlencoded" "dep:serde_urlencoded" "dep:serde_path_to_error" ]; + "http1" = [ "dep:hyper" "hyper?/http1" "hyper-util?/http1" ]; + "http2" = [ "dep:hyper" "hyper?/http2" "hyper-util?/http2" ]; + "json" = [ "dep:serde_json" "dep:serde_path_to_error" ]; + "macros" = [ "dep:axum-macros" ]; + "multipart" = [ "dep:multer" ]; + "query" = [ "dep:form_urlencoded" "dep:serde_urlencoded" "dep:serde_path_to_error" ]; + "tokio" = [ "dep:hyper-util" "dep:tokio" "tokio/net" "tokio/rt" "tower/make" "tokio/macros" ]; + "tower-log" = [ "tower/log" ]; + "tracing" = [ "dep:tracing" "axum-core/tracing" ]; + "ws" = [ "dep:hyper" "tokio" "dep:tokio-tungstenite" "dep:sha1" "dep:base64" ]; + }; + resolvedDefaultFeatures = [ "default" "form" "http1" "json" "matched-path" "original-uri" "query" "tokio" "tower-log" "tracing" ]; + }; + "axum-core 0.4.3" = rec { crateName = "axum-core"; version = "0.4.3"; edition = "2021"; @@ -913,6 +1106,70 @@ rec { }; resolvedDefaultFeatures = [ "tracing" ]; }; + "axum-core 0.5.2" = rec { + crateName = "axum-core"; + version = "0.5.2"; + edition = "2021"; + sha256 = "19kwzksb4hwr3qfbrhjbqf83z6fjyng14wrkzck6fj1g8784qik8"; + libName = "axum_core"; + dependencies = [ + { + name = "bytes"; + packageId = "bytes"; + } + { + name = "futures-core"; + packageId = "futures-core"; + } + { + name = "http"; + packageId = "http"; + } + { + name = "http-body"; + packageId = "http-body"; + } + { + name = "http-body-util"; + packageId = "http-body-util"; + } + { + name = "mime"; + packageId = "mime"; + } + { + name = "pin-project-lite"; + packageId = "pin-project-lite"; + } + { + name = "rustversion"; + packageId = "rustversion"; + } + { + name = "sync_wrapper"; + packageId = "sync_wrapper 1.0.1"; + } + { + name = "tower-layer"; + packageId = "tower-layer"; + } + { + name = "tower-service"; + packageId = "tower-service"; + } + { + name = "tracing"; + packageId = "tracing"; + optional = true; + usesDefaultFeatures = false; + } + ]; + features = { + "__private_docs" = [ "dep:tower-http" ]; + "tracing" = [ "dep:tracing" ]; + }; + resolvedDefaultFeatures = [ "tracing" ]; + }; "axum-extra" = rec { crateName = "axum-extra"; version = "0.9.3"; @@ -922,12 +1179,12 @@ rec { dependencies = [ { name = "axum"; - packageId = "axum"; + packageId = "axum 0.7.5"; usesDefaultFeatures = false; } { name = "axum-core"; - packageId = "axum-core"; + packageId = "axum-core 0.4.3"; } { name = "bytes"; @@ -970,7 +1227,7 @@ rec { } { name = "tower"; - packageId = "tower"; + packageId = "tower 0.4.13"; usesDefaultFeatures = false; features = [ "util" ]; } @@ -992,7 +1249,7 @@ rec { devDependencies = [ { name = "axum"; - packageId = "axum"; + packageId = "axum 0.7.5"; } { name = "serde"; @@ -1001,7 +1258,7 @@ rec { } { name = "tower"; - packageId = "tower"; + packageId = "tower 0.4.13"; features = [ "util" ]; } ]; @@ -1025,39 +1282,58 @@ rec { }; resolvedDefaultFeatures = [ "default" "tracing" "typed-header" ]; }; - "backoff" = rec { - crateName = "backoff"; - version = "0.4.0"; - edition = "2018"; - sha256 = "1h80d9xn5wngxdgza2m8w4x1kyhk0x6k9ydvsj50j2pcn6fdnbdn"; - authors = [ - "Tibor Benke " - ]; + "backon" = rec { + crateName = "backon"; + version = "1.5.0"; + edition = "2021"; + sha256 = "15k4p6xyxi4lkiyw5yxrmcws3wwnwjacgcqqmd2dvfldnyqm02zx"; dependencies = [ { - name = "getrandom"; - packageId = "getrandom"; + name = "fastrand"; + packageId = "fastrand"; + usesDefaultFeatures = false; } { - name = "instant"; - packageId = "instant"; + name = "gloo-timers"; + packageId = "gloo-timers"; + optional = true; + target = { target, features }: ("wasm32" == target."arch" or null); } { - name = "rand"; - packageId = "rand"; + name = "tokio"; + packageId = "tokio"; + optional = true; + target = { target, features }: (!("wasm32" == target."arch" or null)); } ]; - features = { - "async-std" = [ "futures" "async_std_1" ]; - "async_std_1" = [ "dep:async_std_1" ]; - "futures" = [ "futures-core" "pin-project-lite" ]; - "futures-core" = [ "dep:futures-core" ]; - "pin-project-lite" = [ "dep:pin-project-lite" ]; - "tokio" = [ "futures" "tokio_1" ]; - "tokio_1" = [ "dep:tokio_1" ]; - "wasm-bindgen" = [ "instant/wasm-bindgen" "getrandom/js" ]; + devDependencies = [ + { + name = "tokio"; + packageId = "tokio"; + target = {target, features}: (!("wasm32" == target."arch" or null)); + features = [ "time" "rt" "macros" "sync" "rt-multi-thread" ]; + } + { + name = "tokio"; + packageId = "tokio"; + usesDefaultFeatures = false; + target = {target, features}: ("wasm32" == target."arch" or null); + features = [ "macros" "rt" "sync" ]; + } + ]; + features = { + "default" = [ "std" "std-blocking-sleep" "tokio-sleep" "gloo-timers-sleep" ]; + "embassy-sleep" = [ "embassy-time" ]; + "embassy-time" = [ "dep:embassy-time" ]; + "futures-timer" = [ "dep:futures-timer" ]; + "futures-timer-sleep" = [ "futures-timer" ]; + "gloo-timers" = [ "dep:gloo-timers" ]; + "gloo-timers-sleep" = [ "gloo-timers/futures" ]; + "std" = [ "fastrand/std" ]; + "tokio" = [ "dep:tokio" ]; + "tokio-sleep" = [ "tokio/time" ]; }; - resolvedDefaultFeatures = [ "default" ]; + resolvedDefaultFeatures = [ "default" "gloo-timers" "gloo-timers-sleep" "std" "std-blocking-sleep" "tokio" "tokio-sleep" ]; }; "backtrace" = rec { crateName = "backtrace"; @@ -1168,7 +1444,7 @@ rec { } { name = "getrandom"; - packageId = "getrandom"; + packageId = "getrandom 0.2.15"; optional = true; usesDefaultFeatures = false; } @@ -1221,7 +1497,7 @@ rec { } { name = "itertools"; - packageId = "itertools"; + packageId = "itertools 0.13.0"; usesDefaultFeatures = false; } { @@ -1261,7 +1537,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.87"; features = [ "full" "extra-traits" "visit-mut" ]; } ]; @@ -1450,19 +1726,19 @@ rec { features = { "default" = [ "std" ]; }; - resolvedDefaultFeatures = [ "default" "std" ]; }; "bytes" = rec { crateName = "bytes"; - version = "1.7.1"; + version = "1.10.1"; edition = "2018"; - sha256 = "0l5sf69avjxcw41cznyzxsnymwmkpmk08q0sm7fgicvvn0ysa643"; + sha256 = "0smd4wi2yrhp5pmq571yiaqx84bjqlm1ixqhnvfwzzc6pqkn26yp"; authors = [ "Carl Lerche " "Sean McArthur " ]; features = { "default" = [ "std" ]; + "extra-platforms" = [ "dep:extra-platforms" ]; "serde" = [ "dep:serde" ]; }; resolvedDefaultFeatures = [ "default" "std" ]; @@ -1741,10 +2017,10 @@ rec { }; "clap" = rec { crateName = "clap"; - version = "4.5.16"; + version = "4.5.35"; edition = "2021"; crateBin = []; - sha256 = "068hjwbrndn4iz4fsc6d52q4ymg1kfsymjnqbxzdil23zbzijrzd"; + sha256 = "0i1rnz7mwbhs5qf10r6vmrkplkzm3477khkwz189rha49f9qdanq"; dependencies = [ { name = "clap_builder"; @@ -1773,6 +2049,7 @@ rec { "unicode" = [ "clap_builder/unicode" ]; "unstable-doc" = [ "clap_builder/unstable-doc" "derive" ]; "unstable-ext" = [ "clap_builder/unstable-ext" ]; + "unstable-markdown" = [ "clap_derive/unstable-markdown" ]; "unstable-styles" = [ "clap_builder/unstable-styles" ]; "unstable-v5" = [ "clap_builder/unstable-v5" "clap_derive?/unstable-v5" "deprecated" ]; "usage" = [ "clap_builder/usage" ]; @@ -1782,9 +2059,9 @@ rec { }; "clap_builder" = rec { crateName = "clap_builder"; - version = "4.5.15"; + version = "4.5.35"; edition = "2021"; - sha256 = "1dmas5z20yqmlmfhykr38pn1hkcnr4jzxjw4cs2f6lkn2wmyqsi1"; + sha256 = "1nczcw6cc49ap99nn3v3n0vrv7j74zin34palq6ji586vnrdn514"; dependencies = [ { name = "anstream"; @@ -1880,9 +2157,9 @@ rec { }; "clap_derive" = rec { crateName = "clap_derive"; - version = "4.5.13"; + version = "4.5.32"; edition = "2021"; - sha256 = "1860xq3rbgwsqwcj9rd14cky9iiywwx86j7fvvngdjixbyfka7ah"; + sha256 = "1mqcag8qapb5yhygg2hi153kzmbf7w5hqp3nl3fvl5cn4yp6l5q9"; procMacro = true; dependencies = [ { @@ -1899,21 +2176,22 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.87"; features = [ "full" ]; } ]; features = { "raw-deprecated" = [ "deprecated" ]; + "unstable-markdown" = [ "dep:pulldown-cmark" "dep:anstyle" ]; "unstable-v5" = [ "deprecated" ]; }; resolvedDefaultFeatures = [ "default" ]; }; "clap_lex" = rec { crateName = "clap_lex"; - version = "0.7.2"; + version = "0.7.4"; edition = "2021"; - sha256 = "15zcrc2fa6ycdzaihxghf48180bnvzsivhf0fmah24bnnaf76qhl"; + sha256 = "19nwfls5db269js5n822vkc8dw0wjq2h1wf0hgr06ld2g52d2spl"; }; "clap_mangen" = rec { @@ -1990,11 +2268,11 @@ rec { } { name = "strum"; - packageId = "strum"; + packageId = "strum 0.26.3"; } { name = "strum_macros"; - packageId = "strum_macros"; + packageId = "strum_macros 0.26.4"; } { name = "unicode-width"; @@ -2080,9 +2358,9 @@ rec { }; "const_format" = rec { crateName = "const_format"; - version = "0.2.32"; + version = "0.2.34"; edition = "2021"; - sha256 = "0wvns8mzqwkyciwr00p2g5g4ak7zz8m473di85srj11xmz3i98p3"; + sha256 = "1pb3vx4k0bl3cy45fmba36hzds1jhkr8y9k3j5nnvm4abjb9fvqj"; authors = [ "rodrimati1992 " ]; @@ -2094,6 +2372,7 @@ rec { ]; features = { "__debug" = [ "const_format_proc_macros/debug" ]; + "__inline_const_pat_tests" = [ "__test" "fmt" ]; "__only_new_tests" = [ "__test" ]; "all" = [ "fmt" "derive" "rust_1_64" "assert" ]; "assert" = [ "assertc" ]; @@ -2102,19 +2381,20 @@ rec { "const_generics" = [ "rust_1_51" ]; "constant_time_as_str" = [ "fmt" ]; "derive" = [ "fmt" "const_format_proc_macros/derive" ]; - "fmt" = [ "rust_1_64" ]; + "fmt" = [ "rust_1_83" ]; "konst" = [ "dep:konst" ]; "more_str_macros" = [ "rust_1_64" ]; "nightly_const_generics" = [ "const_generics" ]; "rust_1_64" = [ "rust_1_51" "konst" "konst/rust_1_64" ]; + "rust_1_83" = [ "rust_1_64" ]; }; resolvedDefaultFeatures = [ "default" ]; }; "const_format_proc_macros" = rec { crateName = "const_format_proc_macros"; - version = "0.2.32"; + version = "0.2.34"; edition = "2021"; - sha256 = "0015dzbjbd773nn6096dwqv11fm8m3gy4a4a56cz5x10zl4gzxn7"; + sha256 = "0i3pxxcl4xvwq4mlfg3csb4j0n6v0mhj07p6yk0vlvdirznc4mqx"; procMacro = true; authors = [ "rodrimati1992 " @@ -2141,6 +2421,25 @@ rec { }; resolvedDefaultFeatures = [ "default" ]; }; + "convert_case" = rec { + crateName = "convert_case"; + version = "0.8.0"; + edition = "2021"; + sha256 = "17zqy79xlr1n7nc0n1mlnw5qpp8l2nbxrk13jixrhlavrbna1ams"; + authors = [ + "rutrum " + ]; + dependencies = [ + { + name = "unicode-segmentation"; + packageId = "unicode-segmentation"; + } + ]; + features = { + "rand" = [ "dep:rand" ]; + "random" = [ "rand" ]; + }; + }; "core-foundation" = rec { crateName = "core-foundation"; version = "0.9.4"; @@ -2464,7 +2763,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.87"; features = [ "full" "extra-traits" ]; } ]; @@ -2494,7 +2793,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.87"; } ]; @@ -2516,9 +2815,9 @@ rec { }; "delegate" = rec { crateName = "delegate"; - version = "0.12.0"; + version = "0.13.3"; edition = "2018"; - sha256 = "16zpkc6v2ss5qivwx7p7vb1bjnb6s0p7kkifaqkgyl7bpv68y0af"; + sha256 = "088d919b991lz5bj5k989ab33dzjsi8pdx8whsbnzlmy5cy4idmr"; procMacro = true; authors = [ "Godfrey Chan " @@ -2535,7 +2834,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.87"; features = [ "full" "visit-mut" ]; } ]; @@ -2568,33 +2867,6 @@ rec { }; resolvedDefaultFeatures = [ "alloc" "powerfmt" "std" ]; }; - "derivative" = rec { - crateName = "derivative"; - version = "2.2.0"; - edition = "2015"; - sha256 = "02vpb81wisk2zh1d5f44szzxamzinqgq2k8ydrfjj2wwkrgdvhzw"; - procMacro = true; - authors = [ - "mcarton " - ]; - dependencies = [ - { - name = "proc-macro2"; - packageId = "proc-macro2"; - } - { - name = "quote"; - packageId = "quote"; - } - { - name = "syn"; - packageId = "syn 1.0.109"; - features = [ "visit" "extra-traits" ]; - } - ]; - features = { - }; - }; "derive_arbitrary" = rec { crateName = "derive_arbitrary"; version = "1.3.2"; @@ -2619,7 +2891,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.87"; features = [ "derive" "parsing" ]; } ]; @@ -2743,7 +3015,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.87"; } ]; features = { @@ -2764,9 +3036,9 @@ rec { }; "dockerfile-parser" = rec { crateName = "dockerfile-parser"; - version = "0.8.0"; + version = "0.9.0"; edition = "2018"; - sha256 = "026wv0d1kbdkvp4cj3ray8bxs7pqh1yzk8b5lclmch7syla96ybm"; + sha256 = "1017ikca2l80kx35iik4jbaq0z2dx3nli616kv0xgmrj2p5zjlxa"; libName = "dockerfile_parser"; authors = [ "Tim Buckley " @@ -2831,6 +3103,48 @@ rec { ]; }; + "educe" = rec { + crateName = "educe"; + version = "0.6.0"; + edition = "2021"; + sha256 = "05wlg6wzil59lxc3kbs476gwykj6m63dbfv83frxx35xw54w0yqx"; + procMacro = true; + authors = [ + "Magic Len " + ]; + dependencies = [ + { + name = "enum-ordinalize"; + packageId = "enum-ordinalize"; + usesDefaultFeatures = false; + features = [ "derive" ]; + } + { + name = "proc-macro2"; + packageId = "proc-macro2"; + } + { + name = "quote"; + packageId = "quote"; + } + { + name = "syn"; + packageId = "syn 2.0.87"; + } + ]; + devDependencies = [ + { + name = "syn"; + packageId = "syn 2.0.87"; + features = [ "full" ]; + } + ]; + features = { + "default" = [ "Debug" "Clone" "Copy" "PartialEq" "Eq" "PartialOrd" "Ord" "Hash" "Default" "Deref" "DerefMut" "Into" ]; + "full" = [ "syn/full" ]; + }; + resolvedDefaultFeatures = [ "Clone" "Debug" "Default" "Eq" "Hash" "PartialEq" ]; + }; "either" = rec { crateName = "either"; version = "1.13.0"; @@ -2894,11 +3208,56 @@ rec { dependencies = [ { name = "thiserror"; - packageId = "thiserror"; + packageId = "thiserror 1.0.63"; } ]; }; + "enum-ordinalize" = rec { + crateName = "enum-ordinalize"; + version = "4.3.0"; + edition = "2021"; + sha256 = "1max64z9giii61qcwl56rndd7pakaylkaij5zqbbbvjl9vxdr87y"; + libName = "enum_ordinalize"; + dependencies = [ + { + name = "enum-ordinalize-derive"; + packageId = "enum-ordinalize-derive"; + optional = true; + usesDefaultFeatures = false; + } + ]; + features = { + "default" = [ "derive" "traits" ]; + "derive" = [ "dep:enum-ordinalize-derive" ]; + "traits" = [ "enum-ordinalize-derive?/traits" ]; + }; + resolvedDefaultFeatures = [ "derive" ]; + }; + "enum-ordinalize-derive" = rec { + crateName = "enum-ordinalize-derive"; + version = "4.3.1"; + edition = "2021"; + sha256 = "1zy53fabazimwv5cl0366k834ybixzl84lxj9mfavbnlfn532a0d"; + procMacro = true; + libName = "enum_ordinalize_derive"; + dependencies = [ + { + name = "proc-macro2"; + packageId = "proc-macro2"; + } + { + name = "quote"; + packageId = "quote"; + } + { + name = "syn"; + packageId = "syn 2.0.87"; + } + ]; + features = { + }; + }; "equivalent" = rec { crateName = "equivalent"; version = "1.0.1"; @@ -3046,6 +3405,22 @@ rec { }; resolvedDefaultFeatures = [ "default" "perf" "std" "unicode" ]; }; + "fastrand" = rec { + crateName = "fastrand"; + version = "2.3.0"; + edition = "2018"; + sha256 = "1ghiahsw1jd68df895cy5h3gzwk30hndidn3b682zmshpgmrx41p"; + authors = [ + "Stjepan Glavina " + ]; + features = { + "default" = [ "std" ]; + "getrandom" = [ "dep:getrandom" ]; + "js" = [ "std" "getrandom" ]; + "std" = [ "alloc" ]; + }; + resolvedDefaultFeatures = [ "alloc" "std" ]; + }; "flate2" = rec { crateName = "flate2"; version = "1.0.33"; @@ -3092,27 +3467,7 @@ rec { "zlib-ng-compat" = [ "zlib" "libz-sys/zlib-ng" ]; "zlib-rs" = [ "any_zlib" "libz-rs-sys" ]; }; - resolvedDefaultFeatures = [ "any_impl" "miniz_oxide" "rust_backend" ]; - }; - "fluent-uri" = rec { - crateName = "fluent-uri"; - version = "0.1.4"; - edition = "2021"; - sha256 = "03ah2qajw5l1zbc81kh1n8g7n24mfxbg6vqyv9ixipg1vglh9iqp"; - libName = "fluent_uri"; - authors = [ - "Scallop Ye " - ]; - dependencies = [ - { - name = "bitflags"; - packageId = "bitflags 1.3.2"; - } - ]; - features = { - "default" = [ "std" ]; - }; - resolvedDefaultFeatures = [ "std" ]; + resolvedDefaultFeatures = [ "any_impl" "default" "miniz_oxide" "rust_backend" ]; }; "fnv" = rec { crateName = "fnv"; @@ -3128,6 +3483,18 @@ rec { }; resolvedDefaultFeatures = [ "default" "std" ]; }; + "foldhash" = rec { + crateName = "foldhash"; + version = "0.1.5"; + edition = "2021"; + sha256 = "1wisr1xlc2bj7hk4rgkcjkz3j2x4dhd1h9lwk7mj8p71qpdgbi6r"; + authors = [ + "Orson Peters " + ]; + features = { + "default" = [ "std" ]; + }; + }; "form_urlencoded" = rec { crateName = "form_urlencoded"; version = "1.2.1"; @@ -3312,7 +3679,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.87"; features = [ "full" ]; } ]; @@ -3441,7 +3808,7 @@ rec { "unstable" = [ "futures-core/unstable" "futures-task/unstable" ]; "write-all-vectored" = [ "io" ]; }; - resolvedDefaultFeatures = [ "alloc" "async-await" "async-await-macro" "channel" "futures-channel" "futures-io" "futures-macro" "futures-sink" "io" "memchr" "sink" "slab" "std" ]; + resolvedDefaultFeatures = [ "alloc" "async-await" "async-await-macro" "channel" "default" "futures-channel" "futures-io" "futures-macro" "futures-sink" "io" "memchr" "sink" "slab" "std" ]; }; "generic-array" = rec { crateName = "generic-array"; @@ -3471,7 +3838,7 @@ rec { }; resolvedDefaultFeatures = [ "more_lengths" ]; }; - "getrandom" = rec { + "getrandom 0.2.15" = rec { crateName = "getrandom"; version = "0.2.15"; edition = "2018"; @@ -3492,7 +3859,7 @@ rec { } { name = "wasi"; - packageId = "wasi"; + packageId = "wasi 0.11.0+wasi-snapshot-preview1"; usesDefaultFeatures = false; target = { target, features }: ("wasi" == target."os" or null); } @@ -3507,6 +3874,86 @@ rec { }; resolvedDefaultFeatures = [ "std" ]; }; + "getrandom 0.3.2" = rec { + crateName = "getrandom"; + version = "0.3.2"; + edition = "2021"; + sha256 = "1w2mlixa1989v7czr68iji7h67yra2pbg3s480wsqjza1r2sizkk"; + authors = [ + "The Rand Project Developers" + ]; + dependencies = [ + { + name = "cfg-if"; + packageId = "cfg-if"; + } + { + name = "libc"; + packageId = "libc"; + usesDefaultFeatures = false; + target = { target, features }: ((("linux" == target."os" or null) || ("android" == target."os" or null)) && (!((("linux" == target."os" or null) && ("" == target."env" or null)) || ("custom" == target."getrandom_backend" or null) || ("linux_raw" == target."getrandom_backend" or null) || ("rdrand" == target."getrandom_backend" or null) || ("rndr" == target."getrandom_backend" or null)))); + } + { + name = "libc"; + packageId = "libc"; + usesDefaultFeatures = false; + target = { target, features }: (("dragonfly" == target."os" or null) || ("freebsd" == target."os" or null) || ("hurd" == target."os" or null) || ("illumos" == target."os" or null) || ("cygwin" == target."os" or null) || (("horizon" == target."os" or null) && ("arm" == target."arch" or null))); + } + { + name = "libc"; + packageId = "libc"; + usesDefaultFeatures = false; + target = { target, features }: (("haiku" == target."os" or null) || ("redox" == target."os" or null) || ("nto" == target."os" or null) || ("aix" == target."os" or null)); + } + { + name = "libc"; + packageId = "libc"; + usesDefaultFeatures = false; + target = { target, features }: (("ios" == target."os" or null) || ("visionos" == target."os" or null) || ("watchos" == target."os" or null) || ("tvos" == target."os" or null)); + } + { + name = "libc"; + packageId = "libc"; + usesDefaultFeatures = false; + target = { target, features }: (("macos" == target."os" or null) || ("openbsd" == target."os" or null) || ("vita" == target."os" or null) || ("emscripten" == target."os" or null)); + } + { + name = "libc"; + packageId = "libc"; + usesDefaultFeatures = false; + target = { target, features }: ("netbsd" == target."os" or null); + } + { + name = "libc"; + packageId = "libc"; + usesDefaultFeatures = false; + target = { target, features }: ("solaris" == target."os" or null); + } + { + name = "libc"; + packageId = "libc"; + usesDefaultFeatures = false; + target = { target, features }: ("vxworks" == target."os" or null); + } + { + name = "r-efi"; + packageId = "r-efi"; + usesDefaultFeatures = false; + target = { target, features }: (("uefi" == target."os" or null) && ("efi_rng" == target."getrandom_backend" or null)); + } + { + name = "wasi"; + packageId = "wasi 0.14.2+wasi-0.2.4"; + usesDefaultFeatures = false; + target = { target, features }: (("wasm32" == target."arch" or null) && ("wasi" == target."os" or null) && ("p2" == target."env" or null)); + } + ]; + features = { + "rustc-dep-of-std" = [ "dep:compiler_builtins" "dep:core" ]; + "wasm_js" = [ "dep:wasm-bindgen" "dep:js-sys" ]; + }; + resolvedDefaultFeatures = [ "std" ]; + }; "gimli" = rec { crateName = "gimli"; version = "0.29.0"; @@ -3603,6 +4050,42 @@ rec { ]; }; + "gloo-timers" = rec { + crateName = "gloo-timers"; + version = "0.3.0"; + edition = "2021"; + sha256 = "1519157n7xppkk6pdw5w52vy1llzn5iljkqd7q1h5609jv7l7cdv"; + libName = "gloo_timers"; + authors = [ + "Rust and WebAssembly Working Group" + ]; + dependencies = [ + { + name = "futures-channel"; + packageId = "futures-channel"; + optional = true; + } + { + name = "futures-core"; + packageId = "futures-core"; + optional = true; + } + { + name = "js-sys"; + packageId = "js-sys"; + } + { + name = "wasm-bindgen"; + packageId = "wasm-bindgen"; + } + ]; + features = { + "futures" = [ "futures-core" "futures-channel" ]; + "futures-channel" = [ "dep:futures-channel" ]; + "futures-core" = [ "dep:futures-core" ]; + }; + resolvedDefaultFeatures = [ "default" "futures" "futures-channel" "futures-core" ]; + }; "h2" = rec { crateName = "h2"; version = "0.4.6"; @@ -3641,7 +4124,7 @@ rec { } { name = "indexmap"; - packageId = "indexmap"; + packageId = "indexmap 2.5.0"; features = [ "std" ]; } { @@ -3675,7 +4158,29 @@ rec { features = { }; }; - "hashbrown" = rec { + "hashbrown 0.12.3" = rec { + crateName = "hashbrown"; + version = "0.12.3"; + edition = "2021"; + sha256 = "1268ka4750pyg2pbgsr43f0289l5zah4arir2k4igx5a8c6fg7la"; + authors = [ + "Amanieu d'Antras " + ]; + features = { + "ahash" = [ "dep:ahash" ]; + "ahash-compile-time-rng" = [ "ahash/compile-time-rng" ]; + "alloc" = [ "dep:alloc" ]; + "bumpalo" = [ "dep:bumpalo" ]; + "compiler_builtins" = [ "dep:compiler_builtins" ]; + "core" = [ "dep:core" ]; + "default" = [ "ahash" "inline-more" ]; + "rayon" = [ "dep:rayon" ]; + "rustc-dep-of-std" = [ "nightly" "core" "compiler_builtins" "alloc" "rustc-internal-api" ]; + "serde" = [ "dep:serde" ]; + }; + resolvedDefaultFeatures = [ "raw" ]; + }; + "hashbrown 0.14.5" = rec { crateName = "hashbrown"; version = "0.14.5"; edition = "2021"; @@ -3683,36 +4188,65 @@ rec { authors = [ "Amanieu d'Antras " ]; - dependencies = [ + features = { + "ahash" = [ "dep:ahash" ]; + "alloc" = [ "dep:alloc" ]; + "allocator-api2" = [ "dep:allocator-api2" ]; + "compiler_builtins" = [ "dep:compiler_builtins" ]; + "core" = [ "dep:core" ]; + "default" = [ "ahash" "inline-more" "allocator-api2" ]; + "equivalent" = [ "dep:equivalent" ]; + "nightly" = [ "allocator-api2?/nightly" "bumpalo/allocator_api" ]; + "rayon" = [ "dep:rayon" ]; + "rkyv" = [ "dep:rkyv" ]; + "rustc-dep-of-std" = [ "nightly" "core" "compiler_builtins" "alloc" "rustc-internal-api" ]; + "serde" = [ "dep:serde" ]; + }; + resolvedDefaultFeatures = [ "raw" ]; + }; + "hashbrown 0.15.2" = rec { + crateName = "hashbrown"; + version = "0.15.2"; + edition = "2021"; + sha256 = "12dj0yfn59p3kh3679ac0w1fagvzf4z2zp87a13gbbqbzw0185dz"; + authors = [ + "Amanieu d'Antras " + ]; + dependencies = [ { - name = "ahash"; - packageId = "ahash"; + name = "allocator-api2"; + packageId = "allocator-api2"; optional = true; usesDefaultFeatures = false; + features = [ "alloc" ]; } { - name = "allocator-api2"; - packageId = "allocator-api2"; + name = "equivalent"; + packageId = "equivalent"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "foldhash"; + packageId = "foldhash"; optional = true; usesDefaultFeatures = false; - features = [ "alloc" ]; } ]; features = { - "ahash" = [ "dep:ahash" ]; "alloc" = [ "dep:alloc" ]; "allocator-api2" = [ "dep:allocator-api2" ]; "compiler_builtins" = [ "dep:compiler_builtins" ]; "core" = [ "dep:core" ]; - "default" = [ "ahash" "inline-more" "allocator-api2" ]; + "default" = [ "default-hasher" "inline-more" "allocator-api2" "equivalent" "raw-entry" ]; + "default-hasher" = [ "dep:foldhash" ]; "equivalent" = [ "dep:equivalent" ]; "nightly" = [ "allocator-api2?/nightly" "bumpalo/allocator_api" ]; "rayon" = [ "dep:rayon" ]; - "rkyv" = [ "dep:rkyv" ]; - "rustc-dep-of-std" = [ "nightly" "core" "compiler_builtins" "alloc" "rustc-internal-api" ]; + "rustc-dep-of-std" = [ "nightly" "core" "compiler_builtins" "alloc" "rustc-internal-api" "raw-entry" ]; "serde" = [ "dep:serde" ]; }; - resolvedDefaultFeatures = [ "ahash" "allocator-api2" "default" "inline-more" "raw" ]; + resolvedDefaultFeatures = [ "allocator-api2" "default" "default-hasher" "equivalent" "inline-more" "raw-entry" ]; }; "headers" = rec { crateName = "headers"; @@ -3841,6 +4375,31 @@ rec { ]; }; + "hostname" = rec { + crateName = "hostname"; + version = "0.4.1"; + edition = "2021"; + sha256 = "0rbxryl68bwv8hkjdjd8f37kdb10fncgsqrqksv64qy7s4y20vx5"; + dependencies = [ + { + name = "cfg-if"; + packageId = "cfg-if"; + } + { + name = "libc"; + packageId = "libc"; + target = { target, features }: ((target."unix" or false) || ("redox" == target."os" or null)); + } + { + name = "windows-link"; + packageId = "windows-link"; + target = { target, features }: ("windows" == target."os" or null); + } + ]; + features = { + }; + resolvedDefaultFeatures = [ "default" ]; + }; "http" = rec { crateName = "http"; version = "1.1.0"; @@ -3971,9 +4530,9 @@ rec { }; "hyper" = rec { crateName = "hyper"; - version = "1.4.1"; + version = "1.6.0"; edition = "2021"; - sha256 = "01ds8i3q6hw5kw56mavy544m11gkr87zi999siigdl3n1qpd5psh"; + sha256 = "103ggny2k31z0iq2gzwk2vbx601wx6xkpjpxn40hr3p3b0b5fayc"; authors = [ "Sean McArthur " ]; @@ -4055,6 +4614,10 @@ rec { usesDefaultFeatures = false; features = [ "alloc" "sink" ]; } + { + name = "pin-project-lite"; + packageId = "pin-project-lite"; + } { name = "tokio"; packageId = "tokio"; @@ -4063,7 +4626,7 @@ rec { ]; features = { "client" = [ "dep:want" "dep:pin-project-lite" "dep:smallvec" ]; - "ffi" = [ "dep:libc" "dep:http-body-util" "futures-util?/alloc" ]; + "ffi" = [ "dep:http-body-util" "futures-util?/alloc" ]; "full" = [ "client" "http1" "http2" "server" ]; "http1" = [ "dep:futures-channel" "dep:futures-util" "dep:httparse" "dep:itoa" ]; "http2" = [ "dep:futures-channel" "dep:futures-util" "dep:h2" ]; @@ -4302,7 +4865,7 @@ rec { } { name = "thiserror"; - packageId = "thiserror"; + packageId = "thiserror 1.0.63"; } { name = "tokio"; @@ -4383,9 +4946,9 @@ rec { }; "hyper-util" = rec { crateName = "hyper-util"; - version = "0.1.7"; + version = "0.1.11"; edition = "2021"; - sha256 = "1fg9h591skksq5zxnffyisj7487jhdcgj6c7bvlkckn535bhbryd"; + sha256 = "1wj3svb1r6yv6kgk5fsz6wwajmngc4zxcw4wxpwlmpbgl8rvqys9"; libName = "hyper_util"; authors = [ "Sean McArthur " @@ -4417,6 +4980,11 @@ rec { name = "hyper"; packageId = "hyper"; } + { + name = "libc"; + packageId = "libc"; + optional = true; + } { name = "pin-project-lite"; packageId = "pin-project-lite"; @@ -4433,13 +5001,6 @@ rec { optional = true; usesDefaultFeatures = false; } - { - name = "tower"; - packageId = "tower"; - optional = true; - usesDefaultFeatures = false; - features = [ "make" "util" ]; - } { name = "tower-service"; packageId = "tower-service"; @@ -4470,18 +5031,19 @@ rec { } ]; features = { - "client" = [ "hyper/client" "dep:tracing" "dep:futures-channel" "dep:tower" "dep:tower-service" ]; - "client-legacy" = [ "client" "dep:socket2" "tokio/sync" ]; - "full" = [ "client" "client-legacy" "server" "server-auto" "server-graceful" "service" "http1" "http2" "tokio" ]; + "client" = [ "hyper/client" "dep:tracing" "dep:futures-channel" "dep:tower-service" ]; + "client-legacy" = [ "client" "dep:socket2" "tokio/sync" "dep:libc" ]; + "full" = [ "client" "client-legacy" "server" "server-auto" "server-graceful" "service" "http1" "http2" "tokio" "tracing" ]; "http1" = [ "hyper/http1" ]; "http2" = [ "hyper/http2" ]; "server" = [ "hyper/server" ]; "server-auto" = [ "server" "http1" "http2" ]; - "server-graceful" = [ "server" "tokio/sync" ]; - "service" = [ "dep:tower" "dep:tower-service" ]; + "server-graceful" = [ "server" "tokio/sync" "futures-util/alloc" ]; + "service" = [ "dep:tower-service" ]; "tokio" = [ "dep:tokio" "tokio/net" "tokio/rt" "tokio/time" ]; + "tracing" = [ "dep:tracing" ]; }; - resolvedDefaultFeatures = [ "client" "client-legacy" "default" "http1" "http2" "server" "tokio" ]; + resolvedDefaultFeatures = [ "client" "client-legacy" "default" "http1" "http2" "server" "server-auto" "service" "tokio" ]; }; "iana-time-zone" = rec { crateName = "iana-time-zone"; @@ -4632,7 +5194,35 @@ rec { features = { }; }; - "indexmap" = rec { + "indexmap 1.9.3" = rec { + crateName = "indexmap"; + version = "1.9.3"; + edition = "2021"; + sha256 = "16dxmy7yvk51wvnih3a3im6fp5lmx0wx76i03n06wyak6cwhw1xx"; + dependencies = [ + { + name = "hashbrown"; + packageId = "hashbrown 0.12.3"; + usesDefaultFeatures = false; + features = [ "raw" ]; + } + ]; + buildDependencies = [ + { + name = "autocfg"; + packageId = "autocfg"; + } + ]; + features = { + "arbitrary" = [ "dep:arbitrary" ]; + "quickcheck" = [ "dep:quickcheck" ]; + "rayon" = [ "dep:rayon" ]; + "rustc-rayon" = [ "dep:rustc-rayon" ]; + "serde" = [ "dep:serde" ]; + "serde-1" = [ "serde" ]; + }; + }; + "indexmap 2.5.0" = rec { crateName = "indexmap"; version = "2.5.0"; edition = "2021"; @@ -4645,7 +5235,7 @@ rec { } { name = "hashbrown"; - packageId = "hashbrown"; + packageId = "hashbrown 0.14.5"; usesDefaultFeatures = false; features = [ "raw" ]; } @@ -4686,45 +5276,6 @@ rec { "std" = [ "block-padding/std" ]; }; }; - "instant" = rec { - crateName = "instant"; - version = "0.1.13"; - edition = "2018"; - sha256 = "08h27kzvb5jw74mh0ajv0nv9ggwvgqm8ynjsn2sa9jsks4cjh970"; - authors = [ - "sebcrozet " - ]; - dependencies = [ - { - name = "cfg-if"; - packageId = "cfg-if"; - } - ]; - features = { - "js-sys" = [ "dep:js-sys" ]; - "stdweb" = [ "dep:stdweb" ]; - "wasm-bindgen" = [ "js-sys" "wasm-bindgen_rs" "web-sys" ]; - "wasm-bindgen_rs" = [ "dep:wasm-bindgen_rs" ]; - "web-sys" = [ "dep:web-sys" ]; - }; - }; - "integer-encoding" = rec { - crateName = "integer-encoding"; - version = "3.0.4"; - edition = "2018"; - sha256 = "00ng7jmv6pqwqc8w1297f768bn0spwwicdr7hb40baax00r3gc4b"; - libName = "integer_encoding"; - authors = [ - "Lewin Bormann " - ]; - features = { - "async-trait" = [ "dep:async-trait" ]; - "futures-util" = [ "dep:futures-util" ]; - "futures_async" = [ "futures-util" "async-trait" ]; - "tokio" = [ "dep:tokio" ]; - "tokio_async" = [ "tokio" "async-trait" ]; - }; - }; "ipnet" = rec { crateName = "ipnet"; version = "2.9.0"; @@ -4752,7 +5303,7 @@ rec { }; resolvedDefaultFeatures = [ "default" ]; }; - "itertools" = rec { + "itertools 0.13.0" = rec { crateName = "itertools"; version = "0.13.0"; edition = "2018"; @@ -4772,6 +5323,27 @@ rec { "use_std" = [ "use_alloc" "either/use_std" ]; }; }; + "itertools 0.14.0" = rec { + crateName = "itertools"; + version = "0.14.0"; + edition = "2018"; + sha256 = "118j6l1vs2mx65dqhwyssbrxpawa90886m3mzafdvyip41w2q69b"; + authors = [ + "bluss" + ]; + dependencies = [ + { + name = "either"; + packageId = "either"; + usesDefaultFeatures = false; + } + ]; + features = { + "default" = [ "use_std" ]; + "use_std" = [ "use_alloc" "either/use_std" ]; + }; + resolvedDefaultFeatures = [ "default" "use_alloc" "use_std" ]; + }; "itoa" = rec { crateName = "itoa"; version = "1.0.11"; @@ -4828,9 +5400,9 @@ rec { }; "json-patch" = rec { crateName = "json-patch"; - version = "2.0.0"; + version = "4.0.0"; edition = "2021"; - sha256 = "1z1h6dyy4lx4z74yby2hvgl4jbm8mh5ymjp6fwcdkyi3923bh7sv"; + sha256 = "1x7sn0j8qxkdm5rrvzhz3kvsl9bb9s24szpa9ijgffd0c7b994hm"; libName = "json_patch"; authors = [ "Ivan Dubrov " @@ -4851,7 +5423,7 @@ rec { } { name = "thiserror"; - packageId = "thiserror"; + packageId = "thiserror 1.0.63"; } ]; devDependencies = [ @@ -4869,22 +5441,14 @@ rec { }; "jsonpath-rust" = rec { crateName = "jsonpath-rust"; - version = "0.5.1"; - edition = "2018"; - sha256 = "0032bp43w6k1bl8h55m126cdf8xljj8p736f65gp3zvhpn2zxn0r"; + version = "0.7.5"; + edition = "2021"; + sha256 = "12qjqd6rnr1ywky7k38dhbhgj3f6h6iqrac2kz8d53wziwsaw00c"; libName = "jsonpath_rust"; authors = [ "BorisZhguchev " ]; dependencies = [ - { - name = "lazy_static"; - packageId = "lazy_static"; - } - { - name = "once_cell"; - packageId = "once_cell"; - } { name = "pest"; packageId = "pest"; @@ -4903,54 +5467,53 @@ rec { } { name = "thiserror"; - packageId = "thiserror"; + packageId = "thiserror 2.0.12"; } ]; }; "jsonptr" = rec { crateName = "jsonptr"; - version = "0.4.7"; + version = "0.7.1"; edition = "2021"; - sha256 = "09s6bqjlkd1m5z9hi9iwjimiri7wx3fd6d88hara0p27968m4vhw"; + sha256 = "1zk1wmr3c9v1bgqg68yl1yscnz4442zrbciv1g72pmx51dkcr8x5"; authors = [ "chance dinkins" + "André Sá de Mello " + "Oliver Wangler " ]; dependencies = [ - { - name = "fluent-uri"; - packageId = "fluent-uri"; - optional = true; - usesDefaultFeatures = false; - } { name = "serde"; packageId = "serde"; - usesDefaultFeatures = false; + optional = true; features = [ "alloc" ]; } { name = "serde_json"; packageId = "serde_json"; - usesDefaultFeatures = false; + optional = true; features = [ "alloc" ]; } ]; features = { - "default" = [ "std" ]; - "fluent-uri" = [ "dep:fluent-uri" ]; - "std" = [ "serde/std" "serde_json/std" "fluent-uri?/std" ]; - "uniresid" = [ "dep:uniresid" ]; - "url" = [ "dep:url" ]; + "default" = [ "std" "serde" "json" "resolve" "assign" "delete" ]; + "delete" = [ "resolve" ]; + "json" = [ "dep:serde_json" "serde" ]; + "miette" = [ "dep:miette" "std" ]; + "serde" = [ "dep:serde" ]; + "std" = [ "serde/std" "serde_json?/std" ]; + "syn" = [ "dep:syn" ]; + "toml" = [ "dep:toml" "serde" "std" ]; }; - resolvedDefaultFeatures = [ "default" "std" ]; + resolvedDefaultFeatures = [ "assign" "default" "delete" "json" "resolve" "serde" "std" ]; }; "k8s-openapi" = rec { crateName = "k8s-openapi"; - version = "0.22.0"; + version = "0.24.0"; edition = "2021"; - links = "k8s-openapi-0.22.0"; - sha256 = "0mcpy1gdxpqayc74i3x3ayh3q5bl6dzvsgmw91jq1r9sjkxill0r"; + links = "k8s-openapi-0.24.0"; + sha256 = "1m8ahw59g44kp9p4yd4ar0px15m2nyvhc5krbvqvw2ag6a8bjx9c"; libName = "k8s_openapi"; authors = [ "Arnav Singh " @@ -4992,17 +5555,51 @@ rec { } ]; features = { - "earliest" = [ "v1_24" ]; - "latest" = [ "v1_30" ]; + "earliest" = [ "v1_28" ]; + "latest" = [ "v1_32" ]; "schemars" = [ "dep:schemars" ]; }; - resolvedDefaultFeatures = [ "schemars" "v1_30" ]; + resolvedDefaultFeatures = [ "schemars" "v1_32" ]; + }; + "k8s-version" = rec { + crateName = "k8s-version"; + version = "0.1.2"; + edition = "2024"; + workspace_member = null; + src = pkgs.fetchgit { + url = "https://github.com/stackabletech/operator-rs.git"; + rev = "5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1"; + sha256 = "0li9smdrz7danqz17lfkl0j9zl2i84csgc7d01lxs5qi8jcs9fzw"; + }; + libName = "k8s_version"; + authors = [ + "Stackable GmbH " + ]; + dependencies = [ + { + name = "darling"; + packageId = "darling"; + optional = true; + } + { + name = "regex"; + packageId = "regex"; + } + { + name = "snafu"; + packageId = "snafu 0.8.4"; + } + ]; + features = { + "darling" = [ "dep:darling" ]; + }; + resolvedDefaultFeatures = [ "darling" ]; }; "kube" = rec { crateName = "kube"; - version = "0.93.1"; + version = "0.99.0"; edition = "2021"; - sha256 = "05k4wwb1f1hs0izn4hnyaw0l1wljqh0sh74wc4ijs6mgfl094r83"; + sha256 = "0vnaqmxk40i2jgwxqsk8x75rn1j37p93gv3zx6mlhssk200b4kls"; authors = [ "clux " "Natalie Klestrup Röijezon " @@ -5045,34 +5642,37 @@ rec { ]; features = { "admission" = [ "kube-core/admission" ]; + "aws-lc-rs" = [ "kube-client?/aws-lc-rs" ]; "client" = [ "kube-client/client" "config" ]; "config" = [ "kube-client/config" ]; - "default" = [ "client" "rustls-tls" ]; + "default" = [ "client" "rustls-tls" "ring" ]; "derive" = [ "kube-derive" "kube-core/schema" ]; - "gzip" = [ "kube-client/gzip" ]; - "http-proxy" = [ "kube-client/http-proxy" ]; + "gzip" = [ "kube-client/gzip" "client" ]; + "http-proxy" = [ "kube-client/http-proxy" "client" ]; "jsonpatch" = [ "kube-core/jsonpatch" ]; "kube-client" = [ "dep:kube-client" ]; "kube-derive" = [ "dep:kube-derive" ]; "kube-runtime" = [ "dep:kube-runtime" ]; "kubelet-debug" = [ "kube-client/kubelet-debug" "kube-core/kubelet-debug" ]; - "oauth" = [ "kube-client/oauth" ]; - "oidc" = [ "kube-client/oidc" ]; - "openssl-tls" = [ "kube-client/openssl-tls" ]; + "oauth" = [ "kube-client/oauth" "client" ]; + "oidc" = [ "kube-client/oidc" "client" ]; + "openssl-tls" = [ "kube-client/openssl-tls" "client" ]; + "ring" = [ "kube-client?/ring" ]; "runtime" = [ "kube-runtime" ]; - "rustls-tls" = [ "kube-client/rustls-tls" ]; - "socks5" = [ "kube-client/socks5" ]; - "unstable-client" = [ "kube-client/unstable-client" ]; - "unstable-runtime" = [ "kube-runtime/unstable-runtime" ]; + "rustls-tls" = [ "kube-client/rustls-tls" "client" ]; + "socks5" = [ "kube-client/socks5" "client" ]; + "unstable-client" = [ "kube-client/unstable-client" "client" ]; + "unstable-runtime" = [ "kube-runtime/unstable-runtime" "runtime" ]; + "webpki-roots" = [ "kube-client/webpki-roots" "client" ]; "ws" = [ "kube-client/ws" "kube-core/ws" ]; }; - resolvedDefaultFeatures = [ "client" "config" "derive" "http-proxy" "jsonpatch" "kube-client" "kube-derive" "kube-runtime" "runtime" "rustls-tls" "socks5" "ws" ]; + resolvedDefaultFeatures = [ "client" "config" "derive" "http-proxy" "jsonpatch" "kube-client" "kube-derive" "kube-runtime" "ring" "runtime" "rustls-tls" "socks5" "ws" ]; }; "kube-client" = rec { crateName = "kube-client"; - version = "0.93.1"; + version = "0.99.0"; edition = "2021"; - sha256 = "00w69ym31mzdi7kmxq1cjjnjps92cvb7mad5jw6a842v7bmkc4yq"; + sha256 = "1wfciml6xcylhlwn72dbiq8vc57cs0a9dzn2bb8j1ps242ayvhkz"; libName = "kube_client"; authors = [ "clux " @@ -5144,7 +5744,7 @@ rec { packageId = "hyper-rustls"; optional = true; usesDefaultFeatures = false; - features = [ "http1" "logging" "native-tokio" "ring" "tls12" ]; + features = [ "http1" "logging" "native-tokio" "tls12" ]; } { name = "hyper-socks2"; @@ -5182,26 +5782,15 @@ rec { packageId = "pem"; optional = true; } - { - name = "rand"; - packageId = "rand"; - optional = true; - } { name = "rustls"; packageId = "rustls"; optional = true; usesDefaultFeatures = false; } - { - name = "rustls-pemfile"; - packageId = "rustls-pemfile"; - optional = true; - } { name = "secrecy"; packageId = "secrecy"; - features = [ "alloc" "serde" ]; } { name = "serde"; @@ -5219,7 +5808,7 @@ rec { } { name = "thiserror"; - packageId = "thiserror"; + packageId = "thiserror 2.0.12"; } { name = "tokio"; @@ -5240,13 +5829,13 @@ rec { } { name = "tower"; - packageId = "tower"; + packageId = "tower 0.5.2"; optional = true; features = [ "buffer" "filter" "util" ]; } { name = "tower-http"; - packageId = "tower-http"; + packageId = "tower-http 0.6.2"; optional = true; features = [ "auth" "map-response-body" "trace" ]; } @@ -5264,6 +5853,11 @@ rec { usesDefaultFeatures = false; features = [ "async-await" ]; } + { + name = "hyper"; + packageId = "hyper"; + features = [ "server" ]; + } { name = "k8s-openapi"; packageId = "k8s-openapi"; @@ -5279,12 +5873,13 @@ rec { features = { "__non_core" = [ "tracing" "serde_yaml" "base64" ]; "admission" = [ "kube-core/admission" ]; + "aws-lc-rs" = [ "hyper-rustls?/aws-lc-rs" ]; "base64" = [ "dep:base64" ]; "bytes" = [ "dep:bytes" ]; "chrono" = [ "dep:chrono" ]; "client" = [ "config" "__non_core" "hyper" "hyper-util" "http-body" "http-body-util" "tower" "tower-http" "hyper-timeout" "chrono" "jsonpath-rust" "bytes" "futures" "tokio" "tokio-util" "either" ]; "config" = [ "__non_core" "pem" "home" ]; - "default" = [ "client" ]; + "default" = [ "client" "ring" ]; "either" = [ "dep:either" ]; "form_urlencoded" = [ "dep:form_urlencoded" ]; "futures" = [ "dep:futures" ]; @@ -5308,10 +5903,9 @@ rec { "openssl" = [ "dep:openssl" ]; "openssl-tls" = [ "openssl" "hyper-openssl" ]; "pem" = [ "dep:pem" ]; - "rand" = [ "dep:rand" ]; + "ring" = [ "hyper-rustls?/ring" ]; "rustls" = [ "dep:rustls" ]; - "rustls-pemfile" = [ "dep:rustls-pemfile" ]; - "rustls-tls" = [ "rustls" "rustls-pemfile" "hyper-rustls" "hyper-http-proxy?/rustls-tls-native-roots" ]; + "rustls-tls" = [ "rustls" "hyper-rustls" "hyper-http-proxy?/rustls-tls-native-roots" ]; "serde_yaml" = [ "dep:serde_yaml" ]; "socks5" = [ "hyper-socks2" ]; "tame-oauth" = [ "dep:tame-oauth" ]; @@ -5321,15 +5915,16 @@ rec { "tower" = [ "dep:tower" ]; "tower-http" = [ "dep:tower-http" ]; "tracing" = [ "dep:tracing" ]; - "ws" = [ "client" "tokio-tungstenite" "rand" "kube-core/ws" "tokio/macros" ]; + "webpki-roots" = [ "hyper-rustls/webpki-roots" ]; + "ws" = [ "client" "tokio-tungstenite" "kube-core/ws" "tokio/macros" ]; }; - resolvedDefaultFeatures = [ "__non_core" "base64" "bytes" "chrono" "client" "config" "either" "futures" "home" "http-body" "http-body-util" "http-proxy" "hyper" "hyper-http-proxy" "hyper-rustls" "hyper-socks2" "hyper-timeout" "hyper-util" "jsonpatch" "jsonpath-rust" "pem" "rand" "rustls" "rustls-pemfile" "rustls-tls" "serde_yaml" "socks5" "tokio" "tokio-tungstenite" "tokio-util" "tower" "tower-http" "tracing" "ws" ]; + resolvedDefaultFeatures = [ "__non_core" "base64" "bytes" "chrono" "client" "config" "either" "futures" "home" "http-body" "http-body-util" "http-proxy" "hyper" "hyper-http-proxy" "hyper-rustls" "hyper-socks2" "hyper-timeout" "hyper-util" "jsonpatch" "jsonpath-rust" "pem" "ring" "rustls" "rustls-tls" "serde_yaml" "socks5" "tokio" "tokio-tungstenite" "tokio-util" "tower" "tower-http" "tracing" "ws" ]; }; "kube-core" = rec { crateName = "kube-core"; - version = "0.93.1"; + version = "0.99.0"; edition = "2021"; - sha256 = "1rhg99v7w5qrj3ikh6n0pbbhp1kj6q7spvydcf846zbq9nkp7qyc"; + sha256 = "0xf60y07xkqqqqyl7rvk2r4amcvch61r2j49ssk0rrsqvf9hf3gz"; libName = "kube_core"; authors = [ "clux " @@ -5371,13 +5966,17 @@ rec { packageId = "serde"; features = [ "derive" ]; } + { + name = "serde-value"; + packageId = "serde-value"; + } { name = "serde_json"; packageId = "serde_json"; } { name = "thiserror"; - packageId = "thiserror"; + packageId = "thiserror 2.0.12"; } ]; devDependencies = [ @@ -5400,9 +5999,9 @@ rec { }; "kube-derive" = rec { crateName = "kube-derive"; - version = "0.93.1"; + version = "0.99.0"; edition = "2021"; - sha256 = "1wkqxfjxx4lc8gapd44kylprwgxhk29cwpdy55ri47kr8jc6r8h4"; + sha256 = "1jclsj6ah0ijhzpd43ff0ipxs7i2r985ivm6r3m5zjppr66zaqn5"; procMacro = true; libName = "kube_derive"; authors = [ @@ -5423,23 +6022,35 @@ rec { name = "quote"; packageId = "quote"; } + { + name = "serde"; + packageId = "serde"; + features = [ "derive" ]; + } { name = "serde_json"; packageId = "serde_json"; } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.87"; features = [ "extra-traits" ]; } ]; + devDependencies = [ + { + name = "serde"; + packageId = "serde"; + features = [ "derive" ]; + } + ]; }; "kube-runtime" = rec { crateName = "kube-runtime"; - version = "0.93.1"; + version = "0.99.0"; edition = "2021"; - sha256 = "197zjakpach42n6s62qdh0g6qrs8cawzyhqb474qaq7d1wy7711v"; + sha256 = "1p7z4vl9l1hbqqqjx7qmkyq3rwhxp3nqa3if0qrqdgdlp7x4rww8"; libName = "kube_runtime"; authors = [ "clux " @@ -5464,12 +6075,14 @@ rec { packageId = "async-trait"; } { - name = "backoff"; - packageId = "backoff"; + name = "backon"; + packageId = "backon"; } { - name = "derivative"; - packageId = "derivative"; + name = "educe"; + packageId = "educe"; + usesDefaultFeatures = false; + features = [ "Clone" "Debug" "Hash" "PartialEq" ]; } { name = "futures"; @@ -5479,15 +6092,15 @@ rec { } { name = "hashbrown"; - packageId = "hashbrown"; + packageId = "hashbrown 0.15.2"; } { - name = "json-patch"; - packageId = "json-patch"; + name = "hostname"; + packageId = "hostname"; } { - name = "jsonptr"; - packageId = "jsonptr"; + name = "json-patch"; + packageId = "json-patch"; } { name = "k8s-openapi"; @@ -5518,7 +6131,7 @@ rec { } { name = "thiserror"; - packageId = "thiserror"; + packageId = "thiserror 2.0.12"; } { name = "tokio"; @@ -5553,7 +6166,7 @@ rec { } ]; features = { - "unstable-runtime" = [ "unstable-runtime-subscribe" "unstable-runtime-predicates" "unstable-runtime-stream-control" "unstable-runtime-reconcile-on" ]; + "unstable-runtime" = [ "unstable-runtime-subscribe" "unstable-runtime-stream-control" "unstable-runtime-reconcile-on" ]; }; }; "lazy_static" = rec { @@ -5571,9 +6184,9 @@ rec { }; "libc" = rec { crateName = "libc"; - version = "0.2.158"; - edition = "2015"; - sha256 = "0fb4qldw1jrxljrwz6bsjn8lv4rqizlqmab41q3j98q332xw9bfq"; + version = "0.2.171"; + edition = "2021"; + sha256 = "1mipla3dy3l59pfa9xy4iw2vdgn8n30dzf4vdnasjflxdqhkg6f1"; authors = [ "The Rust Project Developers" ]; @@ -5601,7 +6214,7 @@ rec { } { name = "windows-targets"; - packageId = "windows-targets 0.52.6"; + packageId = "windows-targets 0.48.5"; target = { target, features }: (target."windows" or false); } ]; @@ -5759,7 +6372,7 @@ rec { ]; }; - "matchit" = rec { + "matchit 0.7.3" = rec { crateName = "matchit"; version = "0.7.3"; edition = "2021"; @@ -5771,6 +6384,18 @@ rec { }; resolvedDefaultFeatures = [ "default" ]; }; + "matchit 0.8.4" = rec { + crateName = "matchit"; + version = "0.8.4"; + edition = "2021"; + sha256 = "1hzl48fwq1cn5dvshfly6vzkzqhfihya65zpj7nz7lfx82mgzqa7"; + authors = [ + "Ibraheem Ahmed " + ]; + features = { + }; + resolvedDefaultFeatures = [ "default" ]; + }; "memchr" = rec { crateName = "memchr"; version = "2.7.4"; @@ -5926,7 +6551,7 @@ rec { } { name = "wasi"; - packageId = "wasi"; + packageId = "wasi 0.11.0+wasi-snapshot-preview1"; target = { target, features }: ("wasi" == target."os" or null); } { @@ -6030,33 +6655,11 @@ rec { }; resolvedDefaultFeatures = [ "std" ]; }; - "num_cpus" = rec { - crateName = "num_cpus"; - version = "1.16.0"; - edition = "2015"; - sha256 = "0hra6ihpnh06dvfvz9ipscys0xfqa9ca9hzp384d5m02ssvgqqa1"; - authors = [ - "Sean McArthur " - ]; - dependencies = [ - { - name = "hermit-abi"; - packageId = "hermit-abi"; - target = { target, features }: ("hermit" == target."os" or null); - } - { - name = "libc"; - packageId = "libc"; - target = { target, features }: (!(target."windows" or false)); - } - ]; - - }; - "num_enum" = rec { - crateName = "num_enum"; - version = "0.7.3"; - edition = "2021"; - sha256 = "0yai0vafhy85mvhknzfqd7lm04hzaln7i5c599rhy8mj831kyqaf"; + "num_enum" = rec { + crateName = "num_enum"; + version = "0.7.3"; + edition = "2021"; + sha256 = "0yai0vafhy85mvhknzfqd7lm04hzaln7i5c599rhy8mj831kyqaf"; authors = [ "Daniel Wagner-Hall " "Daniel Henry-Mantilla " @@ -6103,14 +6706,14 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.87"; features = [ "parsing" ]; } ]; devDependencies = [ { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.87"; features = [ "extra-traits" "parsing" ]; } ]; @@ -6200,27 +6803,25 @@ rec { }; "opentelemetry" = rec { crateName = "opentelemetry"; - version = "0.23.0"; + version = "0.28.0"; edition = "2021"; - sha256 = "0xia0flm8w561in05qd5axhaf7qgcfnrfibjdzh17rwk90fsjs8v"; + sha256 = "09k43sgaarw3zx5j434ngq1canpcjibsbxaqqa8dyp0acxxncvi3"; dependencies = [ { name = "futures-core"; packageId = "futures-core"; + optional = true; } { name = "futures-sink"; packageId = "futures-sink"; + optional = true; } { name = "js-sys"; packageId = "js-sys"; target = { target, features }: (("wasm32" == target."arch" or null) && (!("wasi" == target."os" or null))); } - { - name = "once_cell"; - packageId = "once_cell"; - } { name = "pin-project-lite"; packageId = "pin-project-lite"; @@ -6228,25 +6829,135 @@ rec { } { name = "thiserror"; - packageId = "thiserror"; + packageId = "thiserror 2.0.12"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "tracing"; + packageId = "tracing"; + optional = true; usesDefaultFeatures = false; } ]; features = { - "default" = [ "trace" ]; - "logs_level_enabled" = [ "logs" ]; + "default" = [ "trace" "metrics" "logs" "internal-logs" ]; + "futures-core" = [ "dep:futures-core" ]; + "futures-sink" = [ "dep:futures-sink" ]; + "internal-logs" = [ "tracing" ]; "pin-project-lite" = [ "dep:pin-project-lite" ]; - "testing" = [ "trace" "metrics" ]; - "trace" = [ "pin-project-lite" ]; + "spec_unstable_logs_enabled" = [ "logs" ]; + "testing" = [ "trace" ]; + "thiserror" = [ "dep:thiserror" ]; + "trace" = [ "pin-project-lite" "futures-sink" "futures-core" "thiserror" ]; + "tracing" = [ "dep:tracing" ]; }; - resolvedDefaultFeatures = [ "default" "metrics" "pin-project-lite" "trace" ]; + resolvedDefaultFeatures = [ "default" "futures-core" "futures-sink" "internal-logs" "logs" "metrics" "pin-project-lite" "spec_unstable_logs_enabled" "thiserror" "trace" "tracing" ]; }; - "opentelemetry-jaeger" = rec { - crateName = "opentelemetry-jaeger"; - version = "0.22.0"; + "opentelemetry-appender-tracing" = rec { + crateName = "opentelemetry-appender-tracing"; + version = "0.28.1"; + edition = "2021"; + sha256 = "1h6x4pwk225yi8mxl3sqkhg5ya93z57i68267lzi2c7c7fpwf4y5"; + libName = "opentelemetry_appender_tracing"; + dependencies = [ + { + name = "opentelemetry"; + packageId = "opentelemetry"; + features = [ "logs" ]; + } + { + name = "tracing"; + packageId = "tracing"; + usesDefaultFeatures = false; + features = [ "std" ]; + } + { + name = "tracing-core"; + packageId = "tracing-core"; + usesDefaultFeatures = false; + } + { + name = "tracing-subscriber"; + packageId = "tracing-subscriber"; + usesDefaultFeatures = false; + features = [ "registry" "std" ]; + } + ]; + devDependencies = [ + { + name = "tracing-subscriber"; + packageId = "tracing-subscriber"; + usesDefaultFeatures = false; + features = [ "registry" "std" "env-filter" ]; + } + ]; + features = { + "experimental_metadata_attributes" = [ "dep:tracing-log" ]; + "experimental_use_tracing_span_context" = [ "tracing-opentelemetry" ]; + "log" = [ "dep:log" ]; + "spec_unstable_logs_enabled" = [ "opentelemetry/spec_unstable_logs_enabled" ]; + "tracing-opentelemetry" = [ "dep:tracing-opentelemetry" ]; + }; + resolvedDefaultFeatures = [ "default" ]; + }; + "opentelemetry-http" = rec { + crateName = "opentelemetry-http"; + version = "0.28.0"; + edition = "2021"; + sha256 = "0lv2sbsdr7b8bxnly92zzhlm1wzjbynib1xlkw9hs0qh56pkz1m8"; + libName = "opentelemetry_http"; + dependencies = [ + { + name = "async-trait"; + packageId = "async-trait"; + } + { + name = "bytes"; + packageId = "bytes"; + } + { + name = "http"; + packageId = "http"; + usesDefaultFeatures = false; + features = [ "std" ]; + } + { + name = "opentelemetry"; + packageId = "opentelemetry"; + features = [ "trace" ]; + } + { + name = "reqwest"; + packageId = "reqwest"; + optional = true; + usesDefaultFeatures = false; + features = [ "blocking" ]; + } + { + name = "tracing"; + packageId = "tracing"; + optional = true; + usesDefaultFeatures = false; + } + ]; + features = { + "default" = [ "internal-logs" ]; + "hyper" = [ "dep:http-body-util" "dep:hyper" "dep:hyper-util" "dep:tokio" ]; + "internal-logs" = [ "tracing" "opentelemetry/internal-logs" ]; + "reqwest" = [ "dep:reqwest" ]; + "reqwest-rustls" = [ "reqwest" "reqwest/rustls-tls-native-roots" ]; + "reqwest-rustls-webpki-roots" = [ "reqwest" "reqwest/rustls-tls-webpki-roots" ]; + "tracing" = [ "dep:tracing" ]; + }; + resolvedDefaultFeatures = [ "default" "internal-logs" "reqwest" "tracing" ]; + }; + "opentelemetry-otlp" = rec { + crateName = "opentelemetry-otlp"; + version = "0.28.0"; edition = "2021"; - sha256 = "17zivynwp600vqp94mm3xjid2lpr02zghaacgnhdjimpcwdlf6sh"; - libName = "opentelemetry_jaeger"; + sha256 = "148xq13ar11bvmk7pxbslrhh5pgf40bv83n6dlysigj1dm613vsv"; + libName = "opentelemetry_otlp"; dependencies = [ { name = "async-trait"; @@ -6257,37 +6968,66 @@ rec { packageId = "futures-core"; } { - name = "futures-util"; - packageId = "futures-util"; + name = "http"; + packageId = "http"; + optional = true; usesDefaultFeatures = false; - features = [ "std" "alloc" ]; + features = [ "std" ]; } { name = "opentelemetry"; packageId = "opentelemetry"; usesDefaultFeatures = false; - features = [ "trace" ]; } { - name = "opentelemetry-semantic-conventions"; - packageId = "opentelemetry-semantic-conventions"; + name = "opentelemetry-http"; + packageId = "opentelemetry-http"; + optional = true; + } + { + name = "opentelemetry-proto"; + packageId = "opentelemetry-proto"; + usesDefaultFeatures = false; } { name = "opentelemetry_sdk"; packageId = "opentelemetry_sdk"; usesDefaultFeatures = false; - features = [ "trace" ]; } { - name = "thrift"; - packageId = "thrift"; + name = "prost"; + packageId = "prost"; + optional = true; + } + { + name = "reqwest"; + packageId = "reqwest"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "thiserror"; + packageId = "thiserror 2.0.12"; + usesDefaultFeatures = false; } { name = "tokio"; packageId = "tokio"; optional = true; usesDefaultFeatures = false; - features = [ "net" "sync" ]; + features = [ "sync" "rt" ]; + } + { + name = "tonic"; + packageId = "tonic"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "tracing"; + packageId = "tracing"; + optional = true; + usesDefaultFeatures = false; } ]; devDependencies = [ @@ -6295,58 +7035,100 @@ rec { name = "tokio"; packageId = "tokio"; usesDefaultFeatures = false; - features = [ "net" "sync" ]; + features = [ "macros" "rt-multi-thread" ]; } ]; features = { - "async-std" = [ "dep:async-std" ]; - "base64" = [ "dep:base64" ]; - "collector_client" = [ "http" "opentelemetry-http" ]; - "full" = [ "collector_client" "hyper_collector_client" "hyper_tls_collector_client" "isahc_collector_client" "reqwest_collector_client" "reqwest_blocking_collector_client" "reqwest_rustls_collector_client" "wasm_collector_client" "rt-tokio" "rt-tokio-current-thread" "rt-async-std" "integration_test" ]; - "futures-executor" = [ "dep:futures-executor" ]; - "headers" = [ "dep:headers" ]; + "default" = [ "http-proto" "reqwest-blocking-client" "trace" "metrics" "logs" "internal-logs" ]; + "grpc-tonic" = [ "tonic" "prost" "http" "tokio" "opentelemetry-proto/gen-tonic" ]; + "gzip-tonic" = [ "tonic/gzip" ]; "http" = [ "dep:http" ]; - "hyper" = [ "dep:hyper" ]; - "hyper-tls" = [ "dep:hyper-tls" ]; - "hyper_collector_client" = [ "collector_client" "headers" "http" "hyper" "opentelemetry-http/tokio" "opentelemetry-http/hyper" ]; - "hyper_tls_collector_client" = [ "hyper_collector_client" "hyper-tls" ]; - "integration_test" = [ "tonic" "prost" "prost-types" "rt-tokio" "collector_client" "hyper_collector_client" "hyper_tls_collector_client" "reqwest_collector_client" "isahc_collector_client" ]; - "isahc" = [ "dep:isahc" ]; - "isahc_collector_client" = [ "isahc" "opentelemetry-http/isahc" ]; - "js-sys" = [ "dep:js-sys" ]; + "http-json" = [ "serde_json" "prost" "opentelemetry-http" "opentelemetry-proto/gen-tonic-messages" "opentelemetry-proto/with-serde" "http" "trace" "metrics" ]; + "http-proto" = [ "prost" "opentelemetry-http" "opentelemetry-proto/gen-tonic-messages" "http" "trace" "metrics" ]; + "hyper-client" = [ "opentelemetry-http/hyper" ]; + "integration-testing" = [ "tonic" "prost" "tokio/full" "trace" "logs" ]; + "internal-logs" = [ "tracing" "opentelemetry/internal-logs" ]; + "logs" = [ "opentelemetry/logs" "opentelemetry_sdk/logs" "opentelemetry-proto/logs" ]; + "metrics" = [ "opentelemetry/metrics" "opentelemetry_sdk/metrics" "opentelemetry-proto/metrics" ]; "opentelemetry-http" = [ "dep:opentelemetry-http" ]; - "pin-project-lite" = [ "dep:pin-project-lite" ]; "prost" = [ "dep:prost" ]; - "prost-types" = [ "dep:prost-types" ]; "reqwest" = [ "dep:reqwest" ]; - "reqwest_blocking_collector_client" = [ "reqwest/blocking" "collector_client" "headers" "opentelemetry-http/reqwest" ]; - "reqwest_collector_client" = [ "reqwest" "collector_client" "headers" "opentelemetry-http/reqwest" ]; - "reqwest_rustls_collector_client" = [ "reqwest_collector_client" "reqwest/rustls-tls-native-roots" ]; - "rt-async-std" = [ "async-std" "opentelemetry_sdk/rt-async-std" ]; - "rt-tokio" = [ "tokio" "opentelemetry_sdk/rt-tokio" ]; - "rt-tokio-current-thread" = [ "tokio" "opentelemetry_sdk/rt-tokio-current-thread" ]; + "reqwest-blocking-client" = [ "reqwest/blocking" "opentelemetry-http/reqwest" ]; + "reqwest-client" = [ "reqwest" "opentelemetry-http/reqwest" ]; + "reqwest-rustls" = [ "reqwest" "opentelemetry-http/reqwest-rustls" ]; + "reqwest-rustls-webpki-roots" = [ "reqwest" "opentelemetry-http/reqwest-rustls-webpki-roots" ]; + "serde" = [ "dep:serde" ]; + "serde_json" = [ "dep:serde_json" ]; + "serialize" = [ "serde" "serde_json" ]; + "tls" = [ "tonic/tls" ]; + "tls-roots" = [ "tls" "tonic/tls-roots" ]; + "tls-webpki-roots" = [ "tls" "tonic/tls-webpki-roots" ]; "tokio" = [ "dep:tokio" ]; "tonic" = [ "dep:tonic" ]; - "wasm-bindgen" = [ "dep:wasm-bindgen" ]; - "wasm-bindgen-futures" = [ "dep:wasm-bindgen-futures" ]; - "wasm_collector_client" = [ "base64" "http" "js-sys" "pin-project-lite" "wasm-bindgen" "wasm-bindgen-futures" "web-sys" ]; - "web-sys" = [ "dep:web-sys" ]; + "trace" = [ "opentelemetry/trace" "opentelemetry_sdk/trace" "opentelemetry-proto/trace" ]; + "tracing" = [ "dep:tracing" ]; + "zstd-tonic" = [ "tonic/zstd" ]; }; - resolvedDefaultFeatures = [ "default" "rt-tokio" "tokio" ]; + resolvedDefaultFeatures = [ "default" "grpc-tonic" "gzip-tonic" "http" "http-proto" "internal-logs" "logs" "metrics" "opentelemetry-http" "prost" "reqwest" "reqwest-blocking-client" "tokio" "tonic" "trace" "tracing" ]; }; - "opentelemetry-semantic-conventions" = rec { - crateName = "opentelemetry-semantic-conventions"; - version = "0.15.0"; + "opentelemetry-proto" = rec { + crateName = "opentelemetry-proto"; + version = "0.28.0"; edition = "2021"; - sha256 = "1mx45kzf86fs5558c7h90w6h2k3vi899n374l6l5np5kp55zns8q"; - libName = "opentelemetry_semantic_conventions"; - + sha256 = "0vbl4si1mny87pmqxxg6wday45pcc8bvpcrf46cpwwi4606qgy2n"; + libName = "opentelemetry_proto"; + dependencies = [ + { + name = "opentelemetry"; + packageId = "opentelemetry"; + usesDefaultFeatures = false; + } + { + name = "opentelemetry_sdk"; + packageId = "opentelemetry_sdk"; + usesDefaultFeatures = false; + } + { + name = "prost"; + packageId = "prost"; + optional = true; + } + { + name = "tonic"; + packageId = "tonic"; + optional = true; + usesDefaultFeatures = false; + features = [ "codegen" "prost" ]; + } + ]; + features = { + "base64" = [ "dep:base64" ]; + "default" = [ "full" ]; + "full" = [ "gen-tonic" "trace" "logs" "metrics" "zpages" "with-serde" "internal-logs" ]; + "gen-tonic" = [ "gen-tonic-messages" "tonic/transport" ]; + "gen-tonic-messages" = [ "tonic" "prost" ]; + "hex" = [ "dep:hex" ]; + "internal-logs" = [ "tracing" ]; + "logs" = [ "opentelemetry/logs" "opentelemetry_sdk/logs" ]; + "metrics" = [ "opentelemetry/metrics" "opentelemetry_sdk/metrics" ]; + "prost" = [ "dep:prost" ]; + "schemars" = [ "dep:schemars" ]; + "serde" = [ "dep:serde" ]; + "testing" = [ "opentelemetry/testing" ]; + "tonic" = [ "dep:tonic" ]; + "trace" = [ "opentelemetry/trace" "opentelemetry_sdk/trace" ]; + "tracing" = [ "dep:tracing" ]; + "with-schemars" = [ "schemars" ]; + "with-serde" = [ "serde" "hex" "base64" ]; + "zpages" = [ "trace" ]; + }; + resolvedDefaultFeatures = [ "gen-tonic" "gen-tonic-messages" "logs" "metrics" "prost" "tonic" "trace" ]; }; "opentelemetry_sdk" = rec { crateName = "opentelemetry_sdk"; - version = "0.23.0"; + version = "0.28.0"; edition = "2021"; - sha256 = "1zflfbjvp7hrfkny550py6rk0lngfph8dz97wv9842m9x9c2scdf"; + sha256 = "0w4mycm070f4knvi1x5v199apd1fvi0712qiyv0pz70889havpw4"; dependencies = [ { name = "async-trait"; @@ -6372,22 +7154,10 @@ rec { packageId = "glob"; optional = true; } - { - name = "lazy_static"; - packageId = "lazy_static"; - } - { - name = "once_cell"; - packageId = "once_cell"; - } { name = "opentelemetry"; packageId = "opentelemetry"; } - { - name = "ordered-float"; - packageId = "ordered-float 4.2.2"; - } { name = "percent-encoding"; packageId = "percent-encoding"; @@ -6395,14 +7165,19 @@ rec { } { name = "rand"; - packageId = "rand"; + packageId = "rand 0.8.5"; optional = true; usesDefaultFeatures = false; features = [ "std" "std_rng" "small_rng" ]; } + { + name = "serde_json"; + packageId = "serde_json"; + optional = true; + } { name = "thiserror"; - packageId = "thiserror"; + packageId = "thiserror 2.0.12"; usesDefaultFeatures = false; } { @@ -6417,32 +7192,45 @@ rec { packageId = "tokio-stream"; optional = true; } + { + name = "tracing"; + packageId = "tracing"; + optional = true; + usesDefaultFeatures = false; + } ]; features = { "async-std" = [ "dep:async-std" ]; "async-trait" = [ "dep:async-trait" ]; - "default" = [ "trace" ]; + "default" = [ "trace" "metrics" "logs" "internal-logs" ]; + "experimental_logs_batch_log_processor_with_async_runtime" = [ "logs" ]; + "experimental_metrics_disable_name_validation" = [ "metrics" ]; + "experimental_metrics_periodicreader_with_async_runtime" = [ "metrics" ]; + "experimental_trace_batch_span_processor_with_async_runtime" = [ "trace" ]; "glob" = [ "dep:glob" ]; "http" = [ "dep:http" ]; + "internal-logs" = [ "tracing" ]; "jaeger_remote_sampler" = [ "trace" "opentelemetry-http" "http" "serde" "serde_json" "url" ]; - "logs" = [ "opentelemetry/logs" "async-trait" "serde_json" ]; - "logs_level_enabled" = [ "logs" "opentelemetry/logs_level_enabled" ]; + "logs" = [ "opentelemetry/logs" "serde_json" ]; "metrics" = [ "opentelemetry/metrics" "glob" "async-trait" ]; "opentelemetry-http" = [ "dep:opentelemetry-http" ]; "percent-encoding" = [ "dep:percent-encoding" ]; "rand" = [ "dep:rand" ]; - "rt-async-std" = [ "async-std" ]; - "rt-tokio" = [ "tokio" "tokio-stream" ]; - "rt-tokio-current-thread" = [ "tokio" "tokio-stream" ]; + "rt-async-std" = [ "async-std" "experimental_async_runtime" ]; + "rt-tokio" = [ "tokio" "tokio-stream" "experimental_async_runtime" ]; + "rt-tokio-current-thread" = [ "tokio" "tokio-stream" "experimental_async_runtime" ]; "serde" = [ "dep:serde" ]; "serde_json" = [ "dep:serde_json" ]; + "spec_unstable_logs_enabled" = [ "logs" "opentelemetry/spec_unstable_logs_enabled" ]; + "spec_unstable_metrics_views" = [ "metrics" ]; "testing" = [ "opentelemetry/testing" "trace" "metrics" "logs" "rt-async-std" "rt-tokio" "rt-tokio-current-thread" "tokio/macros" "tokio/rt-multi-thread" ]; "tokio" = [ "dep:tokio" ]; "tokio-stream" = [ "dep:tokio-stream" ]; - "trace" = [ "opentelemetry/trace" "rand" "async-trait" "percent-encoding" ]; + "trace" = [ "opentelemetry/trace" "rand" "percent-encoding" ]; + "tracing" = [ "dep:tracing" ]; "url" = [ "dep:url" ]; }; - resolvedDefaultFeatures = [ "async-trait" "default" "glob" "metrics" "percent-encoding" "rand" "rt-tokio" "tokio" "tokio-stream" "trace" ]; + resolvedDefaultFeatures = [ "async-trait" "default" "experimental_async_runtime" "glob" "internal-logs" "logs" "metrics" "percent-encoding" "rand" "rt-tokio" "serde_json" "spec_unstable_logs_enabled" "tokio" "tokio-stream" "trace" "tracing" ]; }; "option-ext" = rec { crateName = "option-ext"; @@ -6455,7 +7243,7 @@ rec { ]; }; - "ordered-float 2.10.1" = rec { + "ordered-float" = rec { crateName = "ordered-float"; version = "2.10.1"; edition = "2018"; @@ -6485,43 +7273,6 @@ rec { }; resolvedDefaultFeatures = [ "default" "std" ]; }; - "ordered-float 4.2.2" = rec { - crateName = "ordered-float"; - version = "4.2.2"; - edition = "2021"; - sha256 = "19k5c2m8m7xfkw7wa4i65krswbnd2299ar6fj1wqqvv78hc1g4aa"; - libName = "ordered_float"; - authors = [ - "Jonathan Reem " - "Matt Brubeck " - ]; - dependencies = [ - { - name = "num-traits"; - packageId = "num-traits"; - usesDefaultFeatures = false; - } - ]; - features = { - "arbitrary" = [ "dep:arbitrary" ]; - "borsh" = [ "dep:borsh" ]; - "bytemuck" = [ "dep:bytemuck" ]; - "default" = [ "std" ]; - "proptest" = [ "dep:proptest" ]; - "rand" = [ "dep:rand" ]; - "randtest" = [ "rand/std" "rand/std_rng" ]; - "rkyv" = [ "rkyv_32" ]; - "rkyv_16" = [ "dep:rkyv" "rkyv?/size_16" ]; - "rkyv_32" = [ "dep:rkyv" "rkyv?/size_32" ]; - "rkyv_64" = [ "dep:rkyv" "rkyv?/size_64" ]; - "rkyv_ck" = [ "rkyv?/validation" ]; - "schemars" = [ "dep:schemars" ]; - "serde" = [ "dep:serde" "rand?/serde1" ]; - "speedy" = [ "dep:speedy" ]; - "std" = [ "num-traits/std" ]; - }; - resolvedDefaultFeatures = [ "default" "std" ]; - }; "overload" = rec { crateName = "overload"; version = "0.1.1"; @@ -6688,7 +7439,7 @@ rec { } { name = "thiserror"; - packageId = "thiserror"; + packageId = "thiserror 1.0.63"; optional = true; } { @@ -6762,7 +7513,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.87"; } ]; features = { @@ -6866,7 +7617,7 @@ rec { } { name = "rand"; - packageId = "rand"; + packageId = "rand 0.8.5"; usesDefaultFeatures = false; features = [ "small_rng" ]; } @@ -6928,7 +7679,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.87"; features = [ "full" "visit-mut" ]; } ]; @@ -6979,7 +7730,7 @@ rec { dependencies = [ { name = "zerocopy"; - packageId = "zerocopy"; + packageId = "zerocopy 0.7.35"; features = [ "simd" "derive" ]; } ]; @@ -7005,7 +7756,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.87"; usesDefaultFeatures = false; features = [ "full" ]; } @@ -7018,7 +7769,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.87"; usesDefaultFeatures = false; features = [ "parsing" ]; } @@ -7191,28 +7942,96 @@ rec { ]; }; - "quinn" = rec { - crateName = "quinn"; - version = "0.11.5"; + "prost" = rec { + crateName = "prost"; + version = "0.13.5"; edition = "2021"; - sha256 = "1146h9wkn5bb8l1mllnw7s1hkvg0iykg1i3x881p5bndwgfmyz4c"; + sha256 = "1r8yi6zxxwv9gq5ia9p55nspgwmchs94sqpp64x33v5k3njgm5i7"; + authors = [ + "Dan Burkert " + "Lucio Franco " + "Casper Meijn " + "Tokio Contributors " + ]; dependencies = [ { name = "bytes"; packageId = "bytes"; - } - { - name = "pin-project-lite"; - packageId = "pin-project-lite"; - } - { - name = "quinn-proto"; - packageId = "quinn-proto"; - rename = "proto"; usesDefaultFeatures = false; } { - name = "quinn-udp"; + name = "prost-derive"; + packageId = "prost-derive"; + optional = true; + } + ]; + features = { + "default" = [ "derive" "std" ]; + "derive" = [ "dep:prost-derive" ]; + "prost-derive" = [ "derive" ]; + }; + resolvedDefaultFeatures = [ "default" "derive" "std" ]; + }; + "prost-derive" = rec { + crateName = "prost-derive"; + version = "0.13.5"; + edition = "2021"; + sha256 = "0kgc9gbzsa998xixblfi3kfydka64zqf6rmpm53b761cjxbxfmla"; + procMacro = true; + libName = "prost_derive"; + authors = [ + "Dan Burkert " + "Lucio Franco " + "Casper Meijn " + "Tokio Contributors " + ]; + dependencies = [ + { + name = "anyhow"; + packageId = "anyhow"; + } + { + name = "itertools"; + packageId = "itertools 0.14.0"; + } + { + name = "proc-macro2"; + packageId = "proc-macro2"; + } + { + name = "quote"; + packageId = "quote"; + } + { + name = "syn"; + packageId = "syn 2.0.87"; + features = [ "extra-traits" ]; + } + ]; + + }; + "quinn" = rec { + crateName = "quinn"; + version = "0.11.5"; + edition = "2021"; + sha256 = "1146h9wkn5bb8l1mllnw7s1hkvg0iykg1i3x881p5bndwgfmyz4c"; + dependencies = [ + { + name = "bytes"; + packageId = "bytes"; + } + { + name = "pin-project-lite"; + packageId = "pin-project-lite"; + } + { + name = "quinn-proto"; + packageId = "quinn-proto"; + rename = "proto"; + usesDefaultFeatures = false; + } + { + name = "quinn-udp"; packageId = "quinn-udp"; rename = "udp"; usesDefaultFeatures = false; @@ -7235,7 +8054,7 @@ rec { } { name = "thiserror"; - packageId = "thiserror"; + packageId = "thiserror 1.0.63"; } { name = "tokio"; @@ -7285,7 +8104,7 @@ rec { } { name = "rand"; - packageId = "rand"; + packageId = "rand 0.8.5"; } { name = "ring"; @@ -7309,7 +8128,7 @@ rec { } { name = "thiserror"; - packageId = "thiserror"; + packageId = "thiserror 1.0.63"; } { name = "tinyvec"; @@ -7396,7 +8215,20 @@ rec { }; resolvedDefaultFeatures = [ "default" "proc-macro" ]; }; - "rand" = rec { + "r-efi" = rec { + crateName = "r-efi"; + version = "5.2.0"; + edition = "2018"; + sha256 = "1ig93jvpqyi87nc5kb6dri49p56q7r7qxrn8kfizmqkfj5nmyxkl"; + libName = "r_efi"; + features = { + "compiler_builtins" = [ "dep:compiler_builtins" ]; + "core" = [ "dep:core" ]; + "examples" = [ "native" ]; + "rustc-dep-of-std" = [ "compiler_builtins/rustc-dep-of-std" "core" ]; + }; + }; + "rand 0.8.5" = rec { crateName = "rand"; version = "0.8.5"; edition = "2018"; @@ -7415,13 +8247,13 @@ rec { } { name = "rand_chacha"; - packageId = "rand_chacha"; + packageId = "rand_chacha 0.3.1"; optional = true; usesDefaultFeatures = false; } { name = "rand_core"; - packageId = "rand_core"; + packageId = "rand_core 0.6.4"; } ]; features = { @@ -7440,7 +8272,47 @@ rec { }; resolvedDefaultFeatures = [ "alloc" "default" "getrandom" "libc" "rand_chacha" "small_rng" "std" "std_rng" ]; }; - "rand_chacha" = rec { + "rand 0.9.0" = rec { + crateName = "rand"; + version = "0.9.0"; + edition = "2021"; + sha256 = "156dyvsfa6fjnv6nx5vzczay1scy5183dvjchd7bvs47xd5bjy9p"; + authors = [ + "The Rand Project Developers" + "The Rust Project Developers" + ]; + dependencies = [ + { + name = "rand_chacha"; + packageId = "rand_chacha 0.9.0"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "rand_core"; + packageId = "rand_core 0.9.3"; + usesDefaultFeatures = false; + } + { + name = "zerocopy"; + packageId = "zerocopy 0.8.24"; + usesDefaultFeatures = false; + features = [ "simd" ]; + } + ]; + features = { + "default" = [ "std" "std_rng" "os_rng" "small_rng" "thread_rng" ]; + "log" = [ "dep:log" ]; + "os_rng" = [ "rand_core/os_rng" ]; + "serde" = [ "dep:serde" "rand_core/serde" ]; + "simd_support" = [ "zerocopy/simd-nightly" ]; + "std" = [ "rand_core/std" "rand_chacha?/std" "alloc" ]; + "std_rng" = [ "dep:rand_chacha" ]; + "thread_rng" = [ "std" "std_rng" "os_rng" ]; + }; + resolvedDefaultFeatures = [ "alloc" "default" "os_rng" "small_rng" "std" "std_rng" "thread_rng" ]; + }; + "rand_chacha 0.3.1" = rec { crateName = "rand_chacha"; version = "0.3.1"; edition = "2018"; @@ -7459,7 +8331,7 @@ rec { } { name = "rand_core"; - packageId = "rand_core"; + packageId = "rand_core 0.6.4"; } ]; features = { @@ -7470,7 +8342,44 @@ rec { }; resolvedDefaultFeatures = [ "std" ]; }; - "rand_core" = rec { + "rand_chacha 0.9.0" = rec { + crateName = "rand_chacha"; + version = "0.9.0"; + edition = "2021"; + sha256 = "1jr5ygix7r60pz0s1cv3ms1f6pd1i9pcdmnxzzhjc3zn3mgjn0nk"; + authors = [ + "The Rand Project Developers" + "The Rust Project Developers" + "The CryptoCorrosion Contributors" + ]; + dependencies = [ + { + name = "ppv-lite86"; + packageId = "ppv-lite86"; + usesDefaultFeatures = false; + features = [ "simd" ]; + } + { + name = "rand_core"; + packageId = "rand_core 0.9.3"; + } + ]; + devDependencies = [ + { + name = "rand_core"; + packageId = "rand_core 0.9.3"; + features = [ "os_rng" ]; + } + ]; + features = { + "default" = [ "std" ]; + "os_rng" = [ "rand_core/os_rng" ]; + "serde" = [ "dep:serde" ]; + "std" = [ "ppv-lite86/std" "rand_core/std" ]; + }; + resolvedDefaultFeatures = [ "std" ]; + }; + "rand_core 0.6.4" = rec { crateName = "rand_core"; version = "0.6.4"; edition = "2018"; @@ -7482,7 +8391,7 @@ rec { dependencies = [ { name = "getrandom"; - packageId = "getrandom"; + packageId = "getrandom 0.2.15"; optional = true; } ]; @@ -7494,6 +8403,29 @@ rec { }; resolvedDefaultFeatures = [ "alloc" "getrandom" "std" ]; }; + "rand_core 0.9.3" = rec { + crateName = "rand_core"; + version = "0.9.3"; + edition = "2021"; + sha256 = "0f3xhf16yks5ic6kmgxcpv1ngdhp48mmfy4ag82i1wnwh8ws3ncr"; + authors = [ + "The Rand Project Developers" + "The Rust Project Developers" + ]; + dependencies = [ + { + name = "getrandom"; + packageId = "getrandom 0.3.2"; + optional = true; + } + ]; + features = { + "os_rng" = [ "dep:getrandom" ]; + "serde" = [ "dep:serde" ]; + "std" = [ "getrandom?/std" ]; + }; + resolvedDefaultFeatures = [ "os_rng" "std" ]; + }; "redox_syscall 0.4.1" = rec { crateName = "redox_syscall"; version = "0.4.1"; @@ -7556,7 +8488,7 @@ rec { dependencies = [ { name = "getrandom"; - packageId = "getrandom"; + packageId = "getrandom 0.2.15"; features = [ "std" ]; } { @@ -7567,7 +8499,7 @@ rec { } { name = "thiserror"; - packageId = "thiserror"; + packageId = "thiserror 1.0.63"; } ]; features = { @@ -8077,7 +9009,7 @@ rec { } { name = "getrandom"; - packageId = "getrandom"; + packageId = "getrandom 0.2.15"; } { name = "libc"; @@ -8211,7 +9143,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.87"; features = [ "full" "parsing" "extra-traits" "visit" "visit-mut" ]; } { @@ -8302,7 +9234,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.87"; usesDefaultFeatures = false; features = [ "derive" "parsing" "proc-macro" "printing" ]; } @@ -8514,9 +9446,9 @@ rec { }; "rustls" = rec { crateName = "rustls"; - version = "0.23.12"; + version = "0.23.25"; edition = "2021"; - sha256 = "0i5h0sw8j6bly8rilidb0snd5czpkyjhzqfcd890mz1f7628r3y5"; + sha256 = "0g5idwxm04i71k3n66ml30zyfbgv6p85a7jky2i09v64i8cfjbl2"; dependencies = [ { name = "log"; @@ -8565,13 +9497,14 @@ rec { ]; features = { "aws-lc-rs" = [ "aws_lc_rs" ]; - "aws_lc_rs" = [ "dep:aws-lc-rs" "webpki/aws_lc_rs" ]; + "aws_lc_rs" = [ "dep:aws-lc-rs" "webpki/aws-lc-rs" "aws-lc-rs/aws-lc-sys" "aws-lc-rs/prebuilt-nasm" ]; "brotli" = [ "dep:brotli" "dep:brotli-decompressor" "std" ]; "default" = [ "aws_lc_rs" "logging" "std" "tls12" ]; - "fips" = [ "aws_lc_rs" "aws-lc-rs?/fips" ]; + "fips" = [ "aws_lc_rs" "aws-lc-rs?/fips" "webpki/aws-lc-rs-fips" ]; "hashbrown" = [ "dep:hashbrown" ]; "log" = [ "dep:log" ]; "logging" = [ "log" ]; + "prefer-post-quantum" = [ "aws_lc_rs" ]; "read_buf" = [ "rustversion" "std" ]; "ring" = [ "dep:ring" "webpki/ring" ]; "rustversion" = [ "dep:rustversion" ]; @@ -8641,9 +9574,9 @@ rec { }; "rustls-pki-types" = rec { crateName = "rustls-pki-types"; - version = "1.8.0"; + version = "1.11.0"; edition = "2021"; - sha256 = "1w6a1x8h61p5ddlnijfvj5fvs516h5xr5rw1pc0m8rgq8vk2q2pw"; + sha256 = "0755isc0x5iymm3wsn59s0ad1pm9zidw7p34qfqlsjsac9jf4z4i"; libName = "rustls_pki_types"; features = { "default" = [ "alloc" ]; @@ -8655,9 +9588,9 @@ rec { }; "rustls-webpki" = rec { crateName = "rustls-webpki"; - version = "0.102.7"; + version = "0.103.1"; edition = "2021"; - sha256 = "0mmfwr5pkwrn5bi36sk43fgh9yqf9nlxfghq2nsg5valpn380rw4"; + sha256 = "00rcdz0rb9ia2ivrq7412ry9qkvbh78pra2phl4p7kxck9vbiy7y"; libName = "webpki"; dependencies = [ { @@ -8679,8 +9612,9 @@ rec { ]; features = { "alloc" = [ "ring?/alloc" "pki-types/alloc" ]; - "aws_lc_rs" = [ "dep:aws-lc-rs" ]; - "default" = [ "std" "ring" ]; + "aws-lc-rs" = [ "dep:aws-lc-rs" "aws-lc-rs/aws-lc-sys" "aws-lc-rs/prebuilt-nasm" ]; + "aws-lc-rs-fips" = [ "dep:aws-lc-rs" "aws-lc-rs/fips" ]; + "default" = [ "std" ]; "ring" = [ "dep:ring" ]; "std" = [ "alloc" "pki-types/std" ]; }; @@ -8755,9 +9689,9 @@ rec { }; "schemars" = rec { crateName = "schemars"; - version = "0.8.21"; + version = "0.8.22"; edition = "2021"; - sha256 = "14lyx04388wgbilgcm0nl75w6359nw16glswfqv7x2rpi9329h09"; + sha256 = "05an9nbi18ynyxv1rjmwbg6j08j0496hd64mjggh53mwp3hjmgrz"; authors = [ "Graham Esau " ]; @@ -8821,9 +9755,9 @@ rec { }; "schemars_derive" = rec { crateName = "schemars_derive"; - version = "0.8.21"; + version = "0.8.22"; edition = "2021"; - sha256 = "03ncmrkldfmdc9skmlyysx2vqdlyyz91r5mbavw77zwaay4fbvmi"; + sha256 = "0kakyzrp5801s4i043l4ilv96lzimnlh01pap958h66n99w6bqij"; procMacro = true; authors = [ "Graham Esau " @@ -8843,7 +9777,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.87"; features = [ "extra-traits" ]; } ]; @@ -8863,31 +9797,23 @@ rec { }; "secrecy" = rec { crateName = "secrecy"; - version = "0.8.0"; - edition = "2018"; - sha256 = "07p9h2bpkkg61f1fzzdqqbf74kwv1gg095r1cdmjzzbcl17cblcv"; + version = "0.10.3"; + edition = "2021"; + sha256 = "0nmfsf9qm8921v2jliz08bj8zrryqar4gj3d6irqfc3kaj2az4g8"; authors = [ "Tony Arcieri " ]; dependencies = [ - { - name = "serde"; - packageId = "serde"; - optional = true; - } { name = "zeroize"; packageId = "zeroize"; usesDefaultFeatures = false; + features = [ "alloc" ]; } ]; features = { - "alloc" = [ "zeroize/alloc" ]; - "bytes" = [ "dep:bytes" ]; - "default" = [ "alloc" ]; "serde" = [ "dep:serde" ]; }; - resolvedDefaultFeatures = [ "alloc" "default" "serde" ]; }; "security-framework" = rec { crateName = "security-framework"; @@ -8991,9 +9917,9 @@ rec { }; "serde" = rec { crateName = "serde"; - version = "1.0.209"; + version = "1.0.219"; edition = "2018"; - sha256 = "029yqqbb3c8v3gc720fhxn49dhgvb88zbyprdg5621riwzzy1z4r"; + sha256 = "1dl6nyxnsi82a197sd752128a4avm6mxnscywas1jq30srp2q3jz"; authors = [ "Erick Tryzelaar " "David Tolnay " @@ -9035,7 +9961,7 @@ rec { dependencies = [ { name = "ordered-float"; - packageId = "ordered-float 2.10.1"; + packageId = "ordered-float"; } { name = "serde"; @@ -9046,9 +9972,9 @@ rec { }; "serde_derive" = rec { crateName = "serde_derive"; - version = "1.0.209"; + version = "1.0.219"; edition = "2015"; - sha256 = "0w114ksg1ymnmqdisd0g1j3g8jgz6pam45xg6yb47dfpkybip0x5"; + sha256 = "001azhjmj7ya52pmfiw4ppxm16nd44y15j2pf5gkcwrcgz7pc0jv"; procMacro = true; authors = [ "Erick Tryzelaar " @@ -9069,7 +9995,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.87"; usesDefaultFeatures = false; features = [ "clone-impls" "derive" "parsing" "printing" "proc-macro" ]; } @@ -9101,7 +10027,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.87"; usesDefaultFeatures = false; features = [ "clone-impls" "derive" "parsing" "printing" ]; } @@ -9110,9 +10036,9 @@ rec { }; "serde_json" = rec { crateName = "serde_json"; - version = "1.0.127"; + version = "1.0.140"; edition = "2021"; - sha256 = "1b99lgg1d986gwz5fbmmzmvjmqg5bx0lzmhy6rqp5gc2kxnw0hw0"; + sha256 = "0wwkp4vc20r87081ihj3vpyz5qf7wqkqipq17v99nv6wjrp8n1i0"; authors = [ "Erick Tryzelaar " "David Tolnay " @@ -9212,7 +10138,7 @@ rec { dependencies = [ { name = "indexmap"; - packageId = "indexmap"; + packageId = "indexmap 2.5.0"; } { name = "itoa"; @@ -9572,7 +10498,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.87"; features = [ "full" ]; } ]; @@ -9582,9 +10508,9 @@ rec { }; "socket2" = rec { crateName = "socket2"; - version = "0.5.7"; + version = "0.5.9"; edition = "2021"; - sha256 = "070r941wbq76xpy039an4pyiy3rfj7mp7pvibf1rcri9njq5wc6f"; + sha256 = "1vzds1wwwi0a51fn10r98j7cx3ir4shvhykpbk7md2h5h1ydapsg"; authors = [ "Alex Crichton " "Thomas de Zeeuw " @@ -9655,14 +10581,14 @@ rec { } { name = "indexmap"; - packageId = "indexmap"; + packageId = "indexmap 2.5.0"; features = [ "serde" ]; } { name = "k8s-openapi"; packageId = "k8s-openapi"; usesDefaultFeatures = false; - features = [ "v1_30" ]; + features = [ "v1_32" ]; } { name = "kube"; @@ -9672,7 +10598,7 @@ rec { } { name = "rand"; - packageId = "rand"; + packageId = "rand 0.8.5"; } { name = "reqwest"; @@ -9710,6 +10636,7 @@ rec { { name = "stackable-operator"; packageId = "stackable-operator"; + usesDefaultFeatures = false; } { name = "tera"; @@ -9794,7 +10721,7 @@ rec { dependencies = [ { name = "axum"; - packageId = "axum"; + packageId = "axum 0.7.5"; features = [ "http2" ]; } { @@ -9819,7 +10746,7 @@ rec { name = "k8s-openapi"; packageId = "k8s-openapi"; usesDefaultFeatures = false; - features = [ "v1_30" ]; + features = [ "v1_32" ]; } { name = "serde"; @@ -9848,7 +10775,7 @@ rec { } { name = "tower-http"; - packageId = "tower-http"; + packageId = "tower-http 0.5.2"; features = [ "validate-request" ]; } { @@ -9882,13 +10809,13 @@ rec { }; "stackable-operator" = rec { crateName = "stackable-operator"; - version = "0.74.0"; - edition = "2021"; + version = "0.92.0"; + edition = "2024"; workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; - rev = "c77a5423b66bc1667b63af7d8bec00de88a5303f"; - sha256 = "1g1a0v98wlcb36ibwv1nv75g3b3s1mjmaps443fc2w2maam94lya"; + rev = "5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1"; + sha256 = "0li9smdrz7danqz17lfkl0j9zl2i84csgc7d01lxs5qi8jcs9fzw"; }; libName = "stackable_operator"; authors = [ @@ -9913,14 +10840,16 @@ rec { name = "delegate"; packageId = "delegate"; } - { - name = "derivative"; - packageId = "derivative"; - } { name = "dockerfile-parser"; packageId = "dockerfile-parser"; } + { + name = "educe"; + packageId = "educe"; + usesDefaultFeatures = false; + features = [ "Clone" "Debug" "Default" "PartialEq" "Eq" ]; + } { name = "either"; packageId = "either"; @@ -9929,6 +10858,10 @@ rec { name = "futures"; packageId = "futures"; } + { + name = "indexmap"; + packageId = "indexmap 2.5.0"; + } { name = "json-patch"; packageId = "json-patch"; @@ -9937,23 +10870,13 @@ rec { name = "k8s-openapi"; packageId = "k8s-openapi"; usesDefaultFeatures = false; - features = [ "schemars" "v1_30" ]; + features = [ "schemars" "v1_32" ]; } { name = "kube"; packageId = "kube"; usesDefaultFeatures = false; - features = [ "client" "jsonpatch" "runtime" "derive" "rustls-tls" ]; - } - { - name = "opentelemetry-jaeger"; - packageId = "opentelemetry-jaeger"; - features = [ "rt-tokio" ]; - } - { - name = "opentelemetry_sdk"; - packageId = "opentelemetry_sdk"; - features = [ "rt-tokio" ]; + features = [ "client" "jsonpatch" "runtime" "derive" "rustls-tls" "ring" ]; } { name = "product-config"; @@ -9993,9 +10916,23 @@ rec { name = "stackable-operator-derive"; packageId = "stackable-operator-derive"; } + { + name = "stackable-shared"; + packageId = "stackable-shared"; + } + { + name = "stackable-telemetry"; + packageId = "stackable-telemetry"; + features = [ "clap" ]; + } + { + name = "stackable-versioned"; + packageId = "stackable-versioned"; + features = [ "k8s" ]; + } { name = "strum"; - packageId = "strum"; + packageId = "strum 0.27.1"; features = [ "derive" ]; } { @@ -10011,10 +10948,6 @@ rec { name = "tracing-appender"; packageId = "tracing-appender"; } - { - name = "tracing-opentelemetry"; - packageId = "tracing-opentelemetry"; - } { name = "tracing-subscriber"; packageId = "tracing-subscriber"; @@ -10027,18 +10960,20 @@ rec { } ]; features = { + "default" = [ "telemetry" "versioned" ]; + "full" = [ "time" "telemetry" "versioned" ]; "time" = [ "dep:time" ]; }; }; "stackable-operator-derive" = rec { crateName = "stackable-operator-derive"; version = "0.3.1"; - edition = "2021"; + edition = "2024"; workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; - rev = "c77a5423b66bc1667b63af7d8bec00de88a5303f"; - sha256 = "1g1a0v98wlcb36ibwv1nv75g3b3s1mjmaps443fc2w2maam94lya"; + rev = "5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1"; + sha256 = "0li9smdrz7danqz17lfkl0j9zl2i84csgc7d01lxs5qi8jcs9fzw"; }; procMacro = true; libName = "stackable_operator_derive"; @@ -10060,79 +10995,325 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.87"; } ]; }; - "stackablectl" = rec { - crateName = "stackablectl"; - version = "25.3.0"; - edition = "2021"; - crateBin = [ - { - name = "stackablectl"; - path = "src/main.rs"; - requiredFeatures = [ ]; - } - ]; - src = lib.cleanSourceWith { filter = sourceFilter; src = ./rust/stackablectl; }; + "stackable-shared" = rec { + crateName = "stackable-shared"; + version = "0.0.1"; + edition = "2024"; + workspace_member = null; + src = pkgs.fetchgit { + url = "https://github.com/stackabletech/operator-rs.git"; + rev = "5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1"; + sha256 = "0li9smdrz7danqz17lfkl0j9zl2i84csgc7d01lxs5qi8jcs9fzw"; + }; + libName = "stackable_shared"; authors = [ - "Stackable GmbH " + "Stackable GmbH " ]; dependencies = [ { - name = "clap"; - packageId = "clap"; - features = [ "derive" "env" ]; + name = "kube"; + packageId = "kube"; + usesDefaultFeatures = false; + features = [ "client" "jsonpatch" "runtime" "derive" "rustls-tls" "ring" ]; } { - name = "clap_complete"; - packageId = "clap_complete"; + name = "semver"; + packageId = "semver"; } { - name = "clap_complete_nushell"; - packageId = "clap_complete_nushell"; + name = "serde"; + packageId = "serde"; + features = [ "derive" ]; } { - name = "comfy-table"; - packageId = "comfy-table"; - features = [ "custom_styling" ]; + name = "serde_yaml"; + packageId = "serde_yaml"; } { - name = "directories"; - packageId = "directories"; + name = "snafu"; + packageId = "snafu 0.8.4"; } + ]; + + }; + "stackable-telemetry" = rec { + crateName = "stackable-telemetry"; + version = "0.6.0"; + edition = "2024"; + workspace_member = null; + src = pkgs.fetchgit { + url = "https://github.com/stackabletech/operator-rs.git"; + rev = "5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1"; + sha256 = "0li9smdrz7danqz17lfkl0j9zl2i84csgc7d01lxs5qi8jcs9fzw"; + }; + libName = "stackable_telemetry"; + authors = [ + "Stackable GmbH " + ]; + dependencies = [ { - name = "dotenvy"; - packageId = "dotenvy"; + name = "axum"; + packageId = "axum 0.8.3"; } { - name = "futures"; - packageId = "futures"; + name = "clap"; + packageId = "clap"; + optional = true; + features = [ "derive" "cargo" "env" ]; } { - name = "indexmap"; - packageId = "indexmap"; - features = [ "serde" ]; + name = "futures-util"; + packageId = "futures-util"; } { - name = "lazy_static"; - packageId = "lazy_static"; + name = "opentelemetry"; + packageId = "opentelemetry"; + features = [ "logs" ]; } { - name = "libc"; - packageId = "libc"; + name = "opentelemetry-appender-tracing"; + packageId = "opentelemetry-appender-tracing"; } { - name = "rand"; - packageId = "rand"; + name = "opentelemetry-otlp"; + packageId = "opentelemetry-otlp"; + features = [ "grpc-tonic" "gzip-tonic" "logs" ]; } { - name = "reqwest"; - packageId = "reqwest"; - usesDefaultFeatures = false; - features = [ "json" "rustls-tls-native-roots" ]; + name = "opentelemetry_sdk"; + packageId = "opentelemetry_sdk"; + features = [ "rt-tokio" "logs" "rt-tokio" "spec_unstable_logs_enabled" ]; + } + { + name = "pin-project"; + packageId = "pin-project"; + } + { + name = "snafu"; + packageId = "snafu 0.8.4"; + } + { + name = "strum"; + packageId = "strum 0.27.1"; + features = [ "derive" ]; + } + { + name = "tokio"; + packageId = "tokio"; + features = [ "macros" "rt-multi-thread" "fs" ]; + } + { + name = "tower"; + packageId = "tower 0.5.2"; + features = [ "util" ]; + } + { + name = "tracing"; + packageId = "tracing"; + } + { + name = "tracing-appender"; + packageId = "tracing-appender"; + } + { + name = "tracing-opentelemetry"; + packageId = "tracing-opentelemetry"; + } + { + name = "tracing-subscriber"; + packageId = "tracing-subscriber"; + features = [ "env-filter" "json" "env-filter" ]; + } + ]; + devDependencies = [ + { + name = "tokio"; + packageId = "tokio"; + features = [ "macros" "rt-multi-thread" "fs" ]; + } + { + name = "tracing-opentelemetry"; + packageId = "tracing-opentelemetry"; + } + ]; + features = { + "clap" = [ "dep:clap" ]; + }; + resolvedDefaultFeatures = [ "clap" ]; + }; + "stackable-versioned" = rec { + crateName = "stackable-versioned"; + version = "0.7.1"; + edition = "2024"; + workspace_member = null; + src = pkgs.fetchgit { + url = "https://github.com/stackabletech/operator-rs.git"; + rev = "5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1"; + sha256 = "0li9smdrz7danqz17lfkl0j9zl2i84csgc7d01lxs5qi8jcs9fzw"; + }; + libName = "stackable_versioned"; + authors = [ + "Stackable GmbH " + ]; + dependencies = [ + { + name = "stackable-versioned-macros"; + packageId = "stackable-versioned-macros"; + } + ]; + features = { + "full" = [ "k8s" ]; + "k8s" = [ "stackable-versioned-macros/k8s" ]; + }; + resolvedDefaultFeatures = [ "k8s" ]; + }; + "stackable-versioned-macros" = rec { + crateName = "stackable-versioned-macros"; + version = "0.7.1"; + edition = "2024"; + workspace_member = null; + src = pkgs.fetchgit { + url = "https://github.com/stackabletech/operator-rs.git"; + rev = "5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1"; + sha256 = "0li9smdrz7danqz17lfkl0j9zl2i84csgc7d01lxs5qi8jcs9fzw"; + }; + procMacro = true; + libName = "stackable_versioned_macros"; + authors = [ + "Stackable GmbH " + ]; + dependencies = [ + { + name = "convert_case"; + packageId = "convert_case"; + } + { + name = "darling"; + packageId = "darling"; + } + { + name = "itertools"; + packageId = "itertools 0.14.0"; + } + { + name = "k8s-openapi"; + packageId = "k8s-openapi"; + optional = true; + usesDefaultFeatures = false; + features = [ "schemars" "v1_32" ]; + } + { + name = "k8s-version"; + packageId = "k8s-version"; + features = [ "darling" ]; + } + { + name = "kube"; + packageId = "kube"; + optional = true; + usesDefaultFeatures = false; + features = [ "client" "jsonpatch" "runtime" "derive" "rustls-tls" "ring" ]; + } + { + name = "proc-macro2"; + packageId = "proc-macro2"; + } + { + name = "quote"; + packageId = "quote"; + } + { + name = "syn"; + packageId = "syn 2.0.87"; + } + ]; + devDependencies = [ + { + name = "k8s-openapi"; + packageId = "k8s-openapi"; + usesDefaultFeatures = false; + features = [ "schemars" "v1_32" ]; + } + ]; + features = { + "full" = [ "k8s" ]; + "k8s" = [ "dep:kube" "dep:k8s-openapi" ]; + }; + resolvedDefaultFeatures = [ "k8s" ]; + }; + "stackablectl" = rec { + crateName = "stackablectl"; + version = "25.3.0"; + edition = "2021"; + crateBin = [ + { + name = "stackablectl"; + path = "src/main.rs"; + requiredFeatures = [ ]; + } + ]; + src = lib.cleanSourceWith { filter = sourceFilter; src = ./rust/stackablectl; }; + authors = [ + "Stackable GmbH " + ]; + dependencies = [ + { + name = "clap"; + packageId = "clap"; + features = [ "derive" "env" ]; + } + { + name = "clap_complete"; + packageId = "clap_complete"; + } + { + name = "clap_complete_nushell"; + packageId = "clap_complete_nushell"; + } + { + name = "comfy-table"; + packageId = "comfy-table"; + features = [ "custom_styling" ]; + } + { + name = "directories"; + packageId = "directories"; + } + { + name = "dotenvy"; + packageId = "dotenvy"; + } + { + name = "futures"; + packageId = "futures"; + } + { + name = "indexmap"; + packageId = "indexmap 2.5.0"; + features = [ "serde" ]; + } + { + name = "lazy_static"; + packageId = "lazy_static"; + } + { + name = "libc"; + packageId = "libc"; + } + { + name = "rand"; + packageId = "rand 0.8.5"; + } + { + name = "reqwest"; + packageId = "reqwest"; + usesDefaultFeatures = false; + features = [ "json" "rustls-tls-native-roots" ]; } { name = "semver"; @@ -10165,6 +11346,7 @@ rec { { name = "stackable-operator"; packageId = "stackable-operator"; + usesDefaultFeatures = false; } { name = "tera"; @@ -10205,7 +11387,7 @@ rec { ]; }; - "strum" = rec { + "strum 0.26.3" = rec { crateName = "strum"; version = "0.26.3"; edition = "2018"; @@ -10213,19 +11395,29 @@ rec { authors = [ "Peter Glotfelty " ]; + features = { + "default" = [ "std" ]; + "derive" = [ "strum_macros" ]; + "phf" = [ "dep:phf" ]; + "strum_macros" = [ "dep:strum_macros" ]; + }; + resolvedDefaultFeatures = [ "default" "std" ]; + }; + "strum 0.27.1" = rec { + crateName = "strum"; + version = "0.27.1"; + edition = "2021"; + sha256 = "0cic9r2sc2h17nnpjm2yfp7rsd35gkbcbqvrhl553jaiih4fykgn"; + authors = [ + "Peter Glotfelty " + ]; dependencies = [ { name = "strum_macros"; - packageId = "strum_macros"; + packageId = "strum_macros 0.27.1"; optional = true; } ]; - devDependencies = [ - { - name = "strum_macros"; - packageId = "strum_macros"; - } - ]; features = { "default" = [ "std" ]; "derive" = [ "strum_macros" ]; @@ -10234,7 +11426,7 @@ rec { }; resolvedDefaultFeatures = [ "default" "derive" "std" "strum_macros" ]; }; - "strum_macros" = rec { + "strum_macros 0.26.4" = rec { crateName = "strum_macros"; version = "0.26.4"; edition = "2018"; @@ -10262,11 +11454,45 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.87"; features = [ "parsing" "extra-traits" ]; } ]; + }; + "strum_macros 0.27.1" = rec { + crateName = "strum_macros"; + version = "0.27.1"; + edition = "2021"; + sha256 = "1s7x07nkrgjfvxrvcdjw6qanad4c55yjnd32bph9q3xgpid8qyn7"; + procMacro = true; + authors = [ + "Peter Glotfelty " + ]; + dependencies = [ + { + name = "heck"; + packageId = "heck"; + } + { + name = "proc-macro2"; + packageId = "proc-macro2"; + } + { + name = "quote"; + packageId = "quote"; + } + { + name = "rustversion"; + packageId = "rustversion"; + } + { + name = "syn"; + packageId = "syn 2.0.87"; + features = [ "parsing" ]; + } + ]; + }; "subtle" = rec { crateName = "subtle"; @@ -10313,13 +11539,13 @@ rec { "quote" = [ "dep:quote" ]; "test" = [ "syn-test-suite/all-features" ]; }; - resolvedDefaultFeatures = [ "clone-impls" "default" "derive" "extra-traits" "full" "parsing" "printing" "proc-macro" "quote" "visit" ]; + resolvedDefaultFeatures = [ "clone-impls" "default" "derive" "full" "parsing" "printing" "proc-macro" "quote" ]; }; - "syn 2.0.77" = rec { + "syn 2.0.87" = rec { crateName = "syn"; - version = "2.0.77"; + version = "2.0.87"; edition = "2021"; - sha256 = "1vbkwfp9ymmi0fsyyjsqfvnv7gm8vjgl4pzprbk7p3pxc7gvqdcz"; + sha256 = "0bd3mfcswvn4jkrp7ich5kk58kmpph8412yxd36nsfnh8vilrai5"; authors = [ "David Tolnay " ]; @@ -10432,7 +11658,7 @@ rec { } { name = "rand"; - packageId = "rand"; + packageId = "rand 0.8.5"; optional = true; } { @@ -10509,7 +11735,7 @@ rec { "serde" = [ "dep:serde" ]; }; }; - "thiserror" = rec { + "thiserror 1.0.63" = rec { crateName = "thiserror"; version = "1.0.63"; edition = "2021"; @@ -10520,12 +11746,31 @@ rec { dependencies = [ { name = "thiserror-impl"; - packageId = "thiserror-impl"; + packageId = "thiserror-impl 1.0.63"; } ]; }; - "thiserror-impl" = rec { + "thiserror 2.0.12" = rec { + crateName = "thiserror"; + version = "2.0.12"; + edition = "2021"; + sha256 = "024791nsc0np63g2pq30cjf9acj38z3jwx9apvvi8qsqmqnqlysn"; + authors = [ + "David Tolnay " + ]; + dependencies = [ + { + name = "thiserror-impl"; + packageId = "thiserror-impl 2.0.12"; + } + ]; + features = { + "default" = [ "std" ]; + }; + resolvedDefaultFeatures = [ "default" "std" ]; + }; + "thiserror-impl 1.0.63" = rec { crateName = "thiserror-impl"; version = "1.0.63"; edition = "2021"; @@ -10546,7 +11791,33 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.87"; + } + ]; + + }; + "thiserror-impl 2.0.12" = rec { + crateName = "thiserror-impl"; + version = "2.0.12"; + edition = "2021"; + sha256 = "07bsn7shydaidvyyrm7jz29vp78vrxr9cr9044rfmn078lmz8z3z"; + procMacro = true; + libName = "thiserror_impl"; + authors = [ + "David Tolnay " + ]; + dependencies = [ + { + name = "proc-macro2"; + packageId = "proc-macro2"; + } + { + name = "quote"; + packageId = "quote"; + } + { + name = "syn"; + packageId = "syn 2.0.87"; } ]; @@ -10572,64 +11843,6 @@ rec { features = { }; }; - "threadpool" = rec { - crateName = "threadpool"; - version = "1.8.1"; - edition = "2015"; - sha256 = "1amgfyzvynbm8pacniivzq9r0fh3chhs7kijic81j76l6c5ycl6h"; - authors = [ - "The Rust Project Developers" - "Corey Farwell " - "Stefan Schindler " - ]; - dependencies = [ - { - name = "num_cpus"; - packageId = "num_cpus"; - } - ]; - - }; - "thrift" = rec { - crateName = "thrift"; - version = "0.17.0"; - edition = "2018"; - sha256 = "02cydaqqlp25ri19y3ixi77a7nd85fwvbfn4fp0qpakzzj2vqm3y"; - authors = [ - "Apache Thrift Developers " - ]; - dependencies = [ - { - name = "byteorder"; - packageId = "byteorder"; - } - { - name = "integer-encoding"; - packageId = "integer-encoding"; - } - { - name = "log"; - packageId = "log"; - optional = true; - } - { - name = "ordered-float"; - packageId = "ordered-float 2.10.1"; - } - { - name = "threadpool"; - packageId = "threadpool"; - optional = true; - } - ]; - features = { - "default" = [ "server" ]; - "log" = [ "dep:log" ]; - "server" = [ "threadpool" "log" ]; - "threadpool" = [ "dep:threadpool" ]; - }; - resolvedDefaultFeatures = [ "default" "log" "server" "threadpool" ]; - }; "time" = rec { crateName = "time"; version = "0.3.36"; @@ -10903,7 +12116,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.87"; features = [ "full" ]; } ]; @@ -10952,9 +12165,9 @@ rec { }; "tokio-stream" = rec { crateName = "tokio-stream"; - version = "0.1.15"; + version = "0.1.17"; edition = "2021"; - sha256 = "1brpbsqyg8yfmfc4y0j9zxvc8xsxjc31d48kb0g6jvpc1fgchyi6"; + sha256 = "0ix0770hfp4x5rh5bl7vsnr3d4iz4ms43i522xw70xaap9xqv9gc"; libName = "tokio_stream"; authors = [ "Tokio Contributors " @@ -10992,13 +12205,13 @@ rec { "time" = [ "tokio/time" ]; "tokio-util" = [ "dep:tokio-util" ]; }; - resolvedDefaultFeatures = [ "default" "time" ]; + resolvedDefaultFeatures = [ "default" "net" "time" ]; }; "tokio-tungstenite" = rec { crateName = "tokio-tungstenite"; - version = "0.23.1"; + version = "0.26.2"; edition = "2018"; - sha256 = "1k9ijv208hsps5qhq2ii2cl8lwik7lpasssfy6m9016irr09b666"; + sha256 = "117hwxfwmpxazxks076w5i73xj7cgv5iqs7x2rnbzln60zvaz7bs"; libName = "tokio_tungstenite"; authors = [ "Daniel Abramov " @@ -11139,7 +12352,7 @@ rec { dependencies = [ { name = "indexmap"; - packageId = "indexmap"; + packageId = "indexmap 2.5.0"; features = [ "std" ]; } { @@ -11158,13 +12371,286 @@ rec { "perf" = [ "dep:kstring" ]; "serde" = [ "dep:serde" "toml_datetime/serde" "dep:serde_spanned" ]; }; - resolvedDefaultFeatures = [ "default" "display" "parse" ]; + resolvedDefaultFeatures = [ "default" "display" "parse" ]; + }; + "tonic" = rec { + crateName = "tonic"; + version = "0.12.3"; + edition = "2021"; + sha256 = "0ljd1lfjpw0vrm5wbv15x6nq2i38llsanls5rkzmdn2n0wrmnz47"; + authors = [ + "Lucio Franco " + ]; + dependencies = [ + { + name = "async-stream"; + packageId = "async-stream"; + optional = true; + } + { + name = "async-trait"; + packageId = "async-trait"; + optional = true; + } + { + name = "axum"; + packageId = "axum 0.7.5"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "base64"; + packageId = "base64 0.22.1"; + } + { + name = "bytes"; + packageId = "bytes"; + } + { + name = "flate2"; + packageId = "flate2"; + optional = true; + } + { + name = "h2"; + packageId = "h2"; + optional = true; + } + { + name = "http"; + packageId = "http"; + } + { + name = "http-body"; + packageId = "http-body"; + } + { + name = "http-body-util"; + packageId = "http-body-util"; + } + { + name = "hyper"; + packageId = "hyper"; + optional = true; + features = [ "http1" "http2" ]; + } + { + name = "hyper-timeout"; + packageId = "hyper-timeout"; + optional = true; + } + { + name = "hyper-util"; + packageId = "hyper-util"; + optional = true; + features = [ "tokio" ]; + } + { + name = "percent-encoding"; + packageId = "percent-encoding"; + } + { + name = "pin-project"; + packageId = "pin-project"; + } + { + name = "prost"; + packageId = "prost"; + optional = true; + usesDefaultFeatures = false; + features = [ "std" ]; + } + { + name = "socket2"; + packageId = "socket2"; + optional = true; + features = [ "all" ]; + } + { + name = "tokio"; + packageId = "tokio"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "tokio-stream"; + packageId = "tokio-stream"; + usesDefaultFeatures = false; + } + { + name = "tower"; + packageId = "tower 0.4.13"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "tower-layer"; + packageId = "tower-layer"; + } + { + name = "tower-service"; + packageId = "tower-service"; + } + { + name = "tracing"; + packageId = "tracing"; + } + ]; + devDependencies = [ + { + name = "tokio"; + packageId = "tokio"; + features = [ "rt" "macros" ]; + } + { + name = "tower"; + packageId = "tower 0.4.13"; + features = [ "full" ]; + } + ]; + features = { + "channel" = [ "dep:hyper" "hyper?/client" "dep:hyper-util" "hyper-util?/client-legacy" "dep:tower" "tower?/balance" "tower?/buffer" "tower?/discover" "tower?/limit" "tower?/util" "dep:tokio" "tokio?/time" "dep:hyper-timeout" ]; + "codegen" = [ "dep:async-trait" ]; + "default" = [ "transport" "codegen" "prost" ]; + "gzip" = [ "dep:flate2" ]; + "prost" = [ "dep:prost" ]; + "router" = [ "dep:axum" "dep:tower" "tower?/util" ]; + "server" = [ "router" "dep:async-stream" "dep:h2" "dep:hyper" "hyper?/server" "dep:hyper-util" "hyper-util?/service" "hyper-util?/server-auto" "dep:socket2" "dep:tokio" "tokio?/macros" "tokio?/net" "tokio?/time" "tokio-stream/net" "dep:tower" "tower?/util" "tower?/limit" ]; + "tls" = [ "dep:rustls-pemfile" "dep:tokio-rustls" "dep:tokio" "tokio?/rt" "tokio?/macros" ]; + "tls-native-roots" = [ "tls" "channel" "dep:rustls-native-certs" ]; + "tls-roots" = [ "tls-native-roots" ]; + "tls-webpki-roots" = [ "tls" "channel" "dep:webpki-roots" ]; + "transport" = [ "server" "channel" ]; + "zstd" = [ "dep:zstd" ]; + }; + resolvedDefaultFeatures = [ "channel" "codegen" "gzip" "prost" "router" "server" "transport" ]; + }; + "tower 0.4.13" = rec { + crateName = "tower"; + version = "0.4.13"; + edition = "2018"; + sha256 = "073wncyqav4sak1p755hf6vl66njgfc1z1g1di9rxx3cvvh9pymq"; + authors = [ + "Tower Maintainers " + ]; + dependencies = [ + { + name = "futures-core"; + packageId = "futures-core"; + optional = true; + } + { + name = "futures-util"; + packageId = "futures-util"; + optional = true; + usesDefaultFeatures = false; + features = [ "alloc" ]; + } + { + name = "indexmap"; + packageId = "indexmap 1.9.3"; + optional = true; + } + { + name = "pin-project"; + packageId = "pin-project"; + optional = true; + } + { + name = "pin-project-lite"; + packageId = "pin-project-lite"; + optional = true; + } + { + name = "rand"; + packageId = "rand 0.8.5"; + optional = true; + features = [ "small_rng" ]; + } + { + name = "slab"; + packageId = "slab"; + optional = true; + } + { + name = "tokio"; + packageId = "tokio"; + optional = true; + features = [ "sync" ]; + } + { + name = "tokio-util"; + packageId = "tokio-util"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "tower-layer"; + packageId = "tower-layer"; + } + { + name = "tower-service"; + packageId = "tower-service"; + } + { + name = "tracing"; + packageId = "tracing"; + optional = true; + usesDefaultFeatures = false; + features = [ "std" ]; + } + ]; + devDependencies = [ + { + name = "pin-project-lite"; + packageId = "pin-project-lite"; + } + { + name = "tokio"; + packageId = "tokio"; + features = [ "macros" "sync" "test-util" "rt-multi-thread" ]; + } + ]; + features = { + "__common" = [ "futures-core" "pin-project-lite" ]; + "balance" = [ "discover" "load" "ready-cache" "make" "rand" "slab" ]; + "buffer" = [ "__common" "tokio/sync" "tokio/rt" "tokio-util" "tracing" ]; + "default" = [ "log" ]; + "discover" = [ "__common" ]; + "filter" = [ "__common" "futures-util" ]; + "full" = [ "balance" "buffer" "discover" "filter" "hedge" "limit" "load" "load-shed" "make" "ready-cache" "reconnect" "retry" "spawn-ready" "steer" "timeout" "util" ]; + "futures-core" = [ "dep:futures-core" ]; + "futures-util" = [ "dep:futures-util" ]; + "hdrhistogram" = [ "dep:hdrhistogram" ]; + "hedge" = [ "util" "filter" "futures-util" "hdrhistogram" "tokio/time" "tracing" ]; + "indexmap" = [ "dep:indexmap" ]; + "limit" = [ "__common" "tokio/time" "tokio/sync" "tokio-util" "tracing" ]; + "load" = [ "__common" "tokio/time" "tracing" ]; + "load-shed" = [ "__common" ]; + "log" = [ "tracing/log" ]; + "make" = [ "futures-util" "pin-project-lite" "tokio/io-std" ]; + "pin-project" = [ "dep:pin-project" ]; + "pin-project-lite" = [ "dep:pin-project-lite" ]; + "rand" = [ "dep:rand" ]; + "ready-cache" = [ "futures-core" "futures-util" "indexmap" "tokio/sync" "tracing" "pin-project-lite" ]; + "reconnect" = [ "make" "tokio/io-std" "tracing" ]; + "retry" = [ "__common" "tokio/time" ]; + "slab" = [ "dep:slab" ]; + "spawn-ready" = [ "__common" "futures-util" "tokio/sync" "tokio/rt" "util" "tracing" ]; + "timeout" = [ "pin-project-lite" "tokio/time" ]; + "tokio" = [ "dep:tokio" ]; + "tokio-stream" = [ "dep:tokio-stream" ]; + "tokio-util" = [ "dep:tokio-util" ]; + "tracing" = [ "dep:tracing" ]; + "util" = [ "__common" "futures-util" "pin-project" ]; + }; + resolvedDefaultFeatures = [ "__common" "balance" "buffer" "discover" "futures-core" "futures-util" "indexmap" "limit" "load" "log" "make" "pin-project" "pin-project-lite" "rand" "ready-cache" "slab" "tokio" "tokio-util" "tracing" "util" ]; }; - "tower" = rec { + "tower 0.5.2" = rec { crateName = "tower"; - version = "0.4.13"; + version = "0.5.2"; edition = "2018"; - sha256 = "073wncyqav4sak1p755hf6vl66njgfc1z1g1di9rxx3cvvh9pymq"; + sha256 = "1ybmd59nm4abl9bsvy6rx31m4zvzp5rja2slzpn712y9b68ssffh"; authors = [ "Tower Maintainers " ]; @@ -11182,13 +12668,13 @@ rec { features = [ "alloc" ]; } { - name = "pin-project"; - packageId = "pin-project"; + name = "pin-project-lite"; + packageId = "pin-project-lite"; optional = true; } { - name = "pin-project-lite"; - packageId = "pin-project-lite"; + name = "sync_wrapper"; + packageId = "sync_wrapper 1.0.1"; optional = true; } { @@ -11229,12 +12715,17 @@ rec { packageId = "tokio"; features = [ "macros" "sync" "test-util" "rt-multi-thread" ]; } + { + name = "tracing"; + packageId = "tracing"; + usesDefaultFeatures = false; + features = [ "std" ]; + } ]; features = { "__common" = [ "futures-core" "pin-project-lite" ]; - "balance" = [ "discover" "load" "ready-cache" "make" "rand" "slab" ]; + "balance" = [ "discover" "load" "ready-cache" "make" "slab" "util" ]; "buffer" = [ "__common" "tokio/sync" "tokio/rt" "tokio-util" "tracing" ]; - "default" = [ "log" ]; "discover" = [ "__common" ]; "filter" = [ "__common" "futures-util" ]; "full" = [ "balance" "buffer" "discover" "filter" "hedge" "limit" "load" "load-shed" "make" "ready-cache" "reconnect" "retry" "spawn-ready" "steer" "timeout" "util" ]; @@ -11248,24 +12739,23 @@ rec { "load-shed" = [ "__common" ]; "log" = [ "tracing/log" ]; "make" = [ "futures-util" "pin-project-lite" "tokio/io-std" ]; - "pin-project" = [ "dep:pin-project" ]; "pin-project-lite" = [ "dep:pin-project-lite" ]; - "rand" = [ "dep:rand" ]; "ready-cache" = [ "futures-core" "futures-util" "indexmap" "tokio/sync" "tracing" "pin-project-lite" ]; "reconnect" = [ "make" "tokio/io-std" "tracing" ]; - "retry" = [ "__common" "tokio/time" ]; + "retry" = [ "__common" "tokio/time" "util" ]; "slab" = [ "dep:slab" ]; "spawn-ready" = [ "__common" "futures-util" "tokio/sync" "tokio/rt" "util" "tracing" ]; + "sync_wrapper" = [ "dep:sync_wrapper" ]; "timeout" = [ "pin-project-lite" "tokio/time" ]; "tokio" = [ "dep:tokio" ]; "tokio-stream" = [ "dep:tokio-stream" ]; "tokio-util" = [ "dep:tokio-util" ]; "tracing" = [ "dep:tracing" ]; - "util" = [ "__common" "futures-util" "pin-project" ]; + "util" = [ "__common" "futures-util" "pin-project-lite" "sync_wrapper" ]; }; - resolvedDefaultFeatures = [ "__common" "buffer" "default" "filter" "futures-core" "futures-util" "log" "make" "pin-project" "pin-project-lite" "tokio" "tokio-util" "tracing" "util" ]; + resolvedDefaultFeatures = [ "__common" "buffer" "filter" "futures-core" "futures-util" "log" "make" "pin-project-lite" "sync_wrapper" "tokio" "tokio-util" "tracing" "util" ]; }; - "tower-http" = rec { + "tower-http 0.5.2" = rec { crateName = "tower-http"; version = "0.5.2"; edition = "2018"; @@ -11275,11 +12765,6 @@ rec { "Tower Maintainers " ]; dependencies = [ - { - name = "base64"; - packageId = "base64 0.21.7"; - optional = true; - } { name = "bitflags"; packageId = "bitflags 2.6.0"; @@ -11318,12 +12803,6 @@ rec { name = "tower-service"; packageId = "tower-service"; } - { - name = "tracing"; - packageId = "tracing"; - optional = true; - usesDefaultFeatures = false; - } ]; devDependencies = [ { @@ -11368,6 +12847,113 @@ rec { "uuid" = [ "dep:uuid" ]; "validate-request" = [ "mime" ]; }; + resolvedDefaultFeatures = [ "default" "mime" "validate-request" ]; + }; + "tower-http 0.6.2" = rec { + crateName = "tower-http"; + version = "0.6.2"; + edition = "2018"; + sha256 = "15wnvhl6cpir9125s73bqjzjsvfb0fmndmsimnl2ddnlhfvs6gs0"; + libName = "tower_http"; + authors = [ + "Tower Maintainers " + ]; + dependencies = [ + { + name = "base64"; + packageId = "base64 0.22.1"; + optional = true; + } + { + name = "bitflags"; + packageId = "bitflags 2.6.0"; + } + { + name = "bytes"; + packageId = "bytes"; + } + { + name = "http"; + packageId = "http"; + } + { + name = "http-body"; + packageId = "http-body"; + optional = true; + } + { + name = "mime"; + packageId = "mime"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "pin-project-lite"; + packageId = "pin-project-lite"; + } + { + name = "tower-layer"; + packageId = "tower-layer"; + } + { + name = "tower-service"; + packageId = "tower-service"; + } + { + name = "tracing"; + packageId = "tracing"; + optional = true; + usesDefaultFeatures = false; + } + ]; + devDependencies = [ + { + name = "bytes"; + packageId = "bytes"; + } + { + name = "http-body"; + packageId = "http-body"; + } + ]; + features = { + "async-compression" = [ "dep:async-compression" ]; + "auth" = [ "base64" "validate-request" ]; + "base64" = [ "dep:base64" ]; + "catch-panic" = [ "tracing" "futures-util/std" "dep:http-body" "dep:http-body-util" ]; + "compression-br" = [ "async-compression/brotli" "futures-core" "dep:http-body" "tokio-util" "tokio" ]; + "compression-deflate" = [ "async-compression/zlib" "futures-core" "dep:http-body" "tokio-util" "tokio" ]; + "compression-full" = [ "compression-br" "compression-deflate" "compression-gzip" "compression-zstd" ]; + "compression-gzip" = [ "async-compression/gzip" "futures-core" "dep:http-body" "tokio-util" "tokio" ]; + "compression-zstd" = [ "async-compression/zstd" "futures-core" "dep:http-body" "tokio-util" "tokio" ]; + "decompression-br" = [ "async-compression/brotli" "futures-core" "dep:http-body" "dep:http-body-util" "tokio-util" "tokio" ]; + "decompression-deflate" = [ "async-compression/zlib" "futures-core" "dep:http-body" "dep:http-body-util" "tokio-util" "tokio" ]; + "decompression-full" = [ "decompression-br" "decompression-deflate" "decompression-gzip" "decompression-zstd" ]; + "decompression-gzip" = [ "async-compression/gzip" "futures-core" "dep:http-body" "dep:http-body-util" "tokio-util" "tokio" ]; + "decompression-zstd" = [ "async-compression/zstd" "futures-core" "dep:http-body" "dep:http-body-util" "tokio-util" "tokio" ]; + "follow-redirect" = [ "futures-util" "dep:http-body" "iri-string" "tower/util" ]; + "fs" = [ "futures-util" "dep:http-body" "dep:http-body-util" "tokio/fs" "tokio-util/io" "tokio/io-util" "dep:http-range-header" "mime_guess" "mime" "percent-encoding" "httpdate" "set-status" "futures-util/alloc" "tracing" ]; + "full" = [ "add-extension" "auth" "catch-panic" "compression-full" "cors" "decompression-full" "follow-redirect" "fs" "limit" "map-request-body" "map-response-body" "metrics" "normalize-path" "propagate-header" "redirect" "request-id" "sensitive-headers" "set-header" "set-status" "timeout" "trace" "util" "validate-request" ]; + "futures-core" = [ "dep:futures-core" ]; + "futures-util" = [ "dep:futures-util" ]; + "httpdate" = [ "dep:httpdate" ]; + "iri-string" = [ "dep:iri-string" ]; + "limit" = [ "dep:http-body" "dep:http-body-util" ]; + "metrics" = [ "dep:http-body" "tokio/time" ]; + "mime" = [ "dep:mime" ]; + "mime_guess" = [ "dep:mime_guess" ]; + "percent-encoding" = [ "dep:percent-encoding" ]; + "request-id" = [ "uuid" ]; + "timeout" = [ "dep:http-body" "tokio/time" ]; + "tokio" = [ "dep:tokio" ]; + "tokio-util" = [ "dep:tokio-util" ]; + "tower" = [ "dep:tower" ]; + "trace" = [ "dep:http-body" "tracing" ]; + "tracing" = [ "dep:tracing" ]; + "util" = [ "tower" ]; + "uuid" = [ "dep:uuid" ]; + "validate-request" = [ "mime" ]; + }; resolvedDefaultFeatures = [ "auth" "base64" "default" "map-response-body" "mime" "trace" "tracing" "validate-request" ]; }; "tower-layer" = rec { @@ -11456,7 +13042,7 @@ rec { } { name = "thiserror"; - packageId = "thiserror"; + packageId = "thiserror 1.0.63"; } { name = "time"; @@ -11498,7 +13084,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.87"; usesDefaultFeatures = false; features = [ "full" "parsing" "printing" "visit-mut" "clone-impls" "extra-traits" "proc-macro" ]; } @@ -11508,9 +13094,9 @@ rec { }; "tracing-core" = rec { crateName = "tracing-core"; - version = "0.1.32"; + version = "0.1.33"; edition = "2018"; - sha256 = "0m5aglin3cdwxpvbg6kz0r9r0k31j48n0kcfwsp6l49z26k3svf0"; + sha256 = "170gc7cxyjx824r9kr17zc9gvzx89ypqfdzq259pr56gg5bwjwp6"; libName = "tracing_core"; authors = [ "Tokio Contributors " @@ -11530,12 +13116,12 @@ rec { } ]; features = { - "default" = [ "std" "valuable/std" ]; + "default" = [ "std" "valuable?/std" ]; "once_cell" = [ "dep:once_cell" ]; "std" = [ "once_cell" ]; "valuable" = [ "dep:valuable" ]; }; - resolvedDefaultFeatures = [ "default" "once_cell" "std" "valuable" ]; + resolvedDefaultFeatures = [ "default" "once_cell" "std" ]; }; "tracing-log" = rec { crateName = "tracing-log"; @@ -11571,9 +13157,9 @@ rec { }; "tracing-opentelemetry" = rec { crateName = "tracing-opentelemetry"; - version = "0.24.0"; + version = "0.29.0"; edition = "2021"; - sha256 = "1r74gddb72ax88ypr9vwmxmjbgcn201cgv6axh5b92pj5d4h727n"; + sha256 = "0dnca0b7bxbp6gd64skkvzy3p58yjh35kvnxpggz7sfwd4jjs7vj"; libName = "tracing_opentelemetry"; dependencies = [ { @@ -11659,10 +13245,11 @@ rec { "async-trait" = [ "dep:async-trait" ]; "default" = [ "tracing-log" "metrics" ]; "futures-util" = [ "dep:futures-util" ]; + "lazy_static" = [ "dep:lazy_static" ]; "metrics" = [ "opentelemetry/metrics" "opentelemetry_sdk/metrics" "smallvec" ]; - "metrics_gauge_unstable" = [ "opentelemetry/otel_unstable" ]; "smallvec" = [ "dep:smallvec" ]; "thiserror" = [ "dep:thiserror" ]; + "thiserror-1" = [ "dep:thiserror-1" ]; "tracing-log" = [ "dep:tracing-log" ]; }; resolvedDefaultFeatures = [ "default" "metrics" "smallvec" "tracing-log" ]; @@ -11834,18 +13421,14 @@ rec { }; "tungstenite" = rec { crateName = "tungstenite"; - version = "0.23.0"; - edition = "2018"; - sha256 = "1j6rxlcdky8lrwkl1qsyvnmlr38033vch11vsi7rklkywkhjqbkf"; + version = "0.26.2"; + edition = "2021"; + sha256 = "04rwwcxx95m3avi46rmn0kmpb6nynqimnla3v2qwn3k8argcp4s7"; authors = [ "Alexey Galakhov" "Daniel Abramov" ]; dependencies = [ - { - name = "byteorder"; - packageId = "byteorder"; - } { name = "bytes"; packageId = "bytes"; @@ -11871,7 +13454,7 @@ rec { } { name = "rand"; - packageId = "rand"; + packageId = "rand 0.9.0"; } { name = "sha1"; @@ -11880,7 +13463,7 @@ rec { } { name = "thiserror"; - packageId = "thiserror"; + packageId = "thiserror 2.0.12"; } { name = "utf-8"; @@ -11890,7 +13473,7 @@ rec { devDependencies = [ { name = "rand"; - packageId = "rand"; + packageId = "rand 0.9.0"; } ]; features = { @@ -12116,6 +13699,19 @@ rec { }; resolvedDefaultFeatures = [ "std" ]; }; + "unicode-segmentation" = rec { + crateName = "unicode-segmentation"; + version = "1.12.0"; + edition = "2018"; + sha256 = "14qla2jfx74yyb9ds3d2mpwpa4l4lzb9z57c6d2ba511458z5k7n"; + libName = "unicode_segmentation"; + authors = [ + "kwantam " + "Manish Goregaokar " + ]; + features = { + }; + }; "unicode-width" = rec { crateName = "unicode-width"; version = "0.1.13"; @@ -12257,7 +13853,7 @@ rec { dependencies = [ { name = "indexmap"; - packageId = "indexmap"; + packageId = "indexmap 2.5.0"; features = [ "serde" ]; } { @@ -12322,7 +13918,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.87"; features = [ "full" "extra-traits" ]; } ]; @@ -12350,7 +13946,7 @@ rec { dependencies = [ { name = "axum"; - packageId = "axum"; + packageId = "axum 0.7.5"; optional = true; usesDefaultFeatures = false; features = [ "json" ]; @@ -12433,7 +14029,7 @@ rec { dependencies = [ { name = "getrandom"; - packageId = "getrandom"; + packageId = "getrandom 0.2.15"; optional = true; } ]; @@ -12575,7 +14171,7 @@ rec { ]; }; - "wasi" = rec { + "wasi 0.11.0+wasi-snapshot-preview1" = rec { crateName = "wasi"; version = "0.11.0+wasi-snapshot-preview1"; edition = "2018"; @@ -12592,6 +14188,29 @@ rec { }; resolvedDefaultFeatures = [ "default" "std" ]; }; + "wasi 0.14.2+wasi-0.2.4" = rec { + crateName = "wasi"; + version = "0.14.2+wasi-0.2.4"; + edition = "2021"; + sha256 = "1cwcqjr3dgdq8j325awgk8a715h0hg0f7jqzsb077n4qm6jzk0wn"; + authors = [ + "The Cranelift Project Developers" + ]; + dependencies = [ + { + name = "wit-bindgen-rt"; + packageId = "wit-bindgen-rt"; + features = [ "bitflags" ]; + } + ]; + features = { + "compiler_builtins" = [ "dep:compiler_builtins" ]; + "core" = [ "dep:core" ]; + "default" = [ "std" ]; + "rustc-dep-of-std" = [ "compiler_builtins" "core" "rustc-std-workspace-alloc" ]; + "rustc-std-workspace-alloc" = [ "dep:rustc-std-workspace-alloc" ]; + }; + }; "wasm-bindgen" = rec { crateName = "wasm-bindgen"; version = "0.2.93"; @@ -12659,7 +14278,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.87"; features = [ "full" ]; } { @@ -12752,7 +14371,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.87"; features = [ "visit" "full" ]; } { @@ -13380,7 +14999,7 @@ rec { dependencies = [ { name = "windows-sys"; - packageId = "windows-sys 0.59.0"; + packageId = "windows-sys 0.48.0"; target = { target, features }: (target."windows" or false); features = [ "Win32_Foundation" "Win32_Storage_FileSystem" "Win32_System_Console" "Win32_System_SystemInformation" ]; } @@ -13417,6 +15036,17 @@ rec { }; resolvedDefaultFeatures = [ "default" ]; }; + "windows-link" = rec { + crateName = "windows-link"; + version = "0.1.1"; + edition = "2021"; + sha256 = "0f2cq7imbrppsmmnz8899hfhg07cp5gq6rh0bjhb1qb6nwshk13n"; + libName = "windows_link"; + authors = [ + "Microsoft" + ]; + + }; "windows-registry" = rec { crateName = "windows-registry"; version = "0.2.0"; @@ -13779,7 +15409,7 @@ rec { "Win32_Web" = [ "Win32" ]; "Win32_Web_InternetExplorer" = [ "Win32_Web" ]; }; - resolvedDefaultFeatures = [ "Win32" "Win32_Foundation" "Win32_Globalization" "Win32_System" "Win32_System_Com" "Win32_UI" "Win32_UI_Shell" "default" ]; + resolvedDefaultFeatures = [ "Win32" "Win32_Foundation" "Win32_Globalization" "Win32_Storage" "Win32_Storage_FileSystem" "Win32_System" "Win32_System_Com" "Win32_System_Console" "Win32_System_SystemInformation" "Win32_UI" "Win32_UI_Shell" "default" ]; }; "windows-sys 0.52.0" = rec { crateName = "windows-sys"; @@ -14286,7 +15916,7 @@ rec { "Win32_Web" = [ "Win32" ]; "Win32_Web_InternetExplorer" = [ "Win32_Web" ]; }; - resolvedDefaultFeatures = [ "Win32" "Win32_Foundation" "Win32_Networking" "Win32_Networking_WinSock" "Win32_Storage" "Win32_Storage_FileSystem" "Win32_System" "Win32_System_Console" "Win32_System_IO" "Win32_System_SystemInformation" "default" ]; + resolvedDefaultFeatures = [ "Win32" "Win32_Foundation" "Win32_Networking" "Win32_Networking_WinSock" "Win32_System" "Win32_System_IO" "default" ]; }; "windows-targets 0.48.5" = rec { crateName = "windows-targets"; @@ -14587,6 +16217,25 @@ rec { }; resolvedDefaultFeatures = [ "kernel" ]; }; + "wit-bindgen-rt" = rec { + crateName = "wit-bindgen-rt"; + version = "0.39.0"; + edition = "2021"; + sha256 = "1hd65pa5hp0nl664m94bg554h4zlhrzmkjsf6lsgsb7yc4734hkg"; + libName = "wit_bindgen_rt"; + dependencies = [ + { + name = "bitflags"; + packageId = "bitflags 2.6.0"; + optional = true; + } + ]; + features = { + "async" = [ "dep:futures" "dep:once_cell" ]; + "bitflags" = [ "dep:bitflags" ]; + }; + resolvedDefaultFeatures = [ "bitflags" ]; + }; "xml-rs" = rec { crateName = "xml-rs"; version = "0.8.21"; @@ -14661,7 +16310,7 @@ rec { ]; }; - "zerocopy" = rec { + "zerocopy 0.7.35" = rec { crateName = "zerocopy"; version = "0.7.35"; edition = "2018"; @@ -14678,19 +16327,19 @@ rec { } { name = "zerocopy-derive"; - packageId = "zerocopy-derive"; + packageId = "zerocopy-derive 0.7.35"; optional = true; } { name = "zerocopy-derive"; - packageId = "zerocopy-derive"; + packageId = "zerocopy-derive 0.7.35"; target = { target, features }: false; } ]; devDependencies = [ { name = "zerocopy-derive"; - packageId = "zerocopy-derive"; + packageId = "zerocopy-derive 0.7.35"; } ]; features = { @@ -14703,7 +16352,43 @@ rec { }; resolvedDefaultFeatures = [ "byteorder" "default" "derive" "simd" "zerocopy-derive" ]; }; - "zerocopy-derive" = rec { + "zerocopy 0.8.24" = rec { + crateName = "zerocopy"; + version = "0.8.24"; + edition = "2021"; + sha256 = "0yb8hyzfnwzr2wg4p7cnqmjps8fsw8xqnprafgpmfs8qisigx1i5"; + authors = [ + "Joshua Liebow-Feeser " + "Jack Wrenn " + ]; + dependencies = [ + { + name = "zerocopy-derive"; + packageId = "zerocopy-derive 0.8.24"; + optional = true; + } + { + name = "zerocopy-derive"; + packageId = "zerocopy-derive 0.8.24"; + target = { target, features }: false; + } + ]; + devDependencies = [ + { + name = "zerocopy-derive"; + packageId = "zerocopy-derive 0.8.24"; + } + ]; + features = { + "__internal_use_only_features_that_work_on_stable" = [ "alloc" "derive" "simd" "std" ]; + "derive" = [ "zerocopy-derive" ]; + "simd-nightly" = [ "simd" ]; + "std" = [ "alloc" ]; + "zerocopy-derive" = [ "dep:zerocopy-derive" ]; + }; + resolvedDefaultFeatures = [ "simd" ]; + }; + "zerocopy-derive 0.7.35" = rec { crateName = "zerocopy-derive"; version = "0.7.35"; edition = "2018"; @@ -14724,7 +16409,35 @@ rec { } { name = "syn"; - packageId = "syn 2.0.77"; + packageId = "syn 2.0.87"; + } + ]; + + }; + "zerocopy-derive 0.8.24" = rec { + crateName = "zerocopy-derive"; + version = "0.8.24"; + edition = "2021"; + sha256 = "1gk9047pbq1yjj2jyiv0s37nqc53maqbmhcsjp6lhi2w7kvai5m9"; + procMacro = true; + libName = "zerocopy_derive"; + authors = [ + "Joshua Liebow-Feeser " + "Jack Wrenn " + ]; + dependencies = [ + { + name = "proc-macro2"; + packageId = "proc-macro2"; + } + { + name = "quote"; + packageId = "quote"; + } + { + name = "syn"; + packageId = "syn 2.0.87"; + features = [ "full" ]; } ]; @@ -14787,7 +16500,7 @@ rec { } { name = "indexmap"; - packageId = "indexmap"; + packageId = "indexmap 2.5.0"; } { name = "num_enum"; @@ -14795,7 +16508,7 @@ rec { } { name = "thiserror"; - packageId = "thiserror"; + packageId = "thiserror 1.0.63"; } ]; features = { diff --git a/Cargo.toml b/Cargo.toml index 56c0f77c..7c48e18d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,6 +11,8 @@ resolver = "2" version = "0.0.0-dev" authors = ["Stackable GmbH "] license = "OSL-3.0" +# We can use 2024 as soon as https://github.com/rust-lang/cc-rs/issues/1409 is +# fixed / supported. edition = "2021" repository = "https://github.com/stackabletech/stackable-cockpit/" @@ -20,7 +22,7 @@ axum = { version = "0.7", features = ["http2"] } axum-extra = { version = "0.9", features = ["typed-header"] } bcrypt = "0.15" bindgen = "0.70.1" -cc = "1.0.83" +cc = "1.0.106" clap = { version = "4.5", features = ["derive", "env"] } clap_complete = "4.5" clap_complete_nushell = "4.5" @@ -29,8 +31,8 @@ directories = "5.0" dotenvy = "0.15" futures = "0.3" indexmap = { version = "2.2", features = ["serde"] } -k8s-openapi = { version = "0.22", default-features = false, features = ["v1_30"] } -kube = { version = "0.93", default-features = false, features = ["client", "rustls-tls", "ws", "socks5", "http-proxy"] } +k8s-openapi = { version = "0.24", default-features = false, features = ["v1_32"] } +kube = { version = "0.99", default-features = false, features = ["client", "rustls-tls", "ws", "socks5", "http-proxy"] } lazy_static = "1.5" libc = "0.2" once_cell = "1.19" @@ -46,7 +48,7 @@ serde_json = "1.0" serde_yaml = "0.9" sha2 = "0.10" snafu = { version = "0.8", features = ["futures"] } -stackable-operator = { git = "https://github.com/stackabletech/operator-rs.git", tag = "stackable-operator-0.74.0" } +stackable-operator = { git = "https://github.com/stackabletech/operator-rs.git", tag = "stackable-operator-0.92.0", default-features = false } tera = "1.20" termion = "4.0" tokio = { version = "1.38", features = ["rt-multi-thread", "macros", "fs", "process", "io-std"] } diff --git a/crate-hashes.json b/crate-hashes.json index d6326daf..1499527d 100644 --- a/crate-hashes.json +++ b/crate-hashes.json @@ -1,5 +1,10 @@ { - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.74.0#stackable-operator-derive@0.3.1": "1g1a0v98wlcb36ibwv1nv75g3b3s1mjmaps443fc2w2maam94lya", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.74.0#stackable-operator@0.74.0": "1g1a0v98wlcb36ibwv1nv75g3b3s1mjmaps443fc2w2maam94lya", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#k8s-version@0.1.2": "0li9smdrz7danqz17lfkl0j9zl2i84csgc7d01lxs5qi8jcs9fzw", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#stackable-operator-derive@0.3.1": "0li9smdrz7danqz17lfkl0j9zl2i84csgc7d01lxs5qi8jcs9fzw", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#stackable-operator@0.92.0": "0li9smdrz7danqz17lfkl0j9zl2i84csgc7d01lxs5qi8jcs9fzw", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#stackable-shared@0.0.1": "0li9smdrz7danqz17lfkl0j9zl2i84csgc7d01lxs5qi8jcs9fzw", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#stackable-telemetry@0.6.0": "0li9smdrz7danqz17lfkl0j9zl2i84csgc7d01lxs5qi8jcs9fzw", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#stackable-versioned-macros@0.7.1": "0li9smdrz7danqz17lfkl0j9zl2i84csgc7d01lxs5qi8jcs9fzw", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#stackable-versioned@0.7.1": "0li9smdrz7danqz17lfkl0j9zl2i84csgc7d01lxs5qi8jcs9fzw", "git+https://github.com/stackabletech/product-config.git?tag=0.7.0#product-config@0.7.0": "0gjsm80g6r75pm3824dcyiz4ysq1ka4c1if6k1mjm9cnd5ym0gny" } diff --git a/docs/modules/stackablectl/partials/commands/cache.adoc b/docs/modules/stackablectl/partials/commands/cache.adoc index 511c26f0..4158759b 100644 --- a/docs/modules/stackablectl/partials/commands/cache.adoc +++ b/docs/modules/stackablectl/partials/commands/cache.adoc @@ -62,22 +62,22 @@ File options: to provide multiple additional release files. Helm repository options: - --helm-repo-stable + --helm-repo-stable Provide a custom Helm stable repository URL [default: https://repo.stackable.tech/repository/helm-stable/] - --helm-repo-test + --helm-repo-test Provide a custom Helm test repository URL [default: https://repo.stackable.tech/repository/helm-test/] - --helm-repo-dev + --helm-repo-dev Provide a custom Helm dev repository URL [default: https://repo.stackable.tech/repository/helm-dev/] - --chart-source + --chart-source Source the charts from either a OCI registry or from index.yaml-based repositories. [default: oci] diff --git a/docs/modules/stackablectl/partials/commands/completions.adoc b/docs/modules/stackablectl/partials/commands/completions.adoc index e9213ef0..f1ae0f57 100644 --- a/docs/modules/stackablectl/partials/commands/completions.adoc +++ b/docs/modules/stackablectl/partials/commands/completions.adoc @@ -65,22 +65,22 @@ File options: to provide multiple additional release files. Helm repository options: - --helm-repo-stable + --helm-repo-stable Provide a custom Helm stable repository URL [default: https://repo.stackable.tech/repository/helm-stable/] - --helm-repo-test + --helm-repo-test Provide a custom Helm test repository URL [default: https://repo.stackable.tech/repository/helm-test/] - --helm-repo-dev + --helm-repo-dev Provide a custom Helm dev repository URL [default: https://repo.stackable.tech/repository/helm-dev/] - --chart-source + --chart-source Source the charts from either a OCI registry or from index.yaml-based repositories. [default: oci] diff --git a/docs/modules/stackablectl/partials/commands/demo.adoc b/docs/modules/stackablectl/partials/commands/demo.adoc index f796f3e6..d9f2e91b 100644 --- a/docs/modules/stackablectl/partials/commands/demo.adoc +++ b/docs/modules/stackablectl/partials/commands/demo.adoc @@ -66,22 +66,22 @@ File options: to provide multiple additional release files. Helm repository options: - --helm-repo-stable + --helm-repo-stable Provide a custom Helm stable repository URL [default: https://repo.stackable.tech/repository/helm-stable/] - --helm-repo-test + --helm-repo-test Provide a custom Helm test repository URL [default: https://repo.stackable.tech/repository/helm-test/] - --helm-repo-dev + --helm-repo-dev Provide a custom Helm dev repository URL [default: https://repo.stackable.tech/repository/helm-dev/] - --chart-source + --chart-source Source the charts from either a OCI registry or from index.yaml-based repositories. [default: oci] diff --git a/docs/modules/stackablectl/partials/commands/experimental-debug.adoc b/docs/modules/stackablectl/partials/commands/experimental-debug.adoc index 69beb787..42ebfae9 100644 --- a/docs/modules/stackablectl/partials/commands/experimental-debug.adoc +++ b/docs/modules/stackablectl/partials/commands/experimental-debug.adoc @@ -79,22 +79,22 @@ File options: to provide multiple additional release files. Helm repository options: - --helm-repo-stable + --helm-repo-stable Provide a custom Helm stable repository URL [default: https://repo.stackable.tech/repository/helm-stable/] - --helm-repo-test + --helm-repo-test Provide a custom Helm test repository URL [default: https://repo.stackable.tech/repository/helm-test/] - --helm-repo-dev + --helm-repo-dev Provide a custom Helm dev repository URL [default: https://repo.stackable.tech/repository/helm-dev/] - --chart-source + --chart-source Source the charts from either a OCI registry or from index.yaml-based repositories. [default: oci] diff --git a/docs/modules/stackablectl/partials/commands/index.adoc b/docs/modules/stackablectl/partials/commands/index.adoc index a83def02..93bbdad8 100644 --- a/docs/modules/stackablectl/partials/commands/index.adoc +++ b/docs/modules/stackablectl/partials/commands/index.adoc @@ -68,22 +68,22 @@ File options: to provide multiple additional release files. Helm repository options: - --helm-repo-stable + --helm-repo-stable Provide a custom Helm stable repository URL [default: https://repo.stackable.tech/repository/helm-stable/] - --helm-repo-test + --helm-repo-test Provide a custom Helm test repository URL [default: https://repo.stackable.tech/repository/helm-test/] - --helm-repo-dev + --helm-repo-dev Provide a custom Helm dev repository URL [default: https://repo.stackable.tech/repository/helm-dev/] - --chart-source + --chart-source Source the charts from either a OCI registry or from index.yaml-based repositories. [default: oci] diff --git a/docs/modules/stackablectl/partials/commands/operator.adoc b/docs/modules/stackablectl/partials/commands/operator.adoc index 0d97ae6d..b032e1a1 100644 --- a/docs/modules/stackablectl/partials/commands/operator.adoc +++ b/docs/modules/stackablectl/partials/commands/operator.adoc @@ -65,22 +65,22 @@ File options: to provide multiple additional release files. Helm repository options: - --helm-repo-stable + --helm-repo-stable Provide a custom Helm stable repository URL [default: https://repo.stackable.tech/repository/helm-stable/] - --helm-repo-test + --helm-repo-test Provide a custom Helm test repository URL [default: https://repo.stackable.tech/repository/helm-test/] - --helm-repo-dev + --helm-repo-dev Provide a custom Helm dev repository URL [default: https://repo.stackable.tech/repository/helm-dev/] - --chart-source + --chart-source Source the charts from either a OCI registry or from index.yaml-based repositories. [default: oci] diff --git a/docs/modules/stackablectl/partials/commands/release.adoc b/docs/modules/stackablectl/partials/commands/release.adoc index 63941ea3..a2030bd4 100644 --- a/docs/modules/stackablectl/partials/commands/release.adoc +++ b/docs/modules/stackablectl/partials/commands/release.adoc @@ -64,22 +64,22 @@ File options: to provide multiple additional release files. Helm repository options: - --helm-repo-stable + --helm-repo-stable Provide a custom Helm stable repository URL [default: https://repo.stackable.tech/repository/helm-stable/] - --helm-repo-test + --helm-repo-test Provide a custom Helm test repository URL [default: https://repo.stackable.tech/repository/helm-test/] - --helm-repo-dev + --helm-repo-dev Provide a custom Helm dev repository URL [default: https://repo.stackable.tech/repository/helm-dev/] - --chart-source + --chart-source Source the charts from either a OCI registry or from index.yaml-based repositories. [default: oci] diff --git a/docs/modules/stackablectl/partials/commands/stack.adoc b/docs/modules/stackablectl/partials/commands/stack.adoc index f92156ec..e03586ee 100644 --- a/docs/modules/stackablectl/partials/commands/stack.adoc +++ b/docs/modules/stackablectl/partials/commands/stack.adoc @@ -66,22 +66,22 @@ File options: to provide multiple additional release files. Helm repository options: - --helm-repo-stable + --helm-repo-stable Provide a custom Helm stable repository URL [default: https://repo.stackable.tech/repository/helm-stable/] - --helm-repo-test + --helm-repo-test Provide a custom Helm test repository URL [default: https://repo.stackable.tech/repository/helm-test/] - --helm-repo-dev + --helm-repo-dev Provide a custom Helm dev repository URL [default: https://repo.stackable.tech/repository/helm-dev/] - --chart-source + --chart-source Source the charts from either a OCI registry or from index.yaml-based repositories. [default: oci] diff --git a/docs/modules/stackablectl/partials/commands/stacklet.adoc b/docs/modules/stackablectl/partials/commands/stacklet.adoc index 9b7f9ad3..282b41bb 100644 --- a/docs/modules/stackablectl/partials/commands/stacklet.adoc +++ b/docs/modules/stackablectl/partials/commands/stacklet.adoc @@ -67,22 +67,22 @@ File options: to provide multiple additional release files. Helm repository options: - --helm-repo-stable + --helm-repo-stable Provide a custom Helm stable repository URL [default: https://repo.stackable.tech/repository/helm-stable/] - --helm-repo-test + --helm-repo-test Provide a custom Helm test repository URL [default: https://repo.stackable.tech/repository/helm-test/] - --helm-repo-dev + --helm-repo-dev Provide a custom Helm dev repository URL [default: https://repo.stackable.tech/repository/helm-dev/] - --chart-source + --chart-source Source the charts from either a OCI registry or from index.yaml-based repositories. [default: oci] diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 0193dee3..c1bc0a69 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,2 +1,2 @@ [toolchain] -channel = "1.83.0" +channel = "1.85.0" diff --git a/rust/helm-sys/src/lib.rs b/rust/helm-sys/src/lib.rs index 9c7d66d4..64f98965 100644 --- a/rust/helm-sys/src/lib.rs +++ b/rust/helm-sys/src/lib.rs @@ -5,7 +5,7 @@ include!(concat!(env!("OUT_DIR"), "/bindings.rs")); -use std::ffi::{c_char, CStr, CString}; +use std::ffi::{CStr, CString, c_char}; pub const HELM_ERROR_PREFIX: &str = "ERROR:"; @@ -106,9 +106,9 @@ pub fn to_helm_error(result: &str) -> Option { /// also makes sure, that the pointer (and underlying memory) of the Go string is /// freed. The pointer **cannot** be used afterwards. unsafe fn cstr_ptr_to_string(c: *mut c_char) -> String { - let cstr = CStr::from_ptr(c); + let cstr = unsafe { CStr::from_ptr(c) }; let s = String::from_utf8_lossy(cstr.to_bytes()).to_string(); - free_go_string(cstr.as_ptr() as *mut c_char); + unsafe { free_go_string(cstr.as_ptr() as *mut c_char) }; s } diff --git a/rust/stackable-cockpit/src/common/manifest.rs b/rust/stackable-cockpit/src/common/manifest.rs index f6076a80..5f533f93 100644 --- a/rust/stackable-cockpit/src/common/manifest.rs +++ b/rust/stackable-cockpit/src/common/manifest.rs @@ -1,5 +1,4 @@ use serde::{Deserialize, Serialize}; - #[cfg(feature = "openapi")] use utoipa::ToSchema; diff --git a/rust/stackable-cockpit/src/engine/kind/mod.rs b/rust/stackable-cockpit/src/engine/kind/mod.rs index 85b8843f..eabe318e 100644 --- a/rust/stackable-cockpit/src/engine/kind/mod.rs +++ b/rust/stackable-cockpit/src/engine/kind/mod.rs @@ -1,6 +1,6 @@ use std::process::Stdio; -use snafu::{ensure, OptionExt, ResultExt, Snafu}; +use snafu::{OptionExt, ResultExt, Snafu, ensure}; use tokio::{io::AsyncWriteExt, process::Command}; use tracing::{debug, info, instrument}; @@ -141,12 +141,9 @@ impl Cluster { .await .context(CommandFailedToRunSnafu)?; - ensure!( - output.status.success(), - CommandErroredOutSnafu { - error: String::from_utf8_lossy(&output.stderr) - } - ); + ensure!(output.status.success(), CommandErroredOutSnafu { + error: String::from_utf8_lossy(&output.stderr) + }); let output = String::from_utf8_lossy(&output.stdout); Ok(output.lines().any(|name| name == cluster_name)) diff --git a/rust/stackable-cockpit/src/helm.rs b/rust/stackable-cockpit/src/helm.rs index fd263aad..cd219166 100644 --- a/rust/stackable-cockpit/src/helm.rs +++ b/rust/stackable-cockpit/src/helm.rs @@ -74,7 +74,9 @@ pub enum InstallReleaseError { /// This error indicates that the Helm release is already installed at a /// different version than requested. Installation is skipped. Existing /// releases should be uninstalled with 'stackablectl op un \'. - #[snafu(display("release {name} ({current_version}) already installed, skipping requested version {requested_version}"))] + #[snafu(display( + "release {name} ({current_version}) already installed, skipping requested version {requested_version}" + ))] ReleaseAlreadyInstalled { name: String, current_version: String, @@ -130,8 +132,7 @@ impl Display for InstallReleaseStatus { write!( f, "The release {} ({}) is already installed and no specific version was requested, skipping.", - release_name, - current_version + release_name, current_version ) } InstallReleaseStatus::Installed(release_name) => { @@ -230,7 +231,7 @@ pub fn install_release_from_repo_or_registry( return Ok(InstallReleaseStatus::ReleaseAlreadyInstalledUnspecified { release_name: release_name.to_string(), current_version, - }) + }); } } } diff --git a/rust/stackable-cockpit/src/oci.rs b/rust/stackable-cockpit/src/oci.rs index 337cc876..5e350bd3 100644 --- a/rust/stackable-cockpit/src/oci.rs +++ b/rust/stackable-cockpit/src/oci.rs @@ -128,12 +128,9 @@ pub async fn get_oci_index<'a>() -> Result HELM_REPO_NAME_TEST, HELM_REPO_NAME_DEV, ] { - source_index_files.insert( - repo_name, - ChartSourceMetadata { - entries: HashMap::new(), - }, - ); + source_index_files.insert(repo_name, ChartSourceMetadata { + entries: HashMap::new(), + }); } let base_url = format!("https://{HELM_OCI_BASE}/api/v2.0"); diff --git a/rust/stackable-cockpit/src/platform/cluster/resource_request.rs b/rust/stackable-cockpit/src/platform/cluster/resource_request.rs index 6b3adfda..b254bd75 100644 --- a/rust/stackable-cockpit/src/platform/cluster/resource_request.rs +++ b/rust/stackable-cockpit/src/platform/cluster/resource_request.rs @@ -1,12 +1,11 @@ use std::fmt::Display; -#[cfg(feature = "openapi")] -use utoipa::ToSchema; - use k8s_openapi::apimachinery::pkg::api::resource::Quantity; use serde::{Deserialize, Serialize}; use snafu::{ResultExt, Snafu}; use stackable_operator::{cpu::CpuQuantity, memory::MemoryQuantity}; +#[cfg(feature = "openapi")] +use utoipa::ToSchema; use crate::utils::k8s::{Client, Error}; diff --git a/rust/stackable-cockpit/src/platform/credentials.rs b/rust/stackable-cockpit/src/platform/credentials.rs index abe35ae4..f03caaa9 100644 --- a/rust/stackable-cockpit/src/platform/credentials.rs +++ b/rust/stackable-cockpit/src/platform/credentials.rs @@ -1,6 +1,6 @@ use std::fmt::Display; -use kube::{core::DynamicObject, ResourceExt}; +use kube::{ResourceExt, core::DynamicObject}; use serde::Serialize; use snafu::{OptionExt, ResultExt, Snafu}; diff --git a/rust/stackable-cockpit/src/platform/demo/spec.rs b/rust/stackable-cockpit/src/platform/demo/spec.rs index 0d8ca246..75efd265 100644 --- a/rust/stackable-cockpit/src/platform/demo/spec.rs +++ b/rust/stackable-cockpit/src/platform/demo/spec.rs @@ -1,7 +1,6 @@ use serde::{Deserialize, Serialize}; use snafu::{OptionExt, ResultExt, Snafu}; use tracing::{debug, info, instrument, warn}; - #[cfg(feature = "openapi")] use utoipa::ToSchema; diff --git a/rust/stackable-cockpit/src/platform/namespace.rs b/rust/stackable-cockpit/src/platform/namespace.rs index 21d007cf..10e2ca01 100644 --- a/rust/stackable-cockpit/src/platform/namespace.rs +++ b/rust/stackable-cockpit/src/platform/namespace.rs @@ -7,7 +7,9 @@ pub enum Error { #[snafu(display("failed to create Kubernetes client"))] KubeClientCreate { source: k8s::Error }, - #[snafu(display("permission denied - try to create the namespace manually or choose an already existing one to which you have access to"))] + #[snafu(display( + "permission denied - try to create the namespace manually or choose an already existing one to which you have access to" + ))] PermissionDenied, } diff --git a/rust/stackable-cockpit/src/platform/operator/mod.rs b/rust/stackable-cockpit/src/platform/operator/mod.rs index 5adbb768..965afe37 100644 --- a/rust/stackable-cockpit/src/platform/operator/mod.rs +++ b/rust/stackable-cockpit/src/platform/operator/mod.rs @@ -2,7 +2,7 @@ use std::{fmt::Display, str::FromStr}; use semver::Version; use serde::Serialize; -use snafu::{ensure, ResultExt, Snafu}; +use snafu::{ResultExt, Snafu, ensure}; use tracing::{info, instrument}; use crate::{ @@ -61,15 +61,10 @@ pub struct OperatorSpec { impl Display for OperatorSpec { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!( - f, - "{}{}", - self.name, - match &self.version { - Some(v) => format!("={v}"), - None => "".into(), - } - ) + write!(f, "{}{}", self.name, match &self.version { + Some(v) => format!("={v}"), + None => "".into(), + }) } } @@ -91,10 +86,9 @@ impl FromStr for OperatorSpec { ensure!(len <= 2, InvalidEqualSignCountSnafu); // Check if the provided operator name is in the list of valid operators - ensure!( - VALID_OPERATORS.contains(&parts[0]), - InvalidNameSnafu { name: parts[0] } - ); + ensure!(VALID_OPERATORS.contains(&parts[0]), InvalidNameSnafu { + name: parts[0] + }); // If there is only one part, the input didn't include // the optional version identifier diff --git a/rust/stackable-cockpit/src/platform/product.rs b/rust/stackable-cockpit/src/platform/product.rs index e243c246..b45f1129 100644 --- a/rust/stackable-cockpit/src/platform/product.rs +++ b/rust/stackable-cockpit/src/platform/product.rs @@ -1,6 +1,5 @@ use semver::Version; use serde::{Deserialize, Serialize}; - #[cfg(feature = "openapi")] use utoipa::ToSchema; diff --git a/rust/stackable-cockpit/src/platform/release/spec.rs b/rust/stackable-cockpit/src/platform/release/spec.rs index eb815e55..1bb8be6b 100644 --- a/rust/stackable-cockpit/src/platform/release/spec.rs +++ b/rust/stackable-cockpit/src/platform/release/spec.rs @@ -3,8 +3,7 @@ use indexmap::IndexMap; use serde::{Deserialize, Serialize}; use snafu::{ResultExt, Snafu}; use tokio::task::JoinError; -use tracing::{info, instrument, Instrument, Span}; - +use tracing::{Instrument, Span, info, instrument}; #[cfg(feature = "openapi")] use utoipa::ToSchema; diff --git a/rust/stackable-cockpit/src/platform/service.rs b/rust/stackable-cockpit/src/platform/service.rs index 8d84c1e2..f82d50fe 100644 --- a/rust/stackable-cockpit/src/platform/service.rs +++ b/rust/stackable-cockpit/src/platform/service.rs @@ -9,7 +9,7 @@ use std::collections::HashMap; use indexmap::IndexMap; use k8s_openapi::api::core::v1::{Service, ServiceSpec}; -use kube::{api::ListParams, ResourceExt}; +use kube::{ResourceExt, api::ListParams}; use snafu::{OptionExt, ResultExt, Snafu}; use tracing::{debug, warn}; @@ -168,25 +168,36 @@ pub async fn get_endpoint_urls_for_nodeport( Some(addresses) if !addresses.is_empty() => match &addresses[0].node_name { Some(node_name) => node_name, None => { - warn!("Could not determine the node the endpoint {service_name} is running on because the address of the subset didn't had a node name"); + warn!( + "Could not determine the node the endpoint {service_name} is running on because the address of the subset didn't had a node name" + ); return Ok(IndexMap::new()); } }, Some(_) => { - warn!("Could not determine the node the endpoint {service_name} is running on because the subset had no addresses"); + warn!( + "Could not determine the node the endpoint {service_name} is running on because the subset had no addresses" + ); return Ok(IndexMap::new()); } None => { - warn!("Could not determine the node the endpoint {service_name} is running on because subset had no addresses. Is the service {service_name} up and running?"); + warn!( + "Could not determine the node the endpoint {service_name} is running on because subset had no addresses. Is the service {service_name} up and running?" + ); return Ok(IndexMap::new()); } }, Some(subsets) => { - warn!("Could not determine the node the endpoint {service_name} is running on because endpoints consists of {num_subsets} subsets", num_subsets=subsets.len()); + warn!( + "Could not determine the node the endpoint {service_name} is running on because endpoints consists of {num_subsets} subsets", + num_subsets = subsets.len() + ); return Ok(IndexMap::new()); } None => { - warn!("Could not determine the node the endpoint {service_name} is running on because the endpoint has no subset. Is the service {service_name} up and running?"); + warn!( + "Could not determine the node the endpoint {service_name} is running on because the endpoint has no subset. Is the service {service_name} up and running?" + ); return Ok(IndexMap::new()); } }; @@ -336,9 +347,10 @@ fn display_name_for_listener_name(listener_name: &str, object_name: &str) -> Opt #[cfg(test)] mod tests { - use super::*; use rstest::rstest; + use super::*; + #[rstest] // These are all the listener names implemented so far (only HDFS is using listener-operator). In the future more // test-case should be added. diff --git a/rust/stackable-cockpit/src/platform/stack/spec.rs b/rust/stackable-cockpit/src/platform/stack/spec.rs index 5bba6224..5e638935 100644 --- a/rust/stackable-cockpit/src/platform/stack/spec.rs +++ b/rust/stackable-cockpit/src/platform/stack/spec.rs @@ -1,7 +1,6 @@ use serde::{Deserialize, Serialize}; use snafu::{OptionExt, ResultExt, Snafu}; use tracing::{debug, info, instrument, log::warn}; - #[cfg(feature = "openapi")] use utoipa::ToSchema; diff --git a/rust/stackable-cockpit/src/platform/stacklet/grafana.rs b/rust/stackable-cockpit/src/platform/stacklet/grafana.rs index 941035d8..3347276f 100644 --- a/rust/stackable-cockpit/src/platform/stacklet/grafana.rs +++ b/rust/stackable-cockpit/src/platform/stacklet/grafana.rs @@ -1,4 +1,4 @@ -use kube::{api::ListParams, ResourceExt}; +use kube::{ResourceExt, api::ListParams}; use snafu::ResultExt; use crate::{ diff --git a/rust/stackable-cockpit/src/platform/stacklet/minio.rs b/rust/stackable-cockpit/src/platform/stacklet/minio.rs index c881409a..bfa7dab1 100644 --- a/rust/stackable-cockpit/src/platform/stacklet/minio.rs +++ b/rust/stackable-cockpit/src/platform/stacklet/minio.rs @@ -1,4 +1,4 @@ -use kube::{api::ListParams, ResourceExt}; +use kube::{ResourceExt, api::ListParams}; use snafu::ResultExt; use crate::{ diff --git a/rust/stackable-cockpit/src/platform/stacklet/mod.rs b/rust/stackable-cockpit/src/platform/stacklet/mod.rs index f8f35490..7c6e6d20 100644 --- a/rust/stackable-cockpit/src/platform/stacklet/mod.rs +++ b/rust/stackable-cockpit/src/platform/stacklet/mod.rs @@ -1,10 +1,9 @@ use indexmap::IndexMap; -use kube::{core::GroupVersionKind, ResourceExt}; +use kube::{ResourceExt, core::GroupVersionKind}; use serde::Serialize; use snafu::{ResultExt, Snafu}; use stackable_operator::status::condition::ClusterCondition; use tracing::info; - #[cfg(feature = "openapi")] use utoipa::ToSchema; @@ -103,7 +102,7 @@ pub async fn get_credentials_for_product( Ok(credentials) => credentials, Err(credentials::Error::NoSecret) => None, Err(credentials::Error::KubeClientFetch { source }) => { - return Err(Error::KubeClientFetch { source }) + return Err(Error::KubeClientFetch { source }); } }; @@ -171,14 +170,11 @@ fn build_products_gvk_list<'a>(product_names: &[&'a str]) -> IndexMap<&'a str, G for product_name in product_names { // Why? Just why? Can we please make this consistent? if *product_name == "spark-history-server" { - map.insert( - *product_name, - GroupVersionKind { - group: "spark.stackable.tech".into(), - version: "v1alpha1".into(), - kind: "SparkHistoryServer".into(), - }, - ); + map.insert(*product_name, GroupVersionKind { + group: "spark.stackable.tech".into(), + version: "v1alpha1".into(), + kind: "SparkHistoryServer".into(), + }); continue; } diff --git a/rust/stackable-cockpit/src/platform/stacklet/opensearch.rs b/rust/stackable-cockpit/src/platform/stacklet/opensearch.rs index 2e6f4b86..32a92e04 100644 --- a/rust/stackable-cockpit/src/platform/stacklet/opensearch.rs +++ b/rust/stackable-cockpit/src/platform/stacklet/opensearch.rs @@ -1,4 +1,4 @@ -use kube::{api::ListParams, ResourceExt}; +use kube::{ResourceExt, api::ListParams}; use snafu::ResultExt; use crate::{ diff --git a/rust/stackable-cockpit/src/platform/stacklet/prometheus.rs b/rust/stackable-cockpit/src/platform/stacklet/prometheus.rs index 6611e292..be8f36f4 100644 --- a/rust/stackable-cockpit/src/platform/stacklet/prometheus.rs +++ b/rust/stackable-cockpit/src/platform/stacklet/prometheus.rs @@ -1,4 +1,4 @@ -use kube::{api::ListParams, ResourceExt}; +use kube::{ResourceExt, api::ListParams}; use snafu::ResultExt; use crate::{ diff --git a/rust/stackable-cockpit/src/utils/check.rs b/rust/stackable-cockpit/src/utils/check.rs index bb67806c..401b01b6 100644 --- a/rust/stackable-cockpit/src/utils/check.rs +++ b/rust/stackable-cockpit/src/utils/check.rs @@ -1,8 +1,8 @@ +use std::ffi::OsStr; + use tracing::{debug, instrument}; use which::which; -use std::ffi::OsStr; - /// Returns if the binary with `name` is present in the $PATH. pub fn binary_present>(name: T) -> bool { which(name).is_ok() diff --git a/rust/stackable-cockpit/src/utils/k8s/client.rs b/rust/stackable-cockpit/src/utils/k8s/client.rs index 07b5f484..c87b7118 100644 --- a/rust/stackable-cockpit/src/utils/k8s/client.rs +++ b/rust/stackable-cockpit/src/utils/k8s/client.rs @@ -5,10 +5,10 @@ use k8s_openapi::api::{ core::v1::{Endpoints, Namespace, Node, Secret, Service}, }; use kube::{ + Api, Discovery, ResourceExt, api::{ListParams, Patch, PatchParams, PostParams}, core::{DynamicObject, GroupVersionKind, ObjectList, ObjectMeta, TypeMeta}, discovery::{ApiCapabilities, ApiResource, Scope}, - Api, Discovery, ResourceExt, }; use serde::Deserialize; use snafu::{OptionExt, ResultExt, Snafu}; @@ -16,14 +16,13 @@ use stackable_operator::{commons::listener::Listener, kvp::Labels}; use tokio::sync::RwLock; use tracing::info; +#[cfg(doc)] +use crate::utils::k8s::ListParamsExt; use crate::{ platform::{cluster, credentials::Credentials}, utils::k8s::ByteStringExt, }; -#[cfg(doc)] -use crate::utils::k8s::ListParamsExt; - pub type ListResult = Result, E>; pub type Result = std::result::Result; @@ -355,16 +354,13 @@ impl Client { pub async fn create_namespace(&self, name: String) -> Result<()> { let namespace_api: Api = Api::all(self.client.clone()); namespace_api - .create( - &PostParams::default(), - &Namespace { - metadata: ObjectMeta { - name: Some(name), - ..Default::default() - }, + .create(&PostParams::default(), &Namespace { + metadata: ObjectMeta { + name: Some(name), ..Default::default() }, - ) + ..Default::default() + }) .await .context(KubeClientPatchSnafu)?; diff --git a/rust/stackable-cockpit/src/utils/k8s/conditions.rs b/rust/stackable-cockpit/src/utils/k8s/conditions.rs index e0a36099..06abc174 100644 --- a/rust/stackable-cockpit/src/utils/k8s/conditions.rs +++ b/rust/stackable-cockpit/src/utils/k8s/conditions.rs @@ -4,7 +4,6 @@ use k8s_openapi::{ }; use serde::Serialize; use stackable_operator::status::condition::ClusterCondition; - #[cfg(feature = "openapi")] use utoipa::ToSchema; diff --git a/rust/stackable-cockpit/src/utils/params.rs b/rust/stackable-cockpit/src/utils/params.rs index 6be7b867..623aeac4 100644 --- a/rust/stackable-cockpit/src/utils/params.rs +++ b/rust/stackable-cockpit/src/utils/params.rs @@ -5,8 +5,7 @@ use std::{ }; use serde::{Deserialize, Serialize}; -use snafu::{ensure, ResultExt, Snafu}; - +use snafu::{ResultExt, Snafu, ensure}; #[cfg(feature = "openapi")] use utoipa::ToSchema; @@ -282,23 +281,17 @@ mod test { let p = iter.next(); assert!(p.is_some()); - assert_eq!( - p.unwrap(), - &RawParameter { - name: "param1".into(), - value: "value1".into() - } - ); + assert_eq!(p.unwrap(), &RawParameter { + name: "param1".into(), + value: "value1".into() + }); let p = iter.next(); assert!(p.is_some()); - assert_eq!( - p.unwrap(), - &RawParameter { - name: "param2".into(), - value: "value2".into() - } - ); + assert_eq!(p.unwrap(), &RawParameter { + name: "param2".into(), + value: "value2".into() + }); let p = iter.next(); assert!(p.is_none()); @@ -316,23 +309,17 @@ mod test { let p = iter.next(); assert!(p.is_some()); - assert_eq!( - p.unwrap(), - &RawParameter { - name: "param1".into(), - value: "value1".into() - } - ); + assert_eq!(p.unwrap(), &RawParameter { + name: "param1".into(), + value: "value1".into() + }); let p = iter.next(); assert!(p.is_some()); - assert_eq!( - p.unwrap(), - &RawParameter { - name: "param2".into(), - value: "value2".into() - } - ); + assert_eq!(p.unwrap(), &RawParameter { + name: "param2".into(), + value: "value2".into() + }); let p = iter.next(); assert!(p.is_none()); @@ -380,13 +367,10 @@ mod test { match input.into_params(valid_parameters) { Ok(validated) => panic!("SHOULD FAIL: {validated:?}"), - Err(err) => assert_eq!( - err, - IntoParametersError::InvalidParameter { - parameter: "param2".into(), - expected: "param1".into() - } - ), + Err(err) => assert_eq!(err, IntoParametersError::InvalidParameter { + parameter: "param2".into(), + expected: "param1".into() + }), } } } diff --git a/rust/stackable-cockpit/src/xfer/cache.rs b/rust/stackable-cockpit/src/xfer/cache.rs index b76cc681..a1565a57 100644 --- a/rust/stackable-cockpit/src/xfer/cache.rs +++ b/rust/stackable-cockpit/src/xfer/cache.rs @@ -189,7 +189,7 @@ impl Cache { // back the new timestamp if last_purged_at .and_then(|ts| ts.elapsed().ok()) - .map_or(true, |elapsed| elapsed >= self.auto_purge_interval) + .is_none_or(|elapsed| elapsed >= self.auto_purge_interval) { debug!("Auto-purging outdated cache files"); diff --git a/rust/stackable-cockpitd/src/api_doc.rs b/rust/stackable-cockpitd/src/api_doc.rs index 3b2a2858..8b8f3846 100644 --- a/rust/stackable-cockpitd/src/api_doc.rs +++ b/rust/stackable-cockpitd/src/api_doc.rs @@ -6,8 +6,8 @@ use stackable_cockpit::{ utils::{k8s::DisplayCondition, params::Parameter}, }; use utoipa::{ - openapi::security::{HttpAuthScheme, SecurityScheme}, OpenApi, + openapi::security::{HttpAuthScheme, SecurityScheme}, }; use crate::{ diff --git a/rust/stackable-cockpitd/src/handlers/demos.rs b/rust/stackable-cockpitd/src/handlers/demos.rs index f963599d..e1204539 100644 --- a/rust/stackable-cockpitd/src/handlers/demos.rs +++ b/rust/stackable-cockpitd/src/handlers/demos.rs @@ -1,4 +1,4 @@ -use axum::{extract::Path, routing::get, Json, Router}; +use axum::{Json, Router, extract::Path, routing::get}; use stackable_cockpit::platform::demo::DemoSpec; /// Creates the demo sub-router. diff --git a/rust/stackable-cockpitd/src/handlers/releases.rs b/rust/stackable-cockpitd/src/handlers/releases.rs index c0cad219..be4a1b91 100644 --- a/rust/stackable-cockpitd/src/handlers/releases.rs +++ b/rust/stackable-cockpitd/src/handlers/releases.rs @@ -1,4 +1,4 @@ -use axum::{extract::Path, routing::get, Json, Router}; +use axum::{Json, Router, extract::Path, routing::get}; use stackable_cockpit::platform::release::ReleaseSpec; /// Creates the release sub-router. diff --git a/rust/stackable-cockpitd/src/handlers/stacklets.rs b/rust/stackable-cockpitd/src/handlers/stacklets.rs index 7a6c8231..cc314619 100644 --- a/rust/stackable-cockpitd/src/handlers/stacklets.rs +++ b/rust/stackable-cockpitd/src/handlers/stacklets.rs @@ -1,7 +1,6 @@ -use axum::{routing::get, Json, Router}; -use stackable_cockpit::{platform, utils::k8s::Client}; - +use axum::{Json, Router, routing::get}; pub use stackable_cockpit::platform::stacklet::Stacklet; +use stackable_cockpit::{platform, utils::k8s::Client}; /// Creates the stack sub-router. pub fn router() -> Router { diff --git a/rust/stackable-cockpitd/src/handlers/stacks.rs b/rust/stackable-cockpitd/src/handlers/stacks.rs index acdd0a37..496f4bdf 100644 --- a/rust/stackable-cockpitd/src/handlers/stacks.rs +++ b/rust/stackable-cockpitd/src/handlers/stacks.rs @@ -1,4 +1,4 @@ -use axum::{extract::Path, routing::get, Json, Router}; +use axum::{Json, Router, extract::Path, routing::get}; use stackable_cockpit::platform::stack::StackSpec; /// Creates the stack sub-router. diff --git a/rust/stackable-cockpitd/src/handlers/ui.rs b/rust/stackable-cockpitd/src/handlers/ui.rs index 7276efab..9abdb02b 100644 --- a/rust/stackable-cockpitd/src/handlers/ui.rs +++ b/rust/stackable-cockpitd/src/handlers/ui.rs @@ -1,9 +1,9 @@ use axum::{ + Router, extract::Path, - http::{header::CONTENT_TYPE, HeaderValue}, + http::{HeaderValue, header::CONTENT_TYPE}, response::{Html, IntoResponse}, routing::get, - Router, }; pub fn router() -> Router { @@ -18,14 +18,11 @@ async fn ui() -> Html<&'static str> { } async fn asset(Path(name): Path) -> impl IntoResponse { ( - [( - CONTENT_TYPE, - match name.rsplit_once('.') { - Some((_, "js")) => HeaderValue::from_static("text/javascript"), - Some((_, "css")) => HeaderValue::from_static("text/css"), - _ => HeaderValue::from_static("application/octet-stream"), - }, - )], + [(CONTENT_TYPE, match name.rsplit_once('.') { + Some((_, "js")) => HeaderValue::from_static("text/javascript"), + Some((_, "css")) => HeaderValue::from_static("text/css"), + _ => HeaderValue::from_static("application/octet-stream"), + })], stackable_cockpit_web::ASSETS[&name], ) } diff --git a/rust/stackable-cockpitd/src/handlers/ui_disabled.rs b/rust/stackable-cockpitd/src/handlers/ui_disabled.rs index d204b8bc..88adbd9e 100644 --- a/rust/stackable-cockpitd/src/handlers/ui_disabled.rs +++ b/rust/stackable-cockpitd/src/handlers/ui_disabled.rs @@ -1,4 +1,4 @@ -use axum::{routing::get, Router}; +use axum::{Router, routing::get}; pub fn router() -> Router { Router::new().route("/", get(disabled_message)) diff --git a/rust/stackable-cockpitd/src/main.rs b/rust/stackable-cockpitd/src/main.rs index c484cecc..98c5f61c 100644 --- a/rust/stackable-cockpitd/src/main.rs +++ b/rust/stackable-cockpitd/src/main.rs @@ -1,9 +1,9 @@ use std::net::SocketAddr; use axum::{ + Router, response::Redirect, routing::{get, post}, - Router, }; use clap::Parser; use futures::FutureExt; @@ -14,7 +14,7 @@ use stackable_cockpitd::{ }; use tokio::net::TcpListener; use tracing::{info, metadata::LevelFilter}; -use tracing_subscriber::{fmt, EnvFilter}; +use tracing_subscriber::{EnvFilter, fmt}; use utoipa_swagger_ui::SwaggerUi; use crate::cli::Cli; diff --git a/rust/stackable-cockpitd/src/middleware/authentication/htpasswd.rs b/rust/stackable-cockpitd/src/middleware/authentication/htpasswd.rs index 09b659b5..aba11b5a 100644 --- a/rust/stackable-cockpitd/src/middleware/authentication/htpasswd.rs +++ b/rust/stackable-cockpitd/src/middleware/authentication/htpasswd.rs @@ -56,11 +56,11 @@ fn parse_entry(entry: &str) -> Result<(Username, PasswordHash), EntryError> { #[cfg(test)] mod tests { - use crate::middleware::authentication::{PasswordHash, Username}; - - use super::{parse, EntryError, Error}; use std::collections::HashMap; + use super::{EntryError, Error, parse}; + use crate::middleware::authentication::{PasswordHash, Username}; + #[test] fn test_load_htaccess() { assert_eq!( diff --git a/rust/stackable-cockpitd/src/middleware/authentication/mod.rs b/rust/stackable-cockpitd/src/middleware/authentication/mod.rs index 1632c92b..d9ccd9aa 100644 --- a/rust/stackable-cockpitd/src/middleware/authentication/mod.rs +++ b/rust/stackable-cockpitd/src/middleware/authentication/mod.rs @@ -6,15 +6,15 @@ use std::{ }; use axum::{ + Json, body::Body, extract::Extension, http::{HeaderMap, HeaderValue, StatusCode}, response::IntoResponse, - Json, }; use axum_extra::headers::{ - authorization::{Basic, Bearer}, Authorization, HeaderMapExt, + authorization::{Basic, Bearer}, }; use serde::Serialize; use tower_http::validate_request::{ValidateRequest, ValidateRequestHeaderLayer}; @@ -93,7 +93,9 @@ impl Authenticator { Err("request authentication failed: invalid username or password") } } else { - Err("request authentication failed: no valid authentication method presented (expected authorization: basic or bearer)") + Err( + "request authentication failed: no valid authentication method presented (expected authorization: basic or bearer)", + ) } } diff --git a/rust/stackablectl/README.md b/rust/stackablectl/README.md index bb4d37d5..26ba50b7 100644 --- a/rust/stackablectl/README.md +++ b/rust/stackablectl/README.md @@ -77,22 +77,22 @@ File options: to provide multiple additional release files. Helm repository options: - --helm-repo-stable + --helm-repo-stable Provide a custom Helm stable repository URL [default: https://repo.stackable.tech/repository/helm-stable/] - --helm-repo-test + --helm-repo-test Provide a custom Helm test repository URL [default: https://repo.stackable.tech/repository/helm-test/] - --helm-repo-dev + --helm-repo-dev Provide a custom Helm dev repository URL [default: https://repo.stackable.tech/repository/helm-dev/] - --chart-source + --chart-source Source the charts from either a OCI registry or from index.yaml-based repositories. [default: oci] diff --git a/rust/stackablectl/src/args/cluster.rs b/rust/stackablectl/src/args/cluster.rs index 33f175b8..e5788d9a 100644 --- a/rust/stackablectl/src/args/cluster.rs +++ b/rust/stackablectl/src/args/cluster.rs @@ -1,6 +1,5 @@ use clap::{Args, ValueEnum}; -use snafu::{ensure, ResultExt, Snafu}; - +use snafu::{ResultExt, Snafu, ensure}; use stackable_cockpit::{ constants::DEFAULT_LOCAL_CLUSTER_NAME, engine::{kind, minikube}, diff --git a/rust/stackablectl/src/cli/mod.rs b/rust/stackablectl/src/cli/mod.rs index 7bef7840..641c8cd4 100644 --- a/rust/stackablectl/src/cli/mod.rs +++ b/rust/stackablectl/src/cli/mod.rs @@ -3,8 +3,6 @@ use std::env; use clap::{Parser, Subcommand, ValueEnum}; use directories::ProjectDirs; use snafu::{ResultExt, Snafu}; -use tracing::{instrument, Level}; - use stackable_cockpit::{ constants::{HELM_REPO_NAME_DEV, HELM_REPO_NAME_STABLE, HELM_REPO_NAME_TEST}, helm, @@ -14,6 +12,7 @@ use stackable_cockpit::{ }, xfer::cache::Settings, }; +use tracing::{Level, instrument}; use crate::{ args::{CommonFileArgs, CommonRepoArgs}, diff --git a/rust/stackablectl/src/cmds/cache.rs b/rust/stackablectl/src/cmds/cache.rs index 3827d449..37dc77ee 100644 --- a/rust/stackablectl/src/cmds/cache.rs +++ b/rust/stackablectl/src/cmds/cache.rs @@ -1,7 +1,7 @@ use std::time::Duration; use clap::{Args, Subcommand}; -use comfy_table::{presets::UTF8_FULL, ColumnConstraint, Table, Width}; +use comfy_table::{ColumnConstraint, Table, Width, presets::UTF8_FULL}; use snafu::{ResultExt, Snafu}; use stackable_cockpit::xfer::cache::{self, Cache, DeleteFilter}; use tracing::{info, instrument}; diff --git a/rust/stackablectl/src/cmds/completions.rs b/rust/stackablectl/src/cmds/completions.rs index efee404d..600f0fc8 100644 --- a/rust/stackablectl/src/cmds/completions.rs +++ b/rust/stackablectl/src/cmds/completions.rs @@ -1,7 +1,8 @@ use clap::{Args, CommandFactory, Subcommand}; use clap_complete::{ - generate, Generator, + Generator, Shell::{Bash, Elvish, Fish, Zsh}, + generate, }; use clap_complete_nushell::Nushell; use snafu::{ResultExt, Snafu}; diff --git a/rust/stackablectl/src/cmds/debug.rs b/rust/stackablectl/src/cmds/debug.rs index f45023b0..cf0feaa1 100644 --- a/rust/stackablectl/src/cmds/debug.rs +++ b/rust/stackablectl/src/cmds/debug.rs @@ -1,16 +1,16 @@ use std::{ io::{Read, Stdin}, os::fd::AsRawFd, - task::{ready, Poll}, + task::{Poll, ready}, }; use clap::Args; use futures::{ - channel::mpsc::{self, Sender}, FutureExt, SinkExt, TryFutureExt, + channel::mpsc::{self, Sender}, }; use rand::Rng; -use snafu::{futures::TryFutureExt as _, OptionExt, ResultExt, Snafu}; +use snafu::{OptionExt, ResultExt, Snafu, futures::TryFutureExt as _}; use stackable_operator::{ builder::pod::security::SecurityContextBuilder, k8s_openapi::api::core::v1::{ContainerStatus, EphemeralContainer, Pod, PodSpec}, @@ -22,10 +22,10 @@ use stackable_operator::{ }; use termion::{raw::IntoRawMode, terminal_size}; use tokio::{ - io::{unix::AsyncFd, AsyncRead}, + io::{AsyncRead, unix::AsyncFd}, signal::unix::SignalKind, }; -use tracing::{error, info, info_span, warn, Instrument}; +use tracing::{Instrument, error, info, info_span, warn}; use crate::cli::Cli; @@ -313,7 +313,9 @@ impl AsyncStdin { return Err(std::io::Error::last_os_error()).context(AsyncifyStdinSnafu); } if old_flags & libc::O_NONBLOCK != 0 { - warn!("stdin is already non-blocking (did you try to create multiple AsyncStdin instances?)"); + warn!( + "stdin is already non-blocking (did you try to create multiple AsyncStdin instances?)" + ); } let status = unsafe { libc::fcntl( diff --git a/rust/stackablectl/src/cmds/demo.rs b/rust/stackablectl/src/cmds/demo.rs index 39a0d151..3a4f4c80 100644 --- a/rust/stackablectl/src/cmds/demo.rs +++ b/rust/stackablectl/src/cmds/demo.rs @@ -1,12 +1,9 @@ use clap::{Args, Subcommand}; use comfy_table::{ - presets::{NOTHING, UTF8_FULL}, ContentArrangement, Row, Table, + presets::{NOTHING, UTF8_FULL}, }; -use snafu::{ensure, OptionExt as _, ResultExt, Snafu}; -use stackable_operator::kvp::{LabelError, Labels}; -use tracing::{debug, info, instrument}; - +use snafu::{OptionExt as _, ResultExt, Snafu, ensure}; use stackable_cockpit::{ common::list, constants::{DEFAULT_NAMESPACE, DEFAULT_OPERATOR_NAMESPACE}, @@ -21,6 +18,8 @@ use stackable_cockpit::{ }, xfer::{self, cache::Cache}, }; +use stackable_operator::kvp::{LabelError, Labels}; +use tracing::{debug, info, instrument}; use crate::{ args::{CommonClusterArgs, CommonClusterArgsError, CommonNamespaceArgs}, @@ -173,10 +172,9 @@ impl DemoArgs { let release_branch = match &self.release { Some(release) => { - ensure!( - release_list.contains_key(release), - NoSuchReleaseSnafu { release } - ); + ensure!(release_list.contains_key(release), NoSuchReleaseSnafu { + release + }); if release == "dev" { "main".to_string() diff --git a/rust/stackablectl/src/cmds/operator.rs b/rust/stackablectl/src/cmds/operator.rs index 4616b966..207b7df4 100644 --- a/rust/stackablectl/src/cmds/operator.rs +++ b/rust/stackablectl/src/cmds/operator.rs @@ -2,15 +2,13 @@ use std::collections::HashMap; use clap::{Args, Subcommand}; use comfy_table::{ - presets::{NOTHING, UTF8_FULL}, ContentArrangement, Table, + presets::{NOTHING, UTF8_FULL}, }; use indexmap::IndexMap; use semver::Version; use serde::Serialize; use snafu::{ResultExt, Snafu}; -use tracing::{debug, info, instrument}; - use stackable_cockpit::{ constants::{ DEFAULT_OPERATOR_NAMESPACE, HELM_REPO_NAME_DEV, HELM_REPO_NAME_STABLE, HELM_REPO_NAME_TEST, @@ -27,11 +25,12 @@ use stackable_cockpit::{ k8s::{self, Client}, }, }; +use tracing::{debug, info, instrument}; use crate::{ args::{CommonClusterArgs, CommonClusterArgsError}, cli::{Cli, OutputType}, - utils::{helm_repo_name_to_repo_url, InvalidRepoNameError}, + utils::{InvalidRepoNameError, helm_repo_name_to_repo_url}, }; const INSTALL_AFTER_HELP_TEXT: &str = "Examples: diff --git a/rust/stackablectl/src/cmds/release.rs b/rust/stackablectl/src/cmds/release.rs index 698dcdd8..bbaee551 100644 --- a/rust/stackablectl/src/cmds/release.rs +++ b/rust/stackablectl/src/cmds/release.rs @@ -1,11 +1,9 @@ use clap::{Args, Subcommand}; use comfy_table::{ - presets::{NOTHING, UTF8_FULL}, ContentArrangement, Table, + presets::{NOTHING, UTF8_FULL}, }; use snafu::{ResultExt, Snafu}; -use tracing::{debug, info, instrument}; - use stackable_cockpit::{ common::list, constants::DEFAULT_OPERATOR_NAMESPACE, @@ -16,6 +14,7 @@ use stackable_cockpit::{ }, xfer::{self, cache::Cache}, }; +use tracing::{debug, info, instrument}; use crate::{ args::{CommonClusterArgs, CommonClusterArgsError}, diff --git a/rust/stackablectl/src/cmds/stack.rs b/rust/stackablectl/src/cmds/stack.rs index 3e5149d2..be78c33a 100644 --- a/rust/stackablectl/src/cmds/stack.rs +++ b/rust/stackablectl/src/cmds/stack.rs @@ -1,12 +1,9 @@ use clap::{Args, Subcommand}; use comfy_table::{ - presets::{NOTHING, UTF8_FULL}, ContentArrangement, Table, + presets::{NOTHING, UTF8_FULL}, }; -use snafu::{ensure, OptionExt as _, ResultExt, Snafu}; -use stackable_operator::kvp::{LabelError, Labels}; -use tracing::{debug, info, instrument}; - +use snafu::{OptionExt as _, ResultExt, Snafu, ensure}; use stackable_cockpit::{ common::list, constants::{DEFAULT_NAMESPACE, DEFAULT_OPERATOR_NAMESPACE}, @@ -21,6 +18,8 @@ use stackable_cockpit::{ }, xfer::{self, cache::Cache}, }; +use stackable_operator::kvp::{LabelError, Labels}; +use tracing::{debug, info, instrument}; use crate::{ args::{CommonClusterArgs, CommonClusterArgsError, CommonNamespaceArgs}, @@ -159,10 +158,9 @@ impl StackArgs { let release_branch = match &self.release { Some(release) => { - ensure!( - release_list.contains_key(release), - NoSuchReleaseSnafu { release } - ); + ensure!(release_list.contains_key(release), NoSuchReleaseSnafu { + release + }); if release == "dev" { "main".to_string() diff --git a/rust/stackablectl/src/cmds/stacklet.rs b/rust/stackablectl/src/cmds/stacklet.rs index ab87abb8..2422f65f 100644 --- a/rust/stackablectl/src/cmds/stacklet.rs +++ b/rust/stackablectl/src/cmds/stacklet.rs @@ -1,16 +1,15 @@ use clap::{Args, Subcommand}; use comfy_table::{ - presets::{NOTHING, UTF8_FULL}, ContentArrangement, Table, + presets::{NOTHING, UTF8_FULL}, }; use snafu::{ResultExt, Snafu}; -use tracing::{info, instrument}; - use stackable_cockpit::{ constants::DEFAULT_NAMESPACE, platform::stacklet::{self, get_credentials_for_product, list_stacklets}, utils::k8s::{self, Client, DisplayCondition}, }; +use tracing::{info, instrument}; use crate::{ args::CommonNamespaceArgs, diff --git a/rust/stackablectl/src/main.rs b/rust/stackablectl/src/main.rs index ddd820b8..09bc2269 100644 --- a/rust/stackablectl/src/main.rs +++ b/rust/stackablectl/src/main.rs @@ -1,10 +1,9 @@ use clap::Parser; use dotenvy::dotenv; +use stackablectl::cli::{Cli, Error}; use tracing::metadata::LevelFilter; use tracing_subscriber::fmt; -use stackablectl::cli::{Cli, Error}; - #[snafu::report] #[tokio::main] async fn main() -> Result<(), Error> { diff --git a/rust/xtask/src/completions.rs b/rust/xtask/src/completions.rs index 64f61317..e8d7d78a 100644 --- a/rust/xtask/src/completions.rs +++ b/rust/xtask/src/completions.rs @@ -2,8 +2,8 @@ use std::fs; use clap::CommandFactory; use clap_complete::{ - generate as generate_comps, Shell::{Bash, Elvish, Fish, Zsh}, + generate as generate_comps, }; use clap_complete_nushell::Nushell; use snafu::{ResultExt, Snafu}; diff --git a/rust/xtask/src/openapi.rs b/rust/xtask/src/openapi.rs index fd93af9e..693c3e02 100644 --- a/rust/xtask/src/openapi.rs +++ b/rust/xtask/src/openapi.rs @@ -3,7 +3,7 @@ use std::{ process::{Command, Stdio}, }; -use snafu::{ensure, ResultExt, Snafu}; +use snafu::{ResultExt, Snafu, ensure}; use stackable_cockpitd::api_doc::openapi; #[derive(Debug, Snafu)] @@ -35,12 +35,9 @@ pub fn generate() -> Result<(), GenOpenapiError> { .write_all(openapi_json.as_bytes()) .context(WriteOpenapiSchemaSnafu)?; let status = codegen.wait().context(ImportOpenapiSchemaRunSnafu)?; - ensure!( - status.success(), - ImportOpenapiSchemaSnafu { - error_code: status.code() - } - ); + ensure!(status.success(), ImportOpenapiSchemaSnafu { + error_code: status.code() + }); Ok(()) } diff --git a/rustfmt.toml b/rustfmt.toml new file mode 100644 index 00000000..4731b22c --- /dev/null +++ b/rustfmt.toml @@ -0,0 +1,6 @@ +# https://doc.rust-lang.org/nightly/edition-guide/rust-2024/rustfmt-style-edition.html +style_edition = "2024" +imports_granularity = "Crate" +group_imports = "StdExternalCrate" +reorder_impl_items = true +use_field_init_shorthand = true From 380ba1903f3c3ca98619a152923f8cb03f4fe7ef Mon Sep 17 00:00:00 2001 From: Xenia Date: Fri, 23 May 2025 15:27:48 +0200 Subject: [PATCH 14/63] feat: add progress reporting (#376) * add progress reporting to stackablectl * cleanup progress reporting and add additional information * cleanup * make regenerate-nix * error handling documentation and print fixes * refactor subscriber init * Update rust/stackable-cockpit/src/platform/operator/mod.rs Co-authored-by: Nick <10092581+NickLarsenNZ@users.noreply.github.com> * Update rust/stackable-cockpit/src/platform/operator/mod.rs Co-authored-by: Nick <10092581+NickLarsenNZ@users.noreply.github.com> * add progress indication for installing manifests * remove semicolon * chore: cargo fmt ```shell cargo +nightly-2025-01-15 fmt --all ``` * chore: Make progress bar template reusable through a LazyLock * chore: Make progress spinner template reusable through a LazyLock, and use span filtering toc ontrol indicatif output NOTE: Use `fields(indicatif.pb_show = true)` on instrumented functions that should have progress reporting * refactor progress messages setup * update format strings * add changelog entry * move span into childspan on info level * remove progress bar color --------- Co-authored-by: Nick <10092581+NickLarsenNZ@users.noreply.github.com> Co-authored-by: Nick Larsen --- Cargo.lock | 89 ++++++- Cargo.nix | 244 +++++++++++++++++- Cargo.toml | 2 + rust/stackable-cockpit/Cargo.toml | 2 + rust/stackable-cockpit/src/helm.rs | 9 +- rust/stackable-cockpit/src/lib.rs | 14 + .../src/platform/demo/spec.rs | 5 +- .../src/platform/manifests.rs | 16 +- .../src/platform/operator/mod.rs | 21 +- .../src/platform/release/spec.rs | 25 +- .../src/platform/stack/spec.rs | 9 +- .../stackable-cockpit/src/utils/k8s/client.rs | 6 +- rust/stackablectl/CHANGELOG.md | 2 + rust/stackablectl/Cargo.toml | 2 + rust/stackablectl/src/cmds/demo.rs | 13 +- rust/stackablectl/src/cmds/operator.rs | 23 +- rust/stackablectl/src/cmds/release.rs | 17 +- rust/stackablectl/src/cmds/stack.rs | 12 +- rust/stackablectl/src/cmds/stacklet.rs | 9 +- rust/stackablectl/src/main.rs | 49 +++- 20 files changed, 494 insertions(+), 75 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ba811d48..ae421883 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -82,7 +82,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "220044e6a1bb31ddee4e3db724d29767f352de47445a6cd75e1a173142136c83" dependencies = [ "nom", - "vte", + "vte 0.10.1", ] [[package]] @@ -155,6 +155,12 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + [[package]] name = "async-broadcast" version = "0.7.1" @@ -665,7 +671,7 @@ dependencies = [ "crossterm", "strum 0.26.3", "strum_macros 0.26.4", - "unicode-width", + "unicode-width 0.1.13", ] [[package]] @@ -686,7 +692,7 @@ dependencies = [ "encode_unicode", "lazy_static", "libc", - "unicode-width", + "unicode-width 0.1.13", "windows-sys 0.52.0", ] @@ -1641,6 +1647,20 @@ dependencies = [ "serde", ] +[[package]] +name = "indicatif" +version = "0.17.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" +dependencies = [ + "console", + "number_prefix", + "portable-atomic", + "unicode-width 0.2.0", + "vt100", + "web-time", +] + [[package]] name = "inout" version = "0.1.3" @@ -1896,7 +1916,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" dependencies = [ "cfg-if", - "windows-targets 0.48.5", + "windows-targets 0.52.6", ] [[package]] @@ -2083,6 +2103,12 @@ dependencies = [ "syn 2.0.87", ] +[[package]] +name = "number_prefix" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" + [[package]] name = "numtoa" version = "0.1.0" @@ -2394,6 +2420,12 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "portable-atomic" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e" + [[package]] name = "powerfmt" version = "0.2.0" @@ -3267,6 +3299,7 @@ dependencies = [ "futures", "helm-sys", "indexmap 2.5.0", + "indicatif", "k8s-openapi", "kube", "rand 0.8.5", @@ -3282,6 +3315,7 @@ dependencies = [ "tera", "tokio", "tracing", + "tracing-indicatif", "url", "urlencoding", "utoipa", @@ -3438,6 +3472,7 @@ dependencies = [ "dotenvy", "futures", "indexmap 2.5.0", + "indicatif", "lazy_static", "libc", "rand 0.8.5", @@ -3453,6 +3488,7 @@ dependencies = [ "termion", "tokio", "tracing", + "tracing-indicatif", "tracing-subscriber", "urlencoding", ] @@ -3930,6 +3966,18 @@ dependencies = [ "valuable", ] +[[package]] +name = "tracing-indicatif" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8201ca430e0cd893ef978226fd3516c06d9c494181c8bf4e5b32e30ed4b40aa1" +dependencies = [ + "indicatif", + "tracing", + "tracing-core", + "tracing-subscriber", +] + [[package]] name = "tracing-log" version = "0.2.0" @@ -4117,6 +4165,12 @@ version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" +[[package]] +name = "unicode-width" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" + [[package]] name = "unicode-xid" version = "0.2.5" @@ -4228,13 +4282,36 @@ version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" +[[package]] +name = "vt100" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84cd863bf0db7e392ba3bd04994be3473491b31e66340672af5d11943c6274de" +dependencies = [ + "itoa", + "log", + "unicode-width 0.1.13", + "vte 0.11.1", +] + [[package]] name = "vte" version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6cbce692ab4ca2f1f3047fcf732430249c0e971bfdd2b234cf2c47ad93af5983" dependencies = [ - "arrayvec", + "arrayvec 0.5.2", + "utf8parse", + "vte_generate_state_changes", +] + +[[package]] +name = "vte" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5022b5fbf9407086c180e9557be968742d839e68346af7792b8592489732197" +dependencies = [ + "arrayvec 0.7.6", "utf8parse", "vte_generate_state_changes", ] @@ -4413,7 +4490,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] diff --git a/Cargo.nix b/Cargo.nix index ef95c5d6..0224a012 100644 --- a/Cargo.nix +++ b/Cargo.nix @@ -332,7 +332,7 @@ rec { } { name = "vte"; - packageId = "vte"; + packageId = "vte 0.10.1"; } ]; features = { @@ -492,7 +492,7 @@ rec { }; resolvedDefaultFeatures = [ "derive" "derive_arbitrary" ]; }; - "arrayvec" = rec { + "arrayvec 0.5.2" = rec { crateName = "arrayvec"; version = "0.5.2"; edition = "2018"; @@ -505,6 +505,21 @@ rec { "serde" = [ "dep:serde" ]; }; }; + "arrayvec 0.7.6" = rec { + crateName = "arrayvec"; + version = "0.7.6"; + edition = "2018"; + sha256 = "0l1fz4ccgv6pm609rif37sl5nv5k6lbzi7kkppgzqzh1vwix20kw"; + authors = [ + "bluss" + ]; + features = { + "borsh" = [ "dep:borsh" ]; + "default" = [ "std" ]; + "serde" = [ "dep:serde" ]; + "zeroize" = [ "dep:zeroize" ]; + }; + }; "async-broadcast" = rec { crateName = "async-broadcast"; version = "0.7.1"; @@ -2276,7 +2291,7 @@ rec { } { name = "unicode-width"; - packageId = "unicode-width"; + packageId = "unicode-width 0.1.13"; } ]; features = { @@ -2339,7 +2354,7 @@ rec { } { name = "unicode-width"; - packageId = "unicode-width"; + packageId = "unicode-width 0.1.13"; optional = true; } { @@ -5257,6 +5272,55 @@ rec { }; resolvedDefaultFeatures = [ "default" "serde" "std" ]; }; + "indicatif" = rec { + crateName = "indicatif"; + version = "0.17.11"; + edition = "2021"; + sha256 = "0db2b2r79r9x8x4lysq1ci9xm13c0xg0sqn3z960yh2bk2430fqq"; + dependencies = [ + { + name = "console"; + packageId = "console"; + usesDefaultFeatures = false; + features = [ "ansi-parsing" ]; + } + { + name = "number_prefix"; + packageId = "number_prefix"; + } + { + name = "portable-atomic"; + packageId = "portable-atomic"; + } + { + name = "unicode-width"; + packageId = "unicode-width 0.2.0"; + optional = true; + } + { + name = "vt100"; + packageId = "vt100"; + optional = true; + } + { + name = "web-time"; + packageId = "web-time"; + target = { target, features }: ("wasm32" == target."arch" or null); + } + ]; + features = { + "default" = [ "unicode-width" "console/unicode-width" ]; + "futures" = [ "dep:futures-core" ]; + "improved_unicode" = [ "unicode-segmentation" "unicode-width" "console/unicode-width" ]; + "in_memory" = [ "vt100" ]; + "rayon" = [ "dep:rayon" ]; + "tokio" = [ "dep:tokio" ]; + "unicode-segmentation" = [ "dep:unicode-segmentation" ]; + "unicode-width" = [ "dep:unicode-width" ]; + "vt100" = [ "dep:vt100" ]; + }; + resolvedDefaultFeatures = [ "default" "in_memory" "unicode-width" "vt100" ]; + }; "inout" = rec { crateName = "inout"; version = "0.1.3"; @@ -6214,7 +6278,7 @@ rec { } { name = "windows-targets"; - packageId = "windows-targets 0.48.5"; + packageId = "windows-targets 0.52.6"; target = { target, features }: (target."windows" or false); } ]; @@ -6725,6 +6789,19 @@ rec { }; resolvedDefaultFeatures = [ "proc-macro-crate" "std" ]; }; + "number_prefix" = rec { + crateName = "number_prefix"; + version = "0.4.0"; + edition = "2015"; + sha256 = "1wvh13wvlajqxkb1filsfzbrnq0vrmrw298v2j3sy82z1rm282w3"; + authors = [ + "Benjamin Sago " + ]; + features = { + "default" = [ "std" ]; + }; + resolvedDefaultFeatures = [ "default" "std" ]; + }; "numtoa" = rec { crateName = "numtoa"; version = "0.1.0"; @@ -7704,6 +7781,19 @@ rec { ]; }; + "portable-atomic" = rec { + crateName = "portable-atomic"; + version = "1.11.0"; + edition = "2018"; + sha256 = "0glb2wngflvfmg789qbf6dbnwcf6ai212fs7n0lf1c66rd49n3im"; + libName = "portable_atomic"; + features = { + "critical-section" = [ "dep:critical-section" ]; + "default" = [ "fallback" ]; + "serde" = [ "dep:serde" ]; + }; + resolvedDefaultFeatures = [ "default" "fallback" ]; + }; "powerfmt" = rec { crateName = "powerfmt"; version = "0.2.0"; @@ -10584,6 +10674,10 @@ rec { packageId = "indexmap 2.5.0"; features = [ "serde" ]; } + { + name = "indicatif"; + packageId = "indicatif"; + } { name = "k8s-openapi"; packageId = "k8s-openapi"; @@ -10651,6 +10745,10 @@ rec { name = "tracing"; packageId = "tracing"; } + { + name = "tracing-indicatif"; + packageId = "tracing-indicatif"; + } { name = "url"; packageId = "url"; @@ -11297,6 +11395,10 @@ rec { packageId = "indexmap 2.5.0"; features = [ "serde" ]; } + { + name = "indicatif"; + packageId = "indicatif"; + } { name = "lazy_static"; packageId = "lazy_static"; @@ -11365,6 +11467,10 @@ rec { name = "tracing"; packageId = "tracing"; } + { + name = "tracing-indicatif"; + packageId = "tracing-indicatif"; + } { name = "tracing-subscriber"; packageId = "tracing-subscriber"; @@ -13123,6 +13229,33 @@ rec { }; resolvedDefaultFeatures = [ "default" "once_cell" "std" ]; }; + "tracing-indicatif" = rec { + crateName = "tracing-indicatif"; + version = "0.3.9"; + edition = "2021"; + sha256 = "188anka0xqrjbd7bzj41854rqvf02qszs9l2jzpr7n0c1r1wl0c2"; + libName = "tracing_indicatif"; + dependencies = [ + { + name = "indicatif"; + packageId = "indicatif"; + features = [ "in_memory" ]; + } + { + name = "tracing"; + packageId = "tracing"; + } + { + name = "tracing-core"; + packageId = "tracing-core"; + } + { + name = "tracing-subscriber"; + packageId = "tracing-subscriber"; + } + ]; + + }; "tracing-log" = rec { crateName = "tracing-log"; version = "0.2.0"; @@ -13712,7 +13845,7 @@ rec { features = { }; }; - "unicode-width" = rec { + "unicode-width 0.1.13" = rec { crateName = "unicode-width"; version = "0.1.13"; edition = "2021"; @@ -13730,6 +13863,25 @@ rec { }; resolvedDefaultFeatures = [ "default" ]; }; + "unicode-width 0.2.0" = rec { + crateName = "unicode-width"; + version = "0.2.0"; + edition = "2021"; + sha256 = "1zd0r5vs52ifxn25rs06gxrgz8cmh4xpra922k0xlmrchib1kj0z"; + libName = "unicode_width"; + authors = [ + "kwantam " + "Manish Goregaokar " + ]; + features = { + "compiler_builtins" = [ "dep:compiler_builtins" ]; + "core" = [ "dep:core" ]; + "default" = [ "cjk" ]; + "rustc-dep-of-std" = [ "std" "core" "compiler_builtins" ]; + "std" = [ "dep:std" ]; + }; + resolvedDefaultFeatures = [ "cjk" "default" ]; + }; "unicode-xid" = rec { crateName = "unicode-xid"; version = "0.2.5"; @@ -14080,7 +14232,41 @@ rec { ]; }; - "vte" = rec { + "vt100" = rec { + crateName = "vt100"; + version = "0.15.2"; + edition = "2021"; + sha256 = "1pklc8y984axmxr0cd363srr2d27wd5rj15xlcmkjznvy0xqdkc4"; + authors = [ + "Jesse Luehrs " + ]; + dependencies = [ + { + name = "itoa"; + packageId = "itoa"; + } + { + name = "log"; + packageId = "log"; + } + { + name = "unicode-width"; + packageId = "unicode-width 0.1.13"; + } + { + name = "vte"; + packageId = "vte 0.11.1"; + } + ]; + devDependencies = [ + { + name = "vte"; + packageId = "vte 0.11.1"; + } + ]; + + }; + "vte 0.10.1" = rec { crateName = "vte"; version = "0.10.1"; edition = "2018"; @@ -14092,7 +14278,7 @@ rec { dependencies = [ { name = "arrayvec"; - packageId = "arrayvec"; + packageId = "arrayvec 0.5.2"; optional = true; usesDefaultFeatures = false; } @@ -14113,6 +14299,42 @@ rec { }; resolvedDefaultFeatures = [ "arrayvec" "default" "no_std" ]; }; + "vte 0.11.1" = rec { + crateName = "vte"; + version = "0.11.1"; + edition = "2021"; + sha256 = "15r1ff4j8ndqj9vsyil3wqwxhhl7jsz5g58f31n0h1wlpxgjn0pm"; + authors = [ + "Joe Wilm " + "Christian Duerr " + ]; + dependencies = [ + { + name = "arrayvec"; + packageId = "arrayvec 0.7.6"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "utf8parse"; + packageId = "utf8parse"; + } + { + name = "vte_generate_state_changes"; + packageId = "vte_generate_state_changes"; + } + ]; + features = { + "ansi" = [ "log" ]; + "arrayvec" = [ "dep:arrayvec" ]; + "default" = [ "no_std" ]; + "log" = [ "dep:log" ]; + "nightly" = [ "utf8parse/nightly" ]; + "no_std" = [ "arrayvec" ]; + "serde" = [ "dep:serde" ]; + }; + resolvedDefaultFeatures = [ "arrayvec" "default" "no_std" ]; + }; "vte_generate_state_changes" = rec { crateName = "vte_generate_state_changes"; version = "0.1.2"; @@ -14999,7 +15221,7 @@ rec { dependencies = [ { name = "windows-sys"; - packageId = "windows-sys 0.48.0"; + packageId = "windows-sys 0.59.0"; target = { target, features }: (target."windows" or false); features = [ "Win32_Foundation" "Win32_Storage_FileSystem" "Win32_System_Console" "Win32_System_SystemInformation" ]; } @@ -15409,7 +15631,7 @@ rec { "Win32_Web" = [ "Win32" ]; "Win32_Web_InternetExplorer" = [ "Win32_Web" ]; }; - resolvedDefaultFeatures = [ "Win32" "Win32_Foundation" "Win32_Globalization" "Win32_Storage" "Win32_Storage_FileSystem" "Win32_System" "Win32_System_Com" "Win32_System_Console" "Win32_System_SystemInformation" "Win32_UI" "Win32_UI_Shell" "default" ]; + resolvedDefaultFeatures = [ "Win32" "Win32_Foundation" "Win32_Globalization" "Win32_System" "Win32_System_Com" "Win32_UI" "Win32_UI_Shell" "default" ]; }; "windows-sys 0.52.0" = rec { crateName = "windows-sys"; @@ -15916,7 +16138,7 @@ rec { "Win32_Web" = [ "Win32" ]; "Win32_Web_InternetExplorer" = [ "Win32_Web" ]; }; - resolvedDefaultFeatures = [ "Win32" "Win32_Foundation" "Win32_Networking" "Win32_Networking_WinSock" "Win32_System" "Win32_System_IO" "default" ]; + resolvedDefaultFeatures = [ "Win32" "Win32_Foundation" "Win32_Networking" "Win32_Networking_WinSock" "Win32_Storage" "Win32_Storage_FileSystem" "Win32_System" "Win32_System_Console" "Win32_System_IO" "Win32_System_SystemInformation" "default" ]; }; "windows-targets 0.48.5" = rec { crateName = "windows-targets"; diff --git a/Cargo.toml b/Cargo.toml index 7c48e18d..800e4df1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -31,6 +31,7 @@ directories = "5.0" dotenvy = "0.15" futures = "0.3" indexmap = { version = "2.2", features = ["serde"] } +indicatif = "0.17.11" k8s-openapi = { version = "0.24", default-features = false, features = ["v1_32"] } kube = { version = "0.99", default-features = false, features = ["client", "rustls-tls", "ws", "socks5", "http-proxy"] } lazy_static = "1.5" @@ -54,6 +55,7 @@ termion = "4.0" tokio = { version = "1.38", features = ["rt-multi-thread", "macros", "fs", "process", "io-std"] } tower-http = { version = "0.5", features = ["validate-request"] } tracing = "0.1" +tracing-indicatif = "0.3.9" tracing-subscriber = "0.3" url = "2.5" urlencoding = "2.1.3" diff --git a/rust/stackable-cockpit/Cargo.toml b/rust/stackable-cockpit/Cargo.toml index 87380fb8..1decc06f 100644 --- a/rust/stackable-cockpit/Cargo.toml +++ b/rust/stackable-cockpit/Cargo.toml @@ -31,11 +31,13 @@ stackable-operator.workspace = true tera.workspace = true tokio.workspace = true tracing.workspace = true +tracing-indicatif.workspace = true url.workspace = true urlencoding.workspace = true utoipa = { workspace = true, optional = true } which.workspace = true futures.workspace = true +indicatif.workspace = true [dev-dependencies] rstest.workspace = true diff --git a/rust/stackable-cockpit/src/helm.rs b/rust/stackable-cockpit/src/helm.rs index cd219166..c43578d3 100644 --- a/rust/stackable-cockpit/src/helm.rs +++ b/rust/stackable-cockpit/src/helm.rs @@ -3,7 +3,8 @@ use std::fmt::Display; use serde::{Deserialize, Serialize}; use snafu::{ResultExt, Snafu}; use tokio::task::block_in_place; -use tracing::{debug, error, info, instrument}; +use tracing::{Span, debug, error, info, instrument}; +use tracing_indicatif::span_ext::IndicatifSpanExt as _; use url::Url; use crate::{ @@ -183,7 +184,7 @@ pub struct ChartVersion<'a> { /// /// This function expects the fully qualified Helm release name. In case of our /// operators this is: `-operator`. -#[instrument(skip(values_yaml), fields(with_values = values_yaml.is_some()))] +#[instrument(skip(values_yaml), fields(with_values = values_yaml.is_some(), indicatif.pb_show = true))] pub fn install_release_from_repo_or_registry( release_name: &str, ChartVersion { @@ -199,6 +200,7 @@ pub fn install_release_from_repo_or_registry( // but that requires a larger refactoring block_in_place(|| { debug!("Install Helm release from repo"); + Span::current().pb_set_message(format!("Installing {chart_name} Helm chart").as_str()); if check_release_exists(release_name, namespace)? { let release = get_release(release_name, namespace)?.ok_or(Error::InstallRelease { @@ -297,13 +299,14 @@ fn install_release( /// /// This function expects the fully qualified Helm release name. In case of our /// operators this is: `-operator`. -#[instrument] +#[instrument(fields(indicatif.pb_show = true))] pub fn uninstall_release( release_name: &str, namespace: &str, suppress_output: bool, ) -> Result { debug!("Uninstall Helm release"); + Span::current().pb_set_message(format!("Uninstalling {release_name}-operator").as_str()); if check_release_exists(release_name, namespace)? { let result = helm_sys::uninstall_helm_release(release_name, namespace, suppress_output); diff --git a/rust/stackable-cockpit/src/lib.rs b/rust/stackable-cockpit/src/lib.rs index e572b560..ef1b50b4 100644 --- a/rust/stackable-cockpit/src/lib.rs +++ b/rust/stackable-cockpit/src/lib.rs @@ -1,3 +1,7 @@ +use std::sync::LazyLock; + +use indicatif::ProgressStyle; + pub mod common; pub mod constants; pub mod engine; @@ -6,3 +10,13 @@ pub mod oci; pub mod platform; pub mod utils; pub mod xfer; + +pub static PROGRESS_BAR_STYLE: LazyLock = LazyLock::new(|| { + ProgressStyle::with_template("{span_child_prefix}Progress: {wide_bar} {pos}/{len}") + .expect("valid progress template") +}); + +pub static PROGRESS_SPINNER_STYLE: LazyLock = LazyLock::new(|| { + ProgressStyle::with_template("{span_child_prefix}{spinner} {msg}") + .expect("valid progress template") +}); diff --git a/rust/stackable-cockpit/src/platform/demo/spec.rs b/rust/stackable-cockpit/src/platform/demo/spec.rs index 75efd265..e2903516 100644 --- a/rust/stackable-cockpit/src/platform/demo/spec.rs +++ b/rust/stackable-cockpit/src/platform/demo/spec.rs @@ -1,6 +1,7 @@ use serde::{Deserialize, Serialize}; use snafu::{OptionExt, ResultExt, Snafu}; -use tracing::{debug, info, instrument, warn}; +use tracing::{Span, debug, info, instrument, warn}; +use tracing_indicatif::span_ext::IndicatifSpanExt as _; #[cfg(feature = "openapi")] use utoipa::ToSchema; @@ -181,6 +182,7 @@ impl DemoSpec { stack_name = %self.stack, operator_namespace = %install_params.operator_namespace, demo_namespace = %install_params.demo_namespace, + indicatif.pb_show = true ))] async fn prepare_manifests( &self, @@ -189,6 +191,7 @@ impl DemoSpec { transfer_client: &xfer::Client, ) -> Result<(), Error> { info!("Installing demo manifests"); + Span::current().pb_set_message("Installing manifests"); let params = install_params .parameters diff --git a/rust/stackable-cockpit/src/platform/manifests.rs b/rust/stackable-cockpit/src/platform/manifests.rs index 7a5df63a..c1b3a566 100644 --- a/rust/stackable-cockpit/src/platform/manifests.rs +++ b/rust/stackable-cockpit/src/platform/manifests.rs @@ -2,9 +2,11 @@ use std::collections::HashMap; use snafu::{ResultExt, Snafu}; use stackable_operator::kvp::Labels; -use tracing::{debug, info, instrument}; +use tracing::{Span, debug, info, instrument}; +use tracing_indicatif::span_ext::IndicatifSpanExt as _; use crate::{ + PROGRESS_BAR_STYLE, common::manifest::ManifestSpec, helm, utils::{ @@ -62,7 +64,7 @@ pub enum Error { pub trait InstallManifestsExt { // TODO (Techassi): This step shouldn't care about templating the manifests nor fetching them from remote - #[instrument(skip_all, fields(%namespace))] + #[instrument(skip_all, fields(%namespace, indicatif.pb_show = true))] #[allow(async_fn_in_trait)] async fn install_manifests( manifests: &[ManifestSpec], @@ -74,12 +76,18 @@ pub trait InstallManifestsExt { ) -> Result<(), Error> { debug!("Installing manifests"); + Span::current().pb_set_style(&PROGRESS_BAR_STYLE); + Span::current().pb_set_length(manifests.len() as u64); + let mut parameters = parameters.clone(); // We add the NAMESPACE parameter, so that stacks/demos can use that to render e.g. the // fqdn service names [which contain the namespace]. parameters.insert("NAMESPACE".to_owned(), namespace.to_owned()); for manifest in manifests { + let parameters = parameters.clone(); + let labels = labels.clone(); + match manifest { ManifestSpec::HelmChart(helm_file) => { debug!(helm_file, "Installing manifest from Helm chart"); @@ -142,9 +150,11 @@ pub trait InstallManifestsExt { client .deploy_manifests(&manifests, namespace, labels.clone()) .await - .context(DeployManifestSnafu)? + .context(DeployManifestSnafu)?; } } + + Span::current().pb_inc(1); } Ok(()) diff --git a/rust/stackable-cockpit/src/platform/operator/mod.rs b/rust/stackable-cockpit/src/platform/operator/mod.rs index 965afe37..55d4f692 100644 --- a/rust/stackable-cockpit/src/platform/operator/mod.rs +++ b/rust/stackable-cockpit/src/platform/operator/mod.rs @@ -3,7 +3,8 @@ use std::{fmt::Display, str::FromStr}; use semver::Version; use serde::Serialize; use snafu::{ResultExt, Snafu, ensure}; -use tracing::{info, instrument}; +use tracing::{Span, info, instrument}; +use tracing_indicatif::{indicatif_println, span_ext::IndicatifSpanExt}; use crate::{ constants::{ @@ -61,10 +62,15 @@ pub struct OperatorSpec { impl Display for OperatorSpec { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "{}{}", self.name, match &self.version { - Some(v) => format!("={v}"), - None => "".into(), - }) + write!( + f, + "{name}{version_selector}", + name = self.name, + version_selector = match &self.version { + Some(v) => format!("={v}"), + None => "".into(), + } + ) } } @@ -179,6 +185,7 @@ impl OperatorSpec { // display for the inner type if it exists. Otherwise we gte the Debug // impl for the whole Option. version = self.version.as_ref().map(tracing::field::display), + indicatif.pb_show = true ))] pub fn install( &self, @@ -186,6 +193,8 @@ impl OperatorSpec { chart_source: &ChartSourceType, ) -> Result<(), helm::Error> { info!(operator = %self, "Installing operator"); + Span::current() + .pb_set_message(format!("Installing {name}-operator", name = self.name).as_str()); let version = self.version.as_ref().map(|v| v.to_string()); let helm_name = self.helm_name(); @@ -221,7 +230,7 @@ impl OperatorSpec { { match helm::uninstall_release(&self.helm_name(), namespace.as_ref(), true) { Ok(status) => { - println!("{status}"); + indicatif_println!("{status}"); Ok(()) } Err(err) => Err(err), diff --git a/rust/stackable-cockpit/src/platform/release/spec.rs b/rust/stackable-cockpit/src/platform/release/spec.rs index 1bb8be6b..e17120d2 100644 --- a/rust/stackable-cockpit/src/platform/release/spec.rs +++ b/rust/stackable-cockpit/src/platform/release/spec.rs @@ -4,11 +4,12 @@ use serde::{Deserialize, Serialize}; use snafu::{ResultExt, Snafu}; use tokio::task::JoinError; use tracing::{Instrument, Span, info, instrument}; +use tracing_indicatif::span_ext::IndicatifSpanExt as _; #[cfg(feature = "openapi")] use utoipa::ToSchema; use crate::{ - helm, + PROGRESS_BAR_STYLE, helm, platform::{ operator::{self, ChartSourceType, OperatorSpec}, product, @@ -53,6 +54,7 @@ impl ReleaseSpec { %namespace, product.included = tracing::field::Empty, product.excluded = tracing::field::Empty, + indicatif.pb_show = true ))] pub async fn install( &self, @@ -62,6 +64,7 @@ impl ReleaseSpec { chart_source: &ChartSourceType, ) -> Result<()> { info!("Installing release"); + Span::current().pb_set_style(&PROGRESS_BAR_STYLE); include_products.iter().for_each(|product| { Span::current().record("product.included", product); @@ -70,11 +73,15 @@ impl ReleaseSpec { Span::current().record("product.excluded", product); }); + let operators = self.filter_products(include_products, exclude_products); + + Span::current().pb_set_length(operators.len() as u64); + let namespace = namespace.to_string(); - futures::stream::iter(self.filter_products(include_products, exclude_products)) + futures::stream::iter(operators) .map(|(product_name, product)| { let task_span = - tracing::debug_span!("install_operator", product_name = tracing::field::Empty); + tracing::info_span!("install_operator", product_name = tracing::field::Empty); let namespace = namespace.clone(); let chart_source = chart_source.clone(); @@ -103,15 +110,21 @@ impl ReleaseSpec { ) }) .buffer_unordered(10) - .map(|res| res.context(BackgroundTaskSnafu)?) + .map(|res| { + Span::current().pb_inc(1); + res.context(BackgroundTaskSnafu)? + }) .try_collect::<()>() .await } - #[instrument(skip_all)] + #[instrument(skip_all, fields(indicatif.pb_show = true))] pub fn uninstall(&self, namespace: &str) -> Result<()> { info!("Uninstalling release"); + Span::current().pb_set_style(&PROGRESS_BAR_STYLE); + Span::current().pb_set_length(self.products.len() as u64); + for (product_name, product_spec) in &self.products { info!("Uninstalling {product_name}-operator"); @@ -122,6 +135,8 @@ impl ReleaseSpec { // Uninstall operator helm::uninstall_release(&operator.helm_name(), namespace, true) .context(HelmUninstallSnafu)?; + + Span::current().pb_inc(1); } Ok(()) diff --git a/rust/stackable-cockpit/src/platform/stack/spec.rs b/rust/stackable-cockpit/src/platform/stack/spec.rs index 5e638935..e95fb628 100644 --- a/rust/stackable-cockpit/src/platform/stack/spec.rs +++ b/rust/stackable-cockpit/src/platform/stack/spec.rs @@ -1,6 +1,7 @@ use serde::{Deserialize, Serialize}; use snafu::{OptionExt, ResultExt, Snafu}; -use tracing::{debug, info, instrument, log::warn}; +use tracing::{Span, debug, info, instrument, log::warn}; +use tracing_indicatif::span_ext::IndicatifSpanExt as _; #[cfg(feature = "openapi")] use utoipa::ToSchema; @@ -194,7 +195,7 @@ impl StackSpec { .await } - #[instrument(skip_all, fields(release = %self.release, %operator_namespace))] + #[instrument(skip_all, fields(release = %self.release, %operator_namespace, indicatif.pb_show = true))] pub async fn install_release( &self, release_list: release::ReleaseList, @@ -203,6 +204,7 @@ impl StackSpec { chart_source: &ChartSourceType, ) -> Result<(), Error> { info!(self.release, "Trying to install release"); + Span::current().pb_set_message("Installing operators"); // Get the release by name let release = release_list @@ -218,7 +220,7 @@ impl StackSpec { .context(InstallReleaseSnafu) } - #[instrument(skip_all)] + #[instrument(skip_all, fields(indicatif.pb_show = true))] pub async fn prepare_manifests( &self, install_params: StackInstallParameters, @@ -226,6 +228,7 @@ impl StackSpec { transfer_client: &xfer::Client, ) -> Result<(), Error> { info!("Installing stack manifests"); + Span::current().pb_set_message("Installing manifests"); let parameters = install_params .parameters diff --git a/rust/stackable-cockpit/src/utils/k8s/client.rs b/rust/stackable-cockpit/src/utils/k8s/client.rs index c87b7118..629aa9e4 100644 --- a/rust/stackable-cockpit/src/utils/k8s/client.rs +++ b/rust/stackable-cockpit/src/utils/k8s/client.rs @@ -14,7 +14,8 @@ use serde::Deserialize; use snafu::{OptionExt, ResultExt, Snafu}; use stackable_operator::{commons::listener::Listener, kvp::Labels}; use tokio::sync::RwLock; -use tracing::info; +use tracing::{Span, info, instrument}; +use tracing_indicatif::span_ext::IndicatifSpanExt as _; #[cfg(doc)] use crate::utils::k8s::ListParamsExt; @@ -98,12 +99,15 @@ impl Client { /// Deploys manifests defined the in raw `manifests` YAML string. This /// method will fail if it is unable to parse the manifests, unable to /// resolve GVKs or unable to patch the dynamic objects. + #[instrument(skip_all, fields(indicatif.pb_show = true))] pub async fn deploy_manifests( &self, manifests: &str, namespace: &str, labels: Labels, ) -> Result<()> { + Span::current().pb_set_message("Installing YAML manifest"); + // TODO (Techassi): Impl IntoIterator for Labels let labels: BTreeMap = labels.into(); diff --git a/rust/stackablectl/CHANGELOG.md b/rust/stackablectl/CHANGELOG.md index 8daf172d..05f8d199 100644 --- a/rust/stackablectl/CHANGELOG.md +++ b/rust/stackablectl/CHANGELOG.md @@ -8,6 +8,7 @@ All notable changes to this project will be documented in this file. - Pass the stack/demo namespace as a templating variable `NAMESPACE` to manifests. This should unblock demos to run in all namespaces, as they can template the namespace e.g. for the FQDN of services ([#355]). +- Add progress reporting ([#376]). ### Changed @@ -20,6 +21,7 @@ All notable changes to this project will be documented in this file. [#368]: https://github.com/stackabletech/stackable-cockpit/pull/368 [#373]: https://github.com/stackabletech/stackable-cockpit/pull/373 +[#376]: https://github.com/stackabletech/stackable-cockpit/pull/376 ## [25.3.0] - 2025-03-27 diff --git a/rust/stackablectl/Cargo.toml b/rust/stackablectl/Cargo.toml index 6fa40591..6d50927f 100644 --- a/rust/stackablectl/Cargo.toml +++ b/rust/stackablectl/Cargo.toml @@ -32,7 +32,9 @@ tera.workspace = true tokio.workspace = true tracing-subscriber.workspace = true tracing.workspace = true +tracing-indicatif.workspace = true futures.workspace = true +indicatif.workspace = true termion.workspace = true urlencoding.workspace = true libc.workspace = true diff --git a/rust/stackablectl/src/cmds/demo.rs b/rust/stackablectl/src/cmds/demo.rs index 3a4f4c80..9480e3dd 100644 --- a/rust/stackablectl/src/cmds/demo.rs +++ b/rust/stackablectl/src/cmds/demo.rs @@ -19,7 +19,8 @@ use stackable_cockpit::{ xfer::{self, cache::Cache}, }; use stackable_operator::kvp::{LabelError, Labels}; -use tracing::{debug, info, instrument}; +use tracing::{Span, debug, info, instrument}; +use tracing_indicatif::span_ext::IndicatifSpanExt as _; use crate::{ args::{CommonClusterArgs, CommonClusterArgsError, CommonNamespaceArgs}, @@ -209,9 +210,10 @@ impl DemoArgs { } /// Print out a list of demos, either as a table (plain), JSON or YAML -#[instrument(skip_all)] +#[instrument(skip_all, fields(indicatif.pb_show = true))] async fn list_cmd(args: &DemoListArgs, cli: &Cli, list: demo::List) -> Result { info!("Listing demos"); + Span::current().pb_set_message("Fetching demo information"); match args.output_type { OutputType::Plain | OutputType::Table => { @@ -257,13 +259,14 @@ async fn list_cmd(args: &DemoListArgs, cli: &Cli, list: demo::List) -> Result Result { info!(demo_name = %args.demo_name, "Describing demo"); + Span::current().pb_set_message("Fetching demo information"); let demo = list.get(&args.demo_name).ok_or(CmdError::NoSuchDemo { name: args.demo_name.clone(), @@ -316,7 +319,8 @@ async fn describe_cmd( #[instrument(skip_all, fields( demo_name = %args.demo_name, skip_release = args.skip_release, - %release_branch + %release_branch, + indicatif.pb_show = true ))] async fn install_cmd( args: &DemoInstallArgs, @@ -326,6 +330,7 @@ async fn install_cmd( release_branch: &str, ) -> Result { info!(demo_name = %args.demo_name, "Installing demo"); + Span::current().pb_set_message("Installing demo"); // Init result output and progress output let mut output = cli.result(); diff --git a/rust/stackablectl/src/cmds/operator.rs b/rust/stackablectl/src/cmds/operator.rs index 207b7df4..84c269cd 100644 --- a/rust/stackablectl/src/cmds/operator.rs +++ b/rust/stackablectl/src/cmds/operator.rs @@ -25,7 +25,8 @@ use stackable_cockpit::{ k8s::{self, Client}, }, }; -use tracing::{debug, info, instrument}; +use tracing::{Span, debug, info, instrument}; +use tracing_indicatif::{indicatif_println, span_ext::IndicatifSpanExt}; use crate::{ args::{CommonClusterArgs, CommonClusterArgsError}, @@ -186,9 +187,10 @@ impl OperatorArgs { } } -#[instrument(skip_all)] +#[instrument(skip_all, fields(indicatif.pb_show = true))] async fn list_cmd(args: &OperatorListArgs, cli: &Cli) -> Result { debug!("Listing operators"); + Span::current().pb_set_message("Fetching operator information"); // Build map which maps artifacts to a chart source let source_index_files = @@ -243,9 +245,10 @@ async fn list_cmd(args: &OperatorListArgs, cli: &Cli) -> Result Result { debug!(operator_name = %args.operator_name, "Describing operator"); + Span::current().pb_set_message("Fetching operator information"); // Build map which maps artifacts to a chart source let source_index_files = @@ -302,9 +305,10 @@ async fn describe_cmd(args: &OperatorDescribeArgs, cli: &Cli) -> Result Result { info!("Installing operator(s)"); + Span::current().pb_set_message("Installing operator(s)"); args.local_cluster .install_if_needed() @@ -327,9 +331,8 @@ async fn install_cmd(args: &OperatorInstallArgs, cli: &Cli) -> Result Result Result { info!("Uninstalling operator(s)"); + Span::current().pb_set_message("Uninstalling operator(s)"); for operator in &args.operators { operator @@ -382,9 +386,10 @@ fn uninstall_cmd(args: &OperatorUninstallArgs, cli: &Cli) -> Result Result { info!("Listing installed operators"); + Span::current().pb_set_message("Fetching operator information"); type ReleaseList = IndexMap; diff --git a/rust/stackablectl/src/cmds/release.rs b/rust/stackablectl/src/cmds/release.rs index bbaee551..fc2e68e8 100644 --- a/rust/stackablectl/src/cmds/release.rs +++ b/rust/stackablectl/src/cmds/release.rs @@ -14,7 +14,8 @@ use stackable_cockpit::{ }, xfer::{self, cache::Cache}, }; -use tracing::{debug, info, instrument}; +use tracing::{Span, debug, info, instrument}; +use tracing_indicatif::span_ext::IndicatifSpanExt as _; use crate::{ args::{CommonClusterArgs, CommonClusterArgsError}, @@ -150,13 +151,14 @@ impl ReleaseArgs { } } -#[instrument(skip(cli, release_list))] +#[instrument(skip(cli, release_list), fields(indicatif.pb_show = true))] async fn list_cmd( args: &ReleaseListArgs, cli: &Cli, release_list: release::ReleaseList, ) -> Result { info!("Listing releases"); + Span::current().pb_set_message("Fetching release information"); match args.output_type { OutputType::Plain | OutputType::Table => { @@ -204,13 +206,14 @@ async fn list_cmd( } } -#[instrument(skip(cli, release_list))] +#[instrument(skip(cli, release_list), fields(indicatif.pb_show = true))] async fn describe_cmd( args: &ReleaseDescribeArgs, cli: &Cli, release_list: release::ReleaseList, ) -> Result { info!(release = %args.release, "Describing release"); + Span::current().pb_set_message("Fetching release information"); let release = release_list.get(&args.release); @@ -265,13 +268,15 @@ async fn describe_cmd( } } -#[instrument(skip(cli, release_list))] +#[instrument(skip(cli, release_list), fields(indicatif.pb_show = true))] async fn install_cmd( args: &ReleaseInstallArgs, cli: &Cli, release_list: release::ReleaseList, ) -> Result { info!(release = %args.release, "Installing release"); + Span::current().pb_set_message("Installing release"); + match release_list.get(&args.release) { Some(release) => { let mut output = cli.result(); @@ -314,12 +319,14 @@ async fn install_cmd( } } -#[instrument(skip(cli, release_list))] +#[instrument(skip(cli, release_list), fields(indicatif.pb_show = true))] async fn uninstall_cmd( args: &ReleaseUninstallArgs, cli: &Cli, release_list: release::ReleaseList, ) -> Result { + Span::current().pb_set_message("Uninstalling release"); + match release_list.get(&args.release) { Some(release) => { release diff --git a/rust/stackablectl/src/cmds/stack.rs b/rust/stackablectl/src/cmds/stack.rs index be78c33a..01816929 100644 --- a/rust/stackablectl/src/cmds/stack.rs +++ b/rust/stackablectl/src/cmds/stack.rs @@ -19,7 +19,8 @@ use stackable_cockpit::{ xfer::{self, cache::Cache}, }; use stackable_operator::kvp::{LabelError, Labels}; -use tracing::{debug, info, instrument}; +use tracing::{Span, debug, info, instrument}; +use tracing_indicatif::span_ext::IndicatifSpanExt as _; use crate::{ args::{CommonClusterArgs, CommonClusterArgsError, CommonNamespaceArgs}, @@ -191,13 +192,14 @@ impl StackArgs { } } -#[instrument(skip_all)] +#[instrument(skip_all, fields(indicatif.pb_show = true))] fn list_cmd( args: &StackListArgs, cli: &Cli, stack_list: stack::StackList, ) -> Result { info!("Listing stacks"); + Span::current().pb_set_message("Fetching stack information"); match args.output_type { OutputType::Plain | OutputType::Table => { @@ -241,13 +243,14 @@ fn list_cmd( } } -#[instrument(skip_all)] +#[instrument(skip_all, fields(indicatif.pb_show = true))] fn describe_cmd( args: &StackDescribeArgs, cli: &Cli, stack_list: stack::StackList, ) -> Result { info!(stack_name = %args.stack_name, "Describing stack"); + Span::current().pb_set_message("Fetching stack information"); match stack_list.get(&args.stack_name) { Some(stack) => match args.output_type { @@ -303,7 +306,7 @@ fn describe_cmd( } } -#[instrument(skip(cli, stack_list, transfer_client))] +#[instrument(skip(cli, stack_list, transfer_client), fields(indicatif.pb_show = true))] async fn install_cmd( args: &StackInstallArgs, cli: &Cli, @@ -311,6 +314,7 @@ async fn install_cmd( transfer_client: &xfer::Client, ) -> Result { info!(stack_name = %args.stack_name, "Installing stack"); + Span::current().pb_set_message("Installing stack"); let files = cli.get_release_files().context(PathOrUrlParseSnafu)?; let release_list = release::ReleaseList::build(&files, transfer_client) diff --git a/rust/stackablectl/src/cmds/stacklet.rs b/rust/stackablectl/src/cmds/stacklet.rs index 2422f65f..332d45a0 100644 --- a/rust/stackablectl/src/cmds/stacklet.rs +++ b/rust/stackablectl/src/cmds/stacklet.rs @@ -9,7 +9,8 @@ use stackable_cockpit::{ platform::stacklet::{self, get_credentials_for_product, list_stacklets}, utils::k8s::{self, Client, DisplayCondition}, }; -use tracing::{info, instrument}; +use tracing::{Span, info, instrument}; +use tracing_indicatif::span_ext::IndicatifSpanExt as _; use crate::{ args::CommonNamespaceArgs, @@ -89,9 +90,10 @@ impl StackletArgs { } } -#[instrument(skip_all)] +#[instrument(skip_all, fields(indicatif.pb_show = true))] async fn list_cmd(args: &StackletListArgs, cli: &Cli) -> Result { info!("Listing installed stacklets"); + Span::current().pb_set_message("Fetching stacklet information"); let client = Client::new().await.context(KubeClientCreateSnafu)?; @@ -202,9 +204,10 @@ async fn list_cmd(args: &StackletListArgs, cli: &Cli) -> Result Result { info!("Displaying stacklet credentials"); + Span::current().pb_set_message("Fetching stacklet information"); let client = Client::new().await.context(KubeClientCreateSnafu)?; diff --git a/rust/stackablectl/src/main.rs b/rust/stackablectl/src/main.rs index 09bc2269..9ad159d2 100644 --- a/rust/stackablectl/src/main.rs +++ b/rust/stackablectl/src/main.rs @@ -1,8 +1,19 @@ use clap::Parser; use dotenvy::dotenv; +use stackable_cockpit::PROGRESS_SPINNER_STYLE; use stackablectl::cli::{Cli, Error}; -use tracing::metadata::LevelFilter; -use tracing_subscriber::fmt; +use tracing::{Level, metadata::LevelFilter}; +use tracing_indicatif::{ + IndicatifLayer, + filter::{IndicatifFilter, hide_indicatif_span_fields}, + indicatif_eprintln, +}; +use tracing_subscriber::{ + Layer as _, + fmt::{self, format::DefaultFields}, + layer::SubscriberExt, + util::SubscriberInitExt, +}; #[snafu::report] #[tokio::main] @@ -16,21 +27,37 @@ async fn main() -> Result<(), Error> { .without_time() .with_target(false); - tracing_subscriber::fmt() - .with_max_level(match app.log_level { - Some(level) => LevelFilter::from_level(level), - None => LevelFilter::WARN, - }) - .event_format(format) - .pretty() - .init(); + let indicatif_layer = IndicatifLayer::new() + .with_span_field_formatter( + // If the `{span_fields}` interpolation is used in a template, then we want to hide the + // indicatif control fields "indicatif.pb_show" and "indicatif.pb_hide" + hide_indicatif_span_fields(DefaultFields::new()), + ) + .with_progress_style(PROGRESS_SPINNER_STYLE.clone()); + + if let Some(level) = app.log_level { + tracing_subscriber::registry() + .with( + fmt::layer() + .event_format(format) + .pretty() + .with_writer(indicatif_layer.get_stderr_writer()), + ) + .with(LevelFilter::from_level(level)) + .init(); + } else { + tracing_subscriber::registry() + .with(LevelFilter::from_level(Level::INFO)) + .with(indicatif_layer.with_filter(IndicatifFilter::new(false))) + .init(); + } // Load env vars from optional .env file match dotenv() { Ok(_) => (), Err(err) => { if !err.not_found() { - println!("{err}") + indicatif_eprintln!("{err}") } } } From 86248de9f6d6b9bfa7ea7d72b5121e0bc9e94a31 Mon Sep 17 00:00:00 2001 From: Sebastian Bernauer Date: Tue, 27 May 2025 12:45:10 +0200 Subject: [PATCH 15/63] feat: Include Spark connect in stacklet list (#380) * feat: Include Spark connect in stacklet list * changelog --- rust/stackable-cockpit/src/constants.rs | 3 ++- .../src/platform/stacklet/mod.rs | 20 +++++++++++++------ rust/stackablectl/CHANGELOG.md | 2 ++ 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/rust/stackable-cockpit/src/constants.rs b/rust/stackable-cockpit/src/constants.rs index ea8cf228..120e5d8f 100644 --- a/rust/stackable-cockpit/src/constants.rs +++ b/rust/stackable-cockpit/src/constants.rs @@ -36,7 +36,8 @@ pub const PRODUCT_NAMES: &[&str] = &[ "kafka", "nifi", "opa", - "spark-history-server", + "spark-connect", + "spark-history", "superset", "trino", "zookeeper", diff --git a/rust/stackable-cockpit/src/platform/stacklet/mod.rs b/rust/stackable-cockpit/src/platform/stacklet/mod.rs index 7c6e6d20..b2f915c0 100644 --- a/rust/stackable-cockpit/src/platform/stacklet/mod.rs +++ b/rust/stackable-cockpit/src/platform/stacklet/mod.rs @@ -168,23 +168,31 @@ fn build_products_gvk_list<'a>(product_names: &[&'a str]) -> IndexMap<&'a str, G let mut map = IndexMap::new(); for product_name in product_names { - // Why? Just why? Can we please make this consistent? - if *product_name == "spark-history-server" { + // Note(techassi): Why? Just why? Can we please make this consistent? + // Note(sbernauer): I think it's legit that SparkHistoryServer and SparkConnectServer are in + // the api group spark.stackable.tech. All of this will probably be rewritten any as soon as + // we have versions different than v1alpha1. + if *product_name == "spark-history" { map.insert(*product_name, GroupVersionKind { group: "spark.stackable.tech".into(), version: "v1alpha1".into(), kind: "SparkHistoryServer".into(), }); - continue; + } else if *product_name == "spark-connect" { + map.insert(*product_name, GroupVersionKind { + group: "spark.stackable.tech".into(), + version: "v1alpha1".into(), + kind: "SparkConnectServer".into(), + }); + } else { + map.insert(*product_name, gvk_from_product_name(product_name)); } - - map.insert(*product_name, gvk_from_product_name(product_name)); } map } -// FIXME: Support SparkApplication +// FIXME: Support SparkApplication and SparkConnectServer fn gvk_from_product_name(product_name: &str) -> GroupVersionKind { GroupVersionKind { group: format!("{product_name}.stackable.tech"), diff --git a/rust/stackablectl/CHANGELOG.md b/rust/stackablectl/CHANGELOG.md index 05f8d199..a5d6b7e1 100644 --- a/rust/stackablectl/CHANGELOG.md +++ b/rust/stackablectl/CHANGELOG.md @@ -9,6 +9,7 @@ All notable changes to this project will be documented in this file. - Pass the stack/demo namespace as a templating variable `NAMESPACE` to manifests. This should unblock demos to run in all namespaces, as they can template the namespace e.g. for the FQDN of services ([#355]). - Add progress reporting ([#376]). +- Include SparkConnectServer in the `stacklet list` output ([#380]). ### Changed @@ -22,6 +23,7 @@ All notable changes to this project will be documented in this file. [#368]: https://github.com/stackabletech/stackable-cockpit/pull/368 [#373]: https://github.com/stackabletech/stackable-cockpit/pull/373 [#376]: https://github.com/stackabletech/stackable-cockpit/pull/376 +[#380]: https://github.com/stackabletech/stackable-cockpit/pull/380 ## [25.3.0] - 2025-03-27 From 3d373c0d5473d1e5a41ba4dcc1076914e553a215 Mon Sep 17 00:00:00 2001 From: Xenia Date: Wed, 28 May 2025 07:29:50 +0200 Subject: [PATCH 16/63] feat: release upgrading support (#379) * add release upgrade functionality * error handling and include/exclude operators in/from upgrading * docs and autogenerated parts * only upgrade installed operators and specifically included ones * update docs * add changelog entry * add progress reporting to upgrade * use to_string() instead format * use client with cache to fetch CRDs * Update rust/stackablectl/src/cmds/release.rs Co-authored-by: Nick <10092581+NickLarsenNZ@users.noreply.github.com> * use Debug impl for String in Error * add gvk info to KubeClientReplace Error * return error on no release found, exit main with error if error from run * chore: use indicatif_(e)println * chore: Reuse existing error variant, and reformat it * use Debug impl for String in Errors * refactor unnamed interpolations --------- Co-authored-by: Nick <10092581+NickLarsenNZ@users.noreply.github.com> Co-authored-by: Nick Larsen --- .../stackablectl/pages/commands/release.adoc | 80 +++++-- .../partials/commands/release.adoc | 1 + extra/completions/_stackablectl | 55 +++++ extra/completions/stackablectl.bash | 195 +++++++++++++++++- extra/completions/stackablectl.elv | 32 +++ extra/completions/stackablectl.fish | 49 +++-- extra/completions/stackablectl.nu | 32 +++ .../src/engine/minikube/mod.rs | 2 +- rust/stackable-cockpit/src/helm.rs | 48 +---- .../src/platform/cluster/resource_request.rs | 10 +- .../src/platform/credentials.rs | 7 +- .../src/platform/demo/spec.rs | 4 +- .../src/platform/manifests.rs | 2 +- .../src/platform/release/spec.rs | 110 +++++++++- .../stackable-cockpit/src/platform/service.rs | 12 +- .../src/platform/stack/spec.rs | 2 +- .../src/platform/stacklet/mod.rs | 7 +- .../stackable-cockpit/src/utils/k8s/client.rs | 67 +++++- .../src/utils/k8s/conditions.rs | 18 +- .../stackable-cockpit/src/utils/k8s/labels.rs | 2 +- rust/stackable-cockpit/src/utils/mod.rs | 2 +- rust/stackable-cockpit/src/utils/params.rs | 4 +- rust/stackable-cockpit/src/xfer/mod.rs | 2 + rust/stackablectl/CHANGELOG.md | 2 + rust/stackablectl/src/cmds/debug.rs | 4 +- rust/stackablectl/src/cmds/demo.rs | 33 +-- rust/stackablectl/src/cmds/operator.rs | 21 +- rust/stackablectl/src/cmds/release.rs | 159 +++++++++++++- rust/stackablectl/src/cmds/stack.rs | 29 ++- rust/stackablectl/src/cmds/stacklet.rs | 16 +- rust/stackablectl/src/main.rs | 7 +- rust/stackablectl/src/output/mod.rs | 4 +- rust/stackablectl/src/output/result.rs | 6 +- rust/xtask/src/docs.rs | 4 +- web/build.rs | 4 +- 35 files changed, 858 insertions(+), 174 deletions(-) diff --git a/docs/modules/stackablectl/pages/commands/release.adoc b/docs/modules/stackablectl/pages/commands/release.adoc index fb3c750e..80059440 100644 --- a/docs/modules/stackablectl/pages/commands/release.adoc +++ b/docs/modules/stackablectl/pages/commands/release.adoc @@ -14,25 +14,35 @@ To list the available Stackable releases run the following command: [source,console] ---- $ stackablectl release list -┌───┬─────────┬──────────────┬─────────────────────────────────────────────────────────────────────────────┐ -│ # ┆ RELEASE ┆ RELEASE DATE ┆ DESCRIPTION │ -╞═══╪═════════╪══════════════╪═════════════════════════════════════════════════════════════════════════════╡ -│ 1 ┆ 23.7 ┆ 2023-07-26 ┆ Sixth release focusing on resources and pod overrides │ -├╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤ -│ 2 ┆ 23.4 ┆ 2023-05-17 ┆ Fifth release focusing on affinities and product status │ -├╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤ -│ 3 ┆ 23.1 ┆ 2023-01-27 ┆ Fourth release focusing on image selection and logging │ -├╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤ -│ 4 ┆ 22.11 ┆ 2022-11-14 ┆ Third release focusing on resource management │ -├╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤ -│ 5 ┆ 22.09 ┆ 2022-09-09 ┆ Second release focusing on security and OpenShift support │ -├╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤ -│ 6 ┆ 22.06 ┆ 2022-06-30 ┆ First official release of the Stackable Data Platform │ -├╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤ -│ 7 ┆ latest ┆ 2023-07-26 ┆ Always pointing to the latest stable version of the Stackable Data Platform │ -├╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤ -│ 8 ┆ dev ┆ 2023-01-27 ┆ Development versions from main branch. Not stable! │ -└───┴─────────┴──────────────┴─────────────────────────────────────────────────────────────────────────────┘ +┌────┬─────────┬──────────────┬─────────────────────────────────────────────────────────────────────────────────┐ +│ # ┆ RELEASE ┆ RELEASE DATE ┆ DESCRIPTION │ +╞════╪═════════╪══════════════╪═════════════════════════════════════════════════════════════════════════════════╡ +│ 1 ┆ 25.3 ┆ 2025-03-24 ┆ The March 2025 release │ +├╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤ +│ 2 ┆ 24.11 ┆ 2024-11-18 ┆ The November 2024 release │ +├╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤ +│ 3 ┆ 24.7 ┆ 2024-07-24 ┆ Security focused release to reduce CVEs and to build product images from source │ +├╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤ +│ 4 ┆ 24.3 ┆ 2024-03-20 ┆ Security focused release to improve platform authentication and authorization │ +├╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤ +│ 5 ┆ 23.11 ┆ 2023-11-30 ┆ Seventh release focusing on PodDisruptionBudgets and graceful shutdown │ +├╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤ +│ 6 ┆ 23.7 ┆ 2023-07-26 ┆ Sixth release focusing on resources and pod overrides │ +├╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤ +│ 7 ┆ 23.4 ┆ 2023-05-17 ┆ Fifth release focusing on affinities and product status │ +├╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤ +│ 8 ┆ 23.1 ┆ 2023-01-27 ┆ Fourth release focusing on image selection and logging │ +├╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤ +│ 9 ┆ 22.11 ┆ 2022-11-14 ┆ Third release focusing on resource management │ +├╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤ +│ 10 ┆ 22.09 ┆ 2022-09-09 ┆ Second release focusing on security and OpenShift support │ +├╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤ +│ 11 ┆ 22.06 ┆ 2022-06-30 ┆ First official release of the Stackable Data Platform │ +├╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤ +│ 12 ┆ latest ┆ 2025-03-24 ┆ Always pointing to the latest stable version of the Stackable Data Platform │ +├╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤ +│ 13 ┆ dev ┆ 1970-01-01 ┆ Development versions from main branch. Not stable! │ +└────┴─────────┴──────────────┴─────────────────────────────────────────────────────────────────────────────────┘ ---- Detailed information of a release can be queried with the `stackablectl release describe` command: @@ -128,3 +138,35 @@ Installed product trino=23.7.0 Installed product zookeeper=23.7.0 Installed release 23.7 ---- + +== Upgrading Releases + +As described in the xref:home::release-notes.adoc[Upgrade sections of the Release Notes], the upgrade process can be achieved by the following three steps: + +. Uninstalling the previous release with `stackablectl release uninstall ` +. Replacing the CRDs with `kubectl replace` +. Installing the next release with `stackablectl release install ` + +For convenience `stackablectl` also provides an upgrade functionality which executes those steps by itself. +To upgrade a release, run the following command: + +[source,console] +---- +$ stackablectl release upgrade 25.3 + +Upgraded to release '25.3' + +Use "stackablectl operator installed" to list installed operators. +---- + +The above command only upgrades the currently installed operators. +To include additional operators in the installation step, use the `--include`/`-i` subcommands and specify the desired operators. + +For example +[source,console] +---- +$ stackablectl release upgrade 25.3 -i druid -i nifi +---- +would upgrade the existing operators as well as install the Stackable operators for Apache Druid and Apache NiFi. + +Likewise, operators can be exluded from the upgrade using the `--exclude`/`-e` subcommands. diff --git a/docs/modules/stackablectl/partials/commands/release.adoc b/docs/modules/stackablectl/partials/commands/release.adoc index a2030bd4..eac12e67 100644 --- a/docs/modules/stackablectl/partials/commands/release.adoc +++ b/docs/modules/stackablectl/partials/commands/release.adoc @@ -10,6 +10,7 @@ Commands: describe Print out detailed release information install Install a specific release uninstall Uninstall a release + upgrade Upgrade a release help Print this message or the help of the given subcommand(s) Options: diff --git a/extra/completions/_stackablectl b/extra/completions/_stackablectl index 25c69764..768a339a 100644 --- a/extra/completions/_stackablectl +++ b/extra/completions/_stackablectl @@ -418,6 +418,35 @@ repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based o ':RELEASE -- Name of the release to uninstall:' \ && ret=0 ;; +(upgrade) +_arguments "${_arguments_options[@]}" : \ +'*-i+[List of product operators to upgrade]:INCLUDED_PRODUCTS: ' \ +'*--include=[List of product operators to upgrade]:INCLUDED_PRODUCTS: ' \ +'*-e+[Blacklist of product operators to install]:EXCLUDED_PRODUCTS: ' \ +'*--exclude=[Blacklist of product operators to install]:EXCLUDED_PRODUCTS: ' \ +'--operator-namespace=[Namespace in the cluster used to deploy the operators]:OPERATOR_NAMESPACE: ' \ +'--operator-ns=[Namespace in the cluster used to deploy the operators]:OPERATOR_NAMESPACE: ' \ +'-l+[Log level this application uses]:LOG_LEVEL: ' \ +'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ +'--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ +'--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ +'--chart-source=[Source the charts from either a OCI registry or from index.yaml-based repositories]:CHART_SOURCE:((oci\:"OCI registry" +repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based on the version and thus will be operator-specific"))' \ +'--no-cache[Do not cache the remote (default) demo, stack and release files]' \ +'-h[Print help (see more with '\''--help'\'')]' \ +'--help[Print help (see more with '\''--help'\'')]' \ +'-V[Print version]' \ +'--version[Print version]' \ +':RELEASE -- Upgrade to the specified release:' \ +&& ret=0 +;; (help) _arguments "${_arguments_options[@]}" : \ ":: :_stackablectl__release__help_commands" \ @@ -446,6 +475,10 @@ _arguments "${_arguments_options[@]}" : \ _arguments "${_arguments_options[@]}" : \ && ret=0 ;; +(upgrade) +_arguments "${_arguments_options[@]}" : \ +&& ret=0 +;; (help) _arguments "${_arguments_options[@]}" : \ && ret=0 @@ -1315,6 +1348,10 @@ _arguments "${_arguments_options[@]}" : \ (uninstall) _arguments "${_arguments_options[@]}" : \ && ret=0 +;; +(upgrade) +_arguments "${_arguments_options[@]}" : \ +&& ret=0 ;; esac ;; @@ -1820,6 +1857,7 @@ _stackablectl__help__release_commands() { 'describe:Print out detailed release information' \ 'install:Install a specific release' \ 'uninstall:Uninstall a release' \ +'upgrade:Upgrade a release' \ ) _describe -t commands 'stackablectl help release commands' commands "$@" } @@ -1843,6 +1881,11 @@ _stackablectl__help__release__uninstall_commands() { local commands; commands=() _describe -t commands 'stackablectl help release uninstall commands' commands "$@" } +(( $+functions[_stackablectl__help__release__upgrade_commands] )) || +_stackablectl__help__release__upgrade_commands() { + local commands; commands=() + _describe -t commands 'stackablectl help release upgrade commands' commands "$@" +} (( $+functions[_stackablectl__help__stack_commands] )) || _stackablectl__help__stack_commands() { local commands; commands=( @@ -1971,6 +2014,7 @@ _stackablectl__release_commands() { 'describe:Print out detailed release information' \ 'install:Install a specific release' \ 'uninstall:Uninstall a release' \ +'upgrade:Upgrade a release' \ 'help:Print this message or the help of the given subcommand(s)' \ ) _describe -t commands 'stackablectl release commands' commands "$@" @@ -1987,6 +2031,7 @@ _stackablectl__release__help_commands() { 'describe:Print out detailed release information' \ 'install:Install a specific release' \ 'uninstall:Uninstall a release' \ +'upgrade:Upgrade a release' \ 'help:Print this message or the help of the given subcommand(s)' \ ) _describe -t commands 'stackablectl release help commands' commands "$@" @@ -2016,6 +2061,11 @@ _stackablectl__release__help__uninstall_commands() { local commands; commands=() _describe -t commands 'stackablectl release help uninstall commands' commands "$@" } +(( $+functions[_stackablectl__release__help__upgrade_commands] )) || +_stackablectl__release__help__upgrade_commands() { + local commands; commands=() + _describe -t commands 'stackablectl release help upgrade commands' commands "$@" +} (( $+functions[_stackablectl__release__install_commands] )) || _stackablectl__release__install_commands() { local commands; commands=() @@ -2031,6 +2081,11 @@ _stackablectl__release__uninstall_commands() { local commands; commands=() _describe -t commands 'stackablectl release uninstall commands' commands "$@" } +(( $+functions[_stackablectl__release__upgrade_commands] )) || +_stackablectl__release__upgrade_commands() { + local commands; commands=() + _describe -t commands 'stackablectl release upgrade commands' commands "$@" +} (( $+functions[_stackablectl__stack_commands] )) || _stackablectl__stack_commands() { local commands; commands=( diff --git a/extra/completions/stackablectl.bash b/extra/completions/stackablectl.bash index 095ed06b..bd247a0c 100644 --- a/extra/completions/stackablectl.bash +++ b/extra/completions/stackablectl.bash @@ -201,6 +201,9 @@ _stackablectl() { stackablectl__help__release,uninstall) cmd="stackablectl__help__release__uninstall" ;; + stackablectl__help__release,upgrade) + cmd="stackablectl__help__release__upgrade" + ;; stackablectl__help__stack,describe) cmd="stackablectl__help__stack__describe" ;; @@ -267,6 +270,9 @@ _stackablectl() { stackablectl__release,uninstall) cmd="stackablectl__release__uninstall" ;; + stackablectl__release,upgrade) + cmd="stackablectl__release__upgrade" + ;; stackablectl__release__help,describe) cmd="stackablectl__release__help__describe" ;; @@ -282,6 +288,9 @@ _stackablectl() { stackablectl__release__help,uninstall) cmd="stackablectl__release__help__uninstall" ;; + stackablectl__release__help,upgrade) + cmd="stackablectl__release__help__upgrade" + ;; stackablectl__stack,describe) cmd="stackablectl__stack__describe" ;; @@ -2883,7 +2892,7 @@ _stackablectl() { return 0 ;; stackablectl__help__release) - opts="list describe install uninstall" + opts="list describe install uninstall upgrade" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -2952,6 +2961,20 @@ _stackablectl() { COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 ;; + stackablectl__help__release__upgrade) + opts="" + if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + fi + case "${prev}" in + *) + COMPREPLY=() + ;; + esac + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + ;; stackablectl__help__stack) opts="list describe install" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then @@ -3985,7 +4008,7 @@ _stackablectl() { return 0 ;; stackablectl__release) - opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version list describe install uninstall help" + opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version list describe install uninstall upgrade help" if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -4249,7 +4272,7 @@ _stackablectl() { return 0 ;; stackablectl__release__help) - opts="list describe install uninstall help" + opts="list describe install uninstall upgrade help" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -4332,6 +4355,20 @@ _stackablectl() { COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 ;; + stackablectl__release__help__upgrade) + opts="" + if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + fi + case "${prev}" in + *) + COMPREPLY=() + ;; + esac + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + ;; stackablectl__release__install) opts="-i -e -c -l -d -s -r -h -V --include --exclude --operator-ns --operator-namespace --cluster --cluster-name --cluster-nodes --cluster-cp-nodes --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version " if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then @@ -4776,6 +4813,158 @@ _stackablectl() { COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 ;; + stackablectl__release__upgrade) + opts="-i -e -l -d -s -r -h -V --include --exclude --operator-ns --operator-namespace --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version " + if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + fi + case "${prev}" in + --include) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -i) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --exclude) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -e) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --operator-namespace) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --operator-ns) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --log-level) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -l) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --demo-file) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -d) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + --stack-file) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -s) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + --release-file) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -r) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + --helm-repo-stable) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-test) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-dev) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --chart-source) + COMPREPLY=($(compgen -W "oci repo" -- "${cur}")) + return 0 + ;; + *) + COMPREPLY=() + ;; + esac + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + ;; stackablectl__stack) opts="-l -d -s -r -h -V --release --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version list describe install help" if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then diff --git a/extra/completions/stackablectl.elv b/extra/completions/stackablectl.elv index f943defe..2e55ca7d 100644 --- a/extra/completions/stackablectl.elv +++ b/extra/completions/stackablectl.elv @@ -224,6 +224,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand describe 'Print out detailed release information' cand install 'Install a specific release' cand uninstall 'Uninstall a release' + cand upgrade 'Upgrade a release' cand help 'Print this message or the help of the given subcommand(s)' } &'stackablectl;release;list'= { @@ -319,11 +320,37 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand -V 'Print version' cand --version 'Print version' } + &'stackablectl;release;upgrade'= { + cand -i 'List of product operators to upgrade' + cand --include 'List of product operators to upgrade' + cand -e 'Blacklist of product operators to install' + cand --exclude 'Blacklist of product operators to install' + cand --operator-namespace 'Namespace in the cluster used to deploy the operators' + cand --operator-ns 'Namespace in the cluster used to deploy the operators' + cand -l 'Log level this application uses' + cand --log-level 'Log level this application uses' + cand -d 'Provide one or more additional (custom) demo file(s)' + cand --demo-file 'Provide one or more additional (custom) demo file(s)' + cand -s 'Provide one or more additional (custom) stack file(s)' + cand --stack-file 'Provide one or more additional (custom) stack file(s)' + cand -r 'Provide one or more additional (custom) release file(s)' + cand --release-file 'Provide one or more additional (custom) release file(s)' + cand --helm-repo-stable 'Provide a custom Helm stable repository URL' + cand --helm-repo-test 'Provide a custom Helm test repository URL' + cand --helm-repo-dev 'Provide a custom Helm dev repository URL' + cand --chart-source 'Source the charts from either a OCI registry or from index.yaml-based repositories' + cand --no-cache 'Do not cache the remote (default) demo, stack and release files' + cand -h 'Print help (see more with ''--help'')' + cand --help 'Print help (see more with ''--help'')' + cand -V 'Print version' + cand --version 'Print version' + } &'stackablectl;release;help'= { cand list 'List available releases' cand describe 'Print out detailed release information' cand install 'Install a specific release' cand uninstall 'Uninstall a release' + cand upgrade 'Upgrade a release' cand help 'Print this message or the help of the given subcommand(s)' } &'stackablectl;release;help;list'= { @@ -334,6 +361,8 @@ set edit:completion:arg-completer[stackablectl] = {|@words| } &'stackablectl;release;help;uninstall'= { } + &'stackablectl;release;help;upgrade'= { + } &'stackablectl;release;help;help'= { } &'stackablectl;stack'= { @@ -916,6 +945,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand describe 'Print out detailed release information' cand install 'Install a specific release' cand uninstall 'Uninstall a release' + cand upgrade 'Upgrade a release' } &'stackablectl;help;release;list'= { } @@ -925,6 +955,8 @@ set edit:completion:arg-completer[stackablectl] = {|@words| } &'stackablectl;help;release;uninstall'= { } + &'stackablectl;help;release;upgrade'= { + } &'stackablectl;help;stack'= { cand list 'List available stacks' cand describe 'Describe a specific stack' diff --git a/extra/completions/stackablectl.fish b/extra/completions/stackablectl.fish index 7fe840ee..28cb3fa0 100644 --- a/extra/completions/stackablectl.fish +++ b/extra/completions/stackablectl.fish @@ -132,22 +132,23 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from help" -f -a "uninstall" -d 'Uninstall one or more operators' complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from help" -f -a "installed" -d 'List installed operators' complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' -complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall help" -s l -l log-level -d 'Log level this application uses' -r -complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall help" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F -complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall help" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F -complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall help" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F -complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall help" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f -complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall help" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f -complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall help" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f -complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall help" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "{oci\t'OCI registry',repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'}" -complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall help" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' -complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall help" -s h -l help -d 'Print help (see more with \'--help\')' -complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall help" -s V -l version -d 'Print version' -complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall help" -f -a "list" -d 'List available releases' -complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall help" -f -a "describe" -d 'Print out detailed release information' -complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall help" -f -a "install" -d 'Install a specific release' -complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall help" -f -a "uninstall" -d 'Uninstall a release' -complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall upgrade help" -s l -l log-level -d 'Log level this application uses' -r +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall upgrade help" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall upgrade help" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall upgrade help" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall upgrade help" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall upgrade help" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall upgrade help" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall upgrade help" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "{oci\t'OCI registry',repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall upgrade help" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall upgrade help" -s h -l help -d 'Print help (see more with \'--help\')' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall upgrade help" -s V -l version -d 'Print version' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall upgrade help" -f -a "list" -d 'List available releases' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall upgrade help" -f -a "describe" -d 'Print out detailed release information' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall upgrade help" -f -a "install" -d 'Install a specific release' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall upgrade help" -f -a "uninstall" -d 'Uninstall a release' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall upgrade help" -f -a "upgrade" -d 'Upgrade a release' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall upgrade help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from list" -s o -l output -r -f -a "{plain\t'Print output formatted as plain text',table\t'Print output formatted as a table',json\t'Print output formatted as JSON',yaml\t'Print output formatted as YAML'}" complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from list" -s l -l log-level -d 'Log level this application uses' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from list" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F @@ -202,10 +203,25 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and _ complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from uninstall" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from uninstall" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from uninstall" -s V -l version -d 'Print version' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from upgrade" -s i -l include -d 'List of product operators to upgrade' -r +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from upgrade" -s e -l exclude -d 'Blacklist of product operators to install' -r +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from upgrade" -l operator-namespace -l operator-ns -d 'Namespace in the cluster used to deploy the operators' -r +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from upgrade" -s l -l log-level -d 'Log level this application uses' -r +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from upgrade" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from upgrade" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from upgrade" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from upgrade" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from upgrade" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from upgrade" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from upgrade" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "{oci\t'OCI registry',repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from upgrade" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from upgrade" -s h -l help -d 'Print help (see more with \'--help\')' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from upgrade" -s V -l version -d 'Print version' complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from help" -f -a "list" -d 'List available releases' complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from help" -f -a "describe" -d 'Print out detailed release information' complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from help" -f -a "install" -d 'Install a specific release' complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from help" -f -a "uninstall" -d 'Uninstall a release' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from help" -f -a "upgrade" -d 'Upgrade a release' complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -l release -d 'Target a specific Stackable release' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -s l -l log-level -d 'Log level this application uses' -r @@ -534,6 +550,7 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and __fi complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and __fish_seen_subcommand_from release" -f -a "describe" -d 'Print out detailed release information' complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and __fish_seen_subcommand_from release" -f -a "install" -d 'Install a specific release' complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and __fish_seen_subcommand_from release" -f -a "uninstall" -d 'Uninstall a release' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and __fish_seen_subcommand_from release" -f -a "upgrade" -d 'Upgrade a release' complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and __fish_seen_subcommand_from stack" -f -a "list" -d 'List available stacks' complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and __fish_seen_subcommand_from stack" -f -a "describe" -d 'Describe a specific stack' complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and __fish_seen_subcommand_from stack" -f -a "install" -d 'Install a specific stack' diff --git a/extra/completions/stackablectl.nu b/extra/completions/stackablectl.nu index 448f1f63..6d899b1b 100644 --- a/extra/completions/stackablectl.nu +++ b/extra/completions/stackablectl.nu @@ -315,6 +315,30 @@ module completions { --version(-V) # Print version ] + def "nu-complete stackablectl release upgrade chart_source" [] { + [ "oci" "repo" ] + } + + # Upgrade a release + export extern "stackablectl release upgrade" [ + RELEASE: string # Upgrade to the specified release + --include(-i): string # List of product operators to upgrade + --exclude(-e): string # Blacklist of product operators to install + --operator-namespace: string # Namespace in the cluster used to deploy the operators + --operator-ns: string # Namespace in the cluster used to deploy the operators + --log-level(-l): string # Log level this application uses + --no-cache # Do not cache the remote (default) demo, stack and release files + --demo-file(-d): string # Provide one or more additional (custom) demo file(s) + --stack-file(-s): string # Provide one or more additional (custom) stack file(s) + --release-file(-r): string # Provide one or more additional (custom) release file(s) + --helm-repo-stable: string # Provide a custom Helm stable repository URL + --helm-repo-test: string # Provide a custom Helm test repository URL + --helm-repo-dev: string # Provide a custom Helm dev repository URL + --chart-source: string@"nu-complete stackablectl release upgrade chart_source" # Source the charts from either a OCI registry or from index.yaml-based repositories + --help(-h) # Print help (see more with '--help') + --version(-V) # Print version + ] + # Print this message or the help of the given subcommand(s) export extern "stackablectl release help" [ ] @@ -335,6 +359,10 @@ module completions { export extern "stackablectl release help uninstall" [ ] + # Upgrade a release + export extern "stackablectl release help upgrade" [ + ] + # Print this message or the help of the given subcommand(s) export extern "stackablectl release help help" [ ] @@ -967,6 +995,10 @@ module completions { export extern "stackablectl help release uninstall" [ ] + # Upgrade a release + export extern "stackablectl help release upgrade" [ + ] + # Interact with stacks, which are ready-to-use product combinations export extern "stackablectl help stack" [ ] diff --git a/rust/stackable-cockpit/src/engine/minikube/mod.rs b/rust/stackable-cockpit/src/engine/minikube/mod.rs index dab6e959..308de131 100644 --- a/rust/stackable-cockpit/src/engine/minikube/mod.rs +++ b/rust/stackable-cockpit/src/engine/minikube/mod.rs @@ -10,7 +10,7 @@ use crate::{ #[derive(Debug, Snafu)] pub enum Error { #[snafu(display( - "failed to determine if a Minikube cluster named '{cluster_name}' already exists" + "failed to determine if a Minikube cluster named {cluster_name:?} already exists" ))] CheckCluster { source: std::io::Error, diff --git a/rust/stackable-cockpit/src/helm.rs b/rust/stackable-cockpit/src/helm.rs index c43578d3..4cca0bba 100644 --- a/rust/stackable-cockpit/src/helm.rs +++ b/rust/stackable-cockpit/src/helm.rs @@ -122,8 +122,7 @@ impl Display for InstallReleaseStatus { } => { write!( f, - "The release {} ({}) is already installed (requested {}), skipping.", - release_name, current_version, requested_version + "The release {release_name} ({current_version}) is already installed (requested {requested_version}), skipping." ) } InstallReleaseStatus::ReleaseAlreadyInstalledUnspecified { @@ -132,16 +131,11 @@ impl Display for InstallReleaseStatus { } => { write!( f, - "The release {} ({}) is already installed and no specific version was requested, skipping.", - release_name, current_version + "The release {release_name} ({current_version}) is already installed and no specific version was requested, skipping." ) } InstallReleaseStatus::Installed(release_name) => { - write!( - f, - "The release {} was successfully installed.", - release_name - ) + write!(f, "The release {release_name} was successfully installed.") } } } @@ -157,17 +151,12 @@ impl Display for UninstallReleaseStatus { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { UninstallReleaseStatus::NotInstalled(release_name) => { - write!( - f, - "The release {} is not installed, skipping.", - release_name - ) + write!(f, "The release {release_name} is not installed, skipping.") } UninstallReleaseStatus::Uninstalled(release_name) => { write!( f, - "The release {} was successfully uninstalled.", - release_name + "The release {release_name} was successfully uninstalled." ) } } @@ -282,10 +271,7 @@ fn install_release( ); if let Some(error) = helm_sys::to_helm_error(&result) { - error!( - "Go wrapper function go_install_helm_release encountered an error: {}", - error - ); + error!("Go wrapper function go_install_helm_release encountered an error: {error}"); return Err(Error::InstallRelease { source: InstallReleaseError::HelmWrapper { error }, @@ -312,10 +298,7 @@ pub fn uninstall_release( let result = helm_sys::uninstall_helm_release(release_name, namespace, suppress_output); if let Some(err) = helm_sys::to_helm_error(&result) { - error!( - "Go wrapper function go_uninstall_helm_release encountered an error: {}", - err - ); + error!("Go wrapper function go_uninstall_helm_release encountered an error: {err}"); return Err(Error::UninstallRelease { error: err }); } @@ -325,10 +308,7 @@ pub fn uninstall_release( )); } - info!( - "The Helm release {} is not installed, skipping.", - release_name - ); + info!("The Helm release {release_name} is not installed, skipping."); Ok(UninstallReleaseStatus::NotInstalled( release_name.to_string(), @@ -352,10 +332,7 @@ pub fn list_releases(namespace: &str) -> Result, Error> { let result = helm_sys::list_helm_releases(namespace); if let Some(err) = helm_sys::to_helm_error(&result) { - error!( - "Go wrapper function go_helm_list_releases encountered an error: {}", - err - ); + error!("Go wrapper function go_helm_list_releases encountered an error: {err}"); return Err(Error::ListReleases { error: err }); } @@ -381,10 +358,7 @@ pub fn add_repo(repository_name: &str, repository_url: &str) -> Result<(), Error let result = helm_sys::add_helm_repository(repository_name, repository_url); if let Some(err) = helm_sys::to_helm_error(&result) { - error!( - "Go wrapper function go_add_helm_repo encountered an error: {}", - err - ); + error!("Go wrapper function go_add_helm_repo encountered an error: {err}"); return Err(Error::AddRepo { error: err }); } @@ -403,7 +377,7 @@ where let url = Url::parse(repo_url.as_ref()).context(UrlParseSnafu)?; let url = url.join(HELM_REPO_INDEX_FILE).context(UrlParseSnafu)?; - debug!("Using {} to retrieve Helm index file", url); + debug!("Using {url} to retrieve Helm index file"); // TODO (Techassi): Use the FileTransferClient for that let index_file_content = reqwest::get(url) diff --git a/rust/stackable-cockpit/src/platform/cluster/resource_request.rs b/rust/stackable-cockpit/src/platform/cluster/resource_request.rs index b254bd75..d3ada92c 100644 --- a/rust/stackable-cockpit/src/platform/cluster/resource_request.rs +++ b/rust/stackable-cockpit/src/platform/cluster/resource_request.rs @@ -32,8 +32,10 @@ impl Display for ResourceRequests { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { write!( f, - "CPU: {}, Memory: {}, PVC space: {}", - self.cpu.0, self.memory.0, self.pvc.0 + "CPU: {cpu}, Memory: {memory}, PVC space: {pvc}", + cpu = self.cpu.0, + memory = self.memory.0, + pvc = self.pvc.0 ) } } @@ -67,8 +69,8 @@ pub enum ResourceRequestsError { #[derive(Debug, Snafu)] pub enum ResourceRequestsValidationError { #[snafu(display( - "The {object_name} requires {} CPU core(s), but there are only {} CPU core(s) available in the cluster", - required.as_cpu_count(), available.as_cpu_count() + "The {object_name} requires {required_cpu} CPU core(s), but there are only {available_cpu} CPU core(s) available in the cluster", + required_cpu = required.as_cpu_count(), available_cpu = available.as_cpu_count() ))] InsufficientCpu { available: CpuQuantity, diff --git a/rust/stackable-cockpit/src/platform/credentials.rs b/rust/stackable-cockpit/src/platform/credentials.rs index f03caaa9..5b96da02 100644 --- a/rust/stackable-cockpit/src/platform/credentials.rs +++ b/rust/stackable-cockpit/src/platform/credentials.rs @@ -25,7 +25,12 @@ pub struct Credentials { impl Display for Credentials { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "{}:{}", self.username, self.password) + write!( + f, + "{username}:{password}", + username = self.username, + password = self.password + ) } } diff --git a/rust/stackable-cockpit/src/platform/demo/spec.rs b/rust/stackable-cockpit/src/platform/demo/spec.rs index e2903516..6c4c5589 100644 --- a/rust/stackable-cockpit/src/platform/demo/spec.rs +++ b/rust/stackable-cockpit/src/platform/demo/spec.rs @@ -29,13 +29,13 @@ pub type DemoParameter = Parameter; #[derive(Debug, Snafu)] pub enum Error { - #[snafu(display("no stack named '{name}'"))] + #[snafu(display("no stack named {name:?}"))] NoSuchStack { name: String }, #[snafu(display("demo resource requests error"), context(false))] DemoResourceRequests { source: ResourceRequestsError }, - #[snafu(display("cannot install demo in namespace '{requested}', only '{}' supported", supported.join(", ")))] + #[snafu(display("cannot install demo in namespace {requested:?}, only {supported:?} supported", supported = supported.join(", ")))] UnsupportedNamespace { requested: String, supported: Vec, diff --git a/rust/stackable-cockpit/src/platform/manifests.rs b/rust/stackable-cockpit/src/platform/manifests.rs index c1b3a566..d9d23794 100644 --- a/rust/stackable-cockpit/src/platform/manifests.rs +++ b/rust/stackable-cockpit/src/platform/manifests.rs @@ -22,7 +22,7 @@ use crate::{ #[derive(Debug, Snafu)] pub enum Error { /// This error indicates that parsing a string into a path or URL failed. - #[snafu(display("failed to parse '{path_or_url}' as path/url"))] + #[snafu(display("failed to parse {path_or_url:?} as path/url"))] ParsePathOrUrl { source: PathOrUrlParseError, path_or_url: String, diff --git a/rust/stackable-cockpit/src/platform/release/spec.rs b/rust/stackable-cockpit/src/platform/release/spec.rs index e17120d2..13f589a9 100644 --- a/rust/stackable-cockpit/src/platform/release/spec.rs +++ b/rust/stackable-cockpit/src/platform/release/spec.rs @@ -14,6 +14,11 @@ use crate::{ operator::{self, ChartSourceType, OperatorSpec}, product, }, + utils::{ + k8s::{self, Client}, + path::{IntoPathOrUrl as _, PathOrUrlParseError}, + }, + xfer::{self, processor::Text}, }; type Result = std::result::Result; @@ -23,6 +28,17 @@ pub enum Error { #[snafu(display("failed to parse operator spec"))] OperatorSpecParse { source: operator::SpecParseError }, + /// This error indicates that parsing a string into a path or URL failed. + #[snafu(display("failed to parse {path_or_url:?} as path/url"))] + ParsePathOrUrl { + source: PathOrUrlParseError, + path_or_url: String, + }, + + /// This error indicates that receiving remote content failed. + #[snafu(display("failed to receive remote content"))] + FileTransfer { source: xfer::Error }, + #[snafu(display("failed to install release using Helm"))] HelmInstall { source: helm::Error }, @@ -31,6 +47,9 @@ pub enum Error { #[snafu(display("failed to launch background task"))] BackgroundTask { source: JoinError }, + + #[snafu(display("failed to deploy manifests using the kube client"))] + DeployManifest { source: k8s::Error }, } #[derive(Clone, Debug, Deserialize, Serialize)] @@ -118,14 +137,99 @@ impl ReleaseSpec { .await } + /// Upgrades a release by upgrading individual operators. + #[instrument(skip_all, fields( + %namespace, + indicatif.pb_show = true + ))] + pub async fn upgrade_crds( + &self, + include_products: &[String], + exclude_products: &[String], + namespace: &str, + k8s_client: &Client, + transfer_client: &xfer::Client, + ) -> Result<()> { + info!("Upgrading CRDs for release"); + Span::current().pb_set_style(&PROGRESS_BAR_STYLE); + + include_products.iter().for_each(|product| { + Span::current().record("product.included", product); + }); + exclude_products.iter().for_each(|product| { + Span::current().record("product.excluded", product); + }); + + let operators = self.filter_products(include_products, exclude_products); + + Span::current().pb_set_length(operators.len() as u64); + + for (product_name, product) in operators { + info!("Upgrading CRDs for {product_name}-operator"); + let iter_span = tracing::info_span!("upgrade_crds_iter", indicatif.pb_show = true); + + async move { + Span::current().pb_set_message(format!("Ugrading CRDs for {product_name}-operator").as_str()); + + let release_branch = match product.version.pre.as_str() { + "dev" => "main".to_string(), + _ => { + product.version.to_string() + } + }; + + let request_url = &format!( + "https://raw.githubusercontent.com/stackabletech/{product_name}-operator/{release_branch}/deploy/helm/{product_name}-operator/crds/crds.yaml" + ); + let request_url = request_url.into_path_or_url().context(ParsePathOrUrlSnafu { + path_or_url: request_url.clone(), + })?; + + // Get CRD manifests from request_url + let crd_manifests: String = transfer_client + .get(&request_url, &Text) + .await + .context(FileTransferSnafu)?; + + // Upgrade CRDs + k8s_client + .replace_crds(&crd_manifests) + .await + .context(DeployManifestSnafu)?; + + info!("Upgraded {product_name}-operator CRDs"); + + Ok::<(), Error>(()) + }.instrument(iter_span).await?; + + Span::current().pb_inc(1); + } + + Ok(()) + } + #[instrument(skip_all, fields(indicatif.pb_show = true))] - pub fn uninstall(&self, namespace: &str) -> Result<()> { + pub fn uninstall( + &self, + include_products: &[String], + exclude_products: &[String], + namespace: &str, + ) -> Result<()> { info!("Uninstalling release"); + include_products.iter().for_each(|product| { + Span::current().record("product.included", product); + }); + exclude_products.iter().for_each(|product| { + Span::current().record("product.excluded", product); + }); + + let operators = self.filter_products(include_products, exclude_products); + Span::current().pb_set_style(&PROGRESS_BAR_STYLE); - Span::current().pb_set_length(self.products.len() as u64); + Span::current().pb_set_length(operators.len() as u64); - for (product_name, product_spec) in &self.products { + for (product_name, product_spec) in operators { info!("Uninstalling {product_name}-operator"); // Create operator spec diff --git a/rust/stackable-cockpit/src/platform/service.rs b/rust/stackable-cockpit/src/platform/service.rs index f82d50fe..73ff576c 100644 --- a/rust/stackable-cockpit/src/platform/service.rs +++ b/rust/stackable-cockpit/src/platform/service.rs @@ -20,22 +20,22 @@ pub enum Error { #[snafu(display("failed to fetch data from Kubernetes API"))] KubeClientFetch { source: k8s::Error }, - #[snafu(display("missing namespace for service '{service}'"))] + #[snafu(display("missing namespace for service {service:?}"))] MissingServiceNamespace { service: String }, - #[snafu(display("missing spec for service '{service}'"))] + #[snafu(display("missing spec for service {service:?}"))] MissingServiceSpec { service: String }, - #[snafu(display("failed to get status of node '{node_name}'"))] + #[snafu(display("failed to get status of node {node_name:?}"))] GetNodeStatus { node_name: String }, - #[snafu(display("failed to get address of node '{node_name}'"))] + #[snafu(display("failed to get address of node {node_name:?}"))] GetNodeAddress { node_name: String }, - #[snafu(display("failed to find an ExternalIP or InternalIP for node '{node_name}'"))] + #[snafu(display("failed to find an ExternalIP or InternalIP for node {node_name:?}"))] NoIpForNode { node_name: String }, - #[snafu(display("failed to find node '{node_name}' in node_name_ip_mapping"))] + #[snafu(display("failed to find node {node_name:?} in node_name_ip_mapping"))] NodeMissingInIpMapping { node_name: String }, } diff --git a/rust/stackable-cockpit/src/platform/stack/spec.rs b/rust/stackable-cockpit/src/platform/stack/spec.rs index e95fb628..c5fd2939 100644 --- a/rust/stackable-cockpit/src/platform/stack/spec.rs +++ b/rust/stackable-cockpit/src/platform/stack/spec.rs @@ -49,7 +49,7 @@ pub enum Error { /// This error indicates that the stack doesn't support being installed in /// the provided namespace. - #[snafu(display("unable install stack in namespace {requested:?}, only '{}' supported", supported.join(", ")))] + #[snafu(display("unable install stack in namespace {requested:?}, only {supported:?} supported", supported = supported.join(", ")))] UnsupportedNamespace { requested: String, supported: Vec, diff --git a/rust/stackable-cockpit/src/platform/stacklet/mod.rs b/rust/stackable-cockpit/src/platform/stacklet/mod.rs index b2f915c0..7c4cd449 100644 --- a/rust/stackable-cockpit/src/platform/stacklet/mod.rs +++ b/rust/stackable-cockpit/src/platform/stacklet/mod.rs @@ -50,7 +50,7 @@ pub enum Error { #[snafu(display("failed to fetch data from the Kubernetes API"))] KubeClientFetch { source: k8s::Error }, - #[snafu(display("no namespace set for custom resource '{crd_name}'"))] + #[snafu(display("no namespace set for custom resource {crd_name:?}"))] CustomCrdNamespace { crd_name: String }, #[snafu(display("failed to deserialize cluster conditions from JSON"))] @@ -197,6 +197,9 @@ fn gvk_from_product_name(product_name: &str) -> GroupVersionKind { GroupVersionKind { group: format!("{product_name}.stackable.tech"), version: "v1alpha1".into(), - kind: format!("{}Cluster", product_name.capitalize()), + kind: format!( + "{product_name}Cluster", + product_name = product_name.capitalize() + ), } } diff --git a/rust/stackable-cockpit/src/utils/k8s/client.rs b/rust/stackable-cockpit/src/utils/k8s/client.rs index 629aa9e4..e678b71b 100644 --- a/rust/stackable-cockpit/src/utils/k8s/client.rs +++ b/rust/stackable-cockpit/src/utils/k8s/client.rs @@ -38,41 +38,45 @@ pub enum Error { #[snafu(display("failed to patch/create Kubernetes object"))] KubeClientPatch { source: kube::error::Error }, + #[snafu(display("failed to replace Kubernetes object"))] + KubeClientReplace { + source: kube::error::Error, + gvk: GroupVersionKind, + }, + #[snafu(display("failed to deserialize YAML data"))] DeserializeYaml { source: serde_yaml::Error }, #[snafu(display("failed to run GVK discovery"))] GVKDiscoveryRun { source: kube::error::Error }, - #[snafu(display("GVK {gvk:?} is not known"))] - GVKUnkown { gvk: GroupVersionKind }, - #[snafu(display("failed to deploy manifest because type of object {object:?} is not set"))] ObjectType { object: DynamicObject }, - #[snafu(display("failed to deploy manifest because GVK {group}/{kind}@{version} cannot be resolved", + // Using output close to Display for ObjectRef https://docs.rs/kube-runtime/0.99.0/src/kube_runtime/reflector/object_ref.rs.html#292-296 + #[snafu(display("failed to resolve GVK: {kind}.{version}.{group}", group = gvk.group, version = gvk.version, kind = gvk.kind ))] - DiscoveryResolve { gvk: GroupVersionKind }, + GVKResolve { gvk: GroupVersionKind }, #[snafu(display("failed to convert byte string into UTF-8 string"))] ByteStringConvert { source: FromUtf8Error }, - #[snafu(display("missing namespace for service '{service}'"))] + #[snafu(display("missing namespace for service {service:?}"))] MissingServiceNamespace { service: String }, #[snafu(display("failed to retrieve cluster information"))] ClusterInformation { source: cluster::Error }, - #[snafu(display("invalid or empty secret data in '{secret_name}'"))] + #[snafu(display("invalid or empty secret data in {secret_name:?}"))] InvalidSecretData { secret_name: String }, - #[snafu(display("no username key in credentials secret '{secret_name}'"))] + #[snafu(display("no username key in credentials secret {secret_name:?}"))] NoUsernameKey { secret_name: String }, - #[snafu(display("no password key in credentials secret '{secret_name}'"))] + #[snafu(display("no password key in credentials secret {secret_name:?}"))] NoPasswordKey { secret_name: String }, } @@ -128,7 +132,7 @@ impl Client { let (resource, capabilities) = self .resolve_gvk(&gvk) .await? - .context(GVKUnkownSnafu { gvk })?; + .context(GVKResolveSnafu { gvk })?; let api: Api = match capabilities.scope { Scope::Cluster => { @@ -152,6 +156,49 @@ impl Client { Ok(()) } + /// Replaces CRDs defined the in raw `crds` YAML string. This + /// method will fail if it is unable to parse the CRDs, unable to + /// resolve GVKs or unable to replace/create the dynamic objects. + pub async fn replace_crds(&self, crds: &str) -> Result<()> { + for crd in serde_yaml::Deserializer::from_str(crds) { + let mut object = DynamicObject::deserialize(crd).context(DeserializeYamlSnafu)?; + + let object_type = object.types.as_ref().ok_or( + ObjectTypeSnafu { + object: object.clone(), + } + .build(), + )?; + + let gvk = Self::gvk_of_typemeta(object_type); + let (resource, _) = self + .resolve_gvk(&gvk) + .await? + .with_context(|| GVKResolveSnafu { gvk: gvk.clone() })?; + + // CRDs are cluster scoped + let api: Api = Api::all_with(self.client.clone(), &resource); + + if let Some(resource) = api + .get_opt(&object.name_any()) + .await + .context(KubeClientFetchSnafu)? + { + object.metadata.resource_version = resource.resource_version(); + api.replace(&object.name_any(), &PostParams::default(), &object) + .await + .with_context(|_| KubeClientReplaceSnafu { gvk })?; + } else { + // Create CRD if a previous version wasn't found + api.create(&PostParams::default(), &object) + .await + .context(KubeClientPatchSnafu)?; + } + } + + Ok(()) + } + /// Lists objects by looking up a GVK via the discovery. It returns an /// optional list of dynamic objects. The method returns [`Ok(None)`] /// if the client was unable to resolve the GVK. An error is returned diff --git a/rust/stackable-cockpit/src/utils/k8s/conditions.rs b/rust/stackable-cockpit/src/utils/k8s/conditions.rs index 06abc174..82f52118 100644 --- a/rust/stackable-cockpit/src/utils/k8s/conditions.rs +++ b/rust/stackable-cockpit/src/utils/k8s/conditions.rs @@ -43,7 +43,11 @@ impl ConditionsExt for Vec { self.iter() .map(|c| { DisplayCondition::new( - format!("{}: {}", c.type_, c.status), + format!( + "{condition_type}: {status}", + condition_type = c.type_, + status = c.status + ), Some(c.message.clone()), c.is_good(), ) @@ -57,7 +61,11 @@ impl ConditionsExt for Vec { self.iter() .map(|c| { DisplayCondition::new( - format!("{}: {}", c.type_, c.status), + format!( + "{condition_type}: {status}", + condition_type = c.type_, + status = c.status + ), c.message.clone(), c.is_good(), ) @@ -79,7 +87,11 @@ impl ConditionsExt for Vec { self.iter() .map(|c| { DisplayCondition::new( - format!("{}: {}", c.type_, c.status), + format!( + "{condition_type}: {status}", + condition_type = c.type_, + status = c.status + ), c.message.clone(), c.is_good(), ) diff --git a/rust/stackable-cockpit/src/utils/k8s/labels.rs b/rust/stackable-cockpit/src/utils/k8s/labels.rs index 7f9d5b17..d79c127b 100644 --- a/rust/stackable-cockpit/src/utils/k8s/labels.rs +++ b/rust/stackable-cockpit/src/utils/k8s/labels.rs @@ -37,7 +37,7 @@ pub trait ListParamsExt { impl ListParamsExt for ListParams { fn add_label(&mut self, label: impl Into) { match self.label_selector.as_mut() { - Some(labels) => labels.push_str(format!(",{}", label.into()).as_str()), + Some(labels) => labels.push_str(format!(",{label}", label = label.into()).as_str()), None => self.label_selector = Some(label.into()), } } diff --git a/rust/stackable-cockpit/src/utils/mod.rs b/rust/stackable-cockpit/src/utils/mod.rs index a42bcc0d..ee2018a4 100644 --- a/rust/stackable-cockpit/src/utils/mod.rs +++ b/rust/stackable-cockpit/src/utils/mod.rs @@ -8,5 +8,5 @@ pub mod templating; /// Returns the name of the operator used in the Helm repository. pub fn operator_chart_name(name: &str) -> String { - format!("{}-operator", name) + format!("{name}-operator") } diff --git a/rust/stackable-cockpit/src/utils/params.rs b/rust/stackable-cockpit/src/utils/params.rs index 623aeac4..d688009d 100644 --- a/rust/stackable-cockpit/src/utils/params.rs +++ b/rust/stackable-cockpit/src/utils/params.rs @@ -34,7 +34,7 @@ pub enum IntoParametersError { #[snafu(display("failed to parse raw parameter"))] RawParse { source: RawParameterParseError }, - #[snafu(display("invalid parameter '{parameter}', expected one of {expected}"))] + #[snafu(display("invalid parameter {parameter:?}, expected one of {expected:?}"))] InvalidParameter { parameter: String, expected: String }, } @@ -106,7 +106,7 @@ pub enum RawParameterParseError { impl Display for RawParameter { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { - write!(f, "{}={}", self.name, self.value) + write!(f, "{name}={value}", name = self.name, value = self.value) } } diff --git a/rust/stackable-cockpit/src/xfer/mod.rs b/rust/stackable-cockpit/src/xfer/mod.rs index 87dde643..3792305b 100644 --- a/rust/stackable-cockpit/src/xfer/mod.rs +++ b/rust/stackable-cockpit/src/xfer/mod.rs @@ -120,6 +120,8 @@ impl Client { .client .execute(req) .await + .context(FetchRemoteContentSnafu)? + .error_for_status() .context(FetchRemoteContentSnafu)?; result.text().await.context(FetchRemoteContentSnafu) diff --git a/rust/stackablectl/CHANGELOG.md b/rust/stackablectl/CHANGELOG.md index a5d6b7e1..e039bbe7 100644 --- a/rust/stackablectl/CHANGELOG.md +++ b/rust/stackablectl/CHANGELOG.md @@ -10,6 +10,7 @@ All notable changes to this project will be documented in this file. This should unblock demos to run in all namespaces, as they can template the namespace e.g. for the FQDN of services ([#355]). - Add progress reporting ([#376]). - Include SparkConnectServer in the `stacklet list` output ([#380]). +- Add release upgrade functionality to `stackablectl release` command through `upgrade` subcommand ([#379]). ### Changed @@ -24,6 +25,7 @@ All notable changes to this project will be documented in this file. [#373]: https://github.com/stackabletech/stackable-cockpit/pull/373 [#376]: https://github.com/stackabletech/stackable-cockpit/pull/376 [#380]: https://github.com/stackabletech/stackable-cockpit/pull/380 +[#379]: https://github.com/stackabletech/stackable-cockpit/pull/379 ## [25.3.0] - 2025-03-27 diff --git a/rust/stackablectl/src/cmds/debug.rs b/rust/stackablectl/src/cmds/debug.rs index cf0feaa1..83ad165c 100644 --- a/rust/stackablectl/src/cmds/debug.rs +++ b/rust/stackablectl/src/cmds/debug.rs @@ -340,8 +340,8 @@ impl Drop for AsyncStdin { let status = unsafe { libc::fcntl(self.fd.as_raw_fd(), libc::F_SETFL, self.old_flags) }; if status == -1 { panic!( - "unable to revert stdin flags: {}", - std::io::Error::last_os_error() + "unable to revert stdin flags: {error}", + error = std::io::Error::last_os_error() ); } } diff --git a/rust/stackablectl/src/cmds/demo.rs b/rust/stackablectl/src/cmds/demo.rs index 9480e3dd..bffc38a0 100644 --- a/rust/stackablectl/src/cmds/demo.rs +++ b/rust/stackablectl/src/cmds/demo.rs @@ -125,13 +125,13 @@ pub enum CmdError { #[snafu(display("failed to serialize JSON output"))] SerializeJsonOutput { source: serde_json::Error }, - #[snafu(display("no demo with name '{name}'"))] + #[snafu(display("no demo with name {name:?}"))] NoSuchDemo { name: String }, - #[snafu(display("no stack with name '{name}'"))] + #[snafu(display("no stack with name {name:?}"))] NoSuchStack { name: String }, - #[snafu(display("no release '{release}'"))] + #[snafu(display("no release {release:?}"))] NoSuchRelease { release: String }, #[snafu(display("failed to get latest release"))] @@ -302,7 +302,10 @@ async fn describe_cmd( result .with_command_hint( - format!("stackablectl demo install {}", args.demo_name), + format!( + "stackablectl demo install {demo_name}", + demo_name = args.demo_name + ), "install the demo", ) .with_command_hint("stackablectl demo list", "list all available demos") @@ -398,11 +401,11 @@ async fn install_cmd( })?; let operator_cmd = format!( - "stackablectl operator installed{}", - if args.namespaces.operator_namespace != DEFAULT_OPERATOR_NAMESPACE { + "stackablectl operator installed{option}", + option = if args.namespaces.operator_namespace != DEFAULT_OPERATOR_NAMESPACE { format!( - " --operator-namespace {}", - args.namespaces.operator_namespace + " --operator-namespace {namespace}", + namespace = args.namespaces.operator_namespace ) } else { "".into() @@ -410,9 +413,12 @@ async fn install_cmd( ); let stacklet_cmd = format!( - "stackablectl stacklet list{}", - if args.namespaces.namespace != DEFAULT_NAMESPACE { - format!(" --namespace {}", args.namespaces.namespace) + "stackablectl stacklet list{option}", + option = if args.namespaces.namespace != DEFAULT_NAMESPACE { + format!( + " --namespace {namespace}", + namespace = args.namespaces.namespace + ) } else { "".into() } @@ -421,7 +427,10 @@ async fn install_cmd( output .with_command_hint(operator_cmd, "display the installed operators") .with_command_hint(stacklet_cmd, "display the installed stacklets") - .with_output(format!("Installed demo '{}'", args.demo_name)); + .with_output(format!( + "Installed demo {demo_name:?}", + demo_name = args.demo_name + )); Ok(output.render()) } diff --git a/rust/stackablectl/src/cmds/operator.rs b/rust/stackablectl/src/cmds/operator.rs index 84c269cd..cb2e903c 100644 --- a/rust/stackablectl/src/cmds/operator.rs +++ b/rust/stackablectl/src/cmds/operator.rs @@ -141,7 +141,7 @@ pub enum CmdError { version: String, }, - #[snafu(display("unknown repository name '{name}'"))] + #[snafu(display("unknown repository name {name:?}"))] UnknownRepoName { name: String }, #[snafu(display("Helm error"))] @@ -159,7 +159,7 @@ pub enum CmdError { #[snafu(display("failed to create Kubernetes client"))] KubeClientCreate { source: k8s::Error }, - #[snafu(display("failed to create namespace '{namespace}'"))] + #[snafu(display("failed to create namespace {namespace:?}"))] NamespaceCreate { source: namespace::Error, namespace: String, @@ -292,7 +292,10 @@ async fn describe_cmd(args: &OperatorDescribeArgs, cli: &Cli) -> Result Result Result, + + /// Blacklist of product operators to install + #[arg(short, long = "exclude", group = "products")] + excluded_products: Vec, + + /// Namespace in the cluster used to deploy the operators + #[arg(long, default_value = DEFAULT_OPERATOR_NAMESPACE, visible_aliases(["operator-ns"]))] + pub operator_namespace: String, +} + #[derive(Debug, Args)] pub struct ReleaseUninstallArgs { /// Name of the release to uninstall @@ -97,6 +125,9 @@ pub struct ReleaseUninstallArgs { #[derive(Debug, Snafu)] pub enum CmdError { + #[snafu(display("Helm error"))] + HelmError { source: helm::Error }, + #[snafu(display("failed to serialize YAML output"))] SerializeYamlOutput { source: serde_yaml::Error }, @@ -109,9 +140,15 @@ pub enum CmdError { #[snafu(display("failed to build release list"))] BuildList { source: list::Error }, + #[snafu(display("no release {release:?}"))] + NoSuchRelease { release: String }, + #[snafu(display("failed to install release"))] ReleaseInstall { source: release::Error }, + #[snafu(display("failed to upgrade CRDs for release"))] + CrdUpgrade { source: release::Error }, + #[snafu(display("failed to uninstall release"))] ReleaseUninstall { source: release::Error }, @@ -121,7 +158,7 @@ pub enum CmdError { #[snafu(display("failed to create Kubernetes client"))] KubeClientCreate { source: k8s::Error }, - #[snafu(display("failed to create namespace '{namespace}'"))] + #[snafu(display("failed to create namespace {namespace:?}"))] NamespaceCreate { source: namespace::Error, namespace: String, @@ -147,6 +184,9 @@ impl ReleaseArgs { ReleaseCommands::Describe(args) => describe_cmd(args, cli, release_list).await, ReleaseCommands::Install(args) => install_cmd(args, cli, release_list).await, ReleaseCommands::Uninstall(args) => uninstall_cmd(args, cli, release_list).await, + ReleaseCommands::Upgrade(args) => { + upgrade_cmd(args, cli, release_list, &transfer_client).await + } } } } @@ -253,7 +293,10 @@ async fn describe_cmd( result .with_command_hint( - format!("stackablectl release install {}", args.release), + format!( + "stackablectl release install {release}", + release = args.release + ), "install the release", ) .with_command_hint("stackablectl release list", "list all available releases") @@ -264,7 +307,9 @@ async fn describe_cmd( OutputType::Json => serde_json::to_string(&release).context(SerializeJsonOutputSnafu), OutputType::Yaml => serde_yaml::to_string(&release).context(SerializeYamlOutputSnafu), }, - None => Ok("No such release".into()), + None => Err(CmdError::NoSuchRelease { + release: args.release.clone(), + }), } } @@ -311,11 +356,102 @@ async fn install_cmd( "stackablectl operator installed", "list installed operators", ) - .with_output(format!("Installed release '{}'", args.release)); + .with_output(format!( + "Installed release {release:?}", + release = args.release + )); + + Ok(output.render()) + } + None => Err(CmdError::NoSuchRelease { + release: args.release.clone(), + }), + } +} + +#[instrument(skip_all, fields(indicatif.pb_show = true))] +async fn upgrade_cmd( + args: &ReleaseUpgradeArgs, + cli: &Cli, + release_list: release::ReleaseList, + transfer_client: &xfer::Client, +) -> Result { + info!(release = %args.release, "Upgrading release"); + Span::current().pb_set_message("Upgrading release"); + + match release_list.get(&args.release) { + Some(release) => { + let mut output = cli.result(); + let client = Client::new().await.context(KubeClientCreateSnafu)?; + + // Get all currently installed operators to only upgrade those + let installed_charts: Vec = + helm::list_releases(&args.operator_namespace).context(HelmSnafu)?; + + let mut operators: Vec = operator::VALID_OPERATORS + .iter() + .filter(|operator| { + installed_charts + .iter() + .any(|release| release.name == utils::operator_chart_name(operator)) + }) + .map(|operator| operator.to_string()) + .collect(); + + // Uninstall the old operator release first + release + .uninstall( + &operators, + &args.excluded_products, + &args.operator_namespace, + ) + .context(ReleaseUninstallSnafu)?; + + // If operators were added to args.included_products, install them as well + for product in &args.included_products { + if !operators.contains(product) { + operators.push(product.clone()); + } + } + + // Upgrade the CRDs for all the operators to be upgraded + release + .upgrade_crds( + &operators, + &args.excluded_products, + &args.operator_namespace, + &client, + transfer_client, + ) + .await + .context(CrdUpgradeSnafu)?; + + // Install the new operator release + release + .install( + &operators, + &args.excluded_products, + &args.operator_namespace, + &ChartSourceType::from(cli.chart_type()), + ) + .await + .context(ReleaseInstallSnafu)?; + + output + .with_command_hint( + "stackablectl operator installed", + "list installed operators", + ) + .with_output(format!( + "Upgraded to release {release:?}", + release = args.release + )); Ok(output.render()) } - None => Ok("No such release".into()), + None => Err(CmdError::NoSuchRelease { + release: args.release.clone(), + }), } } @@ -330,17 +466,22 @@ async fn uninstall_cmd( match release_list.get(&args.release) { Some(release) => { release - .uninstall(&args.operator_namespace) + .uninstall(&Vec::new(), &Vec::new(), &args.operator_namespace) .context(ReleaseUninstallSnafu)?; let mut result = cli.result(); result .with_command_hint("stackablectl release list", "list available releases") - .with_output(format!("Uninstalled release '{}'", args.release)); + .with_output(format!( + "Uninstalled release {release:?}", + release = args.release + )); Ok(result.render()) } - None => Ok("No such release".into()), + None => Err(CmdError::NoSuchRelease { + release: args.release.clone(), + }), } } diff --git a/rust/stackablectl/src/cmds/stack.rs b/rust/stackablectl/src/cmds/stack.rs index 01816929..a027166d 100644 --- a/rust/stackablectl/src/cmds/stack.rs +++ b/rust/stackablectl/src/cmds/stack.rs @@ -121,7 +121,7 @@ pub enum CmdError { #[snafu(display("failed to serialize JSON output"))] SerializeJsonOutput { source: serde_json::Error }, - #[snafu(display("no release '{release}'"))] + #[snafu(display("no release {release:?}"))] NoSuchRelease { release: String }, #[snafu(display("failed to get latest release"))] @@ -291,7 +291,10 @@ fn describe_cmd( result .with_command_hint( - format!("stackablectl stack install {}", args.stack_name), + format!( + "stackablectl stack install {stack_name}", + stack_name = args.stack_name + ), "install the stack", ) .with_command_hint("stackablectl stack list", "list all available stacks") @@ -361,11 +364,11 @@ async fn install_cmd( })?; let operator_cmd = format!( - "stackablectl operator installed{}", - if args.namespaces.operator_namespace != DEFAULT_OPERATOR_NAMESPACE { + "stackablectl operator installed{option}", + option = if args.namespaces.operator_namespace != DEFAULT_OPERATOR_NAMESPACE { format!( - " --operator-namespace {}", - args.namespaces.operator_namespace + " --operator-namespace {namespace}", + namespace = args.namespaces.operator_namespace ) } else { "".into() @@ -373,9 +376,12 @@ async fn install_cmd( ); let stacklet_cmd = format!( - "stackablectl stacklet list{}", - if args.namespaces.namespace != DEFAULT_NAMESPACE { - format!(" --namespace {}", args.namespaces.namespace) + "stackablectl stacklet list{option}", + option = if args.namespaces.namespace != DEFAULT_NAMESPACE { + format!( + " --namespace {namespace}", + namespace = args.namespaces.namespace + ) } else { "".into() } @@ -384,7 +390,10 @@ async fn install_cmd( output .with_command_hint(operator_cmd, "display the installed operators") .with_command_hint(stacklet_cmd, "display the installed stacklets") - .with_output(format!("Installed stack '{}'", args.stack_name)); + .with_output(format!( + "Installed stack {stack_name:?}", + stack_name = args.stack_name + )); Ok(output.render()) } diff --git a/rust/stackablectl/src/cmds/stacklet.rs b/rust/stackablectl/src/cmds/stacklet.rs index 332d45a0..62c8aff2 100644 --- a/rust/stackablectl/src/cmds/stacklet.rs +++ b/rust/stackablectl/src/cmds/stacklet.rs @@ -191,7 +191,7 @@ async fn list_cmd(args: &StackletListArgs, cli: &Cli) -> Result Result Ok("No credentials".into()), } @@ -280,7 +282,7 @@ fn render_condition_error( ) -> Option { if !is_good.unwrap_or(true) { let message = message.unwrap_or("-".into()); - return Some(format!("[{}]: {}", error_index, message)); + return Some(format!("[{error_index}]: {message}")); } None @@ -294,7 +296,7 @@ fn color_condition(condition: &str, is_good: Option, error_index: usize) - if is_good { condition.to_owned() } else { - format!("{}: See [{}]", condition, error_index) + format!("{condition}: See [{error_index}]") } } None => condition.to_owned(), @@ -308,6 +310,6 @@ fn render_errors(errors: Vec) -> Option { } else if errors.len() == 1 { Some(errors[0].clone()) } else { - Some(format!("{}\n---\n", errors.join("\n"))) + Some(format!("{errors}\n---\n", errors = errors.join("\n"))) } } diff --git a/rust/stackablectl/src/main.rs b/rust/stackablectl/src/main.rs index 9ad159d2..d6f96b24 100644 --- a/rust/stackablectl/src/main.rs +++ b/rust/stackablectl/src/main.rs @@ -6,7 +6,7 @@ use tracing::{Level, metadata::LevelFilter}; use tracing_indicatif::{ IndicatifLayer, filter::{IndicatifFilter, hide_indicatif_span_fields}, - indicatif_eprintln, + indicatif_eprintln, indicatif_println, }; use tracing_subscriber::{ Layer as _, @@ -63,12 +63,13 @@ async fn main() -> Result<(), Error> { } match app.run().await { - Ok(result) => print!("{result}"), + Ok(result) => indicatif_println!("{result}"), Err(err) => { let mut output = app.error(); output.with_error_report(err); - eprint!("{}", output.render()) + indicatif_eprintln!("{error}", error = output.render()); + std::process::exit(1); } } diff --git a/rust/stackablectl/src/output/mod.rs b/rust/stackablectl/src/output/mod.rs index eb1fe85f..20ef91ef 100644 --- a/rust/stackablectl/src/output/mod.rs +++ b/rust/stackablectl/src/output/mod.rs @@ -55,7 +55,7 @@ where let mut report = String::new(); // Print top most error - write!(report, "An unrecoverable error occured: {}\n\n", self)?; + write!(report, "An unrecoverable error occured: {self}\n\n")?; writeln!( report, "Caused by these errors (recent errors listed first):" @@ -65,7 +65,7 @@ where let mut index = 1; while let Some(source) = error.source() { - writeln!(report, " {}: {}", index, source)?; + writeln!(report, " {index}: {source}")?; error = source; index += 1; } diff --git a/rust/stackablectl/src/output/result.rs b/rust/stackablectl/src/output/result.rs index 28409bc9..1f36d397 100644 --- a/rust/stackablectl/src/output/result.rs +++ b/rust/stackablectl/src/output/result.rs @@ -55,9 +55,9 @@ impl ResultContext { description: impl Into, ) -> &mut Self { self.command_hints.push(format!( - "Use \"{}\" to {}.", - command.into(), - description.into() + "Use \"{command}\" to {description}.", + command = command.into(), + description = description.into() )); self diff --git a/rust/xtask/src/docs.rs b/rust/xtask/src/docs.rs index 6f7f4b8b..d36feb65 100644 --- a/rust/xtask/src/docs.rs +++ b/rust/xtask/src/docs.rs @@ -43,8 +43,8 @@ pub fn generate() -> Result<(), GenDocsError> { .unwrap() .join(DOCS_BASE_PATH) .join(format!( - "{}.adoc", - if cmd.get_name() == cli.get_name() { + "{name}.adoc", + name = if cmd.get_name() == cli.get_name() { "index" } else { cmd.get_name() diff --git a/web/build.rs b/web/build.rs index 3e8de5e0..40145831 100644 --- a/web/build.rs +++ b/web/build.rs @@ -47,8 +47,8 @@ fn main() { } write!( File::create(out_dir.join("vite-asset-map.rs")).unwrap(), - "{}", - asset_map.build() + "{asset_map}", + asset_map = asset_map.build() ) .unwrap(); } From daed83d81e2204ebd4c12f410f875427c695e435 Mon Sep 17 00:00:00 2001 From: Techassi Date: Mon, 2 Jun 2025 12:50:31 +0200 Subject: [PATCH 17/63] chore: Release stackablectl 1.0.0 (#382) * chore: Release stackablectl 1.0.0 * chore: Update changelog * chore: Move link definition in changelog --- Cargo.lock | 2 +- Cargo.nix | 2 +- extra/man/stackablectl.1 | 4 ++-- rust/stackablectl/CHANGELOG.md | 4 +++- rust/stackablectl/Cargo.toml | 2 +- 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ae421883..25232f55 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3462,7 +3462,7 @@ dependencies = [ [[package]] name = "stackablectl" -version = "25.3.0" +version = "1.0.0" dependencies = [ "clap", "clap_complete", diff --git a/Cargo.nix b/Cargo.nix index 0224a012..482d524a 100644 --- a/Cargo.nix +++ b/Cargo.nix @@ -11346,7 +11346,7 @@ rec { }; "stackablectl" = rec { crateName = "stackablectl"; - version = "25.3.0"; + version = "1.0.0"; edition = "2021"; crateBin = [ { diff --git a/extra/man/stackablectl.1 b/extra/man/stackablectl.1 index d272b12c..8eb5168a 100644 --- a/extra/man/stackablectl.1 +++ b/extra/man/stackablectl.1 @@ -1,6 +1,6 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' -.TH stackablectl 1 "stackablectl 25.3.0" +.TH stackablectl 1 "stackablectl 1.0.0" .SH NAME stackablectl \- Command line tool to interact with the Stackable Data Platform .SH SYNOPSIS @@ -108,6 +108,6 @@ EXPERIMENTAL: Launch a debug container for a Pod stackablectl\-help(1) Print this message or the help of the given subcommand(s) .SH VERSION -v25.3.0 +v1.0.0 .SH AUTHORS Stackable GmbH diff --git a/rust/stackablectl/CHANGELOG.md b/rust/stackablectl/CHANGELOG.md index e039bbe7..aa4c6fce 100644 --- a/rust/stackablectl/CHANGELOG.md +++ b/rust/stackablectl/CHANGELOG.md @@ -4,6 +4,8 @@ All notable changes to this project will be documented in this file. ## [Unreleased] +## [1.0.0] - 2025-06-02 + ### Added - Pass the stack/demo namespace as a templating variable `NAMESPACE` to manifests. @@ -21,6 +23,7 @@ All notable changes to this project will be documented in this file. - Prefix `ui-http` port endpoints with `http://`, as e.g. used by hbase-operator ([#368]). +[#355]: https://github.com/stackabletech/stackable-cockpit/pull/355 [#368]: https://github.com/stackabletech/stackable-cockpit/pull/368 [#373]: https://github.com/stackabletech/stackable-cockpit/pull/373 [#376]: https://github.com/stackabletech/stackable-cockpit/pull/376 @@ -36,7 +39,6 @@ All notable changes to this project will be documented in this file. - Improve tracing and log output ([#365]). [#351]: https://github.com/stackabletech/stackable-cockpit/pull/351 -[#355]: https://github.com/stackabletech/stackable-cockpit/pull/355 [#364]: https://github.com/stackabletech/stackable-cockpit/pull/364 [#365]: https://github.com/stackabletech/stackable-cockpit/pull/365 diff --git a/rust/stackablectl/Cargo.toml b/rust/stackablectl/Cargo.toml index 6d50927f..a4137a25 100644 --- a/rust/stackablectl/Cargo.toml +++ b/rust/stackablectl/Cargo.toml @@ -2,7 +2,7 @@ name = "stackablectl" description = "Command line tool to interact with the Stackable Data Platform" # See /Cargo.toml -version = "25.3.0" +version = "1.0.0" authors.workspace = true license.workspace = true edition.workspace = true From 5c9767e99417b7cc262c45fd0102451e63a79550 Mon Sep 17 00:00:00 2001 From: Techassi Date: Mon, 2 Jun 2025 16:30:47 +0200 Subject: [PATCH 18/63] ci: Bump Ubuntu runners (#383) --- .github/workflows/pr_stackablectl.yml | 4 ++-- .github/workflows/release_stackablectl.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/pr_stackablectl.yml b/.github/workflows/pr_stackablectl.yml index 1fcd59fc..887086ae 100644 --- a/.github/workflows/pr_stackablectl.yml +++ b/.github/workflows/pr_stackablectl.yml @@ -38,9 +38,9 @@ jobs: matrix: include: - target: x86_64-unknown-linux-gnu - os: ubuntu-latest + os: ubuntu-24.04 - target: aarch64-unknown-linux-gnu - os: ubuntu-22.04-arm + os: ubuntu-24.04-arm - target: x86_64-apple-darwin os: macos-latest - target: aarch64-apple-darwin diff --git a/.github/workflows/release_stackablectl.yml b/.github/workflows/release_stackablectl.yml index 2faf67eb..136ab21c 100644 --- a/.github/workflows/release_stackablectl.yml +++ b/.github/workflows/release_stackablectl.yml @@ -24,10 +24,10 @@ jobs: matrix: include: - target: x86_64-unknown-linux-gnu - os: ubuntu-20.04 # We don't use ubuntu-latest because we want to build against an old glibc version. (18.04 has glibc 2.27, 20.04 has glibc 2.31, 22.04 has glibc 2.35) + os: ubuntu-24.04 file-suffix: "" - target: aarch64-unknown-linux-gnu - os: ubuntu-22.04-arm # 2025-01: The ARM runners only support Ubuntu 22.04 or 24.04, so we can't pick 20.04: + os: ubuntu-24.04-arm file-suffix: "" - target: x86_64-apple-darwin os: macos-latest From 5b03f544ec1b554fa1fb647bf6710e4aa9b85224 Mon Sep 17 00:00:00 2001 From: Nick <10092581+NickLarsenNZ@users.noreply.github.com> Date: Wed, 4 Jun 2025 22:22:16 +0200 Subject: [PATCH 19/63] fix(nix): Update nixpkgs and bump nodejs from 18 to 20 (#384) * fix(nix): Update nixpkgs and bump nodejs from 18 to 20 * chore: Update changelog * chore: Update changelog --- default.nix | 4 ++-- nix/sources.json | 6 +++--- rust/stackablectl/CHANGELOG.md | 6 ++++++ 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/default.nix b/default.nix index cac82bf0..17b96349 100644 --- a/default.nix +++ b/default.nix @@ -10,7 +10,7 @@ inherit nixpkgs pkgs; release = false; defaultCrateOverrides = pkgs.defaultCrateOverrides // { stackable-cockpit-web = attrs: { - nativeBuildInputs = [ pkgs.nodePackages.yarn pkgs.nodejs ]; + nativeBuildInputs = [ pkgs.nodePackages.yarn pkgs.nodejs_20 ]; preConfigure = '' [[ ! -e node_modules ]] || rm -r node_modules @@ -69,7 +69,7 @@ done ''; } -, js2nix ? pkgs.callPackage sources.js2nix { nodejs = pkgs.nodejs-18_x; } +, js2nix ? pkgs.callPackage sources.js2nix { nodejs = pkgs.nodejs_20; } , gomod2nix ? pkgs.callPackage sources.gomod2nix {} }: rec { diff --git a/nix/sources.json b/nix/sources.json index b1071336..36b4714b 100644 --- a/nix/sources.json +++ b/nix/sources.json @@ -42,10 +42,10 @@ "homepage": "", "owner": "NixOS", "repo": "nixpkgs", - "rev": "a04d33c0c3f1a59a2c1cb0c6e34cd24500e5a1dc", - "sha256": "0ha2a6j3y4dbclcw7s6p473fcrzxhn4yap4wbm8s4jg7v6wal0ph", + "rev": "5929de975bcf4c7c8d8b5ca65c8cd9ef9e44523e", + "sha256": "0ngai9c0z9ail3w2zwkriby2nckw4shmb8cln1i569a2g5ya0y84", "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/a04d33c0c3f1a59a2c1cb0c6e34cd24500e5a1dc.tar.gz", + "url": "https://github.com/NixOS/nixpkgs/archive/5929de975bcf4c7c8d8b5ca65c8cd9ef9e44523e.tar.gz", "url_template": "https://github.com///archive/.tar.gz" } } diff --git a/rust/stackablectl/CHANGELOG.md b/rust/stackablectl/CHANGELOG.md index aa4c6fce..2cdceca1 100644 --- a/rust/stackablectl/CHANGELOG.md +++ b/rust/stackablectl/CHANGELOG.md @@ -4,6 +4,12 @@ All notable changes to this project will be documented in this file. ## [Unreleased] +### Fixed + +- nix: Update nixpkgs and upgrade nodejs-18 to nodejs_20 ([#384]). + +[#384]: https://github.com/stackabletech/stackable-cockpit/pull/384 + ## [1.0.0] - 2025-06-02 ### Added From 5c1e86f832ef6491df64f7d92cb7fcf32c552210 Mon Sep 17 00:00:00 2001 From: Xenia Date: Tue, 10 Jun 2025 20:38:32 +0200 Subject: [PATCH 20/63] fix: idempotent helm installations for demos/stacks and ignoring of existing jobs (#386) * helm idempotent installs * ignore jobs on reapply, merge instead of apply for existing objects * helm installs: uninstall and install chart instead of upgrade due to helmv3 force changes * jobs: change failed job apply output * remove playaround printing * jobs: restructure code * helm installs: add comment about procedure, cleanup * jobs: add comment for immutability error handling * add changelog entry --- rust/stackable-cockpit/src/helm.rs | 116 ++++++++++++++++++ .../src/platform/manifests.rs | 2 +- .../stackable-cockpit/src/utils/k8s/client.rs | 51 ++++++-- rust/stackablectl/CHANGELOG.md | 4 + 4 files changed, 164 insertions(+), 9 deletions(-) diff --git a/rust/stackable-cockpit/src/helm.rs b/rust/stackable-cockpit/src/helm.rs index 4cca0bba..76528584 100644 --- a/rust/stackable-cockpit/src/helm.rs +++ b/rust/stackable-cockpit/src/helm.rs @@ -61,6 +61,9 @@ pub enum Error { #[snafu(display("failed to install Helm release"))] InstallRelease { source: InstallReleaseError }, + #[snafu(display("failed to upgrade/install Helm release"))] + UpgradeRelease { source: InstallReleaseError }, + #[snafu(display("failed to uninstall Helm release ({error})"))] UninstallRelease { error: String }, } @@ -248,6 +251,78 @@ pub fn install_release_from_repo_or_registry( }) } +/// Upgrades a Helm release from a repo or registry. +/// +/// This function expects the fully qualified Helm release name. In case of our +/// operators this is: `-operator`. +#[instrument(skip(values_yaml), fields(with_values = values_yaml.is_some(), indicatif.pb_show = true))] +pub fn upgrade_or_install_release_from_repo_or_registry( + release_name: &str, + ChartVersion { + chart_source, + chart_name, + chart_version, + }: ChartVersion, + values_yaml: Option<&str>, + namespace: &str, + suppress_output: bool, +) -> Result { + // Ideally, each Helm invocation would spawn_blocking instead in/around helm_sys, + // but that requires a larger refactoring + block_in_place(|| { + debug!("Install/Upgrade Helm release from repo"); + Span::current() + .pb_set_message(format!("Installing/Upgrading {chart_name} Helm chart").as_str()); + + if check_release_exists(release_name, namespace)? { + let release = get_release(release_name, namespace)?.ok_or(Error::InstallRelease { + source: InstallReleaseError::NoSuchRelease { + name: release_name.to_owned(), + }, + })?; + + let current_version = release.version; + + match chart_version { + Some(chart_version) => { + if chart_version == current_version { + return Ok(InstallReleaseStatus::ReleaseAlreadyInstalledWithVersion { + requested_version: chart_version.to_string(), + release_name: release_name.to_string(), + current_version, + }); + } + } + None => { + return Ok(InstallReleaseStatus::ReleaseAlreadyInstalledUnspecified { + release_name: release_name.to_string(), + current_version, + }); + } + } + } + + let full_chart_name = format!("{chart_source}/{chart_name}"); + let chart_version = chart_version.unwrap_or(HELM_DEFAULT_CHART_VERSION); + + debug!( + release_name, + chart_version, full_chart_name, "Installing Helm release" + ); + + upgrade_release( + release_name, + &full_chart_name, + chart_version, + values_yaml, + namespace, + suppress_output, + )?; + + Ok(InstallReleaseStatus::Installed(release_name.to_string())) + }) +} + /// Installs a Helm release. /// /// This function expects the fully qualified Helm release name. In case of our @@ -281,6 +356,47 @@ fn install_release( Ok(()) } +/// Upgrades a Helm release. +/// If a release with the specified `chart_name` does not already exist, +/// this function installs it instead. +/// +/// This function expects the fully qualified Helm release name. In case of our +/// operators this is: `-operator`. +#[instrument(fields(with_values = values_yaml.is_some()))] +fn upgrade_release( + release_name: &str, + chart_name: &str, + chart_version: &str, + values_yaml: Option<&str>, + namespace: &str, + suppress_output: bool, +) -> Result<(), Error> { + // In Helm 3 the behavior of the `--force` option has changed + // It no longer deletes and re-installs a resource https://github.com/helm/helm/issues/7082#issuecomment-559558318 + // Because of that, conflict errors might appear, which fail the upgrade, even if `helm upgrade --force` is used + // Therefore we uninstall the previous release (if present) and install the new one + uninstall_release(release_name, namespace, suppress_output)?; + + let result = helm_sys::install_helm_release( + release_name, + chart_name, + chart_version, + values_yaml.unwrap_or(""), + namespace, + suppress_output, + ); + + if let Some(error) = helm_sys::to_helm_error(&result) { + error!("Go wrapper function go_install_helm_release encountered an error: {error}"); + + return Err(Error::UpgradeRelease { + source: InstallReleaseError::HelmWrapper { error }, + }); + } + + Ok(()) +} + /// Uninstall a Helm release. /// /// This function expects the fully qualified Helm release name. In case of our diff --git a/rust/stackable-cockpit/src/platform/manifests.rs b/rust/stackable-cockpit/src/platform/manifests.rs index d9d23794..4d983317 100644 --- a/rust/stackable-cockpit/src/platform/manifests.rs +++ b/rust/stackable-cockpit/src/platform/manifests.rs @@ -116,7 +116,7 @@ pub trait InstallManifestsExt { .context(SerializeOptionsSnafu)?; // Install the Helm chart using the Helm wrapper - helm::install_release_from_repo_or_registry( + helm::upgrade_or_install_release_from_repo_or_registry( &helm_chart.release_name, helm::ChartVersion { chart_source: &helm_chart.repo.name, diff --git a/rust/stackable-cockpit/src/utils/k8s/client.rs b/rust/stackable-cockpit/src/utils/k8s/client.rs index e678b71b..c8c4863c 100644 --- a/rust/stackable-cockpit/src/utils/k8s/client.rs +++ b/rust/stackable-cockpit/src/utils/k8s/client.rs @@ -15,7 +15,7 @@ use snafu::{OptionExt, ResultExt, Snafu}; use stackable_operator::{commons::listener::Listener, kvp::Labels}; use tokio::sync::RwLock; use tracing::{Span, info, instrument}; -use tracing_indicatif::span_ext::IndicatifSpanExt as _; +use tracing_indicatif::{indicatif_eprintln, span_ext::IndicatifSpanExt as _}; #[cfg(doc)] use crate::utils::k8s::ListParamsExt; @@ -144,13 +144,48 @@ impl Client { } }; - api.patch( - &object.name_any(), - &PatchParams::apply("stackablectl"), - &Patch::Apply(object), - ) - .await - .context(KubeClientPatchSnafu)?; + if let Some(existing_object) = api + .get_opt(&object.name_any()) + .await + .context(KubeClientFetchSnafu)? + { + object.metadata.resource_version = existing_object.resource_version(); + + api + .patch( + &object.name_any(), + &PatchParams::apply("stackablectl"), + &Patch::Merge(object.clone()), + ) + .await + .or_else(|e| { + // If re-applying a Job fails due to immutability, print out the failed manifests instead of erroring out, + // so the user can decide if the existing Job needs a deletion and recreation + match (resource.kind.as_ref(), e) { + // Errors for immutability in Kubernetes do not return meaningful `code`, `status`, or `reason` to filter on + // Currently we have to check the `message` for the actual error we are looking for + ("Job", kube::Error::Api(e)) if e.message.contains("field is immutable") => { + indicatif_eprintln!( + "Deploying {kind}/{object_name} manifest failed due to immutability", + kind = resource.kind, + object_name = object.name_any().clone() + ); + Ok(object) + } + (_, e) => { + Err(e).context(KubeClientPatchSnafu) + } + } + })?; + } else { + api.patch( + &object.name_any(), + &PatchParams::apply("stackablectl"), + &Patch::Apply(object.clone()), + ) + .await + .context(KubeClientPatchSnafu)?; + } } Ok(()) diff --git a/rust/stackablectl/CHANGELOG.md b/rust/stackablectl/CHANGELOG.md index 2cdceca1..7e692e53 100644 --- a/rust/stackablectl/CHANGELOG.md +++ b/rust/stackablectl/CHANGELOG.md @@ -7,8 +7,12 @@ All notable changes to this project will be documented in this file. ### Fixed - nix: Update nixpkgs and upgrade nodejs-18 to nodejs_20 ([#384]). +- Switch to idempotent Helm installations for demos and stacks ([#386]). +- Ignore failed re-application of Jobs due to immutability in demo and stack installations. + Display those manifests to the user, so they can decide if they need to delete and recreate it ([#386]). [#384]: https://github.com/stackabletech/stackable-cockpit/pull/384 +[#386]: https://github.com/stackabletech/stackable-cockpit/pull/386 ## [1.0.0] - 2025-06-02 From e645c5c6ce42dc4eb06e0639e696cc2607011b32 Mon Sep 17 00:00:00 2001 From: Nick <10092581+NickLarsenNZ@users.noreply.github.com> Date: Fri, 13 Jun 2025 12:07:51 +0200 Subject: [PATCH 21/63] feat(nix): Default to release build (#388) * feat(nix): Default to release build * chore: Update changelog --- default.nix | 3 ++- rust/stackablectl/CHANGELOG.md | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/default.nix b/default.nix index 17b96349..e7698123 100644 --- a/default.nix +++ b/default.nix @@ -6,8 +6,9 @@ (import (sources.gomod2nix+"/overlay.nix")) ]; } +, release ? true , cargo ? import ./Cargo.nix { - inherit nixpkgs pkgs; release = false; + inherit nixpkgs pkgs release; defaultCrateOverrides = pkgs.defaultCrateOverrides // { stackable-cockpit-web = attrs: { nativeBuildInputs = [ pkgs.nodePackages.yarn pkgs.nodejs_20 ]; diff --git a/rust/stackablectl/CHANGELOG.md b/rust/stackablectl/CHANGELOG.md index 7e692e53..ac903cc4 100644 --- a/rust/stackablectl/CHANGELOG.md +++ b/rust/stackablectl/CHANGELOG.md @@ -7,12 +7,14 @@ All notable changes to this project will be documented in this file. ### Fixed - nix: Update nixpkgs and upgrade nodejs-18 to nodejs_20 ([#384]). +- nix: Default to release build ([#388]). - Switch to idempotent Helm installations for demos and stacks ([#386]). - Ignore failed re-application of Jobs due to immutability in demo and stack installations. Display those manifests to the user, so they can decide if they need to delete and recreate it ([#386]). [#384]: https://github.com/stackabletech/stackable-cockpit/pull/384 [#386]: https://github.com/stackabletech/stackable-cockpit/pull/386 +[#388]: https://github.com/stackabletech/stackable-cockpit/pull/388 ## [1.0.0] - 2025-06-02 From a32f676136fd95041eb3e8d1599e3b3f704d69e9 Mon Sep 17 00:00:00 2001 From: Lars Francke Date: Fri, 27 Jun 2025 16:41:40 +0200 Subject: [PATCH 22/63] docs: Clarify docs for operator install command (#389) --- rust/stackablectl/src/cmds/operator.rs | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/rust/stackablectl/src/cmds/operator.rs b/rust/stackablectl/src/cmds/operator.rs index cb2e903c..8d7cbb5b 100644 --- a/rust/stackablectl/src/cmds/operator.rs +++ b/rust/stackablectl/src/cmds/operator.rs @@ -86,16 +86,15 @@ pub struct OperatorDescribeArgs { pub struct OperatorInstallArgs { /// Operator(s) to install #[arg(name = "OPERATORS", required = true)] - #[arg(long_help = "Operator(s) to install + #[arg(long_help = "Operator(s) to install (space separated) -Must have the form 'name[=version]'. If no version is specified the latest -nightly version - build from the main branch - will be used. Possible valid -values are: +Each must have the form 'name[=version]'. +If no version is specified the latest nightly version - built from the main branch - will be used. +Possible valid values are: -- superset -- superset=0.3.0 -- superset=0.3.0-nightly -- superset=0.3.0-pr123 +- superset (equivalent to superset=0.0.0-dev) +- superset=25.3.0 +- superset=0.0.0-pr123 (Pull Request build) Use \"stackablectl operator list\" to list available versions for all operators Use \"stackablectl operator describe \" to get available versions for one operator")] From df90b7d6a053840ed0ec25ca7e6a6c314e9cb92c Mon Sep 17 00:00:00 2001 From: Stacky McStackface <95074132+stackable-bot@users.noreply.github.com> Date: Mon, 30 Jun 2025 08:48:02 +0200 Subject: [PATCH 23/63] chore(deps): update embarkstudios/cargo-deny-action action to v2 (#399) | datasource | package | from | to | | ----------- | ------------------------------- | ------ | ------- | | github-tags | EmbarkStudios/cargo-deny-action | v1.6.3 | v2.0.12 | --- .github/workflows/pr_general.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr_general.yml b/.github/workflows/pr_general.yml index b09e837d..9d6f4c2c 100644 --- a/.github/workflows/pr_general.yml +++ b/.github/workflows/pr_general.yml @@ -59,7 +59,7 @@ jobs: - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 with: submodules: recursive - - uses: EmbarkStudios/cargo-deny-action@3f4a782664881cf5725d0ffd23969fcce89fd868 # v1.6.3 + - uses: EmbarkStudios/cargo-deny-action@30f817c6f72275c6d54dc744fbca09ebc958599f # v2.0.12 with: command: check ${{ matrix.checks }} From a8d68c9b379656ae740baf251500b731c16e95dc Mon Sep 17 00:00:00 2001 From: Stacky McStackface <95074132+stackable-bot@users.noreply.github.com> Date: Mon, 30 Jun 2025 08:48:41 +0200 Subject: [PATCH 24/63] chore(deps): update actions/setup-node action to v4.4.0 (#398) | datasource | package | from | to | | ----------- | ------------------ | ------ | ------ | | github-tags | actions/setup-node | v4.0.2 | v4.4.0 | | github-tags | actions/setup-node | v3.6.0 | v4.4.0 | --- .github/workflows/pr_cockpit-web.yml | 6 +++--- .github/workflows/pr_general.yml | 6 +++--- .github/workflows/pr_pre-commit.yml | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/pr_cockpit-web.yml b/.github/workflows/pr_cockpit-web.yml index 4847c572..17926267 100644 --- a/.github/workflows/pr_cockpit-web.yml +++ b/.github/workflows/pr_cockpit-web.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 + - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: node-version: 18 cache: yarn @@ -26,7 +26,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 + - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: node-version: 18 cache: yarn @@ -38,7 +38,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 + - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: node-version: 18 cache: yarn diff --git a/.github/workflows/pr_general.yml b/.github/workflows/pr_general.yml index 9d6f4c2c..7a28685a 100644 --- a/.github/workflows/pr_general.yml +++ b/.github/workflows/pr_general.yml @@ -32,7 +32,7 @@ jobs: with: go-version: ${{ env.GO_VERSION }} - - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 + - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: node-version: 18 cache: yarn @@ -84,7 +84,7 @@ jobs: with: key: doc - - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 + - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: node-version: 18 cache: yarn @@ -111,7 +111,7 @@ jobs: with: key: test - - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 + - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: node-version: 18 cache: yarn diff --git a/.github/workflows/pr_pre-commit.yml b/.github/workflows/pr_pre-commit.yml index 6e3ca2fb..1e9d31cd 100644 --- a/.github/workflows/pr_pre-commit.yml +++ b/.github/workflows/pr_pre-commit.yml @@ -17,7 +17,7 @@ jobs: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 with: fetch-depth: 0 - - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 + - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: node-version: 18 cache: yarn From 9802f2c9ba67dd0a4843253d9957950aa03c0a8a Mon Sep 17 00:00:00 2001 From: Stacky McStackface <95074132+stackable-bot@users.noreply.github.com> Date: Mon, 30 Jun 2025 08:49:21 +0200 Subject: [PATCH 25/63] chore(deps): update swatinem/rust-cache action to v2.8.0 (#397) | datasource | package | from | to | | ----------- | ------------------- | ------ | ------ | | github-tags | Swatinem/rust-cache | v2.7.3 | v2.8.0 | | github-tags | Swatinem/rust-cache | v2.7.0 | v2.8.0 | --- .github/workflows/pr_cockpit.yml | 4 ++-- .github/workflows/pr_general.yml | 6 +++--- .github/workflows/pr_stackablectl.yml | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/pr_cockpit.yml b/.github/workflows/pr_cockpit.yml index 0c28a782..1e59d4bc 100644 --- a/.github/workflows/pr_cockpit.yml +++ b/.github/workflows/pr_cockpit.yml @@ -52,7 +52,7 @@ jobs: toolchain: ${{ env.RUST_VERSION }} - name: Setup Rust Cache - uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3 + uses: Swatinem/rust-cache@98c8021b550208e191a6a3145459bfc9fb29c4c0 # v2.8.0 with: key: pr-stackable-cockpit-chart @@ -112,7 +112,7 @@ jobs: uses: anchore/sbom-action/download-syft@61119d458adab75f756bc0b9e4bde25725f86a7a # v0.17.2 - name: Setup Rust Cache - uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3 + uses: Swatinem/rust-cache@98c8021b550208e191a6a3145459bfc9fb29c4c0 # v2.8.0 with: key: pr-stackable-cockpit-chart diff --git a/.github/workflows/pr_general.yml b/.github/workflows/pr_general.yml index 7a28685a..bb3388f2 100644 --- a/.github/workflows/pr_general.yml +++ b/.github/workflows/pr_general.yml @@ -38,7 +38,7 @@ jobs: cache: yarn - run: yarn install --frozen-lockfile - - uses: Swatinem/rust-cache@a95ba195448af2da9b00fb742d14ffaaf3c21f43 # v2.7.0 + - uses: Swatinem/rust-cache@98c8021b550208e191a6a3145459bfc9fb29c4c0 # v2.8.0 with: key: udeps cache-all-crates: "true" @@ -80,7 +80,7 @@ jobs: with: go-version: ${{ env.GO_VERSION }} - - uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3 + - uses: Swatinem/rust-cache@98c8021b550208e191a6a3145459bfc9fb29c4c0 # v2.8.0 with: key: doc @@ -107,7 +107,7 @@ jobs: with: go-version: ${{ env.GO_VERSION }} - - uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3 + - uses: Swatinem/rust-cache@98c8021b550208e191a6a3145459bfc9fb29c4c0 # v2.8.0 with: key: test diff --git a/.github/workflows/pr_stackablectl.yml b/.github/workflows/pr_stackablectl.yml index 887086ae..31a509a9 100644 --- a/.github/workflows/pr_stackablectl.yml +++ b/.github/workflows/pr_stackablectl.yml @@ -60,7 +60,7 @@ jobs: with: go-version: ${{ env.GO_VERSION }} - - uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3 + - uses: Swatinem/rust-cache@98c8021b550208e191a6a3145459bfc9fb29c4c0 # v2.8.0 with: key: build-stackablectl-${{ matrix.target }} From 4937f67192a7470e697238446724316061c6e971 Mon Sep 17 00:00:00 2001 From: Stacky McStackface <95074132+stackable-bot@users.noreply.github.com> Date: Mon, 30 Jun 2025 08:52:15 +0200 Subject: [PATCH 26/63] chore(deps): update softprops/action-gh-release action to v2.3.2 (#395) | datasource | package | from | to | | ----------- | --------------------------- | ------ | ------ | | github-tags | softprops/action-gh-release | v2.0.5 | v2.3.2 | --- .github/workflows/release_stackablectl.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release_stackablectl.yml b/.github/workflows/release_stackablectl.yml index 136ab21c..beeeee4f 100644 --- a/.github/workflows/release_stackablectl.yml +++ b/.github/workflows/release_stackablectl.yml @@ -58,6 +58,6 @@ jobs: run: mv target/${{ matrix.target }}/release/stackablectl${{ matrix.file-suffix }} stackablectl-${{ matrix.target }}${{ matrix.file-suffix }} - name: Upload Release Binary - uses: softprops/action-gh-release@69320dbe05506a9a39fc8ae11030b214ec2d1f87 # v2.0.5 + uses: softprops/action-gh-release@72f2c25fcb47643c292f7107632f7a47c1df5cd8 # v2.3.2 with: files: stackablectl-${{ matrix.target }}${{ matrix.file-suffix }} From 0d987407d599a29d5e3a5e17fe8fa825debf7fe7 Mon Sep 17 00:00:00 2001 From: Stacky McStackface <95074132+stackable-bot@users.noreply.github.com> Date: Mon, 30 Jun 2025 08:52:43 +0200 Subject: [PATCH 27/63] chore(deps): update sigstore/cosign-installer action to v3.9.1 (#394) | datasource | package | from | to | | ----------- | ------------------------- | ------ | ------ | | github-tags | sigstore/cosign-installer | v3.6.0 | v3.9.1 | --- .github/workflows/pr_cockpit.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pr_cockpit.yml b/.github/workflows/pr_cockpit.yml index 1e59d4bc..1f911e16 100644 --- a/.github/workflows/pr_cockpit.yml +++ b/.github/workflows/pr_cockpit.yml @@ -106,7 +106,7 @@ jobs: go-version: ${{ env.GO_VERSION }} - name: Install cosign - uses: sigstore/cosign-installer@4959ce089c160fddf62f7b42464195ba1a56d382 # v3.6.0 + uses: sigstore/cosign-installer@398d4b0eeef1380460a10c8013a76f728fb906ac # v3.9.1 - name: Install syft uses: anchore/sbom-action/download-syft@61119d458adab75f756bc0b9e4bde25725f86a7a # v0.17.2 @@ -149,7 +149,7 @@ jobs: OCI_REGISTRY_SDP_CHARTS_USERNAME: "robot$sdp-charts+github-action-build" steps: - name: Install cosign - uses: sigstore/cosign-installer@4959ce089c160fddf62f7b42464195ba1a56d382 # v3.6.0 + uses: sigstore/cosign-installer@398d4b0eeef1380460a10c8013a76f728fb906ac # v3.9.1 - name: Checkout uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 with: From b586eb92a38d8e4ad1b3053f5be3804bc6a48550 Mon Sep 17 00:00:00 2001 From: Stacky McStackface <95074132+stackable-bot@users.noreply.github.com> Date: Mon, 30 Jun 2025 08:53:55 +0200 Subject: [PATCH 28/63] chore(deps): update anchore/sbom-action action to v0.20.1 (#393) | datasource | package | from | to | | ----------- | ------------------- | ------- | ------- | | github-tags | anchore/sbom-action | v0.17.2 | v0.20.1 | --- .github/workflows/pr_cockpit.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr_cockpit.yml b/.github/workflows/pr_cockpit.yml index 1f911e16..b61cfcce 100644 --- a/.github/workflows/pr_cockpit.yml +++ b/.github/workflows/pr_cockpit.yml @@ -109,7 +109,7 @@ jobs: uses: sigstore/cosign-installer@398d4b0eeef1380460a10c8013a76f728fb906ac # v3.9.1 - name: Install syft - uses: anchore/sbom-action/download-syft@61119d458adab75f756bc0b9e4bde25725f86a7a # v0.17.2 + uses: anchore/sbom-action/download-syft@9246b90769f852b3a8921f330c59e0b3f439d6e9 # v0.20.1 - name: Setup Rust Cache uses: Swatinem/rust-cache@98c8021b550208e191a6a3145459bfc9fb29c4c0 # v2.8.0 From 974f76738a15ee4020acc9010b098c4b4a74e561 Mon Sep 17 00:00:00 2001 From: Stacky McStackface <95074132+stackable-bot@users.noreply.github.com> Date: Mon, 30 Jun 2025 09:08:48 +0200 Subject: [PATCH 29/63] chore(deps): update actions/setup-go action to v5.5.0 (#391) | datasource | package | from | to | | ----------- | ---------------- | ------ | ------ | | github-tags | actions/setup-go | v5.0.2 | v5.5.0 | --- .github/workflows/pr_cockpit.yml | 2 +- .github/workflows/pr_general.yml | 6 +++--- .github/workflows/pr_stackablectl.yml | 2 +- .github/workflows/release_stackablectl.yml | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/pr_cockpit.yml b/.github/workflows/pr_cockpit.yml index b61cfcce..529458b1 100644 --- a/.github/workflows/pr_cockpit.yml +++ b/.github/workflows/pr_cockpit.yml @@ -101,7 +101,7 @@ jobs: with: toolchain: ${{ env.RUST_VERSION }} - - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 + - uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0 with: go-version: ${{ env.GO_VERSION }} diff --git a/.github/workflows/pr_general.yml b/.github/workflows/pr_general.yml index bb3388f2..10bf9ee9 100644 --- a/.github/workflows/pr_general.yml +++ b/.github/workflows/pr_general.yml @@ -28,7 +28,7 @@ jobs: with: toolchain: ${{ env.RUST_VERSION }} - - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 + - uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0 with: go-version: ${{ env.GO_VERSION }} @@ -76,7 +76,7 @@ jobs: toolchain: ${{ env.RUST_VERSION }} components: rustfmt - - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 + - uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0 with: go-version: ${{ env.GO_VERSION }} @@ -103,7 +103,7 @@ jobs: with: toolchain: ${{ env.RUST_VERSION }} - - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 + - uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0 with: go-version: ${{ env.GO_VERSION }} diff --git a/.github/workflows/pr_stackablectl.yml b/.github/workflows/pr_stackablectl.yml index 31a509a9..d48bc2ad 100644 --- a/.github/workflows/pr_stackablectl.yml +++ b/.github/workflows/pr_stackablectl.yml @@ -56,7 +56,7 @@ jobs: toolchain: ${{ env.RUST_VERSION }} targets: ${{ matrix.target }} - - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 + - uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0 with: go-version: ${{ env.GO_VERSION }} diff --git a/.github/workflows/release_stackablectl.yml b/.github/workflows/release_stackablectl.yml index beeeee4f..bdbd9695 100644 --- a/.github/workflows/release_stackablectl.yml +++ b/.github/workflows/release_stackablectl.yml @@ -46,7 +46,7 @@ jobs: toolchain: ${{ env.RUST_VERSION }} targets: ${{ matrix.target }} - - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 + - uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0 with: go-version: '^1.22.2' From 4510cb1c58f248255883232dda2de7eb6c906b05 Mon Sep 17 00:00:00 2001 From: Siegfried Weber Date: Wed, 16 Jul 2025 12:26:12 +0200 Subject: [PATCH 30/63] feat: Add the product "opensearch" (#400) * feat: Add the product "opensearch" * chore: Fix Rustdoc warning * chore: Fix cargo deny warnings * chore: Fix clippy warnings * chore: Format source code * chore: Update the Rust toolchain in the pre-commit action * chore: Update Rust toolchain * chore: Regenerate man page * chore: Regenerate completions * chore: Regenerate stackablectl README * chore: Regenerate docs * chore: Regenerate Cargo.nix * chore: Update Rust version in all GitHub actions * chore: Update the Rust version for cargo-rustfmt in the pre-commit action * chore: Box error sources implicitly --- .github/workflows/pr_cockpit.yml | 2 +- .github/workflows/pr_general.yml | 2 +- .github/workflows/pr_pre-commit.yml | 2 +- .github/workflows/pr_stackablectl.yml | 2 +- .github/workflows/release_stackablectl.yml | 2 +- .pre-commit-config.yaml | 2 +- Cargo.lock | 1831 ++++--- Cargo.nix | 4401 +++++++++++------ Cargo.toml | 2 +- deny.toml | 17 +- .../stackable-cockpit/templates/roles.yaml | 1 + .../stackablectl/partials/commands/cache.adoc | 8 +- .../partials/commands/completions.adoc | 8 +- .../stackablectl/partials/commands/demo.adoc | 8 +- .../partials/commands/experimental-debug.adoc | 8 +- .../stackablectl/partials/commands/index.adoc | 8 +- .../partials/commands/operator.adoc | 8 +- .../partials/commands/release.adoc | 8 +- .../stackablectl/partials/commands/stack.adoc | 8 +- .../partials/commands/stacklet.adoc | 8 +- extra/completions/_stackablectl | 298 +- extra/completions/stackablectl.bash | 10 +- extra/completions/stackablectl.fish | 164 +- extra/completions/stackablectl.nu | 204 +- extra/man/stackablectl.1 | 14 +- rust-toolchain.toml | 3 +- rust/stackable-cockpit/src/constants.rs | 69 +- rust/stackable-cockpit/src/engine/kind/mod.rs | 9 +- rust/stackable-cockpit/src/oci.rs | 9 +- .../src/platform/credentials.rs | 5 +- .../src/platform/namespace.rs | 8 +- .../src/platform/operator/mod.rs | 8 +- .../src/platform/release/spec.rs | 5 +- .../stackable-cockpit/src/platform/service.rs | 5 +- .../src/platform/stacklet/mod.rs | 81 +- .../stackable-cockpit/src/utils/k8s/client.rs | 15 +- rust/stackable-cockpit/src/utils/mod.rs | 1 - rust/stackable-cockpit/src/utils/params.rs | 55 +- rust/stackable-cockpit/src/utils/string.rs | 16 - rust/stackable-cockpitd/src/handlers/ui.rs | 13 +- rust/stackablectl/CHANGELOG.md | 5 + rust/stackablectl/README.md | 8 +- rust/stackablectl/src/cli/mod.rs | 14 +- rust/stackablectl/src/cmds/debug.rs | 18 +- rust/stackablectl/src/cmds/demo.rs | 9 +- rust/stackablectl/src/cmds/operator.rs | 5 +- rust/stackablectl/src/cmds/stack.rs | 17 +- rust/xtask/src/openapi.rs | 9 +- 48 files changed, 4604 insertions(+), 2809 deletions(-) delete mode 100644 rust/stackable-cockpit/src/utils/string.rs diff --git a/.github/workflows/pr_cockpit.yml b/.github/workflows/pr_cockpit.yml index 529458b1..d4a4eb7b 100644 --- a/.github/workflows/pr_cockpit.yml +++ b/.github/workflows/pr_cockpit.yml @@ -15,7 +15,7 @@ on: - "go.sum" env: - RUST_VERSION: 1.85.0 + RUST_VERSION: 1.87.0 GO_VERSION: '^1.22.5' CARGO_TERM_COLOR: always CARGO_INCREMENTAL: "0" diff --git a/.github/workflows/pr_general.yml b/.github/workflows/pr_general.yml index 10bf9ee9..900bf85e 100644 --- a/.github/workflows/pr_general.yml +++ b/.github/workflows/pr_general.yml @@ -4,7 +4,7 @@ name: Pull Request General on: workflow_call env: - RUST_VERSION: 1.85.0 + RUST_VERSION: 1.87.0 GO_VERSION: '^1.22.5' CARGO_TERM_COLOR: always CARGO_INCREMENTAL: "0" diff --git a/.github/workflows/pr_pre-commit.yml b/.github/workflows/pr_pre-commit.yml index 1e9d31cd..abbe3384 100644 --- a/.github/workflows/pr_pre-commit.yml +++ b/.github/workflows/pr_pre-commit.yml @@ -6,7 +6,7 @@ on: env: CARGO_TERM_COLOR: always - RUST_TOOLCHAIN_VERSION: "nightly-2025-01-15" + RUST_TOOLCHAIN_VERSION: "nightly-2025-05-26" HADOLINT_VERSION: "v1.17.6" NIX_VERSION: "2.25.2" diff --git a/.github/workflows/pr_stackablectl.yml b/.github/workflows/pr_stackablectl.yml index d48bc2ad..b63026c5 100644 --- a/.github/workflows/pr_stackablectl.yml +++ b/.github/workflows/pr_stackablectl.yml @@ -14,7 +14,7 @@ on: - "extra/**" env: - RUST_VERSION: 1.85.0 + RUST_VERSION: 1.87.0 GO_VERSION: '^1.22.5' CARGO_TERM_COLOR: always CARGO_INCREMENTAL: "0" diff --git a/.github/workflows/release_stackablectl.yml b/.github/workflows/release_stackablectl.yml index bdbd9695..0f19fc9e 100644 --- a/.github/workflows/release_stackablectl.yml +++ b/.github/workflows/release_stackablectl.yml @@ -7,7 +7,7 @@ on: - "stackablectl-[0-9]+.[0-9]+.[0-9]+**" env: - RUST_VERSION: 1.85.0 + RUST_VERSION: 1.87.0 CARGO_TERM_COLOR: always CARGO_INCREMENTAL: "0" CARGO_PROFILE_DEV_DEBUG: "0" diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 5342909d..5e878ffb 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -104,6 +104,6 @@ repos: name: cargo-rustfmt language: system # Pinning to a specific rustc version, so that we get consistent formatting - entry: cargo +nightly-2025-01-15 fmt --all -- --check + entry: cargo +nightly-2025-05-26 fmt --all -- --check stages: [pre-commit] pass_filenames: false diff --git a/Cargo.lock b/Cargo.lock index 25232f55..75522ae4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,36 +4,30 @@ version = 4 [[package]] name = "addr2line" -version = "0.22.0" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ "gimli", ] -[[package]] -name = "adler" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" - [[package]] name = "adler2" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "ahash" -version = "0.8.11" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [ "cfg-if", - "getrandom 0.2.15", + "getrandom 0.3.3", "once_cell", "version_check", - "zerocopy 0.7.35", + "zerocopy", ] [[package]] @@ -47,9 +41,9 @@ dependencies = [ [[package]] name = "allocator-api2" -version = "0.2.18" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "android-tzdata" @@ -68,28 +62,28 @@ dependencies = [ [[package]] name = "ansi-str" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cf4578926a981ab0ca955dc023541d19de37112bc24c1a197bd806d3d86ad1d" +checksum = "060de1453b69f46304b28274f382132f4e72c55637cf362920926a70d090890d" dependencies = [ "ansitok", ] [[package]] name = "ansitok" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "220044e6a1bb31ddee4e3db724d29767f352de47445a6cd75e1a173142136c83" +checksum = "c0a8acea8c2f1c60f0a92a8cd26bf96ca97db56f10bbcab238bbe0cceba659ee" dependencies = [ "nom", - "vte 0.10.1", + "vte 0.14.1", ] [[package]] name = "anstream" -version = "0.6.15" +version = "0.6.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" +checksum = "301af1932e46185686725e0fad2f8f2aa7da69dd70bf6ecc44d6b703844a3933" dependencies = [ "anstyle", "anstyle-parse", @@ -102,59 +96,54 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.8" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" +checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" [[package]] name = "anstyle-parse" -version = "0.2.5" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.1" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" +checksum = "6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.4" +version = "3.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" +checksum = "403f75924867bb1033c59fbf0797484329750cfbe3c4325cd33127941fabc882" dependencies = [ "anstyle", - "windows-sys 0.52.0", + "once_cell_polyfill", + "windows-sys 0.59.0", ] [[package]] name = "anyhow" -version = "1.0.97" +version = "1.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f" +checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" [[package]] name = "arbitrary" -version = "1.3.2" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" +checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" dependencies = [ "derive_arbitrary", ] -[[package]] -name = "arrayvec" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" - [[package]] name = "arrayvec" version = "0.7.6" @@ -163,9 +152,9 @@ checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "async-broadcast" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20cd0e2e25ea8e5f7e9df04578dc6cf5c83577fd09b1a46aaf5c85e1c33f2a7e" +checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" dependencies = [ "event-listener", "event-listener-strategy", @@ -179,15 +168,15 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8da2537846e16b96d2972ee52a3b355663872a1a687ce6d57a3b6f6b6a181c89" dependencies = [ - "thiserror 1.0.63", + "thiserror 1.0.69", "tokio", ] [[package]] name = "async-stream" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" dependencies = [ "async-stream-impl", "futures-core", @@ -196,24 +185,24 @@ dependencies = [ [[package]] name = "async-stream-impl" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] name = "async-trait" -version = "0.1.82" +version = "0.1.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1" +checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] @@ -224,18 +213,18 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "autocfg" -version = "1.3.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "axum" -version = "0.7.5" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a6c9af12842a67734c9a2e355436e5d03b22383ed60cf13cd0c18fbfe3dcbcf" +checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" dependencies = [ "async-trait", - "axum-core 0.4.3", + "axum-core 0.4.5", "bytes", "futures-util", "http", @@ -254,9 +243,9 @@ dependencies = [ "serde_json", "serde_path_to_error", "serde_urlencoded", - "sync_wrapper 1.0.1", + "sync_wrapper", "tokio", - "tower 0.4.13", + "tower 0.5.2", "tower-layer", "tower-service", "tracing", @@ -264,9 +253,9 @@ dependencies = [ [[package]] name = "axum" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de45108900e1f9b9242f7f2e254aa3e2c029c921c258fe9e6b4217eeebd54288" +checksum = "021e862c184ae977658b36c4500f7feac3221ca5da43e3f25bd04ab6c79a29b5" dependencies = [ "axum-core 0.5.2", "bytes", @@ -288,7 +277,7 @@ dependencies = [ "serde_json", "serde_path_to_error", "serde_urlencoded", - "sync_wrapper 1.0.1", + "sync_wrapper", "tokio", "tower 0.5.2", "tower-layer", @@ -298,9 +287,9 @@ dependencies = [ [[package]] name = "axum-core" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a15c63fd72d41492dc4f497196f5da1fb04fb7529e631d73630d1b491e47a2e3" +checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" dependencies = [ "async-trait", "bytes", @@ -311,7 +300,7 @@ dependencies = [ "mime", "pin-project-lite", "rustversion", - "sync_wrapper 0.1.2", + "sync_wrapper", "tower-layer", "tower-service", "tracing", @@ -331,7 +320,7 @@ dependencies = [ "mime", "pin-project-lite", "rustversion", - "sync_wrapper 1.0.1", + "sync_wrapper", "tower-layer", "tower-service", "tracing", @@ -339,32 +328,33 @@ dependencies = [ [[package]] name = "axum-extra" -version = "0.9.3" +version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0be6ea09c9b96cb5076af0de2e383bd2bc0c18f827cf1967bdd353e0b910d733" +checksum = "c794b30c904f0a1c2fb7740f7df7f7972dfaa14ef6f57cb6178dc63e5dca2f04" dependencies = [ - "axum 0.7.5", - "axum-core 0.4.3", + "axum 0.7.9", + "axum-core 0.4.5", "bytes", + "fastrand", "futures-util", "headers", "http", "http-body", "http-body-util", "mime", + "multer", "pin-project-lite", "serde", - "tower 0.4.13", + "tower 0.5.2", "tower-layer", "tower-service", - "tracing", ] [[package]] name = "backon" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd0b50b1b78dbadd44ab18b3c794e496f3a139abb9fbc27d9c94c4eebbb96496" +checksum = "302eaff5357a264a2c42f127ecb8bac761cf99749fc3dc95677e2743991f99e7" dependencies = [ "fastrand", "gloo-timers", @@ -373,25 +363,19 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.73" +version = "0.3.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" dependencies = [ "addr2line", - "cc", "cfg-if", "libc", - "miniz_oxide 0.7.4", + "miniz_oxide", "object", "rustc-demangle", + "windows-targets 0.52.6", ] -[[package]] -name = "base64" -version = "0.21.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" - [[package]] name = "base64" version = "0.22.1" @@ -404,9 +388,9 @@ version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e65938ed058ef47d92cf8b346cc76ef48984572ade631927e9937b5ffc7662c7" dependencies = [ - "base64 0.22.1", + "base64", "blowfish", - "getrandom 0.2.15", + "getrandom 0.2.16", "subtle", "zeroize", ] @@ -417,7 +401,7 @@ version = "0.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" dependencies = [ - "bitflags 2.6.0", + "bitflags", "cexpr", "clang-sys", "itertools 0.13.0", @@ -428,7 +412,7 @@ dependencies = [ "regex", "rustc-hash 1.1.0", "shlex", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] @@ -448,15 +432,9 @@ checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" [[package]] name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitflags" -version = "2.6.0" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" [[package]] name = "block-buffer" @@ -479,9 +457,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.10.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" +checksum = "234113d19d0d7d613b40e86fb654acf958910802bcceab913a4f9e7cda03b1a4" dependencies = [ "memchr", "serde", @@ -489,9 +467,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.16.0" +version = "3.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" [[package]] name = "byteorder" @@ -507,9 +485,9 @@ checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" [[package]] name = "cc" -version = "1.1.15" +version = "1.2.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57b6a275aa2903740dc87da01c62040406b8812552e97129a63ea8850a17c6e6" +checksum = "5c1599538de2394445747c8cf7935946e3cc27e9625f889d979bfb2aaf569362" dependencies = [ "shlex", ] @@ -525,21 +503,27 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.0" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chrono" -version = "0.4.38" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" dependencies = [ "android-tzdata", "iana-time-zone", "num-traits", "serde", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -587,9 +571,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.35" +version = "4.5.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8aa86934b44c19c50f87cc2790e19f54f7a67aedb64101c2e1a2e5ecfb73944" +checksum = "be92d32e80243a54711e5d7ce823c35c41c9d929dc4ab58e1276f625841aadf9" dependencies = [ "clap_builder", "clap_derive", @@ -597,9 +581,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.35" +version = "4.5.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2414dbb2dd0695280da6ea9261e327479e9d37b0630f6b53ba2a11c60c679fd9" +checksum = "707eab41e9622f9139419d573eca0900137718000c517d47da73045f54331c3d" dependencies = [ "anstream", "anstyle", @@ -609,18 +593,18 @@ dependencies = [ [[package]] name = "clap_complete" -version = "4.5.24" +version = "4.5.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d7db6eca8c205649e8d3ccd05aa5042b1800a784e56bc7c43524fde8abbfa9b" +checksum = "a5abde44486daf70c5be8b8f8f1b66c49f86236edf6fa2abadb4d961c4c6229a" dependencies = [ "clap", ] [[package]] name = "clap_complete_nushell" -version = "4.5.4" +version = "4.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "315902e790cc6e5ddd20cbd313c1d0d49db77f191e149f96397230fb82a17677" +checksum = "0a0c951694691e65bf9d421d597d68416c22de9632e884c28412cb8cd8b73dce" dependencies = [ "clap", "clap_complete", @@ -628,27 +612,27 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.32" +version = "4.5.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7" +checksum = "ef4f52386a59ca4c860f7393bcf8abd8dfd91ecccc0f774635ff68e92eeef491" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] name = "clap_lex" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" +checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" [[package]] name = "clap_mangen" -version = "0.2.23" +version = "0.2.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f17415fd4dfbea46e3274fcd8d368284519b358654772afb700dc2e8d2b24eeb" +checksum = "e2fb6d3f935bbb9819391528b0e7cf655e78a0bc7a7c3d227211a1d24fc11db1" dependencies = [ "clap", "roff", @@ -656,22 +640,21 @@ dependencies = [ [[package]] name = "colorchoice" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" [[package]] name = "comfy-table" -version = "7.1.1" +version = "7.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b34115915337defe99b2aff5c2ce6771e5fbc4079f4b506301f5cf394c8452f7" +checksum = "4a65ebfec4fb190b6f90e944a817d60499ee0744e582530e2c9900a22e591d9a" dependencies = [ "ansi-str", - "console", + "console 0.15.11", "crossterm", - "strum 0.26.3", - "strum_macros 0.26.4", - "unicode-width 0.1.13", + "unicode-segmentation", + "unicode-width 0.2.1", ] [[package]] @@ -685,15 +668,28 @@ dependencies = [ [[package]] name = "console" -version = "0.15.8" +version = "0.15.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" +checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" dependencies = [ "encode_unicode", - "lazy_static", "libc", - "unicode-width 0.1.13", - "windows-sys 0.52.0", + "once_cell", + "unicode-width 0.2.1", + "windows-sys 0.59.0", +] + +[[package]] +name = "console" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e09ced7ebbccb63b4c65413d821f2e00ce54c5ca4514ddc6b3c892fdbcbc69d" +dependencies = [ + "encode_unicode", + "libc", + "once_cell", + "unicode-width 0.2.1", + "windows-sys 0.60.2", ] [[package]] @@ -735,6 +731,16 @@ dependencies = [ "libc", ] +[[package]] +name = "core-foundation" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "core-foundation-sys" version = "0.8.7" @@ -743,36 +749,36 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.13" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51e852e6dc9a5bed1fae92dd2375037bf2b768725bf3be87811edee3249d09ad" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ "libc", ] [[package]] name = "crc32fast" -version = "1.4.2" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" dependencies = [ "cfg-if", ] [[package]] name = "crossbeam-channel" -version = "0.5.13" +version = "0.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-deque" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" dependencies = [ "crossbeam-epoch", "crossbeam-utils", @@ -789,20 +795,20 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.20" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crossterm" -version = "0.27.0" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df" +checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" dependencies = [ - "bitflags 2.6.0", + "bitflags", "crossterm_winapi", - "libc", "parking_lot", + "rustix", "winapi", ] @@ -827,9 +833,9 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.10" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" dependencies = [ "darling_core", "darling_macro", @@ -837,71 +843,71 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.10" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", "strsim", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] name = "darling_macro" -version = "0.20.10" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core", "quote", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] name = "data-encoding" -version = "2.6.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" +checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" [[package]] name = "delegate" -version = "0.13.3" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9b6483c2bbed26f97861cf57651d4f2b731964a28cd2257f934a4b452480d21" +checksum = "6178a82cf56c836a3ba61a7935cdb1c49bfaa6fa4327cd5bf554a503087de26b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] name = "deranged" -version = "0.3.11" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" dependencies = [ "powerfmt", ] [[package]] name = "derive_arbitrary" -version = "1.3.2" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" +checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] name = "deunicode" -version = "1.6.0" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "339544cc9e2c4dc3fc7149fd630c5f22263a4fdf18a98afd0075784968b5cf00" +checksum = "abd57806937c9cc163efc8ea3910e00a62e2aeb0b8119f1793a978088f8f6b04" [[package]] name = "digest" @@ -942,7 +948,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] @@ -973,9 +979,9 @@ checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" [[package]] name = "dyn-clone" -version = "1.0.17" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" +checksum = "1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005" [[package]] name = "educe" @@ -986,26 +992,26 @@ dependencies = [ "enum-ordinalize", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] name = "either" -version = "1.13.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "encode_unicode" -version = "0.3.6" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" [[package]] name = "encoding_rs" -version = "0.8.34" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ "cfg-if", ] @@ -1016,7 +1022,7 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06c36cb11dbde389f4096111698d8b567c0720e3452fd5ac3e6b4e47e1939932" dependencies = [ - "thiserror 1.0.63", + "thiserror 1.0.69", ] [[package]] @@ -1036,30 +1042,30 @@ checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] name = "equivalent" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.9" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.60.2", ] [[package]] name = "event-listener" -version = "5.3.1" +version = "5.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" +checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" dependencies = [ "concurrent-queue", "parking", @@ -1068,9 +1074,9 @@ dependencies = [ [[package]] name = "event-listener-strategy" -version = "0.5.2" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" +checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" dependencies = [ "event-listener", "pin-project-lite", @@ -1083,8 +1089,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "531e46835a22af56d1e3b66f04844bed63158bc094a628bec1d321d9b4c44bf2" dependencies = [ "bit-set", - "regex-automata 0.4.7", - "regex-syntax 0.8.4", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", ] [[package]] @@ -1095,12 +1101,12 @@ checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "flate2" -version = "1.0.33" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253" +checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" dependencies = [ "crc32fast", - "miniz_oxide 0.8.0", + "miniz_oxide", ] [[package]] @@ -1126,9 +1132,9 @@ dependencies = [ [[package]] name = "futures" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" dependencies = [ "futures-channel", "futures-core", @@ -1141,9 +1147,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", "futures-sink", @@ -1151,15 +1157,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-executor" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" dependencies = [ "futures-core", "futures-task", @@ -1168,32 +1174,32 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-macro" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] name = "futures-sink" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] name = "futures-task" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] name = "futures-timer" @@ -1203,9 +1209,9 @@ checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" [[package]] name = "futures-util" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-channel", "futures-core", @@ -1231,50 +1237,54 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", + "js-sys", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi 0.11.1+wasi-snapshot-preview1", + "wasm-bindgen", ] [[package]] name = "getrandom" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ "cfg-if", + "js-sys", "libc", "r-efi", "wasi 0.14.2+wasi-0.2.4", + "wasm-bindgen", ] [[package]] name = "gimli" -version = "0.29.0" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "glob" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" [[package]] name = "globset" -version = "0.4.14" +version = "0.4.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1" +checksum = "54a1028dfc5f5df5da8a56a73e6c153c9a9708ec57232470703592a3f18e49f5" dependencies = [ "aho-corasick", "bstr", "log", - "regex-automata 0.4.7", - "regex-syntax 0.8.4", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", ] [[package]] @@ -1283,7 +1293,7 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0bf760ebf69878d9fd8f110c89703d90ce35095324d1f1edcb595c63945ee757" dependencies = [ - "bitflags 2.6.0", + "bitflags", "ignore", "walkdir", ] @@ -1302,9 +1312,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.6" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" +checksum = "17da50a276f1e01e0ba6c029e47b7100754904ee8a278f886546e98575380785" dependencies = [ "atomic-waker", "bytes", @@ -1312,7 +1322,7 @@ dependencies = [ "futures-core", "futures-sink", "http", - "indexmap 2.5.0", + "indexmap 2.10.0", "slab", "tokio", "tokio-util", @@ -1327,15 +1337,9 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hashbrown" -version = "0.14.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" - -[[package]] -name = "hashbrown" -version = "0.15.2" +version = "0.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" dependencies = [ "allocator-api2", "equivalent", @@ -1344,11 +1348,11 @@ dependencies = [ [[package]] name = "headers" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "322106e6bd0cba2d5ead589ddb8150a13d7c4217cf80d7c4f682ca994ccc6aa9" +checksum = "b3314d5adb5d94bcdf56771f2e50dbbc80bb4bdf88967526706205ac9eff24eb" dependencies = [ - "base64 0.21.7", + "base64", "bytes", "headers-core", "http", @@ -1378,22 +1382,16 @@ version = "0.0.0-dev" dependencies = [ "bindgen", "cc", - "snafu 0.8.4", + "snafu 0.8.6", ] -[[package]] -name = "hermit-abi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" - [[package]] name = "home" -version = "0.5.9" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -1409,9 +1407,9 @@ dependencies = [ [[package]] name = "http" -version = "1.1.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" dependencies = [ "bytes", "fnv", @@ -1430,12 +1428,12 @@ dependencies = [ [[package]] name = "http-body-util" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ "bytes", - "futures-util", + "futures-core", "http", "http-body", "pin-project-lite", @@ -1443,9 +1441,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.9.4" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] name = "httpdate" @@ -1485,9 +1483,9 @@ dependencies = [ [[package]] name = "hyper-http-proxy" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d06dbdfbacf34d996c6fb540a71a684a7aae9056c71951163af8a8a4c07b9a4" +checksum = "7ad4b0a1e37510028bc4ba81d0e38d239c39671b0f0ce9e02dfa93a8133f7c08" dependencies = [ "bytes", "futures-util", @@ -1497,7 +1495,7 @@ dependencies = [ "hyper-rustls", "hyper-util", "pin-project-lite", - "rustls-native-certs", + "rustls-native-certs 0.7.3", "tokio", "tokio-rustls", "tower-service", @@ -1505,17 +1503,16 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.2" +version = "0.27.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" dependencies = [ - "futures-util", "http", "hyper", "hyper-util", "log", "rustls", - "rustls-native-certs", + "rustls-native-certs 0.8.1", "rustls-pki-types", "tokio", "tokio-rustls", @@ -1533,16 +1530,16 @@ dependencies = [ "http", "hyper", "hyper-util", - "thiserror 1.0.63", + "thiserror 1.0.69", "tokio", "tower-service", ] [[package]] name = "hyper-timeout" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3203a961e5c83b6f5498933e78b6b263e208c197b63e9c6c53cc82ffd3f63793" +checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" dependencies = [ "hyper", "hyper-util", @@ -1553,17 +1550,21 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.11" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497bbc33a26fdd4af9ed9c70d63f61cf56a938375fbb32df34db9b1cd6d643f2" +checksum = "7f66d5bd4c6f02bf0542fad85d626775bab9258cf795a4256dcaf3161114d1df" dependencies = [ + "base64", "bytes", "futures-channel", + "futures-core", "futures-util", "http", "http-body", "hyper", + "ipnet", "libc", + "percent-encoding", "pin-project-lite", "socket2", "tokio", @@ -1573,14 +1574,15 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.60" +version = "0.1.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", + "log", "wasm-bindgen", "windows-core", ] @@ -1594,6 +1596,92 @@ dependencies = [ "cc", ] +[[package]] +name = "icu_collections" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" + +[[package]] +name = "icu_properties" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "potential_utf", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" + +[[package]] +name = "icu_provider" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" +dependencies = [ + "displaydoc", + "icu_locale_core", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -1602,25 +1690,36 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.5.0" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "icu_normalizer", + "icu_properties", ] [[package]] name = "ignore" -version = "0.4.22" +version = "0.4.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b46810df39e66e925525d6e38ce1e7f6e1d208f72dc39757880fcb66e2c58af1" +checksum = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b" dependencies = [ "crossbeam-deque", "globset", "log", "memchr", - "regex-automata 0.4.7", + "regex-automata 0.4.9", "same-file", "walkdir", "winapi-util", @@ -1638,43 +1737,64 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.5.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" +checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661" dependencies = [ "equivalent", - "hashbrown 0.14.5", + "hashbrown 0.15.4", "serde", ] [[package]] name = "indicatif" -version = "0.17.11" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" +checksum = "70a646d946d06bedbbc4cac4c218acf4bbf2d87757a784857025f4d447e4e1cd" dependencies = [ - "console", - "number_prefix", + "console 0.16.0", "portable-atomic", - "unicode-width 0.2.0", + "unicode-width 0.2.1", + "unit-prefix", "vt100", "web-time", ] [[package]] name = "inout" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" dependencies = [ "generic-array", ] +[[package]] +name = "io-uring" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b86e202f00093dcba4275d4636b93ef9dd75d025ae560d2521b45ea28ab49013" +dependencies = [ + "bitflags", + "cfg-if", + "libc", +] + [[package]] name = "ipnet" -version = "2.9.0" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "iri-string" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" +checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +dependencies = [ + "memchr", + "serde", +] [[package]] name = "is_terminal_polyfill" @@ -1702,9 +1822,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "java-properties" @@ -1719,10 +1839,11 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.70" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" dependencies = [ + "once_cell", "wasm-bindgen", ] @@ -1735,7 +1856,7 @@ dependencies = [ "jsonptr", "serde", "serde_json", - "thiserror 1.0.63", + "thiserror 1.0.69", ] [[package]] @@ -1767,7 +1888,7 @@ version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c75b990324f09bef15e791606b7b7a296d02fc88a344f6eba9390970a870ad5" dependencies = [ - "base64 0.22.1", + "base64", "chrono", "schemars", "serde", @@ -1782,7 +1903,7 @@ source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-ope dependencies = [ "darling", "regex", - "snafu 0.8.4", + "snafu 0.8.6", ] [[package]] @@ -1804,7 +1925,7 @@ version = "0.99.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7fc2ed952042df20d15ac2fe9614d0ec14b6118eab89633985d4b36e688dccf1" dependencies = [ - "base64 0.22.1", + "base64", "bytes", "chrono", "either", @@ -1833,7 +1954,7 @@ dependencies = [ "tokio-tungstenite", "tokio-util", "tower 0.5.2", - "tower-http 0.6.2", + "tower-http 0.6.6", "tracing", ] @@ -1866,7 +1987,7 @@ dependencies = [ "quote", "serde", "serde_json", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] @@ -1882,7 +2003,7 @@ dependencies = [ "backon", "educe", "futures", - "hashbrown 0.15.2", + "hashbrown 0.15.4", "hostname", "json-patch", "k8s-openapi", @@ -1905,58 +2026,54 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.171" +version = "0.2.174" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6" +checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" [[package]] name = "libloading" -version = "0.8.5" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" +checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" dependencies = [ "cfg-if", - "windows-targets 0.52.6", + "windows-targets 0.53.2", ] [[package]] name = "libm" -version = "0.2.8" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "libredox" -version = "0.0.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3af92c55d7d839293953fcd0fda5ecfe93297cfde6ffbdec13b41d99c0ba6607" +checksum = "1580801010e535496706ba011c15f8532df6b42297d2e471fec38ceadd8c0638" dependencies = [ - "bitflags 2.6.0", + "bitflags", "libc", - "redox_syscall 0.4.1", + "redox_syscall", ] [[package]] -name = "libredox" -version = "0.1.3" +name = "linux-raw-sys" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" -dependencies = [ - "bitflags 2.6.0", - "libc", -] +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" [[package]] -name = "linux-raw-sys" -version = "0.4.14" +name = "litemap" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" [[package]] name = "lock_api" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" dependencies = [ "autocfg", "scopeguard", @@ -1964,9 +2081,15 @@ dependencies = [ [[package]] name = "log" -version = "0.4.22" +version = "0.4.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" + +[[package]] +name = "lru-slab" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" [[package]] name = "matchers" @@ -1991,9 +2114,9 @@ checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" [[package]] name = "memchr" -version = "2.7.4" +version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" [[package]] name = "mime" @@ -2019,32 +2142,39 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.4" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ - "adler", + "adler2", ] [[package]] -name = "miniz_oxide" -version = "0.8.0" +name = "mio" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" dependencies = [ - "adler2", + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.59.0", ] [[package]] -name = "mio" -version = "1.0.2" +name = "multer" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +checksum = "83e87776546dc87511aa5ee218730c92b666d7264ab6ed41f9d215af9cd5224b" dependencies = [ - "hermit-abi", - "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.52.0", + "bytes", + "encoding_rs", + "futures-util", + "http", + "httparse", + "memchr", + "mime", + "spin", + "version_check", ] [[package]] @@ -2084,57 +2214,58 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" +checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" dependencies = [ "num_enum_derive", + "rustversion", ] [[package]] name = "num_enum_derive" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" +checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] -name = "number_prefix" -version = "0.4.0" +name = "numtoa" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" - -[[package]] -name = "numtoa" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8f8bdf33df195859076e54ab11ee78a1b208382d3a26ec40d142ffc1ecc49ef" +checksum = "6aa2c4e539b869820a2b82e1aef6ff40aa85e65decdd5185e83fb4b1249cd00f" [[package]] name = "object" -version = "0.36.4" +version = "0.36.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.19.0" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "once_cell_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" [[package]] name = "openssl-probe" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "opentelemetry" @@ -2253,15 +2384,15 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" [[package]] name = "parking" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "parking_lot" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" dependencies = [ "lock_api", "parking_lot_core", @@ -2269,13 +2400,13 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.10" +version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.3", + "redox_syscall", "smallvec", "windows-targets 0.52.6", ] @@ -2291,11 +2422,11 @@ dependencies = [ [[package]] name = "pem" -version = "3.0.4" +version = "3.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e459365e590736a54c3fa561947c84837534b8e9af6fc5bf781307e82658fae" +checksum = "38af38e8470ac9dee3ce1bae1af9c1671fffc44ddfd8bd1d0a3445bf349a8ef3" dependencies = [ - "base64 0.22.1", + "base64", "serde", ] @@ -2307,20 +2438,20 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.11" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd53dff83f26735fdc1ca837098ccf133605d794cdae66acfc2bfac3ec809d95" +checksum = "1db05f56d34358a8b1066f67cbb203ee3e7ed2ba674a6263a1d5ec6db2204323" dependencies = [ "memchr", - "thiserror 1.0.63", + "thiserror 2.0.12", "ucd-trie", ] [[package]] name = "pest_derive" -version = "2.7.11" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a548d2beca6773b1c244554d36fcf8548a8a58e74156968211567250e48e49a" +checksum = "bb056d9e8ea77922845ec74a1c4e8fb17e7c218cc4fc11a15c5d25e189aa40bc" dependencies = [ "pest", "pest_generator", @@ -2328,42 +2459,41 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.11" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c93a82e8d145725dcbaf44e5ea887c8a869efdcc28706df2d08c69e17077183" +checksum = "87e404e638f781eb3202dc82db6760c8ae8a1eeef7fb3fa8264b2ef280504966" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] name = "pest_meta" -version = "2.7.11" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a941429fea7e08bedec25e4f6785b6ffaacc6b755da98df5ef3e7dcf4a124c4f" +checksum = "edd1101f170f5903fde0914f899bb503d9ff5271d7ba76bbb70bea63690cc0d5" dependencies = [ - "once_cell", "pest", "sha2", ] [[package]] name = "phf" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" dependencies = [ "phf_shared", ] [[package]] name = "phf_codegen" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a" +checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" dependencies = [ "phf_generator", "phf_shared", @@ -2371,9 +2501,9 @@ dependencies = [ [[package]] name = "phf_generator" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" dependencies = [ "phf_shared", "rand 0.8.5", @@ -2381,38 +2511,38 @@ dependencies = [ [[package]] name = "phf_shared" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" dependencies = [ "siphasher", ] [[package]] name = "pin-project" -version = "1.1.5" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.5" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" [[package]] name = "pin-utils" @@ -2422,9 +2552,18 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "portable-atomic" -version = "1.11.0" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" + +[[package]] +name = "potential_utf" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e" +checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +dependencies = [ + "zerovec", +] [[package]] name = "powerfmt" @@ -2434,28 +2573,28 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.20" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ - "zerocopy 0.7.35", + "zerocopy", ] [[package]] name = "prettyplease" -version = "0.2.22" +version = "0.2.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba" +checksum = "061c1221631e079b26479d25bbf2275bfe5917ae8419cd7e34f13bfc2aa7539a" dependencies = [ "proc-macro2", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] name = "proc-macro-crate" -version = "3.2.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" dependencies = [ "toml_edit", ] @@ -2486,9 +2625,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" dependencies = [ "unicode-ident", ] @@ -2505,7 +2644,7 @@ dependencies = [ "serde", "serde_json", "serde_yaml", - "snafu 0.8.4", + "snafu 0.8.6", "xml-rs", ] @@ -2529,50 +2668,57 @@ dependencies = [ "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] name = "quinn" -version = "0.11.5" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c7c5fdde3cdae7203427dc4f0a68fe0ed09833edc525a03456b153b79828684" +checksum = "626214629cda6781b6dc1d316ba307189c85ba657213ce642d9c77670f8202c8" dependencies = [ "bytes", + "cfg_aliases", "pin-project-lite", "quinn-proto", "quinn-udp", - "rustc-hash 2.0.0", + "rustc-hash 2.1.1", "rustls", "socket2", - "thiserror 1.0.63", + "thiserror 2.0.12", "tokio", "tracing", + "web-time", ] [[package]] name = "quinn-proto" -version = "0.11.8" +version = "0.11.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fadfaed2cd7f389d0161bb73eeb07b7b78f8691047a6f3e73caaeae55310a4a6" +checksum = "49df843a9161c85bb8aae55f101bc0bac8bcafd637a620d9122fd7e0b2f7422e" dependencies = [ "bytes", - "rand 0.8.5", + "getrandom 0.3.3", + "lru-slab", + "rand 0.9.1", "ring", - "rustc-hash 2.0.0", + "rustc-hash 2.1.1", "rustls", + "rustls-pki-types", "slab", - "thiserror 1.0.63", + "thiserror 2.0.12", "tinyvec", "tracing", + "web-time", ] [[package]] name = "quinn-udp" -version = "0.5.5" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fe68c2e9e1a1234e218683dbdf9f9dfcb094113c5ac2b938dfcb9bab4c4140b" +checksum = "fcebb1209ee276352ef14ff8732e24cc2b02bbac986cd74a4c81bcb2f9881970" dependencies = [ + "cfg_aliases", "libc", "once_cell", "socket2", @@ -2582,18 +2728,18 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.37" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" dependencies = [ "proc-macro2", ] [[package]] name = "r-efi" -version = "5.2.0" +version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" [[package]] name = "rand" @@ -2608,13 +2754,12 @@ dependencies = [ [[package]] name = "rand" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" +checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" dependencies = [ "rand_chacha 0.9.0", "rand_core 0.9.3", - "zerocopy 0.8.24", ] [[package]] @@ -2643,7 +2788,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", ] [[package]] @@ -2652,25 +2797,16 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ - "getrandom 0.3.2", + "getrandom 0.3.3", ] [[package]] name = "redox_syscall" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" -dependencies = [ - "bitflags 1.3.2", -] - -[[package]] -name = "redox_syscall" -version = "0.5.3" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" +checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" dependencies = [ - "bitflags 2.6.0", + "bitflags", ] [[package]] @@ -2685,21 +2821,21 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ - "getrandom 0.2.15", - "libredox 0.1.3", - "thiserror 1.0.63", + "getrandom 0.2.16", + "libredox", + "thiserror 1.0.69", ] [[package]] name = "regex" -version = "1.10.6" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.7", - "regex-syntax 0.8.4", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", ] [[package]] @@ -2713,13 +2849,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.7" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.4", + "regex-syntax 0.8.5", ] [[package]] @@ -2730,9 +2866,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "relative-path" @@ -2742,11 +2878,11 @@ checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2" [[package]] name = "reqwest" -version = "0.12.7" +version = "0.12.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8f4955649ef5c38cc7f9e8aa41761d48fb9677197daea9984dc54f56aad5e63" +checksum = "cbc931937e6ca3a06e3b6c0aa7841849b160a90351d6ab467a8b9b9959767531" dependencies = [ - "base64 0.22.1", + "base64", "bytes", "futures-channel", "futures-core", @@ -2757,44 +2893,40 @@ dependencies = [ "hyper", "hyper-rustls", "hyper-util", - "ipnet", "js-sys", "log", - "mime", - "once_cell", "percent-encoding", "pin-project-lite", "quinn", "rustls", - "rustls-native-certs", - "rustls-pemfile", + "rustls-native-certs 0.8.1", "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", - "sync_wrapper 1.0.1", + "sync_wrapper", "tokio", "tokio-rustls", + "tower 0.5.2", + "tower-http 0.6.6", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", "webpki-roots", - "windows-registry", ] [[package]] name = "ring" -version = "0.17.8" +version = "0.17.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom 0.2.15", + "getrandom 0.2.16", "libc", - "spin", "untrusted", "windows-sys 0.52.0", ] @@ -2831,15 +2963,15 @@ dependencies = [ "regex", "relative-path", "rustc_version", - "syn 2.0.87", + "syn 2.0.104", "unicode-ident", ] [[package]] name = "rust-embed" -version = "8.5.0" +version = "8.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa66af4a4fdd5e7ebc276f115e895611a34739a9c1c01028383d612d550953c0" +checksum = "025908b8682a26ba8d12f6f2d66b987584a4a87bc024abc5bbc12553a8cd178a" dependencies = [ "rust-embed-impl", "rust-embed-utils", @@ -2848,22 +2980,22 @@ dependencies = [ [[package]] name = "rust-embed-impl" -version = "8.5.0" +version = "8.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6125dbc8867951125eec87294137f4e9c2c96566e61bf72c45095a7c77761478" +checksum = "6065f1a4392b71819ec1ea1df1120673418bf386f50de1d6f54204d836d4349c" dependencies = [ "proc-macro2", "quote", "rust-embed-utils", - "syn 2.0.87", + "syn 2.0.104", "walkdir", ] [[package]] name = "rust-embed-utils" -version = "8.5.0" +version = "8.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e5347777e9aacb56039b0e1f28785929a8a3b709e87482e7442c72e7c12529d" +checksum = "f6cc0c81648b20b70c491ff8cce00c1c3b223bb8ed2b5d41f0e54c6c4c0a3594" dependencies = [ "sha2", "walkdir", @@ -2871,9 +3003,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.24" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" [[package]] name = "rustc-hash" @@ -2883,9 +3015,9 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustc-hash" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" [[package]] name = "rustc_version" @@ -2898,22 +3030,22 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.35" +version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a85d50532239da68e9addb745ba38ff4612a242c1c7ceea689c4bc7c2f43c36f" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.6.0", + "bitflags", "errno", "libc", "linux-raw-sys", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "rustls" -version = "0.23.25" +version = "0.23.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "822ee9188ac4ec04a2f0531e55d035fb2de73f18b41a63c70c2712503b6fb13c" +checksum = "2491382039b29b9b11ff08b76ff6c97cf287671dbb74f0be44bda389fffe9bd1" dependencies = [ "log", "once_cell", @@ -2934,30 +3066,45 @@ dependencies = [ "rustls-pemfile", "rustls-pki-types", "schannel", - "security-framework", + "security-framework 2.11.1", +] + +[[package]] +name = "rustls-native-certs" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" +dependencies = [ + "openssl-probe", + "rustls-pki-types", + "schannel", + "security-framework 3.2.0", ] [[package]] name = "rustls-pemfile" -version = "2.1.3" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" dependencies = [ - "base64 0.22.1", "rustls-pki-types", ] [[package]] name = "rustls-pki-types" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" +checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" +dependencies = [ + "web-time", + "zeroize", +] [[package]] name = "rustls-webpki" -version = "0.103.1" +version = "0.103.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fef8b8769aaccf73098557a87cd1816b4f9c7c16811c9c77142aa695c16f2c03" +checksum = "0a17884ae0c1b773f1ccd2bd4a8c72f16da897310a98b0e84bf349ad5ead92fc" dependencies = [ "ring", "rustls-pki-types", @@ -2966,15 +3113,15 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.17" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" +checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" [[package]] name = "ryu" -version = "1.0.18" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "same-file" @@ -2987,11 +3134,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.23" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -3016,7 +3163,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] @@ -3040,8 +3187,21 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.6.0", - "core-foundation", + "bitflags", + "core-foundation 0.9.4", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" +dependencies = [ + "bitflags", + "core-foundation 0.10.1", "core-foundation-sys", "libc", "security-framework-sys", @@ -3049,9 +3209,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.11.1" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" dependencies = [ "core-foundation-sys", "libc", @@ -3059,9 +3219,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.23" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" dependencies = [ "serde", ] @@ -3093,7 +3253,7 @@ checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] @@ -3104,7 +3264,7 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] @@ -3121,9 +3281,9 @@ dependencies = [ [[package]] name = "serde_path_to_error" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" +checksum = "59fab13f937fa393d08645bf3a84bdfe86e296747b506ada67bb15f10f218b2a" dependencies = [ "itoa", "serde", @@ -3147,7 +3307,7 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.5.0", + "indexmap 2.10.0", "itoa", "ryu", "serde", @@ -3167,9 +3327,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.8" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", "cpufeatures", @@ -3193,27 +3353,24 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" -version = "1.4.2" +version = "1.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" dependencies = [ "libc", ] [[package]] name = "siphasher" -version = "0.3.11" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" [[package]] name = "slab" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] +checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" [[package]] name = "slug" @@ -3227,9 +3384,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.2" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" [[package]] name = "snafu" @@ -3243,13 +3400,13 @@ dependencies = [ [[package]] name = "snafu" -version = "0.8.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b835cb902660db3415a672d862905e791e54d306c6e8189168c7f3d9ae1c79d" +checksum = "320b01e011bf8d5d7a4a4a4be966d9160968935849c83b918827f6a435e7f627" dependencies = [ "futures-core", "pin-project", - "snafu-derive 0.8.4", + "snafu-derive 0.8.6", ] [[package]] @@ -3265,21 +3422,21 @@ dependencies = [ [[package]] name = "snafu-derive" -version = "0.8.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d1e02fca405f6280643174a50c942219f0bbf4dbf7d480f1dd864d6f211ae5" +checksum = "1961e2ef424c1424204d3a5d6975f934f56b6d50ff5732382d84ebf460e147f7" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] name = "socket2" -version = "0.5.9" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f5fd57c80058a56cf5c777ab8a126398ece8e442983605d280a44ce79d0edef" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" dependencies = [ "libc", "windows-sys 0.52.0", @@ -3291,6 +3448,12 @@ version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + [[package]] name = "stackable-cockpit" version = "0.0.0-dev" @@ -3298,7 +3461,7 @@ dependencies = [ "bcrypt", "futures", "helm-sys", - "indexmap 2.5.0", + "indexmap 2.10.0", "indicatif", "k8s-openapi", "kube", @@ -3310,7 +3473,7 @@ dependencies = [ "serde_json", "serde_yaml", "sha2", - "snafu 0.8.4", + "snafu 0.8.6", "stackable-operator", "tera", "tokio", @@ -3334,14 +3497,14 @@ dependencies = [ name = "stackable-cockpitd" version = "0.0.0-dev" dependencies = [ - "axum 0.7.5", + "axum 0.7.9", "axum-extra", "bcrypt", "clap", "futures", "k8s-openapi", "serde", - "snafu 0.8.4", + "snafu 0.8.6", "stackable-cockpit", "stackable-cockpit-web", "tokio", @@ -3366,7 +3529,7 @@ dependencies = [ "educe", "either", "futures", - "indexmap 2.5.0", + "indexmap 2.10.0", "json-patch", "k8s-openapi", "kube", @@ -3377,12 +3540,12 @@ dependencies = [ "serde", "serde_json", "serde_yaml", - "snafu 0.8.4", + "snafu 0.8.6", "stackable-operator-derive", "stackable-shared", "stackable-telemetry", "stackable-versioned", - "strum 0.27.1", + "strum", "tokio", "tracing", "tracing-appender", @@ -3398,7 +3561,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] @@ -3410,7 +3573,7 @@ dependencies = [ "semver", "serde", "serde_yaml", - "snafu 0.8.4", + "snafu 0.8.6", ] [[package]] @@ -3418,7 +3581,7 @@ name = "stackable-telemetry" version = "0.6.0" source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1" dependencies = [ - "axum 0.8.3", + "axum 0.8.4", "clap", "futures-util", "opentelemetry", @@ -3426,8 +3589,8 @@ dependencies = [ "opentelemetry-otlp", "opentelemetry_sdk", "pin-project", - "snafu 0.8.4", - "strum 0.27.1", + "snafu 0.8.6", + "strum", "tokio", "tower 0.5.2", "tracing", @@ -3457,7 +3620,7 @@ dependencies = [ "kube", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] @@ -3471,7 +3634,7 @@ dependencies = [ "directories", "dotenvy", "futures", - "indexmap 2.5.0", + "indexmap 2.10.0", "indicatif", "lazy_static", "libc", @@ -3481,7 +3644,7 @@ dependencies = [ "serde", "serde_json", "serde_yaml", - "snafu 0.8.4", + "snafu 0.8.6", "stackable-cockpit", "stackable-operator", "tera", @@ -3499,32 +3662,13 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" -[[package]] -name = "strum" -version = "0.26.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" - [[package]] name = "strum" version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f64def088c51c9510a8579e3c5d67c65349dcf755e5479ad3d010aa6454e2c32" dependencies = [ - "strum_macros 0.27.1", -] - -[[package]] -name = "strum_macros" -version = "0.26.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "rustversion", - "syn 2.0.87", + "strum_macros", ] [[package]] @@ -3537,7 +3681,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] @@ -3559,9 +3703,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.87" +version = "2.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" +checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" dependencies = [ "proc-macro2", "quote", @@ -3570,17 +3714,22 @@ dependencies = [ [[package]] name = "sync_wrapper" -version = "0.1.2" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] [[package]] -name = "sync_wrapper" -version = "1.0.1" +name = "synstructure" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ - "futures-core", + "proc-macro2", + "quote", + "syn 2.0.104", ] [[package]] @@ -3607,23 +3756,23 @@ dependencies = [ [[package]] name = "termion" -version = "4.0.2" +version = "4.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ccce68e518d1173e80876edd54760b60b792750d0cab6444a79101c6ea03848" +checksum = "3669a69de26799d6321a5aa713f55f7e2cd37bd47be044b50f2acafc42c122bb" dependencies = [ "libc", - "libredox 0.0.2", + "libredox", "numtoa", "redox_termios", ] [[package]] name = "thiserror" -version = "1.0.63" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ - "thiserror-impl 1.0.63", + "thiserror-impl 1.0.69", ] [[package]] @@ -3637,13 +3786,13 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "1.0.63" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] @@ -3654,24 +3803,23 @@ checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] name = "thread_local" -version = "1.1.8" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" dependencies = [ "cfg-if", - "once_cell", ] [[package]] name = "time" -version = "0.3.36" +version = "0.3.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" dependencies = [ "deranged", "itoa", @@ -3684,25 +3832,35 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" +checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" [[package]] name = "time-macros" -version = "0.2.18" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" dependencies = [ "num-conv", "time-core", ] +[[package]] +name = "tinystr" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +dependencies = [ + "displaydoc", + "zerovec", +] + [[package]] name = "tinyvec" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" dependencies = [ "tinyvec_macros", ] @@ -3715,16 +3873,18 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.40.0" +version = "1.46.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" +checksum = "0cc3a2344dafbe23a245241fe8b09735b521110d30fcefbbd5feb1797ca35d17" dependencies = [ "backtrace", "bytes", + "io-uring", "libc", "mio", "pin-project-lite", "signal-hook-registry", + "slab", "socket2", "tokio-macros", "windows-sys 0.52.0", @@ -3732,23 +3892,22 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] name = "tokio-rustls" -version = "0.26.0" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" +checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" dependencies = [ "rustls", - "rustls-pki-types", "tokio", ] @@ -3777,9 +3936,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.11" +version = "0.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" +checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" dependencies = [ "bytes", "futures-core", @@ -3791,17 +3950,17 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.8" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" [[package]] name = "toml_edit" -version = "0.22.20" +version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap 2.5.0", + "indexmap 2.10.0", "toml_datetime", "winnow", ] @@ -3814,8 +3973,8 @@ checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" dependencies = [ "async-stream", "async-trait", - "axum 0.7.5", - "base64 0.22.1", + "axum 0.7.9", + "base64", "bytes", "flate2", "h2", @@ -3866,7 +4025,7 @@ dependencies = [ "futures-core", "futures-util", "pin-project-lite", - "sync_wrapper 1.0.1", + "sync_wrapper", "tokio", "tokio-util", "tower-layer", @@ -3880,7 +4039,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" dependencies = [ - "bitflags 2.6.0", + "bitflags", "bytes", "http", "http-body", @@ -3893,17 +4052,20 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.6.2" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "403fa3b783d4b626a8ad51d766ab03cb6d2dbfc46b1c5d4448395e6628dc9697" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" dependencies = [ - "base64 0.22.1", - "bitflags 2.6.0", + "base64", + "bitflags", "bytes", + "futures-util", "http", "http-body", + "iri-string", "mime", "pin-project-lite", + "tower 0.5.2", "tower-layer", "tower-service", "tracing", @@ -3923,9 +4085,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "log", "pin-project-lite", @@ -3940,27 +4102,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf" dependencies = [ "crossbeam-channel", - "thiserror 1.0.63", + "thiserror 1.0.69", "time", "tracing-subscriber", ] [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] name = "tracing-core" -version = "0.1.33" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" dependencies = [ "once_cell", "valuable", @@ -3968,9 +4130,9 @@ dependencies = [ [[package]] name = "tracing-indicatif" -version = "0.3.9" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8201ca430e0cd893ef978226fd3516c06d9c494181c8bf4e5b32e30ed4b40aa1" +checksum = "8c714cc8fc46db04fcfddbd274c6ef59bebb1b435155984e7c6e89c3ce66f200" dependencies = [ "indicatif", "tracing", @@ -4009,9 +4171,9 @@ dependencies = [ [[package]] name = "tracing-serde" -version = "0.1.3" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1" +checksum = "704b1aeb7be0d0a84fc9828cae51dab5970fee5088f83d1dd7ee6f6246fc6ff1" dependencies = [ "serde", "tracing-core", @@ -4019,9 +4181,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.18" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" dependencies = [ "matchers", "nu-ansi-term", @@ -4055,7 +4217,7 @@ dependencies = [ "http", "httparse", "log", - "rand 0.9.0", + "rand 0.9.1", "sha1", "thiserror 2.0.12", "utf-8", @@ -4063,15 +4225,15 @@ dependencies = [ [[package]] name = "typenum" -version = "1.17.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" [[package]] name = "ucd-trie" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" [[package]] name = "unic-char-property" @@ -4125,33 +4287,15 @@ dependencies = [ [[package]] name = "unicase" -version = "2.7.0" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" -dependencies = [ - "version_check", -] - -[[package]] -name = "unicode-bidi" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" +checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" [[package]] name = "unicode-ident" -version = "1.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" - -[[package]] -name = "unicode-normalization" -version = "0.1.23" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" -dependencies = [ - "tinyvec", -] +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" [[package]] name = "unicode-segmentation" @@ -4161,21 +4305,27 @@ checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" [[package]] name = "unicode-width" -version = "0.1.13" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" [[package]] name = "unicode-width" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" +checksum = "4a1a07cc7db3810833284e8d372ccdc6da29741639ecc70c9ec107df0fa6154c" [[package]] name = "unicode-xid" -version = "0.2.5" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "unit-prefix" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "229730647fbc343e3a80e463c1db7f78f3855d3f3739bee0dda773c9a037c90a" +checksum = "323402cff2dd658f39ca17c789b502021b3f18707c91cdf22e3838e1b4023817" [[package]] name = "unsafe-libyaml" @@ -4191,9 +4341,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.2" +version = "2.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", "idna", @@ -4213,6 +4363,12 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" version = "0.2.2" @@ -4225,7 +4381,7 @@ version = "4.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c5afb1a60e207dca502682537fefcfd9921e71d0b83e9576060f09abc6efab23" dependencies = [ - "indexmap 2.5.0", + "indexmap 2.10.0", "serde", "serde_json", "utoipa-gen", @@ -4233,14 +4389,14 @@ dependencies = [ [[package]] name = "utoipa-gen" -version = "4.3.0" +version = "4.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bf0e16c02bc4bf5322ab65f10ab1149bdbcaa782cba66dc7057370a3f8190be" +checksum = "20c24e8ab68ff9ee746aad22d39b5535601e6416d1b0feeabf78be986a5c4392" dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] @@ -4249,7 +4405,7 @@ version = "7.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "943e0ff606c6d57d410fd5663a4d7c074ab2c5f14ab903b9514565e59fa1189e" dependencies = [ - "axum 0.7.5", + "axum 0.7.9", "mime_guess", "regex", "reqwest", @@ -4263,18 +4419,20 @@ dependencies = [ [[package]] name = "uuid" -version = "1.10.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" +checksum = "3cf4199d1e5d15ddd86a694e4d0dffa9c323ce759fea589f00fef9d81cc1931d" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.3.3", + "js-sys", + "wasm-bindgen", ] [[package]] name = "valuable" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] name = "version_check" @@ -4290,30 +4448,29 @@ checksum = "84cd863bf0db7e392ba3bd04994be3473491b31e66340672af5d11943c6274de" dependencies = [ "itoa", "log", - "unicode-width 0.1.13", + "unicode-width 0.1.14", "vte 0.11.1", ] [[package]] name = "vte" -version = "0.10.1" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6cbce692ab4ca2f1f3047fcf732430249c0e971bfdd2b234cf2c47ad93af5983" +checksum = "f5022b5fbf9407086c180e9557be968742d839e68346af7792b8592489732197" dependencies = [ - "arrayvec 0.5.2", + "arrayvec", "utf8parse", "vte_generate_state_changes", ] [[package]] name = "vte" -version = "0.11.1" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5022b5fbf9407086c180e9557be968742d839e68346af7792b8592489732197" +checksum = "231fdcd7ef3037e8330d8e17e61011a2c244126acc0a982f4040ac3f9f0bc077" dependencies = [ - "arrayvec 0.7.6", - "utf8parse", - "vte_generate_state_changes", + "arrayvec", + "memchr", ] [[package]] @@ -4347,9 +4504,9 @@ dependencies = [ [[package]] name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasi" @@ -4362,47 +4519,48 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.93" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ "cfg-if", "once_cell", + "rustversion", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.93" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" dependencies = [ "bumpalo", "log", - "once_cell", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.43" +version = "0.4.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" dependencies = [ "cfg-if", "js-sys", + "once_cell", "wasm-bindgen", "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.93" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4410,28 +4568,31 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.93" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.93" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] [[package]] name = "web-sys" -version = "0.3.70" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" dependencies = [ "js-sys", "wasm-bindgen", @@ -4449,9 +4610,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.5" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bd24728e5af82c6c4ec1b66ac4844bdf8156257fccda846ec58b42cd0cdbe6a" +checksum = "8782dd5a41a24eed3a4f40b606249b3e236ca61adf1f25ea4d45c73de122b502" dependencies = [ "rustls-pki-types", ] @@ -4501,47 +4662,61 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows-core" -version = "0.52.0" +version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" dependencies = [ - "windows-targets 0.52.6", + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", ] [[package]] -name = "windows-link" -version = "0.1.1" +name = "windows-implement" +version = "0.60.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" +checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] [[package]] -name = "windows-registry" -version = "0.2.0" +name = "windows-interface" +version = "0.59.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" dependencies = [ - "windows-result", - "windows-strings", - "windows-targets 0.52.6", + "proc-macro2", + "quote", + "syn 2.0.104", ] +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + [[package]] name = "windows-result" -version = "0.2.0" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" dependencies = [ - "windows-targets 0.52.6", + "windows-link", ] [[package]] name = "windows-strings" -version = "0.1.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" dependencies = [ - "windows-result", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -4571,6 +4746,15 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.2", +] + [[package]] name = "windows-targets" version = "0.48.5" @@ -4595,13 +4779,29 @@ dependencies = [ "windows_aarch64_gnullvm 0.52.6", "windows_aarch64_msvc 0.52.6", "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm", + "windows_i686_gnullvm 0.52.6", "windows_i686_msvc 0.52.6", "windows_x86_64_gnu 0.52.6", "windows_x86_64_gnullvm 0.52.6", "windows_x86_64_msvc 0.52.6", ] +[[package]] +name = "windows-targets" +version = "0.53.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef" +dependencies = [ + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.48.5" @@ -4614,6 +4814,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" + [[package]] name = "windows_aarch64_msvc" version = "0.48.5" @@ -4626,6 +4832,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" + [[package]] name = "windows_i686_gnu" version = "0.48.5" @@ -4638,12 +4850,24 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" +[[package]] +name = "windows_i686_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + [[package]] name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" + [[package]] name = "windows_i686_msvc" version = "0.48.5" @@ -4656,6 +4880,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +[[package]] +name = "windows_i686_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" + [[package]] name = "windows_x86_64_gnu" version = "0.48.5" @@ -4668,6 +4898,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" @@ -4680,6 +4916,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" + [[package]] name = "windows_x86_64_msvc" version = "0.48.5" @@ -4692,11 +4934,17 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + [[package]] name = "winnow" -version = "0.6.18" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" +checksum = "f3edebf492c8125044983378ecb5766203ad3b4c2f7a922bd7dd207f6d443e95" dependencies = [ "memchr", ] @@ -4713,14 +4961,20 @@ version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" dependencies = [ - "bitflags 2.6.0", + "bitflags", ] +[[package]] +name = "writeable" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" + [[package]] name = "xml-rs" -version = "0.8.21" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "539a77ee7c0de333dcc6da69b177380a0b81e0dacfa4f7344c465a36871ee601" +checksum = "6fd8403733700263c6eb89f192880191f1b83e332f7a20371ddcf421c4a337c7" [[package]] name = "xtask" @@ -4733,51 +4987,75 @@ dependencies = [ "once_cell", "regex", "serde_json", - "snafu 0.8.4", + "snafu 0.8.6", "stackable-cockpitd", "stackablectl", "tera", ] [[package]] -name = "zerocopy" -version = "0.7.35" +name = "yoke" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" dependencies = [ - "byteorder", - "zerocopy-derive 0.7.35", + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", + "synstructure", ] [[package]] name = "zerocopy" -version = "0.8.24" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2586fea28e186957ef732a5f8b3be2da217d65c5969d4b1e17f973ebbe876879" +checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" dependencies = [ - "zerocopy-derive 0.8.24", + "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.35" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] -name = "zerocopy-derive" -version = "0.8.24" +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a996a8f63c5c4448cd959ac1bab0aaa3306ccfd060472f85943ee0750f0169be" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", + "synstructure", ] [[package]] @@ -4786,6 +5064,39 @@ version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + [[package]] name = "zip" version = "1.1.4" @@ -4797,7 +5108,7 @@ dependencies = [ "crossbeam-utils", "displaydoc", "flate2", - "indexmap 2.5.0", + "indexmap 2.10.0", "num_enum", - "thiserror 1.0.63", + "thiserror 1.0.69", ] diff --git a/Cargo.nix b/Cargo.nix index 482d524a..c9fb8d88 100644 --- a/Cargo.nix +++ b/Cargo.nix @@ -125,9 +125,10 @@ rec { crates = { "addr2line" = rec { crateName = "addr2line"; - version = "0.22.0"; + version = "0.24.2"; edition = "2018"; - sha256 = "0y66f1sa27i9kvmlh76ynk60rxfrmkba9ja8x527h32wdb206ibf"; + crateBin = []; + sha256 = "1hd1i57zxgz08j6h5qrhsnm2fi0bcqvsh389fw400xm3arz2ggnz"; dependencies = [ { name = "gimli"; @@ -137,57 +138,41 @@ rec { } ]; features = { + "all" = [ "bin" ]; "alloc" = [ "dep:alloc" ]; + "bin" = [ "loader" "rustc-demangle" "cpp_demangle" "fallible-iterator" "smallvec" "dep:clap" ]; "compiler_builtins" = [ "dep:compiler_builtins" ]; "core" = [ "dep:core" ]; "cpp_demangle" = [ "dep:cpp_demangle" ]; - "default" = [ "rustc-demangle" "cpp_demangle" "std-object" "fallible-iterator" "smallvec" "memmap2" ]; + "default" = [ "rustc-demangle" "cpp_demangle" "loader" "fallible-iterator" "smallvec" ]; "fallible-iterator" = [ "dep:fallible-iterator" ]; - "memmap2" = [ "dep:memmap2" ]; - "object" = [ "dep:object" ]; + "loader" = [ "std" "dep:object" "dep:memmap2" "dep:typed-arena" ]; "rustc-demangle" = [ "dep:rustc-demangle" ]; "rustc-dep-of-std" = [ "core" "alloc" "compiler_builtins" "gimli/rustc-dep-of-std" ]; "smallvec" = [ "dep:smallvec" ]; "std" = [ "gimli/std" ]; - "std-object" = [ "std" "object" "object/std" "object/compression" "gimli/endian-reader" ]; - }; - }; - "adler" = rec { - crateName = "adler"; - version = "1.0.2"; - edition = "2015"; - sha256 = "1zim79cvzd5yrkzl3nyfx0avijwgk9fqv3yrscdy1cc79ih02qpj"; - authors = [ - "Jonas Schievink " - ]; - features = { - "compiler_builtins" = [ "dep:compiler_builtins" ]; - "core" = [ "dep:core" ]; - "default" = [ "std" ]; - "rustc-dep-of-std" = [ "core" "compiler_builtins" ]; }; }; "adler2" = rec { crateName = "adler2"; - version = "2.0.0"; + version = "2.0.1"; edition = "2021"; - sha256 = "09r6drylvgy8vv8k20lnbvwq8gp09h7smfn6h1rxsy15pgh629si"; + sha256 = "1ymy18s9hs7ya1pjc9864l30wk8p2qfqdi7mhhcc5nfakxbij09j"; authors = [ "Jonas Schievink " "oyvindln " ]; features = { - "compiler_builtins" = [ "dep:compiler_builtins" ]; "core" = [ "dep:core" ]; "default" = [ "std" ]; - "rustc-dep-of-std" = [ "core" "compiler_builtins" ]; + "rustc-dep-of-std" = [ "core" ]; }; }; "ahash" = rec { crateName = "ahash"; - version = "0.8.11"; + version = "0.8.12"; edition = "2018"; - sha256 = "04chdfkls5xmhp1d48gnjsmglbqibizs3bpbj6rsj604m10si7g8"; + sha256 = "0xbsp9rlm5ki017c0w6ay8kjwinwm8knjncci95mii30rmwz25as"; authors = [ "Tom Kaitchuck " ]; @@ -198,7 +183,7 @@ rec { } { name = "getrandom"; - packageId = "getrandom 0.2.15"; + packageId = "getrandom 0.3.3"; optional = true; } { @@ -210,7 +195,7 @@ rec { } { name = "zerocopy"; - packageId = "zerocopy 0.7.35"; + packageId = "zerocopy"; usesDefaultFeatures = false; features = [ "simd" ]; } @@ -222,7 +207,7 @@ rec { } ]; features = { - "atomic-polyfill" = [ "dep:atomic-polyfill" "once_cell/atomic-polyfill" ]; + "atomic-polyfill" = [ "dep:portable-atomic" "once_cell/critical-section" ]; "compile-time-rng" = [ "const-random" ]; "const-random" = [ "dep:const-random" ]; "default" = [ "std" "runtime-rng" ]; @@ -259,9 +244,9 @@ rec { }; "allocator-api2" = rec { crateName = "allocator-api2"; - version = "0.2.18"; + version = "0.2.21"; edition = "2018"; - sha256 = "0kr6lfnxvnj164j1x38g97qjlhb7akppqzvgfs0697140ixbav2w"; + sha256 = "08zrzs022xwndihvzdn78yqarv2b9696y67i6h78nla3ww87jgb8"; libName = "allocator_api2"; authors = [ "Zakarum " @@ -302,9 +287,9 @@ rec { }; "ansi-str" = rec { crateName = "ansi-str"; - version = "0.8.0"; + version = "0.9.0"; edition = "2021"; - sha256 = "07ddhqynv05xjyhw295w29qy77fi84sh5p2mm46ap0d94s4mgx0w"; + sha256 = "03c9j3870slj40lkdkrpav2p4kig2f1g6x42n8267x397d2y2386"; libName = "ansi_str"; authors = [ "Maxim Zhiburt " @@ -319,9 +304,9 @@ rec { }; "ansitok" = rec { crateName = "ansitok"; - version = "0.2.0"; + version = "0.3.0"; edition = "2021"; - sha256 = "10vc2d1325qsbvbnqnj48zg55wv7jz929drx9vpdscdvl7k48012"; + sha256 = "1vjrlvmwrq5v72rcmfqhdyspvabcz5mx531am7q6071gikmara60"; authors = [ "Maxim Zhiburt " ]; @@ -332,7 +317,7 @@ rec { } { name = "vte"; - packageId = "vte 0.10.1"; + packageId = "vte 0.14.1"; } ]; features = { @@ -343,9 +328,9 @@ rec { }; "anstream" = rec { crateName = "anstream"; - version = "0.6.15"; + version = "0.6.19"; edition = "2021"; - sha256 = "09nm4qj34kiwgzczdvj14x7hgsb235g4sqsay3xsz7zqn4d5rqb4"; + sha256 = "0crr9a207dyn8k66xgvhvmlxm9raiwpss3syfa35c6265s9z26ih"; dependencies = [ { name = "anstyle"; @@ -388,9 +373,9 @@ rec { }; "anstyle" = rec { crateName = "anstyle"; - version = "1.0.8"; + version = "1.0.11"; edition = "2021"; - sha256 = "1cfmkza63xpn1kkz844mgjwm9miaiz4jkyczmwxzivcsypk1vv0v"; + sha256 = "1gbbzi0zbgff405q14v8hhpi1kz2drzl9a75r3qhks47lindjbl6"; features = { "default" = [ "std" ]; }; @@ -398,9 +383,9 @@ rec { }; "anstyle-parse" = rec { crateName = "anstyle-parse"; - version = "0.2.5"; + version = "0.2.7"; edition = "2021"; - sha256 = "1jy12rvgbldflnb2x7mcww9dcffw1mx22nyv6p3n7d62h0gdwizb"; + sha256 = "1hhmkkfr95d462b3zf6yl2vfzdqfy5726ya572wwg8ha9y148xjf"; libName = "anstyle_parse"; dependencies = [ { @@ -418,14 +403,14 @@ rec { }; "anstyle-query" = rec { crateName = "anstyle-query"; - version = "1.1.1"; + version = "1.1.3"; edition = "2021"; - sha256 = "0aj22iy4pzk6mz745sfrm1ym14r0y892jhcrbs8nkj7nqx9gqdkd"; + sha256 = "1sgs2hq54wayrmpvy784ww2ccv9f8yhhpasv12z872bx0jvdx2vc"; libName = "anstyle_query"; dependencies = [ { name = "windows-sys"; - packageId = "windows-sys 0.52.0"; + packageId = "windows-sys 0.59.0"; target = { target, features }: (target."windows" or false); features = [ "Win32_System_Console" "Win32_Foundation" ]; } @@ -434,18 +419,23 @@ rec { }; "anstyle-wincon" = rec { crateName = "anstyle-wincon"; - version = "3.0.4"; + version = "3.0.9"; edition = "2021"; - sha256 = "1y2pkvsrdxbcwircahb4wimans2pzmwwxad7ikdhj5lpdqdlxxsv"; + sha256 = "10n8mcgr89risdf35i73zc67aaa392bhggwzqlri1fv79297ags0"; libName = "anstyle_wincon"; dependencies = [ { name = "anstyle"; packageId = "anstyle"; } + { + name = "once_cell_polyfill"; + packageId = "once_cell_polyfill"; + target = { target, features }: (target."windows" or false); + } { name = "windows-sys"; - packageId = "windows-sys 0.52.0"; + packageId = "windows-sys 0.59.0"; target = { target, features }: (target."windows" or false); features = [ "Win32_System_Console" "Win32_Foundation" ]; } @@ -454,9 +444,9 @@ rec { }; "anyhow" = rec { crateName = "anyhow"; - version = "1.0.97"; + version = "1.0.98"; edition = "2018"; - sha256 = "0kvspbiwncmmkdgrwjrimsmbmhzxc641p5ql99l2rjq6smmdbznw"; + sha256 = "11ylvjdrcjs0q9jgk1af4r5cx1qppj63plxqkq595vmc24rjsvg1"; authors = [ "David Tolnay " ]; @@ -468,9 +458,9 @@ rec { }; "arbitrary" = rec { crateName = "arbitrary"; - version = "1.3.2"; + version = "1.4.1"; edition = "2021"; - sha256 = "0471f0c4f1bgibhyhf8vnapkp158h1nkrzx0wnq97jwd9n0jcnkx"; + sha256 = "08zj2yanll5s5gsbmvgwvbq39iqzy3nia3yx3db3zwba08yhpqnx"; authors = [ "The Rust-Fuzz Project Developers" "Nick Fitzgerald " @@ -492,20 +482,7 @@ rec { }; resolvedDefaultFeatures = [ "derive" "derive_arbitrary" ]; }; - "arrayvec 0.5.2" = rec { - crateName = "arrayvec"; - version = "0.5.2"; - edition = "2018"; - sha256 = "12q6hn01x5435bprwlb7w9m7817dyfq55yrl4psygr78bp32zdi3"; - authors = [ - "bluss" - ]; - features = { - "default" = [ "std" ]; - "serde" = [ "dep:serde" ]; - }; - }; - "arrayvec 0.7.6" = rec { + "arrayvec" = rec { crateName = "arrayvec"; version = "0.7.6"; edition = "2018"; @@ -522,9 +499,9 @@ rec { }; "async-broadcast" = rec { crateName = "async-broadcast"; - version = "0.7.1"; - edition = "2018"; - sha256 = "0zia7z1y31awmxma9c89zmvkbj7mdkf7highkmz5z3pa4lp0xk90"; + version = "0.7.2"; + edition = "2021"; + sha256 = "0ckmqcwyqwbl2cijk1y4r0vy60i89gqc86ijrxzz5f2m4yjqfnj3"; libName = "async_broadcast"; authors = [ "Stjepan Glavina " @@ -564,7 +541,7 @@ rec { dependencies = [ { name = "thiserror"; - packageId = "thiserror 1.0.63"; + packageId = "thiserror 1.0.69"; } { name = "tokio"; @@ -583,9 +560,9 @@ rec { }; "async-stream" = rec { crateName = "async-stream"; - version = "0.3.5"; - edition = "2018"; - sha256 = "0l8sjq1rylkb1ak0pdyjn83b3k6x36j22myngl4sqqgg7whdsmnd"; + version = "0.3.6"; + edition = "2021"; + sha256 = "0xl4zqncrdmw2g6241wgr11dxdg4h7byy6bz3l6si03qyfk72nhb"; libName = "async_stream"; authors = [ "Carl Lerche " @@ -608,9 +585,9 @@ rec { }; "async-stream-impl" = rec { crateName = "async-stream-impl"; - version = "0.3.5"; - edition = "2018"; - sha256 = "14q179j4y8p2z1d0ic6aqgy9fhwz8p9cai1ia8kpw4bw7q12mrhn"; + version = "0.3.6"; + edition = "2021"; + sha256 = "0kaplfb5axsvf1gfs2gk6c4zx6zcsns0yf3ssk7iwni7bphlvhn7"; procMacro = true; libName = "async_stream_impl"; authors = [ @@ -627,7 +604,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.87"; + packageId = "syn 2.0.104"; features = [ "full" "visit-mut" ]; } ]; @@ -635,9 +612,9 @@ rec { }; "async-trait" = rec { crateName = "async-trait"; - version = "0.1.82"; + version = "0.1.88"; edition = "2021"; - sha256 = "1wfz9p7x1hhdw8vj47wlsj319s3j84z6a7xgid6gli0sdqx8lyx2"; + sha256 = "1dgxvz7g75cmz6vqqz0mri4xazc6a8xfj1db6r9fxz29lzyd6fg5"; procMacro = true; libName = "async_trait"; authors = [ @@ -654,9 +631,9 @@ rec { } { name = "syn"; - packageId = "syn 2.0.87"; + packageId = "syn 2.0.104"; usesDefaultFeatures = false; - features = [ "full" "parsing" "printing" "proc-macro" "visit-mut" ]; + features = [ "clone-impls" "full" "parsing" "printing" "proc-macro" "visit-mut" ]; } ]; @@ -677,19 +654,19 @@ rec { }; "autocfg" = rec { crateName = "autocfg"; - version = "1.3.0"; + version = "1.5.0"; edition = "2015"; - sha256 = "1c3njkfzpil03k92q0mij5y1pkhhfr4j3bf0h53bgl2vs85lsjqc"; + sha256 = "1s77f98id9l4af4alklmzq46f21c980v13z2r1pcxx6bqgw0d1n0"; authors = [ "Josh Stone " ]; }; - "axum 0.7.5" = rec { + "axum 0.7.9" = rec { crateName = "axum"; - version = "0.7.5"; + version = "0.7.9"; edition = "2021"; - sha256 = "1kyb7pzgn60crl9wyq7dhciv40sxdr1mbqx2r4s7g9j253qrlv1s"; + sha256 = "07z7wqczi9i8xb4460rvn39p4wjqwr32hx907crd1vwb2fy8ijpd"; dependencies = [ { name = "async-trait"; @@ -697,7 +674,7 @@ rec { } { name = "axum-core"; - packageId = "axum-core 0.4.3"; + packageId = "axum-core 0.4.5"; } { name = "bytes"; @@ -730,7 +707,7 @@ rec { name = "hyper-util"; packageId = "hyper-util"; optional = true; - features = [ "tokio" "server" ]; + features = [ "tokio" "server" "service" ]; } { name = "itoa"; @@ -756,6 +733,10 @@ rec { name = "pin-project-lite"; packageId = "pin-project-lite"; } + { + name = "rustversion"; + packageId = "rustversion"; + } { name = "serde"; packageId = "serde"; @@ -778,7 +759,7 @@ rec { } { name = "sync_wrapper"; - packageId = "sync_wrapper 1.0.1"; + packageId = "sync_wrapper"; } { name = "tokio"; @@ -789,7 +770,7 @@ rec { } { name = "tower"; - packageId = "tower 0.4.13"; + packageId = "tower 0.5.2"; usesDefaultFeatures = false; features = [ "util" ]; } @@ -808,17 +789,7 @@ rec { usesDefaultFeatures = false; } ]; - buildDependencies = [ - { - name = "rustversion"; - packageId = "rustversion"; - } - ]; devDependencies = [ - { - name = "rustversion"; - packageId = "rustversion"; - } { name = "serde"; packageId = "serde"; @@ -827,6 +798,7 @@ rec { { name = "serde_json"; packageId = "serde_json"; + features = [ "raw_value" ]; } { name = "tokio"; @@ -836,7 +808,7 @@ rec { } { name = "tower"; - packageId = "tower 0.4.13"; + packageId = "tower 0.5.2"; rename = "tower"; features = [ "util" "timeout" "limit" "load-shed" "steer" "filter" ]; } @@ -846,7 +818,7 @@ rec { } ]; features = { - "__private_docs" = [ "tower/full" "dep:tower-http" ]; + "__private_docs" = [ "axum-core/__private_docs" "tower/full" "dep:tower-http" ]; "default" = [ "form" "http1" "json" "matched-path" "original-uri" "query" "tokio" "tower-log" "tracing" ]; "form" = [ "dep:serde_urlencoded" ]; "http1" = [ "dep:hyper" "hyper?/http1" "hyper-util?/http1" ]; @@ -862,11 +834,11 @@ rec { }; resolvedDefaultFeatures = [ "default" "form" "http1" "http2" "json" "matched-path" "original-uri" "query" "tokio" "tower-log" "tracing" ]; }; - "axum 0.8.3" = rec { + "axum 0.8.4" = rec { crateName = "axum"; - version = "0.8.3"; + version = "0.8.4"; edition = "2021"; - sha256 = "1222spmyw5s2dfggwn62474jkh72ld52abkz5wjbkyg1024i0ify"; + sha256 = "1d99kb3vcjnhbgrf6hysllf25hzagw7m1i1nidjpgsaa30n8c7h2"; dependencies = [ { name = "axum-core"; @@ -960,7 +932,7 @@ rec { } { name = "sync_wrapper"; - packageId = "sync_wrapper 1.0.1"; + packageId = "sync_wrapper"; } { name = "tokio"; @@ -1041,11 +1013,11 @@ rec { }; resolvedDefaultFeatures = [ "default" "form" "http1" "json" "matched-path" "original-uri" "query" "tokio" "tower-log" "tracing" ]; }; - "axum-core 0.4.3" = rec { + "axum-core 0.4.5" = rec { crateName = "axum-core"; - version = "0.4.3"; + version = "0.4.5"; edition = "2021"; - sha256 = "1qx28wg4j6qdcdrisqwyaavlzc0zvbsrcwa99zf9456lfbyn6p51"; + sha256 = "16b1496c4gm387q20hkv5ic3k5bd6xmnvk50kwsy6ymr8rhvvwh9"; libName = "axum_core"; dependencies = [ { @@ -1082,9 +1054,13 @@ rec { name = "pin-project-lite"; packageId = "pin-project-lite"; } + { + name = "rustversion"; + packageId = "rustversion"; + } { name = "sync_wrapper"; - packageId = "sync_wrapper 0.1.2"; + packageId = "sync_wrapper"; } { name = "tower-layer"; @@ -1101,12 +1077,6 @@ rec { usesDefaultFeatures = false; } ]; - buildDependencies = [ - { - name = "rustversion"; - packageId = "rustversion"; - } - ]; devDependencies = [ { name = "futures-util"; @@ -1162,7 +1132,7 @@ rec { } { name = "sync_wrapper"; - packageId = "sync_wrapper 1.0.1"; + packageId = "sync_wrapper"; } { name = "tower-layer"; @@ -1187,24 +1157,30 @@ rec { }; "axum-extra" = rec { crateName = "axum-extra"; - version = "0.9.3"; + version = "0.9.6"; edition = "2021"; - sha256 = "0cyp22wy0lykpmkikkr7z0c0rg6j7cw2xpphd83vav5rr44ymrhb"; + sha256 = "011gr9fkxild2yv7rxgn9shzlbcpyzvps3vlnwpiq2jgj06b7567"; libName = "axum_extra"; dependencies = [ { name = "axum"; - packageId = "axum 0.7.5"; + packageId = "axum 0.7.9"; usesDefaultFeatures = false; + features = [ "original-uri" ]; } { name = "axum-core"; - packageId = "axum-core 0.4.3"; + packageId = "axum-core 0.4.5"; } { name = "bytes"; packageId = "bytes"; } + { + name = "fastrand"; + packageId = "fastrand"; + optional = true; + } { name = "futures-util"; packageId = "futures-util"; @@ -1232,6 +1208,11 @@ rec { name = "mime"; packageId = "mime"; } + { + name = "multer"; + packageId = "multer"; + optional = true; + } { name = "pin-project-lite"; packageId = "pin-project-lite"; @@ -1242,7 +1223,7 @@ rec { } { name = "tower"; - packageId = "tower 0.4.13"; + packageId = "tower 0.5.2"; usesDefaultFeatures = false; features = [ "util" ]; } @@ -1254,18 +1235,8 @@ rec { name = "tower-service"; packageId = "tower-service"; } - { - name = "tracing"; - packageId = "tracing"; - optional = true; - usesDefaultFeatures = false; - } ]; devDependencies = [ - { - name = "axum"; - packageId = "axum 0.7.5"; - } { name = "serde"; packageId = "serde"; @@ -1273,35 +1244,36 @@ rec { } { name = "tower"; - packageId = "tower 0.4.13"; + packageId = "tower 0.5.2"; features = [ "util" ]; } ]; features = { "async-read-body" = [ "dep:tokio-util" "tokio-util?/io" "dep:tokio" ]; + "attachment" = [ "dep:tracing" ]; "cookie" = [ "dep:cookie" ]; "cookie-key-expansion" = [ "cookie" "cookie?/key-expansion" ]; "cookie-private" = [ "cookie" "cookie?/private" ]; "cookie-signed" = [ "cookie" "cookie?/signed" ]; - "default" = [ "tracing" ]; - "erased-json" = [ "dep:serde_json" ]; + "default" = [ "tracing" "multipart" ]; + "erased-json" = [ "dep:serde_json" "dep:typed-json" ]; "form" = [ "dep:serde_html_form" ]; "json-deserializer" = [ "dep:serde_json" "dep:serde_path_to_error" ]; "json-lines" = [ "dep:serde_json" "dep:tokio-util" "dep:tokio-stream" "tokio-util?/io" "tokio-stream?/io-util" "dep:tokio" ]; - "multipart" = [ "dep:multer" ]; + "multipart" = [ "dep:multer" "dep:fastrand" ]; "protobuf" = [ "dep:prost" ]; "query" = [ "dep:serde_html_form" ]; - "tracing" = [ "dep:tracing" "axum-core/tracing" ]; + "tracing" = [ "axum-core/tracing" "axum/tracing" ]; "typed-header" = [ "dep:headers" ]; "typed-routing" = [ "dep:axum-macros" "dep:percent-encoding" "dep:serde_html_form" "dep:form_urlencoded" ]; }; - resolvedDefaultFeatures = [ "default" "tracing" "typed-header" ]; + resolvedDefaultFeatures = [ "default" "multipart" "tracing" "typed-header" ]; }; "backon" = rec { crateName = "backon"; - version = "1.5.0"; + version = "1.5.1"; edition = "2021"; - sha256 = "15k4p6xyxi4lkiyw5yxrmcws3wwnwjacgcqqmd2dvfldnyqm02zx"; + sha256 = "1rwr3ycl69vycyaxrhwzfjcwyqf7pawfq9zi88n4l9ks6pssybih"; dependencies = [ { name = "fastrand"; @@ -1352,9 +1324,9 @@ rec { }; "backtrace" = rec { crateName = "backtrace"; - version = "0.3.73"; + version = "0.3.75"; edition = "2021"; - sha256 = "02iffg2pkg5nc36pgml8il7f77s138hhjw9f9l56v5zqlilk5hjw"; + sha256 = "00hhizz29mvd7cdqyz5wrj98vqkihgcxmv2vl7z0d0f53qrac1k8"; authors = [ "The Rust Project Developers" ]; @@ -1377,7 +1349,7 @@ rec { } { name = "miniz_oxide"; - packageId = "miniz_oxide 0.7.4"; + packageId = "miniz_oxide"; usesDefaultFeatures = false; target = { target, features }: (!((target."windows" or false) && ("msvc" == target."env" or null) && (!("uwp" == target."vendor" or null)))); } @@ -1392,39 +1364,22 @@ rec { name = "rustc-demangle"; packageId = "rustc-demangle"; } - ]; - buildDependencies = [ { - name = "cc"; - packageId = "cc"; + name = "windows-targets"; + packageId = "windows-targets 0.52.6"; + target = { target, features }: ((target."windows" or false) || ("cygwin" == target."os" or null)); } ]; features = { "cpp_demangle" = [ "dep:cpp_demangle" ]; "default" = [ "std" ]; + "ruzstd" = [ "dep:ruzstd" ]; "serde" = [ "dep:serde" ]; "serialize-serde" = [ "serde" ]; - "verify-winapi" = [ "winapi/dbghelp" "winapi/handleapi" "winapi/libloaderapi" "winapi/memoryapi" "winapi/minwindef" "winapi/processthreadsapi" "winapi/synchapi" "winapi/tlhelp32" "winapi/winbase" "winapi/winnt" "winapi/winnls" "winapi/stringapiset" ]; - "winapi" = [ "dep:winapi" ]; }; resolvedDefaultFeatures = [ "default" "std" ]; }; - "base64 0.21.7" = rec { - crateName = "base64"; - version = "0.21.7"; - edition = "2018"; - sha256 = "0rw52yvsk75kar9wgqfwgb414kvil1gn7mqkrhn9zf1537mpsacx"; - authors = [ - "Alice Maz " - "Marshall Pierce " - ]; - features = { - "default" = [ "std" ]; - "std" = [ "alloc" ]; - }; - resolvedDefaultFeatures = [ "alloc" "default" "std" ]; - }; - "base64 0.22.1" = rec { + "base64" = rec { crateName = "base64"; version = "0.22.1"; edition = "2018"; @@ -1449,7 +1404,7 @@ rec { dependencies = [ { name = "base64"; - packageId = "base64 0.22.1"; + packageId = "base64"; usesDefaultFeatures = false; } { @@ -1459,7 +1414,7 @@ rec { } { name = "getrandom"; - packageId = "getrandom 0.2.15"; + packageId = "getrandom 0.2.16"; optional = true; usesDefaultFeatures = false; } @@ -1499,7 +1454,7 @@ rec { dependencies = [ { name = "bitflags"; - packageId = "bitflags 2.6.0"; + packageId = "bitflags"; } { name = "cexpr"; @@ -1552,7 +1507,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.87"; + packageId = "syn 2.0.104"; features = [ "full" "extra-traits" "visit-mut" ]; } ]; @@ -1605,26 +1560,11 @@ rec { }; resolvedDefaultFeatures = [ "std" ]; }; - "bitflags 1.3.2" = rec { - crateName = "bitflags"; - version = "1.3.2"; - edition = "2018"; - sha256 = "12ki6w8gn1ldq7yz9y680llwk5gmrhrzszaa17g1sbrw2r2qvwxy"; - authors = [ - "The Rust Project Developers" - ]; - features = { - "compiler_builtins" = [ "dep:compiler_builtins" ]; - "core" = [ "dep:core" ]; - "rustc-dep-of-std" = [ "core" "compiler_builtins" ]; - }; - resolvedDefaultFeatures = [ "default" ]; - }; - "bitflags 2.6.0" = rec { + "bitflags" = rec { crateName = "bitflags"; - version = "2.6.0"; + version = "2.9.1"; edition = "2021"; - sha256 = "1pkidwzn3hnxlsl8zizh0bncgbjnw7c41cx7bby26ncbzmiznj5h"; + sha256 = "0rz9rpp5wywwqb3mxfkywh4drmzci2fch780q7lifbf6bsc5d3hv"; authors = [ "The Rust Project Developers" ]; @@ -1688,9 +1628,9 @@ rec { }; "bstr" = rec { crateName = "bstr"; - version = "1.10.0"; + version = "1.12.0"; edition = "2021"; - sha256 = "036wwrchd5gq3q4k6w1j2bfl2bk2ff8c0dsa9y7w7aw7nf7knwj0"; + sha256 = "195i0gd7r7jg7a8spkmw08492n7rmiabcvz880xn2z8dkp8i6h93"; authors = [ "Andrew Gallant " ]; @@ -1718,14 +1658,15 @@ rec { }; "bumpalo" = rec { crateName = "bumpalo"; - version = "3.16.0"; + version = "3.19.0"; edition = "2021"; - sha256 = "0b015qb4knwanbdlp1x48pkb4pm57b8gidbhhhxr900q2wb6fabr"; + sha256 = "0hsdndvcpqbjb85ghrhska2qxvp9i75q2vb70hma9fxqawdy9ia6"; authors = [ "Nick Fitzgerald " ]; features = { "allocator-api2" = [ "dep:allocator-api2" ]; + "bench_allocator_api" = [ "allocator_api" "blink-alloc/nightly" ]; "serde" = [ "dep:serde" ]; }; resolvedDefaultFeatures = [ "default" ]; @@ -1760,9 +1701,9 @@ rec { }; "cc" = rec { crateName = "cc"; - version = "1.1.15"; + version = "1.2.29"; edition = "2018"; - sha256 = "1rn62w58ba1ylqlp3saj4n0vh1h40ii1r83xr06p80r9m9ss5djp"; + sha256 = "0qlkaspjmywvjyfqhpv2x4kwrqs6b69zg33wfi2l8fg2im9rj5aw"; authors = [ "Alex Crichton " ]; @@ -1796,24 +1737,33 @@ rec { }; "cfg-if" = rec { crateName = "cfg-if"; - version = "1.0.0"; + version = "1.0.1"; edition = "2018"; - sha256 = "1za0vb97n4brpzpv8lsbnzmq5r8f2b0cpqqr0sy8h5bn751xxwds"; + sha256 = "0s0jr5j797q1vqjcd41l0v5izlmlqm7lxy512b418xz5r65mfmcm"; libName = "cfg_if"; authors = [ "Alex Crichton " ]; features = { - "compiler_builtins" = [ "dep:compiler_builtins" ]; "core" = [ "dep:core" ]; - "rustc-dep-of-std" = [ "core" "compiler_builtins" ]; + "rustc-dep-of-std" = [ "core" ]; }; }; + "cfg_aliases" = rec { + crateName = "cfg_aliases"; + version = "0.2.1"; + edition = "2018"; + sha256 = "092pxdc1dbgjb6qvh83gk56rkic2n2ybm4yvy76cgynmzi3zwfk1"; + authors = [ + "Zicklag " + ]; + + }; "chrono" = rec { crateName = "chrono"; - version = "0.4.38"; + version = "0.4.41"; edition = "2021"; - sha256 = "009l8vc5p8750vn02z30mblg4pv2qhkbfizhfwmzc6vpy5nr67x2"; + sha256 = "0k8wy2mph0mgipq28vv3wirivhb31pqs7jyid0dzjivz0i9djsf4"; dependencies = [ { name = "android-tzdata"; @@ -1840,8 +1790,8 @@ rec { usesDefaultFeatures = false; } { - name = "windows-targets"; - packageId = "windows-targets 0.52.6"; + name = "windows-link"; + packageId = "windows-link"; optional = true; target = { target, features }: (target."windows" or false); } @@ -1865,10 +1815,10 @@ rec { "unstable-locales" = [ "pure-rust-locales" ]; "wasm-bindgen" = [ "dep:wasm-bindgen" ]; "wasmbind" = [ "wasm-bindgen" "js-sys" ]; - "winapi" = [ "windows-targets" ]; - "windows-targets" = [ "dep:windows-targets" ]; + "winapi" = [ "windows-link" ]; + "windows-link" = [ "dep:windows-link" ]; }; - resolvedDefaultFeatures = [ "alloc" "android-tzdata" "clock" "iana-time-zone" "now" "serde" "std" "winapi" "windows-targets" ]; + resolvedDefaultFeatures = [ "alloc" "android-tzdata" "clock" "iana-time-zone" "now" "serde" "std" "winapi" "windows-link" ]; }; "chrono-tz" = rec { crateName = "chrono-tz"; @@ -2032,10 +1982,10 @@ rec { }; "clap" = rec { crateName = "clap"; - version = "4.5.35"; + version = "4.5.41"; edition = "2021"; crateBin = []; - sha256 = "0i1rnz7mwbhs5qf10r6vmrkplkzm3477khkwz189rha49f9qdanq"; + sha256 = "1ydd3a22bxkn2a7bajnw57cwjhawqciyhz2x3rqm8fi4h0pd74my"; dependencies = [ { name = "clap_builder"; @@ -2074,9 +2024,9 @@ rec { }; "clap_builder" = rec { crateName = "clap_builder"; - version = "4.5.35"; + version = "4.5.41"; edition = "2021"; - sha256 = "1nczcw6cc49ap99nn3v3n0vrv7j74zin34palq6ji586vnrdn514"; + sha256 = "0g8w6da5y13kv93psl8c00c7f4q01753wmwx84wr2bv2x50snzkh"; dependencies = [ { name = "anstream"; @@ -2113,9 +2063,9 @@ rec { }; "clap_complete" = rec { crateName = "clap_complete"; - version = "4.5.24"; + version = "4.5.55"; edition = "2021"; - sha256 = "16zspf5dwksj8dybqmjfg0581ca2a2m0bk9wing681f2m3nbczbd"; + sha256 = "16i2qv263ndlmnms4vyzdqiqd7y4cqdqz3wbpv2p1bvd912dxax5"; dependencies = [ { name = "clap"; @@ -2134,17 +2084,17 @@ rec { ]; features = { "debug" = [ "clap/debug" ]; - "unstable-command" = [ "unstable-dynamic" "dep:unicode-xid" "clap/derive" "dep:is_executable" "clap/unstable-ext" ]; - "unstable-doc" = [ "unstable-dynamic" "unstable-command" ]; + "unstable-doc" = [ "unstable-dynamic" ]; "unstable-dynamic" = [ "dep:clap_lex" "dep:shlex" "dep:is_executable" "clap/unstable-ext" ]; + "unstable-shell-tests" = [ "dep:completest" "dep:completest-pty" ]; }; resolvedDefaultFeatures = [ "default" ]; }; "clap_complete_nushell" = rec { crateName = "clap_complete_nushell"; - version = "4.5.4"; + version = "4.5.8"; edition = "2021"; - sha256 = "0xvnl61gnc3j76b9y50y35zvg7fls30i7lyb43fmsvncj3kh4n9i"; + sha256 = "1kixnzc8rjqjhk189s1jjvg24v21d1ymj7a2knzna7k9jhb9a30a"; dependencies = [ { name = "clap"; @@ -2172,9 +2122,9 @@ rec { }; "clap_derive" = rec { crateName = "clap_derive"; - version = "4.5.32"; + version = "4.5.41"; edition = "2021"; - sha256 = "1mqcag8qapb5yhygg2hi153kzmbf7w5hqp3nl3fvl5cn4yp6l5q9"; + sha256 = "14glxqpfjs7z6m37f3ycrhgdkpyqmgwbr4vk1y34rjjrd8w54kzg"; procMacro = true; dependencies = [ { @@ -2191,7 +2141,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.87"; + packageId = "syn 2.0.104"; features = [ "full" ]; } ]; @@ -2204,16 +2154,16 @@ rec { }; "clap_lex" = rec { crateName = "clap_lex"; - version = "0.7.4"; + version = "0.7.5"; edition = "2021"; - sha256 = "19nwfls5db269js5n822vkc8dw0wjq2h1wf0hgr06ld2g52d2spl"; + sha256 = "0xb6pjza43irrl99axbhs12pxq4sr8x7xd36p703j57f5i3n2kxr"; }; "clap_mangen" = rec { crateName = "clap_mangen"; - version = "0.2.23"; + version = "0.2.28"; edition = "2021"; - sha256 = "1ssfnb9fihhdf3xjlxslhqsrnlc4h8v8vkag4zildspv9pyiax7i"; + sha256 = "1c8xq57x588if8i3sz3spjh7hpk5rzkv0a0m74crifsvjcznvyz2"; dependencies = [ { name = "clap"; @@ -2241,16 +2191,16 @@ rec { }; "colorchoice" = rec { crateName = "colorchoice"; - version = "1.0.2"; + version = "1.0.4"; edition = "2021"; - sha256 = "1h18ph538y8yjmbpaf8li98l0ifms2xmh3rax9666c5qfjfi3zfk"; + sha256 = "0x8ymkz1xr77rcj1cfanhf416pc4v681gmkc9dzb3jqja7f62nxh"; }; "comfy-table" = rec { crateName = "comfy-table"; - version = "7.1.1"; + version = "7.1.4"; edition = "2021"; - sha256 = "1xsjhi63kkzm05im0jwz0z2gprbicz7c5xdgnaczxpipaf8iahdk"; + sha256 = "16hxb4pa404r5h7570p58h3yx684sqbshi79j1phn6gvqkzfnraa"; libName = "comfy_table"; authors = [ "Arne Beer " @@ -2263,7 +2213,7 @@ rec { } { name = "console"; - packageId = "console"; + packageId = "console 0.15.11"; optional = true; } { @@ -2282,28 +2232,21 @@ rec { features = [ "windows" ]; } { - name = "strum"; - packageId = "strum 0.26.3"; - } - { - name = "strum_macros"; - packageId = "strum_macros 0.26.4"; + name = "unicode-segmentation"; + packageId = "unicode-segmentation"; } { name = "unicode-width"; - packageId = "unicode-width 0.1.13"; + packageId = "unicode-width 0.2.1"; } ]; features = { - "ansi-str" = [ "dep:ansi-str" ]; - "console" = [ "dep:console" ]; - "crossterm" = [ "dep:crossterm" ]; - "custom_styling" = [ "ansi-str" "console" "tty" ]; + "custom_styling" = [ "dep:ansi-str" "dep:console" "tty" ]; "default" = [ "tty" ]; "reexport_crossterm" = [ "tty" ]; - "tty" = [ "crossterm" ]; + "tty" = [ "dep:crossterm" ]; }; - resolvedDefaultFeatures = [ "ansi-str" "console" "crossterm" "custom_styling" "default" "tty" ]; + resolvedDefaultFeatures = [ "custom_styling" "default" "tty" ]; }; "concurrent-queue" = rec { crateName = "concurrent-queue"; @@ -2330,11 +2273,11 @@ rec { }; resolvedDefaultFeatures = [ "std" ]; }; - "console" = rec { + "console 0.15.11" = rec { crateName = "console"; - version = "0.15.8"; - edition = "2018"; - sha256 = "1sz4nl9nz8pkmapqni6py7jxzi7nzqjxzb3ya4kxvmkb0zy867qf"; + version = "0.15.11"; + edition = "2021"; + sha256 = "1n5gmsjk6isbnw6qss043377kln20lfwlmdk3vswpwpr21dwnk05"; authors = [ "Armin Ronacher " ]; @@ -2344,22 +2287,22 @@ rec { packageId = "encode_unicode"; target = { target, features }: (target."windows" or false); } - { - name = "lazy_static"; - packageId = "lazy_static"; - } { name = "libc"; packageId = "libc"; } + { + name = "once_cell"; + packageId = "once_cell"; + } { name = "unicode-width"; - packageId = "unicode-width 0.1.13"; + packageId = "unicode-width 0.2.1"; optional = true; } { name = "windows-sys"; - packageId = "windows-sys 0.52.0"; + packageId = "windows-sys 0.59.0"; target = { target, features }: (target."windows" or false); features = [ "Win32_Foundation" "Win32_System_Console" "Win32_Storage_FileSystem" "Win32_UI_Input_KeyboardAndMouse" ]; } @@ -2371,6 +2314,47 @@ rec { }; resolvedDefaultFeatures = [ "ansi-parsing" "default" "unicode-width" ]; }; + "console 0.16.0" = rec { + crateName = "console"; + version = "0.16.0"; + edition = "2021"; + sha256 = "17f6rgdjz29wdgf4sld4bi6fa370y8hxh4slqss67jxwxgbww29f"; + dependencies = [ + { + name = "encode_unicode"; + packageId = "encode_unicode"; + target = { target, features }: (target."windows" or false); + } + { + name = "libc"; + packageId = "libc"; + optional = true; + } + { + name = "once_cell"; + packageId = "once_cell"; + optional = true; + } + { + name = "unicode-width"; + packageId = "unicode-width 0.2.1"; + optional = true; + } + { + name = "windows-sys"; + packageId = "windows-sys 0.60.2"; + target = { target, features }: (target."windows" or false); + features = [ "Win32_Foundation" "Win32_System_Console" "Win32_Storage_FileSystem" "Win32_UI_Input_KeyboardAndMouse" ]; + } + ]; + features = { + "default" = [ "unicode-width" "ansi-parsing" "std" ]; + "std" = [ "dep:libc" "dep:once_cell" "alloc" ]; + "unicode-width" = [ "dep:unicode-width" ]; + "windows-console-colors" = [ "ansi-parsing" ]; + }; + resolvedDefaultFeatures = [ "alloc" "ansi-parsing" "std" "unicode-width" ]; + }; "const_format" = rec { crateName = "const_format"; version = "0.2.34"; @@ -2455,7 +2439,36 @@ rec { "random" = [ "rand" ]; }; }; - "core-foundation" = rec { + "core-foundation 0.10.1" = rec { + crateName = "core-foundation"; + version = "0.10.1"; + edition = "2021"; + sha256 = "1xjns6dqf36rni2x9f47b65grxwdm20kwdg9lhmzdrrkwadcv9mj"; + libName = "core_foundation"; + authors = [ + "The Servo Project Developers" + ]; + dependencies = [ + { + name = "core-foundation-sys"; + packageId = "core-foundation-sys"; + usesDefaultFeatures = false; + } + { + name = "libc"; + packageId = "libc"; + } + ]; + features = { + "default" = [ "link" ]; + "link" = [ "core-foundation-sys/link" ]; + "mac_os_10_7_support" = [ "core-foundation-sys/mac_os_10_7_support" ]; + "mac_os_10_8_features" = [ "core-foundation-sys/mac_os_10_8_features" ]; + "with-uuid" = [ "dep:uuid" ]; + }; + resolvedDefaultFeatures = [ "default" "link" ]; + }; + "core-foundation 0.9.4" = rec { crateName = "core-foundation"; version = "0.9.4"; edition = "2018"; @@ -2503,9 +2516,9 @@ rec { }; "cpufeatures" = rec { crateName = "cpufeatures"; - version = "0.2.13"; + version = "0.2.17"; edition = "2018"; - sha256 = "1b89kljf7phyh63vxwsvf9lbgwkv0dsj7pcjmqgysnwsvkk55s2i"; + sha256 = "10023dnnaghhdl70xcds12fsx2b966sxbxjq5sxs49mvxqw5ivar"; authors = [ "RustCrypto Developers" ]; @@ -2513,21 +2526,25 @@ rec { { name = "libc"; packageId = "libc"; + usesDefaultFeatures = false; target = { target, features }: (stdenv.hostPlatform.rust.rustcTarget == "aarch64-linux-android"); } { name = "libc"; packageId = "libc"; + usesDefaultFeatures = false; target = { target, features }: (("aarch64" == target."arch" or null) && ("linux" == target."os" or null)); } { name = "libc"; packageId = "libc"; + usesDefaultFeatures = false; target = { target, features }: (("aarch64" == target."arch" or null) && ("apple" == target."vendor" or null)); } { name = "libc"; packageId = "libc"; + usesDefaultFeatures = false; target = { target, features }: (("loongarch64" == target."arch" or null) && ("linux" == target."os" or null)); } ]; @@ -2535,9 +2552,9 @@ rec { }; "crc32fast" = rec { crateName = "crc32fast"; - version = "1.4.2"; - edition = "2015"; - sha256 = "1czp7vif73b8xslr3c9yxysmh9ws2r8824qda7j47ffs9pcnjxx9"; + version = "1.5.0"; + edition = "2021"; + sha256 = "04d51liy8rbssra92p0qnwjw8i9rm9c4m3bwy19wjamz1k4w30cl"; authors = [ "Sam Rijs " "Alex Crichton " @@ -2555,9 +2572,9 @@ rec { }; "crossbeam-channel" = rec { crateName = "crossbeam-channel"; - version = "0.5.13"; + version = "0.5.15"; edition = "2021"; - sha256 = "1wkx45r34v7g3wyi3lg2wz536lrrrab4h4hh741shfhr8rlhsj1k"; + sha256 = "1cicd9ins0fkpfgvz9vhz3m9rpkh6n8d3437c3wnfsdkd3wgif42"; libName = "crossbeam_channel"; dependencies = [ { @@ -2574,9 +2591,9 @@ rec { }; "crossbeam-deque" = rec { crateName = "crossbeam-deque"; - version = "0.8.5"; + version = "0.8.6"; edition = "2021"; - sha256 = "03bp38ljx4wj6vvy4fbhx41q8f585zyqix6pncz1mkz93z08qgv1"; + sha256 = "0l9f1saqp1gn5qy0rxvkmz4m6n7fc0b3dbm6q1r5pmgpnyvi3lcx"; libName = "crossbeam_deque"; dependencies = [ { @@ -2620,9 +2637,9 @@ rec { }; "crossbeam-utils" = rec { crateName = "crossbeam-utils"; - version = "0.8.20"; + version = "0.8.21"; edition = "2021"; - sha256 = "100fksq5mm1n7zj242cclkw6yf7a4a8ix3lvpfkhxvdhbda9kv12"; + sha256 = "0a3aa2bmc8q35fb67432w16wvi54sfmb69rk9h5bhd18vw0c99fh"; libName = "crossbeam_utils"; features = { "default" = [ "std" ]; @@ -2632,16 +2649,16 @@ rec { }; "crossterm" = rec { crateName = "crossterm"; - version = "0.27.0"; + version = "0.28.1"; edition = "2021"; - sha256 = "1pr413ki440xgddlmkrc4j1bfx1h8rpmll87zn8ykja1bm2gwxpl"; + sha256 = "1im9vs6fvkql0sr378dfr4wdm1rrkrvr22v4i8byz05k1dd9b7c2"; authors = [ "T. Post" ]; dependencies = [ { name = "bitflags"; - packageId = "bitflags 2.6.0"; + packageId = "bitflags"; } { name = "crossterm_winapi"; @@ -2649,19 +2666,21 @@ rec { optional = true; target = { target, features }: (target."windows" or false); } - { - name = "libc"; - packageId = "libc"; - target = { target, features }: (target."unix" or false); - } { name = "parking_lot"; packageId = "parking_lot"; } { - name = "winapi"; - packageId = "winapi"; - optional = true; + name = "rustix"; + packageId = "rustix"; + usesDefaultFeatures = false; + target = { target, features }: (target."unix" or false); + features = [ "std" "stdio" "termios" ]; + } + { + name = "winapi"; + packageId = "winapi"; + optional = true; target = { target, features }: (target."windows" or false); features = [ "winuser" "winerror" ]; } @@ -2671,8 +2690,9 @@ rec { "event-stream" = [ "dep:futures-core" "events" ]; "events" = [ "dep:mio" "dep:signal-hook" "dep:signal-hook-mio" ]; "filedescriptor" = [ "dep:filedescriptor" ]; + "libc" = [ "dep:libc" ]; "serde" = [ "dep:serde" "bitflags/serde" ]; - "use-dev-tty" = [ "filedescriptor" ]; + "use-dev-tty" = [ "filedescriptor" "rustix/process" ]; "windows" = [ "dep:winapi" "dep:crossterm_winapi" ]; }; resolvedDefaultFeatures = [ "windows" ]; @@ -2723,9 +2743,9 @@ rec { }; "darling" = rec { crateName = "darling"; - version = "0.20.10"; + version = "0.20.11"; edition = "2021"; - sha256 = "1299h2z88qn71mizhh05j26yr3ik0wnqmw11ijds89l8i9nbhqvg"; + sha256 = "1vmlphlrlw4f50z16p4bc9p5qwdni1ba95qmxfrrmzs6dh8lczzw"; authors = [ "Ted Driggs " ]; @@ -2748,9 +2768,9 @@ rec { }; "darling_core" = rec { crateName = "darling_core"; - version = "0.20.10"; + version = "0.20.11"; edition = "2021"; - sha256 = "1rgr9nci61ahnim93yh3xy6fkfayh7sk4447hahawah3m1hkh4wm"; + sha256 = "0bj1af6xl4ablnqbgn827m43b8fiicgv180749f5cphqdmcvj00d"; authors = [ "Ted Driggs " ]; @@ -2778,7 +2798,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.87"; + packageId = "syn 2.0.104"; features = [ "full" "extra-traits" ]; } ]; @@ -2790,9 +2810,9 @@ rec { }; "darling_macro" = rec { crateName = "darling_macro"; - version = "0.20.10"; + version = "0.20.11"; edition = "2021"; - sha256 = "01kq3ibbn47czijj39h3vxyw0c2ksd0jvc097smcrk7n2jjs4dnk"; + sha256 = "1bbfbc2px6sj1pqqq97bgqn6c8xdnb2fmz66f7f40nrqrcybjd7w"; procMacro = true; authors = [ "Ted Driggs " @@ -2808,16 +2828,16 @@ rec { } { name = "syn"; - packageId = "syn 2.0.87"; + packageId = "syn 2.0.104"; } ]; }; "data-encoding" = rec { crateName = "data-encoding"; - version = "2.6.0"; + version = "2.9.0"; edition = "2018"; - sha256 = "1qnn68n4vragxaxlkqcb1r28d3hhj43wch67lm4rpxlw89wnjmp8"; + sha256 = "0xm46371aw613ghc12ay4vsnn49hpcmcwlijnqy8lbp2bpd308ra"; libName = "data_encoding"; authors = [ "Julien Cretin " @@ -2830,9 +2850,9 @@ rec { }; "delegate" = rec { crateName = "delegate"; - version = "0.13.3"; + version = "0.13.4"; edition = "2018"; - sha256 = "088d919b991lz5bj5k989ab33dzjsi8pdx8whsbnzlmy5cy4idmr"; + sha256 = "0sz2gl4079alymdws9s3zakgm6y4n76kay8slqxnm0vcylnahy31"; procMacro = true; authors = [ "Godfrey Chan " @@ -2849,7 +2869,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.87"; + packageId = "syn 2.0.104"; features = [ "full" "visit-mut" ]; } ]; @@ -2857,9 +2877,9 @@ rec { }; "deranged" = rec { crateName = "deranged"; - version = "0.3.11"; + version = "0.4.0"; edition = "2021"; - sha256 = "1d1ibqqnr5qdrpw8rclwrf1myn3wf0dygl04idf4j2s49ah6yaxl"; + sha256 = "13h6skwk411wzhf1l9l7d3yz5y6vg9d7s3dwhhb4a942r88nm7lw"; authors = [ "Jacob Pratt " ]; @@ -2873,10 +2893,13 @@ rec { ]; features = { "default" = [ "std" ]; + "macros" = [ "dep:deranged-macros" ]; "num" = [ "dep:num-traits" ]; "powerfmt" = [ "dep:powerfmt" ]; "quickcheck" = [ "dep:quickcheck" "alloc" ]; - "rand" = [ "dep:rand" ]; + "rand" = [ "rand08" "rand09" ]; + "rand08" = [ "dep:rand08" ]; + "rand09" = [ "dep:rand09" ]; "serde" = [ "dep:serde" ]; "std" = [ "alloc" ]; }; @@ -2884,9 +2907,9 @@ rec { }; "derive_arbitrary" = rec { crateName = "derive_arbitrary"; - version = "1.3.2"; + version = "1.4.1"; edition = "2021"; - sha256 = "04bnd985frl81r5sgixgpvncnnj1bfpfnd7qvdx1aahnqi9pbrv7"; + sha256 = "000839h4mbgs65x1f8540kbjk2ifw68c4d8r5b9f7q0jv4d2qm1h"; procMacro = true; authors = [ "The Rust-Fuzz Project Developers" @@ -2906,17 +2929,17 @@ rec { } { name = "syn"; - packageId = "syn 2.0.87"; - features = [ "derive" "parsing" ]; + packageId = "syn 2.0.104"; + features = [ "derive" "parsing" "extra-traits" ]; } ]; }; "deunicode" = rec { crateName = "deunicode"; - version = "1.6.0"; + version = "1.6.2"; edition = "2021"; - sha256 = "006gnml4jy3m03yqma8qvx7kl9i2bw667za9f7yc6k9ckv64959k"; + sha256 = "013biy7hhy59jcbry4dqn2pf4qhaw083ksn8xxiw373wjc37imdb"; authors = [ "Kornel Lesinski " "Amit Chowdhury " @@ -3030,7 +3053,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.87"; + packageId = "syn 2.0.104"; } ]; features = { @@ -3109,9 +3132,9 @@ rec { }; "dyn-clone" = rec { crateName = "dyn-clone"; - version = "1.0.17"; + version = "1.0.19"; edition = "2018"; - sha256 = "09cig7dgg6jnqa10p4233nd8wllbjf4ffsw7wj0m4lwa5w3z0vhd"; + sha256 = "01ahm5abl20480v48nxy4ffyx80cs6263q9zf0gnrxpvm6w8yyhw"; libName = "dyn_clone"; authors = [ "David Tolnay " @@ -3144,13 +3167,13 @@ rec { } { name = "syn"; - packageId = "syn 2.0.87"; + packageId = "syn 2.0.104"; } ]; devDependencies = [ { name = "syn"; - packageId = "syn 2.0.87"; + packageId = "syn 2.0.104"; features = [ "full" ]; } ]; @@ -3162,38 +3185,38 @@ rec { }; "either" = rec { crateName = "either"; - version = "1.13.0"; - edition = "2018"; - sha256 = "1w2c1mybrd7vljyxk77y9f4w9dyjrmp3yp82mk7bcm8848fazcb0"; + version = "1.15.0"; + edition = "2021"; + sha256 = "069p1fknsmzn9llaizh77kip0pqmcwpdsykv2x30xpjyija5gis8"; authors = [ "bluss" ]; features = { - "default" = [ "use_std" ]; + "default" = [ "std" ]; "serde" = [ "dep:serde" ]; + "use_std" = [ "std" ]; }; - resolvedDefaultFeatures = [ "default" "use_std" ]; + resolvedDefaultFeatures = [ "default" "std" "use_std" ]; }; "encode_unicode" = rec { crateName = "encode_unicode"; - version = "0.3.6"; - edition = "2015"; - sha256 = "07w3vzrhxh9lpjgsg2y5bwzfar2aq35mdznvcp3zjl0ssj7d4mx3"; + version = "1.0.0"; + edition = "2021"; + sha256 = "1h5j7j7byi289by63s3w4a8b3g6l5ccdrws7a67nn07vdxj77ail"; authors = [ "Torbjørn Birch Moltu " ]; features = { "ascii" = [ "dep:ascii" ]; - "clippy" = [ "dep:clippy" ]; "default" = [ "std" ]; }; resolvedDefaultFeatures = [ "default" "std" ]; }; "encoding_rs" = rec { crateName = "encoding_rs"; - version = "0.8.34"; + version = "0.8.35"; edition = "2018"; - sha256 = "0nagpi1rjqdpvakymwmnlxzq908ncg868lml5b70n08bm82fjpdl"; + sha256 = "1wv64xdrr9v37rqqdjsyb8l8wzlcbab80ryxhrszvnj59wy0y0vm"; authors = [ "Henri Sivonen " ]; @@ -3223,7 +3246,7 @@ rec { dependencies = [ { name = "thiserror"; - packageId = "thiserror 1.0.63"; + packageId = "thiserror 1.0.69"; } ]; @@ -3267,7 +3290,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.87"; + packageId = "syn 2.0.104"; } ]; features = { @@ -3275,18 +3298,19 @@ rec { }; "equivalent" = rec { crateName = "equivalent"; - version = "1.0.1"; + version = "1.0.2"; edition = "2015"; - sha256 = "1malmx5f4lkfvqasz319lq6gb3ddg19yzf9s8cykfsgzdmyq0hsl"; + sha256 = "03swzqznragy8n0x31lqc78g2af054jwivp7lkrbrc0khz74lyl7"; }; "errno" = rec { crateName = "errno"; - version = "0.3.9"; + version = "0.3.13"; edition = "2018"; - sha256 = "1fi0m0493maq1jygcf1bya9cymz2pc1mqxj26bdv7yjd37v5qk2k"; + sha256 = "1bd5g3srn66zr3bspac0150bvpg1s7zi6zwhwhlayivciz12m3kp"; authors = [ "Chris Wong " + "Dan Gohman " ]; dependencies = [ { @@ -3309,7 +3333,7 @@ rec { } { name = "windows-sys"; - packageId = "windows-sys 0.52.0"; + packageId = "windows-sys 0.60.2"; target = { target, features }: (target."windows" or false); features = [ "Win32_Foundation" "Win32_System_Diagnostics_Debug" ]; } @@ -3322,9 +3346,9 @@ rec { }; "event-listener" = rec { crateName = "event-listener"; - version = "5.3.1"; + version = "5.4.0"; edition = "2021"; - sha256 = "1fkm6q4hjn61wl52xyqyyxai0x9w0ngrzi0wf1qsf8vhsadvwck0"; + sha256 = "1bii2gn3vaa33s0gr2zph7cagiq0ppcfxcxabs24ri9z9kgar4il"; libName = "event_listener"; authors = [ "Stjepan Glavina " @@ -3348,6 +3372,7 @@ rec { } ]; features = { + "critical-section" = [ "dep:critical-section" ]; "default" = [ "std" ]; "loom" = [ "concurrent-queue/loom" "parking?/loom" "dep:loom" ]; "parking" = [ "dep:parking" ]; @@ -3360,9 +3385,9 @@ rec { }; "event-listener-strategy" = rec { crateName = "event-listener-strategy"; - version = "0.5.2"; + version = "0.5.4"; edition = "2021"; - sha256 = "18f5ri227khkayhv3ndv7yl4rnasgwksl2jhwgafcxzr7324s88g"; + sha256 = "14rv18av8s7n8yixg38bxp5vg2qs394rl1w052by5npzmbgz7scb"; libName = "event_listener_strategy"; authors = [ "John Nunley " @@ -3380,6 +3405,8 @@ rec { ]; features = { "default" = [ "std" ]; + "loom" = [ "event-listener/loom" ]; + "portable-atomic" = [ "event-listener/portable-atomic" ]; "std" = [ "event-listener/std" ]; }; resolvedDefaultFeatures = [ "default" "std" ]; @@ -3402,13 +3429,13 @@ rec { } { name = "regex-automata"; - packageId = "regex-automata 0.4.7"; + packageId = "regex-automata 0.4.9"; usesDefaultFeatures = false; features = [ "alloc" "syntax" "meta" "nfa" "dfa" "hybrid" ]; } { name = "regex-syntax"; - packageId = "regex-syntax 0.8.4"; + packageId = "regex-syntax 0.8.5"; usesDefaultFeatures = false; } ]; @@ -3434,13 +3461,13 @@ rec { "js" = [ "std" "getrandom" ]; "std" = [ "alloc" ]; }; - resolvedDefaultFeatures = [ "alloc" "std" ]; + resolvedDefaultFeatures = [ "alloc" "default" "std" ]; }; "flate2" = rec { crateName = "flate2"; - version = "1.0.33"; + version = "1.1.2"; edition = "2018"; - sha256 = "0lzj9cmr1pcwrgr4nnxjihnksqhxmygcqqdqcjnhbvslh3k1njij"; + sha256 = "07abz7v50lkdr5fjw8zaw2v8gm2vbppc0f7nqm8x3v3gb6wpsgaa"; authors = [ "Alex Crichton " "Josh Triplett " @@ -3452,14 +3479,14 @@ rec { } { name = "miniz_oxide"; - packageId = "miniz_oxide 0.8.0"; + packageId = "miniz_oxide"; optional = true; usesDefaultFeatures = false; features = [ "with-alloc" ]; } { name = "miniz_oxide"; - packageId = "miniz_oxide 0.8.0"; + packageId = "miniz_oxide"; usesDefaultFeatures = false; target = { target, features }: (("wasm32" == target."arch" or null) && (!("emscripten" == target."os" or null))); features = [ "with-alloc" ]; @@ -3534,9 +3561,9 @@ rec { }; "futures" = rec { crateName = "futures"; - version = "0.3.30"; + version = "0.3.31"; edition = "2018"; - sha256 = "1c04g14bccmprwsvx2j9m2blhwrynq7vhl151lsvcv4gi0b6jp34"; + sha256 = "0xh8ddbkm9jy8kc5gbvjp9a4b6rqqxvc8471yb2qaz5wm2qhgg35"; dependencies = [ { name = "futures-channel"; @@ -3595,9 +3622,9 @@ rec { }; "futures-channel" = rec { crateName = "futures-channel"; - version = "0.3.30"; + version = "0.3.31"; edition = "2018"; - sha256 = "0y6b7xxqdjm9hlcjpakcg41qfl7lihf6gavk8fyqijsxhvbzgj7a"; + sha256 = "040vpqpqlbk099razq8lyn74m0f161zd0rp36hciqrwcg2zibzrd"; libName = "futures_channel"; dependencies = [ { @@ -3623,9 +3650,9 @@ rec { }; "futures-core" = rec { crateName = "futures-core"; - version = "0.3.30"; + version = "0.3.31"; edition = "2018"; - sha256 = "07aslayrn3lbggj54kci0ishmd1pr367fp7iks7adia1p05miinz"; + sha256 = "0gk6yrxgi5ihfanm2y431jadrll00n5ifhnpx090c2f2q1cr1wh5"; libName = "futures_core"; features = { "default" = [ "std" ]; @@ -3636,9 +3663,9 @@ rec { }; "futures-executor" = rec { crateName = "futures-executor"; - version = "0.3.30"; + version = "0.3.31"; edition = "2018"; - sha256 = "07dh08gs9vfll2h36kq32q9xd86xm6lyl9xikmmwlkqnmrrgqxm5"; + sha256 = "17vcci6mdfzx4gbk0wx64chr2f13wwwpvyf3xd5fb1gmjzcx2a0y"; libName = "futures_executor"; dependencies = [ { @@ -3667,9 +3694,9 @@ rec { }; "futures-io" = rec { crateName = "futures-io"; - version = "0.3.30"; + version = "0.3.31"; edition = "2018"; - sha256 = "1hgh25isvsr4ybibywhr4dpys8mjnscw4wfxxwca70cn1gi26im4"; + sha256 = "1ikmw1yfbgvsychmsihdkwa8a1knank2d9a8dk01mbjar9w1np4y"; libName = "futures_io"; features = { "default" = [ "std" ]; @@ -3678,9 +3705,9 @@ rec { }; "futures-macro" = rec { crateName = "futures-macro"; - version = "0.3.30"; + version = "0.3.31"; edition = "2018"; - sha256 = "1b49qh9d402y8nka4q6wvvj0c88qq91wbr192mdn5h54nzs0qxc7"; + sha256 = "0l1n7kqzwwmgiznn0ywdc5i24z72zvh9q1dwps54mimppi7f6bhn"; procMacro = true; libName = "futures_macro"; dependencies = [ @@ -3694,7 +3721,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.87"; + packageId = "syn 2.0.104"; features = [ "full" ]; } ]; @@ -3702,9 +3729,9 @@ rec { }; "futures-sink" = rec { crateName = "futures-sink"; - version = "0.3.30"; + version = "0.3.31"; edition = "2018"; - sha256 = "1dag8xyyaya8n8mh8smx7x6w2dpmafg2din145v973a3hw7f1f4z"; + sha256 = "1xyly6naq6aqm52d5rh236snm08kw8zadydwqz8bip70s6vzlxg5"; libName = "futures_sink"; features = { "default" = [ "std" ]; @@ -3714,9 +3741,9 @@ rec { }; "futures-task" = rec { crateName = "futures-task"; - version = "0.3.30"; + version = "0.3.31"; edition = "2018"; - sha256 = "013h1724454hj8qczp8vvs10qfiqrxr937qsrv6rhii68ahlzn1q"; + sha256 = "124rv4n90f5xwfsm9qw6y99755y021cmi5dhzh253s920z77s3zr"; libName = "futures_task"; features = { "default" = [ "std" ]; @@ -3741,9 +3768,9 @@ rec { }; "futures-util" = rec { crateName = "futures-util"; - version = "0.3.30"; + version = "0.3.31"; edition = "2018"; - sha256 = "0j0xqhcir1zf2dcbpd421kgw6wvsk0rpxflylcysn1rlp3g02r1x"; + sha256 = "10aa1ar8bgkgbr4wzxlidkqkcxf77gffyj8j7768h831pcaq784z"; libName = "futures_util"; dependencies = [ { @@ -3853,11 +3880,11 @@ rec { }; resolvedDefaultFeatures = [ "more_lengths" ]; }; - "getrandom 0.2.15" = rec { + "getrandom 0.2.16" = rec { crateName = "getrandom"; - version = "0.2.15"; + version = "0.2.16"; edition = "2018"; - sha256 = "1mzlnrb3dgyd1fb84gvw10pyr8wdqdl4ry4sr64i1s8an66pqmn4"; + sha256 = "14l5aaia20cc6cc08xdlhrzmfcylmrnprwnna20lqf746pqzjprk"; authors = [ "The Rand Project Developers" ]; @@ -3866,6 +3893,12 @@ rec { name = "cfg-if"; packageId = "cfg-if"; } + { + name = "js-sys"; + packageId = "js-sys"; + optional = true; + target = { target, features }: ((("wasm32" == target."arch" or null) || ("wasm64" == target."arch" or null)) && ("unknown" == target."os" or null)); + } { name = "libc"; packageId = "libc"; @@ -3874,10 +3907,17 @@ rec { } { name = "wasi"; - packageId = "wasi 0.11.0+wasi-snapshot-preview1"; + packageId = "wasi 0.11.1+wasi-snapshot-preview1"; usesDefaultFeatures = false; target = { target, features }: ("wasi" == target."os" or null); } + { + name = "wasm-bindgen"; + packageId = "wasm-bindgen"; + optional = true; + usesDefaultFeatures = false; + target = { target, features }: ((("wasm32" == target."arch" or null) || ("wasm64" == target."arch" or null)) && ("unknown" == target."os" or null)); + } ]; features = { "compiler_builtins" = [ "dep:compiler_builtins" ]; @@ -3887,13 +3927,13 @@ rec { "rustc-dep-of-std" = [ "compiler_builtins" "core" "libc/rustc-dep-of-std" "wasi/rustc-dep-of-std" ]; "wasm-bindgen" = [ "dep:wasm-bindgen" ]; }; - resolvedDefaultFeatures = [ "std" ]; + resolvedDefaultFeatures = [ "js" "js-sys" "std" "wasm-bindgen" ]; }; - "getrandom 0.3.2" = rec { + "getrandom 0.3.3" = rec { crateName = "getrandom"; - version = "0.3.2"; + version = "0.3.3"; edition = "2021"; - sha256 = "1w2mlixa1989v7czr68iji7h67yra2pbg3s480wsqjza1r2sizkk"; + sha256 = "1x6jl875zp6b2b6qp9ghc84b0l76bvng2lvm8zfcmwjl7rb5w516"; authors = [ "The Rand Project Developers" ]; @@ -3902,6 +3942,13 @@ rec { name = "cfg-if"; packageId = "cfg-if"; } + { + name = "js-sys"; + packageId = "js-sys"; + optional = true; + usesDefaultFeatures = false; + target = { target, features }: (("wasm32" == target."arch" or null) && (("unknown" == target."os" or null) || ("none" == target."os" or null)) && (builtins.elem "atomics" targetFeatures)); + } { name = "libc"; packageId = "libc"; @@ -3962,18 +4009,25 @@ rec { usesDefaultFeatures = false; target = { target, features }: (("wasm32" == target."arch" or null) && ("wasi" == target."os" or null) && ("p2" == target."env" or null)); } + { + name = "wasm-bindgen"; + packageId = "wasm-bindgen"; + optional = true; + usesDefaultFeatures = false; + target = { target, features }: (("wasm32" == target."arch" or null) && (("unknown" == target."os" or null) || ("none" == target."os" or null))); + } ]; features = { "rustc-dep-of-std" = [ "dep:compiler_builtins" "dep:core" ]; "wasm_js" = [ "dep:wasm-bindgen" "dep:js-sys" ]; }; - resolvedDefaultFeatures = [ "std" ]; + resolvedDefaultFeatures = [ "std" "wasm_js" ]; }; "gimli" = rec { crateName = "gimli"; - version = "0.29.0"; + version = "0.31.1"; edition = "2018"; - sha256 = "1zgzprnjaawmg6zyic4f2q2hc39kdhn116qnkqpgvsasgc3x9v20"; + sha256 = "0gvqc0ramx8szv76jhfd4dms0zyamvlg4whhiz11j34hh3dqxqh7"; features = { "default" = [ "read-all" "write" ]; "endian-reader" = [ "read" "dep:stable_deref_trait" ]; @@ -3988,9 +4042,9 @@ rec { }; "glob" = rec { crateName = "glob"; - version = "0.3.1"; + version = "0.3.2"; edition = "2015"; - sha256 = "16zca52nglanv23q5qrwd5jinw3d3as5ylya6y1pbx47vkxvrynj"; + sha256 = "1cm2w34b5w45fxr522h5b0fv1bxchfswcj560m3pnjbia7asvld8"; authors = [ "The Rust Project Developers" ]; @@ -3998,9 +4052,9 @@ rec { }; "globset" = rec { crateName = "globset"; - version = "0.4.14"; + version = "0.4.16"; edition = "2021"; - sha256 = "1qab0c1drpybgm4nc92lf8b46x0ap44c9y4k23rndgc5bfdkpnjp"; + sha256 = "1xa9ivqs74imf1q288spxh49g6iw2mn3x9snibdgapazzj6h58al"; authors = [ "Andrew Gallant " ]; @@ -4022,13 +4076,13 @@ rec { } { name = "regex-automata"; - packageId = "regex-automata 0.4.7"; + packageId = "regex-automata 0.4.9"; usesDefaultFeatures = false; features = [ "std" "perf" "syntax" "meta" "nfa" "hybrid" ]; } { name = "regex-syntax"; - packageId = "regex-syntax 0.8.4"; + packageId = "regex-syntax 0.8.5"; usesDefaultFeatures = false; features = [ "std" ]; } @@ -4052,7 +4106,7 @@ rec { dependencies = [ { name = "bitflags"; - packageId = "bitflags 2.6.0"; + packageId = "bitflags"; } { name = "ignore"; @@ -4103,9 +4157,9 @@ rec { }; "h2" = rec { crateName = "h2"; - version = "0.4.6"; + version = "0.4.11"; edition = "2021"; - sha256 = "01cjblya9zxyadvxcmgcv2bk9r9pyc8l8bbchjdg88clk738lkjj"; + sha256 = "118771sqbsa6cn48y9waxq24jx80f5xy8af0lq5ixq7ifsi51nhp"; authors = [ "Carl Lerche " "Sean McArthur " @@ -4139,7 +4193,7 @@ rec { } { name = "indexmap"; - packageId = "indexmap 2.5.0"; + packageId = "indexmap 2.10.0"; features = [ "std" ]; } { @@ -4195,35 +4249,11 @@ rec { }; resolvedDefaultFeatures = [ "raw" ]; }; - "hashbrown 0.14.5" = rec { - crateName = "hashbrown"; - version = "0.14.5"; - edition = "2021"; - sha256 = "1wa1vy1xs3mp11bn3z9dv0jricgr6a2j0zkf1g19yz3vw4il89z5"; - authors = [ - "Amanieu d'Antras " - ]; - features = { - "ahash" = [ "dep:ahash" ]; - "alloc" = [ "dep:alloc" ]; - "allocator-api2" = [ "dep:allocator-api2" ]; - "compiler_builtins" = [ "dep:compiler_builtins" ]; - "core" = [ "dep:core" ]; - "default" = [ "ahash" "inline-more" "allocator-api2" ]; - "equivalent" = [ "dep:equivalent" ]; - "nightly" = [ "allocator-api2?/nightly" "bumpalo/allocator_api" ]; - "rayon" = [ "dep:rayon" ]; - "rkyv" = [ "dep:rkyv" ]; - "rustc-dep-of-std" = [ "nightly" "core" "compiler_builtins" "alloc" "rustc-internal-api" ]; - "serde" = [ "dep:serde" ]; - }; - resolvedDefaultFeatures = [ "raw" ]; - }; - "hashbrown 0.15.2" = rec { + "hashbrown 0.15.4" = rec { crateName = "hashbrown"; - version = "0.15.2"; + version = "0.15.4"; edition = "2021"; - sha256 = "12dj0yfn59p3kh3679ac0w1fagvzf4z2zp87a13gbbqbzw0185dz"; + sha256 = "1mg045sm1nm00cwjm7ndi80hcmmv1v3z7gnapxyhd9qxc62sqwar"; authors = [ "Amanieu d'Antras " ]; @@ -4251,30 +4281,29 @@ rec { features = { "alloc" = [ "dep:alloc" ]; "allocator-api2" = [ "dep:allocator-api2" ]; - "compiler_builtins" = [ "dep:compiler_builtins" ]; "core" = [ "dep:core" ]; "default" = [ "default-hasher" "inline-more" "allocator-api2" "equivalent" "raw-entry" ]; "default-hasher" = [ "dep:foldhash" ]; "equivalent" = [ "dep:equivalent" ]; - "nightly" = [ "allocator-api2?/nightly" "bumpalo/allocator_api" ]; + "nightly" = [ "bumpalo/allocator_api" ]; "rayon" = [ "dep:rayon" ]; - "rustc-dep-of-std" = [ "nightly" "core" "compiler_builtins" "alloc" "rustc-internal-api" "raw-entry" ]; + "rustc-dep-of-std" = [ "nightly" "core" "alloc" "rustc-internal-api" ]; "serde" = [ "dep:serde" ]; }; resolvedDefaultFeatures = [ "allocator-api2" "default" "default-hasher" "equivalent" "inline-more" "raw-entry" ]; }; "headers" = rec { crateName = "headers"; - version = "0.4.0"; - edition = "2015"; - sha256 = "1abari69kjl2yv2dg06g2x17qgd1a20xp7aqmmg2vfhcppk0c89j"; + version = "0.4.1"; + edition = "2018"; + sha256 = "1sr4zygaq1b2f0k7b5l8vx5vp05wvd82w7vpavgvr52xvdd4scdk"; authors = [ "Sean McArthur " ]; dependencies = [ { name = "base64"; - packageId = "base64 0.21.7"; + packageId = "base64"; } { name = "bytes"; @@ -4349,41 +4378,24 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.4"; + packageId = "snafu 0.8.6"; features = [ "futures" ]; } ]; }; - "hermit-abi" = rec { - crateName = "hermit-abi"; - version = "0.3.9"; - edition = "2021"; - sha256 = "092hxjbjnq5fmz66grd9plxd0sh6ssg5fhgwwwqbrzgzkjwdycfj"; - libName = "hermit_abi"; - authors = [ - "Stefan Lankes" - ]; - features = { - "alloc" = [ "dep:alloc" ]; - "compiler_builtins" = [ "dep:compiler_builtins" ]; - "core" = [ "dep:core" ]; - "rustc-dep-of-std" = [ "core" "alloc" "compiler_builtins/rustc-dep-of-std" ]; - }; - resolvedDefaultFeatures = [ "default" ]; - }; "home" = rec { crateName = "home"; - version = "0.5.9"; + version = "0.5.11"; edition = "2021"; - sha256 = "19grxyg35rqfd802pcc9ys1q3lafzlcjcv2pl2s5q8xpyr5kblg3"; + sha256 = "1kxb4k87a9sayr8jipr7nq9wpgmjk4hk4047hmf9kc24692k75aq"; authors = [ "Brian Anderson " ]; dependencies = [ { name = "windows-sys"; - packageId = "windows-sys 0.52.0"; + packageId = "windows-sys 0.59.0"; target = { target, features }: (target."windows" or false); features = [ "Win32_Foundation" "Win32_UI_Shell" "Win32_System_Com" ]; } @@ -4417,9 +4429,9 @@ rec { }; "http" = rec { crateName = "http"; - version = "1.1.0"; + version = "1.3.1"; edition = "2018"; - sha256 = "0n426lmcxas6h75c2cp25m933pswlrfjz10v91vc62vib2sdvf91"; + sha256 = "0r95i5h7dr1xadp1ac9453w0s62s27hzkam356nyx2d9mqqmva7l"; authors = [ "Alex Crichton " "Carl Lerche " @@ -4469,9 +4481,9 @@ rec { }; "http-body-util" = rec { crateName = "http-body-util"; - version = "0.1.2"; + version = "0.1.3"; edition = "2018"; - sha256 = "0kslwazg4400qnc2azkrgqqci0fppv12waicnsy5d8hncvbjjd3r"; + sha256 = "0jm6jv4gxsnlsi1kzdyffjrj8cfr3zninnxpw73mvkxy4qzdj8dh"; libName = "http_body_util"; authors = [ "Carl Lerche " @@ -4484,8 +4496,8 @@ rec { packageId = "bytes"; } { - name = "futures-util"; - packageId = "futures-util"; + name = "futures-core"; + packageId = "futures-core"; usesDefaultFeatures = false; } { @@ -4501,13 +4513,17 @@ rec { packageId = "pin-project-lite"; } ]; - + features = { + "channel" = [ "dep:tokio" ]; + "full" = [ "channel" ]; + }; + resolvedDefaultFeatures = [ "default" ]; }; "httparse" = rec { crateName = "httparse"; - version = "1.9.4"; + version = "1.10.1"; edition = "2018"; - sha256 = "1nc2s1pziq5ncl39xm7ybdhpnw5xsm505smqirr0py2v2550pk0g"; + sha256 = "11ycd554bw2dkgw0q61xsa7a4jn1wb1xbfacmf3dbwsikvkkvgvd"; authors = [ "Sean McArthur " ]; @@ -4652,9 +4668,9 @@ rec { }; "hyper-http-proxy" = rec { crateName = "hyper-http-proxy"; - version = "1.0.0"; + version = "1.1.0"; edition = "2021"; - sha256 = "195r0x68m2mgcc8rawbc0plsm9w4lrqhlm7vqsbdjd6gpbgxn1jx"; + sha256 = "023w7w9si4zs5phfj30g3dkkk713ipix10dsqj5h443mwfhv1m3s"; libName = "hyper_http_proxy"; authors = [ "MetalBear Tech LTD " @@ -4699,7 +4715,7 @@ rec { } { name = "rustls-native-certs"; - packageId = "rustls-native-certs"; + packageId = "rustls-native-certs 0.7.3"; optional = true; } { @@ -4750,16 +4766,11 @@ rec { }; "hyper-rustls" = rec { crateName = "hyper-rustls"; - version = "0.27.2"; + version = "0.27.7"; edition = "2021"; - sha256 = "0ma1wyfnqnkz7zyr7wpply3xfvlijd0rqqhb6ajs28c9jhnbxr2y"; + sha256 = "0n6g8998szbzhnvcs1b7ibn745grxiqmlpg53xz206v826v3xjg3"; libName = "hyper_rustls"; dependencies = [ - { - name = "futures-util"; - packageId = "futures-util"; - usesDefaultFeatures = false; - } { name = "http"; packageId = "http"; @@ -4787,7 +4798,7 @@ rec { } { name = "rustls-native-certs"; - packageId = "rustls-native-certs"; + packageId = "rustls-native-certs 0.8.1"; optional = true; } { @@ -4880,7 +4891,7 @@ rec { } { name = "thiserror"; - packageId = "thiserror 1.0.63"; + packageId = "thiserror 1.0.69"; } { name = "tokio"; @@ -4915,9 +4926,9 @@ rec { }; "hyper-timeout" = rec { crateName = "hyper-timeout"; - version = "0.5.1"; + version = "0.5.2"; edition = "2018"; - sha256 = "14rpyv9zz0ncadn9qgmnjz0hiqk3nav7hglkk1a6yfy8wmhsj0rj"; + sha256 = "1c431l5ckr698248yd6bnsmizjy2m1da02cbpmsnmkpvpxkdb41b"; libName = "hyper_timeout"; authors = [ "Herman J. Radtke III " @@ -4951,6 +4962,11 @@ rec { packageId = "hyper"; features = [ "http1" ]; } + { + name = "hyper-util"; + packageId = "hyper-util"; + features = [ "client-legacy" "http1" "server" "server-graceful" ]; + } { name = "tokio"; packageId = "tokio"; @@ -4961,14 +4977,19 @@ rec { }; "hyper-util" = rec { crateName = "hyper-util"; - version = "0.1.11"; + version = "0.1.15"; edition = "2021"; - sha256 = "1wj3svb1r6yv6kgk5fsz6wwajmngc4zxcw4wxpwlmpbgl8rvqys9"; + sha256 = "1pyi2h8idwyadljs95gpihjvkfkmcxi5vn7s882vy0kg9jyxarkz"; libName = "hyper_util"; authors = [ "Sean McArthur " ]; dependencies = [ + { + name = "base64"; + packageId = "base64"; + optional = true; + } { name = "bytes"; packageId = "bytes"; @@ -4978,9 +4999,14 @@ rec { packageId = "futures-channel"; optional = true; } + { + name = "futures-core"; + packageId = "futures-core"; + } { name = "futures-util"; packageId = "futures-util"; + optional = true; usesDefaultFeatures = false; } { @@ -4995,11 +5021,21 @@ rec { name = "hyper"; packageId = "hyper"; } + { + name = "ipnet"; + packageId = "ipnet"; + optional = true; + } { name = "libc"; packageId = "libc"; optional = true; } + { + name = "percent-encoding"; + packageId = "percent-encoding"; + optional = true; + } { name = "pin-project-lite"; packageId = "pin-project-lite"; @@ -5034,6 +5070,12 @@ rec { name = "bytes"; packageId = "bytes"; } + { + name = "futures-util"; + packageId = "futures-util"; + usesDefaultFeatures = false; + features = [ "alloc" ]; + } { name = "hyper"; packageId = "hyper"; @@ -5047,24 +5089,26 @@ rec { ]; features = { "client" = [ "hyper/client" "dep:tracing" "dep:futures-channel" "dep:tower-service" ]; - "client-legacy" = [ "client" "dep:socket2" "tokio/sync" "dep:libc" ]; - "full" = [ "client" "client-legacy" "server" "server-auto" "server-graceful" "service" "http1" "http2" "tokio" "tracing" ]; + "client-legacy" = [ "client" "dep:socket2" "tokio/sync" "dep:libc" "dep:futures-util" ]; + "client-proxy" = [ "client" "dep:base64" "dep:ipnet" "dep:percent-encoding" ]; + "client-proxy-system" = [ "dep:system-configuration" "dep:windows-registry" ]; + "full" = [ "client" "client-legacy" "client-proxy" "client-proxy-system" "server" "server-auto" "server-graceful" "service" "http1" "http2" "tokio" "tracing" ]; "http1" = [ "hyper/http1" ]; "http2" = [ "hyper/http2" ]; "server" = [ "hyper/server" ]; "server-auto" = [ "server" "http1" "http2" ]; - "server-graceful" = [ "server" "tokio/sync" "futures-util/alloc" ]; + "server-graceful" = [ "server" "tokio/sync" ]; "service" = [ "dep:tower-service" ]; "tokio" = [ "dep:tokio" "tokio/net" "tokio/rt" "tokio/time" ]; "tracing" = [ "dep:tracing" ]; }; - resolvedDefaultFeatures = [ "client" "client-legacy" "default" "http1" "http2" "server" "server-auto" "service" "tokio" ]; + resolvedDefaultFeatures = [ "client" "client-legacy" "client-proxy" "default" "http1" "http2" "server" "server-auto" "service" "tokio" ]; }; "iana-time-zone" = rec { crateName = "iana-time-zone"; - version = "0.1.60"; - edition = "2018"; - sha256 = "0hdid5xz3jznm04lysjm3vi93h3c523w0hcc3xba47jl3ddbpzz7"; + version = "0.1.63"; + edition = "2021"; + sha256 = "1n171f5lbc7bryzmp1h30zw86zbvl5480aq02z92lcdwvvjikjdh"; libName = "iana_time_zone"; authors = [ "Andrew Straw " @@ -5080,7 +5124,7 @@ rec { { name = "core-foundation-sys"; packageId = "core-foundation-sys"; - target = { target, features }: (("macos" == target."os" or null) || ("ios" == target."os" or null)); + target = { target, features }: ("apple" == target."vendor" or null); } { name = "iana-time-zone-haiku"; @@ -5090,12 +5134,17 @@ rec { { name = "js-sys"; packageId = "js-sys"; - target = { target, features }: ("wasm32" == target."arch" or null); + target = { target, features }: (("wasm32" == target."arch" or null) && ("unknown" == target."os" or null)); + } + { + name = "log"; + packageId = "log"; + target = { target, features }: (("wasm32" == target."arch" or null) && ("unknown" == target."os" or null)); } { name = "wasm-bindgen"; packageId = "wasm-bindgen"; - target = { target, features }: ("wasm32" == target."arch" or null); + target = { target, features }: (("wasm32" == target."arch" or null) && ("unknown" == target."os" or null)); } { name = "windows-core"; @@ -5124,94 +5173,429 @@ rec { ]; }; - "ident_case" = rec { - crateName = "ident_case"; - version = "1.0.1"; - edition = "2015"; - sha256 = "0fac21q6pwns8gh1hz3nbq15j8fi441ncl6w4vlnd1cmc55kiq5r"; + "icu_collections" = rec { + crateName = "icu_collections"; + version = "2.0.0"; + edition = "2021"; + sha256 = "0izfgypv1hsxlz1h8fc2aak641iyvkak16aaz5b4aqg3s3sp4010"; authors = [ - "Ted Driggs " + "The ICU4X Project Developers" ]; - + dependencies = [ + { + name = "displaydoc"; + packageId = "displaydoc"; + usesDefaultFeatures = false; + } + { + name = "potential_utf"; + packageId = "potential_utf"; + usesDefaultFeatures = false; + features = [ "zerovec" ]; + } + { + name = "yoke"; + packageId = "yoke"; + usesDefaultFeatures = false; + features = [ "derive" ]; + } + { + name = "zerofrom"; + packageId = "zerofrom"; + usesDefaultFeatures = false; + features = [ "derive" ]; + } + { + name = "zerovec"; + packageId = "zerovec"; + usesDefaultFeatures = false; + features = [ "derive" "yoke" ]; + } + ]; + features = { + "alloc" = [ "zerovec/alloc" ]; + "databake" = [ "dep:databake" "zerovec/databake" ]; + "serde" = [ "dep:serde" "zerovec/serde" "potential_utf/serde" "alloc" ]; + }; }; - "idna" = rec { - crateName = "idna"; - version = "0.5.0"; - edition = "2018"; - sha256 = "1xhjrcjqq0l5bpzvdgylvpkgk94panxgsirzhjnnqfdgc4a9nkb3"; + "icu_locale_core" = rec { + crateName = "icu_locale_core"; + version = "2.0.0"; + edition = "2021"; + sha256 = "02phv7vwhyx6vmaqgwkh2p4kc2kciykv2px6g4h8glxfrh02gphc"; authors = [ - "The rust-url developers" + "The ICU4X Project Developers" ]; dependencies = [ { - name = "unicode-bidi"; - packageId = "unicode-bidi"; + name = "displaydoc"; + packageId = "displaydoc"; + usesDefaultFeatures = false; + } + { + name = "litemap"; + packageId = "litemap"; + usesDefaultFeatures = false; + features = [ "alloc" ]; + } + { + name = "tinystr"; + packageId = "tinystr"; + usesDefaultFeatures = false; + features = [ "alloc" ]; + } + { + name = "writeable"; + packageId = "writeable"; usesDefaultFeatures = false; - features = [ "hardcoded-data" ]; } { - name = "unicode-normalization"; - packageId = "unicode-normalization"; + name = "zerovec"; + packageId = "zerovec"; + optional = true; usesDefaultFeatures = false; } ]; features = { - "default" = [ "std" ]; - "std" = [ "alloc" "unicode-bidi/std" "unicode-normalization/std" ]; + "databake" = [ "dep:databake" "alloc" ]; + "serde" = [ "dep:serde" "tinystr/serde" "alloc" ]; + "zerovec" = [ "dep:zerovec" "tinystr/zerovec" ]; }; - resolvedDefaultFeatures = [ "alloc" "default" "std" ]; + resolvedDefaultFeatures = [ "zerovec" ]; }; - "ignore" = rec { - crateName = "ignore"; - version = "0.4.22"; + "icu_normalizer" = rec { + crateName = "icu_normalizer"; + version = "2.0.0"; edition = "2021"; - sha256 = "1wcaqpi6djqgi1brghrdyw4d5qgnwzhqrqyn4mar4vp677gi0s5l"; + sha256 = "0ybrnfnxx4sf09gsrxri8p48qifn54il6n3dq2xxgx4dw7l80s23"; authors = [ - "Andrew Gallant " + "The ICU4X Project Developers" ]; dependencies = [ { - name = "crossbeam-deque"; - packageId = "crossbeam-deque"; - } - { - name = "globset"; - packageId = "globset"; + name = "displaydoc"; + packageId = "displaydoc"; + usesDefaultFeatures = false; } { - name = "log"; - packageId = "log"; + name = "icu_collections"; + packageId = "icu_collections"; + usesDefaultFeatures = false; } { - name = "memchr"; - packageId = "memchr"; + name = "icu_normalizer_data"; + packageId = "icu_normalizer_data"; + optional = true; + usesDefaultFeatures = false; } { - name = "regex-automata"; - packageId = "regex-automata 0.4.7"; + name = "icu_properties"; + packageId = "icu_properties"; + optional = true; usesDefaultFeatures = false; - features = [ "std" "perf" "syntax" "meta" "nfa" "hybrid" "dfa-onepass" ]; } { - name = "same-file"; - packageId = "same-file"; + name = "icu_provider"; + packageId = "icu_provider"; + usesDefaultFeatures = false; } { - name = "walkdir"; - packageId = "walkdir"; + name = "smallvec"; + packageId = "smallvec"; + usesDefaultFeatures = false; } { - name = "winapi-util"; - packageId = "winapi-util"; - target = { target, features }: (target."windows" or false); + name = "zerovec"; + packageId = "zerovec"; + usesDefaultFeatures = false; } ]; features = { + "compiled_data" = [ "dep:icu_normalizer_data" "icu_properties?/compiled_data" "icu_provider/baked" ]; + "datagen" = [ "serde" "dep:databake" "icu_properties" "icu_collections/databake" "zerovec/databake" "icu_properties?/datagen" "icu_provider/export" ]; + "default" = [ "compiled_data" "utf8_iter" "utf16_iter" ]; + "icu_properties" = [ "dep:icu_properties" ]; + "serde" = [ "dep:serde" "icu_collections/serde" "zerovec/serde" "icu_properties?/serde" "icu_provider/serde" ]; + "utf16_iter" = [ "dep:utf16_iter" "write16" ]; + "utf8_iter" = [ "dep:utf8_iter" ]; + "write16" = [ "dep:write16" ]; }; + resolvedDefaultFeatures = [ "compiled_data" ]; }; - "indexmap 1.9.3" = rec { - crateName = "indexmap"; - version = "1.9.3"; + "icu_normalizer_data" = rec { + crateName = "icu_normalizer_data"; + version = "2.0.0"; + edition = "2021"; + sha256 = "1lvjpzxndyhhjyzd1f6vi961gvzhj244nribfpdqxjdgjdl0s880"; + authors = [ + "The ICU4X Project Developers" + ]; + + }; + "icu_properties" = rec { + crateName = "icu_properties"; + version = "2.0.1"; + edition = "2021"; + sha256 = "0az349pjg8f18lrjbdmxcpg676a7iz2ibc09d2wfz57b3sf62v01"; + authors = [ + "The ICU4X Project Developers" + ]; + dependencies = [ + { + name = "displaydoc"; + packageId = "displaydoc"; + usesDefaultFeatures = false; + } + { + name = "icu_collections"; + packageId = "icu_collections"; + usesDefaultFeatures = false; + } + { + name = "icu_locale_core"; + packageId = "icu_locale_core"; + usesDefaultFeatures = false; + features = [ "zerovec" ]; + } + { + name = "icu_properties_data"; + packageId = "icu_properties_data"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "icu_provider"; + packageId = "icu_provider"; + usesDefaultFeatures = false; + } + { + name = "potential_utf"; + packageId = "potential_utf"; + usesDefaultFeatures = false; + features = [ "zerovec" ]; + } + { + name = "zerotrie"; + packageId = "zerotrie"; + usesDefaultFeatures = false; + features = [ "yoke" "zerofrom" ]; + } + { + name = "zerovec"; + packageId = "zerovec"; + usesDefaultFeatures = false; + features = [ "derive" "yoke" ]; + } + ]; + features = { + "alloc" = [ "zerovec/alloc" "icu_collections/alloc" ]; + "compiled_data" = [ "dep:icu_properties_data" "icu_provider/baked" ]; + "datagen" = [ "serde" "dep:databake" "potential_utf/databake" "zerovec/databake" "icu_collections/databake" "icu_locale_core/databake" "zerotrie/databake" "icu_provider/export" ]; + "default" = [ "compiled_data" ]; + "serde" = [ "dep:serde" "icu_locale_core/serde" "potential_utf/serde" "zerovec/serde" "icu_collections/serde" "icu_provider/serde" "zerotrie/serde" ]; + "unicode_bidi" = [ "dep:unicode-bidi" ]; + }; + resolvedDefaultFeatures = [ "compiled_data" ]; + }; + "icu_properties_data" = rec { + crateName = "icu_properties_data"; + version = "2.0.1"; + edition = "2021"; + sha256 = "0cnn3fkq6k88w7p86w7hsd1254s4sl783rpz4p6hlccq74a5k119"; + authors = [ + "The ICU4X Project Developers" + ]; + + }; + "icu_provider" = rec { + crateName = "icu_provider"; + version = "2.0.0"; + edition = "2021"; + sha256 = "1bz5v02gxv1i06yhdhs2kbwxkw3ny9r2vvj9j288fhazgfi0vj03"; + authors = [ + "The ICU4X Project Developers" + ]; + dependencies = [ + { + name = "displaydoc"; + packageId = "displaydoc"; + usesDefaultFeatures = false; + } + { + name = "icu_locale_core"; + packageId = "icu_locale_core"; + usesDefaultFeatures = false; + } + { + name = "stable_deref_trait"; + packageId = "stable_deref_trait"; + usesDefaultFeatures = false; + } + { + name = "tinystr"; + packageId = "tinystr"; + usesDefaultFeatures = false; + } + { + name = "writeable"; + packageId = "writeable"; + usesDefaultFeatures = false; + } + { + name = "yoke"; + packageId = "yoke"; + usesDefaultFeatures = false; + features = [ "alloc" "derive" ]; + } + { + name = "zerofrom"; + packageId = "zerofrom"; + usesDefaultFeatures = false; + features = [ "alloc" "derive" ]; + } + { + name = "zerotrie"; + packageId = "zerotrie"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "zerovec"; + packageId = "zerovec"; + usesDefaultFeatures = false; + features = [ "derive" ]; + } + ]; + features = { + "alloc" = [ "icu_locale_core/alloc" "zerovec/alloc" "zerotrie/alloc" ]; + "baked" = [ "zerotrie" ]; + "deserialize_bincode_1" = [ "serde" "dep:bincode" "std" ]; + "deserialize_json" = [ "serde" "dep:serde_json" ]; + "deserialize_postcard_1" = [ "serde" "dep:postcard" ]; + "export" = [ "serde" "dep:erased-serde" "dep:databake" "std" "sync" "dep:postcard" "zerovec/databake" ]; + "logging" = [ "dep:log" ]; + "serde" = [ "dep:serde" "yoke/serde" ]; + "std" = [ "alloc" ]; + "zerotrie" = [ "dep:zerotrie" ]; + }; + resolvedDefaultFeatures = [ "baked" "zerotrie" ]; + }; + "ident_case" = rec { + crateName = "ident_case"; + version = "1.0.1"; + edition = "2015"; + sha256 = "0fac21q6pwns8gh1hz3nbq15j8fi441ncl6w4vlnd1cmc55kiq5r"; + authors = [ + "Ted Driggs " + ]; + + }; + "idna" = rec { + crateName = "idna"; + version = "1.0.3"; + edition = "2018"; + sha256 = "0zlajvm2k3wy0ay8plr07w22hxkkmrxkffa6ah57ac6nci984vv8"; + authors = [ + "The rust-url developers" + ]; + dependencies = [ + { + name = "idna_adapter"; + packageId = "idna_adapter"; + } + { + name = "smallvec"; + packageId = "smallvec"; + features = [ "const_generics" ]; + } + { + name = "utf8_iter"; + packageId = "utf8_iter"; + } + ]; + features = { + "compiled_data" = [ "idna_adapter/compiled_data" ]; + "default" = [ "std" "compiled_data" ]; + "std" = [ "alloc" ]; + }; + resolvedDefaultFeatures = [ "alloc" "compiled_data" "std" ]; + }; + "idna_adapter" = rec { + crateName = "idna_adapter"; + version = "1.2.1"; + edition = "2021"; + sha256 = "0i0339pxig6mv786nkqcxnwqa87v4m94b2653f6k3aj0jmhfkjis"; + authors = [ + "The rust-url developers" + ]; + dependencies = [ + { + name = "icu_normalizer"; + packageId = "icu_normalizer"; + usesDefaultFeatures = false; + } + { + name = "icu_properties"; + packageId = "icu_properties"; + usesDefaultFeatures = false; + } + ]; + features = { + "compiled_data" = [ "icu_normalizer/compiled_data" "icu_properties/compiled_data" ]; + }; + resolvedDefaultFeatures = [ "compiled_data" ]; + }; + "ignore" = rec { + crateName = "ignore"; + version = "0.4.23"; + edition = "2021"; + sha256 = "0jysggjfmlxbg60vhhiz4pb8jfb7cnq5swdsvxknbs7x18wgv2bd"; + authors = [ + "Andrew Gallant " + ]; + dependencies = [ + { + name = "crossbeam-deque"; + packageId = "crossbeam-deque"; + } + { + name = "globset"; + packageId = "globset"; + } + { + name = "log"; + packageId = "log"; + } + { + name = "memchr"; + packageId = "memchr"; + } + { + name = "regex-automata"; + packageId = "regex-automata 0.4.9"; + usesDefaultFeatures = false; + features = [ "std" "perf" "syntax" "meta" "nfa" "hybrid" "dfa-onepass" ]; + } + { + name = "same-file"; + packageId = "same-file"; + } + { + name = "walkdir"; + packageId = "walkdir"; + } + { + name = "winapi-util"; + packageId = "winapi-util"; + target = { target, features }: (target."windows" or false); + } + ]; + features = { + }; + }; + "indexmap 1.9.3" = rec { + crateName = "indexmap"; + version = "1.9.3"; edition = "2021"; sha256 = "16dxmy7yvk51wvnih3a3im6fp5lmx0wx76i03n06wyak6cwhw1xx"; dependencies = [ @@ -5237,11 +5621,11 @@ rec { "serde-1" = [ "serde" ]; }; }; - "indexmap 2.5.0" = rec { + "indexmap 2.10.0" = rec { crateName = "indexmap"; - version = "2.5.0"; + version = "2.10.0"; edition = "2021"; - sha256 = "1r87dlvyg04fa9m4m6pkvwsdx54rx471fas66qff40bk5ym01fb8"; + sha256 = "0qd6g26gxzl6dbf132w48fa8rr95glly3jhbk90i29726d9xhk7y"; dependencies = [ { name = "equivalent"; @@ -5250,9 +5634,8 @@ rec { } { name = "hashbrown"; - packageId = "hashbrown 0.14.5"; + packageId = "hashbrown 0.15.4"; usesDefaultFeatures = false; - features = [ "raw" ]; } { name = "serde"; @@ -5267,26 +5650,21 @@ rec { "default" = [ "std" ]; "quickcheck" = [ "dep:quickcheck" ]; "rayon" = [ "dep:rayon" ]; - "rustc-rayon" = [ "dep:rustc-rayon" ]; "serde" = [ "dep:serde" ]; }; resolvedDefaultFeatures = [ "default" "serde" "std" ]; }; "indicatif" = rec { crateName = "indicatif"; - version = "0.17.11"; + version = "0.18.0"; edition = "2021"; - sha256 = "0db2b2r79r9x8x4lysq1ci9xm13c0xg0sqn3z960yh2bk2430fqq"; + sha256 = "1kg1wi3x9x15f22q99spfzcg5fzlmhcc5i6aqjxyssyh8vcld9kh"; dependencies = [ { name = "console"; - packageId = "console"; + packageId = "console 0.16.0"; usesDefaultFeatures = false; - features = [ "ansi-parsing" ]; - } - { - name = "number_prefix"; - packageId = "number_prefix"; + features = [ "ansi-parsing" "std" ]; } { name = "portable-atomic"; @@ -5294,9 +5672,13 @@ rec { } { name = "unicode-width"; - packageId = "unicode-width 0.2.0"; + packageId = "unicode-width 0.2.1"; optional = true; } + { + name = "unit-prefix"; + packageId = "unit-prefix"; + } { name = "vt100"; packageId = "vt100"; @@ -5323,9 +5705,9 @@ rec { }; "inout" = rec { crateName = "inout"; - version = "0.1.3"; + version = "0.1.4"; edition = "2021"; - sha256 = "1xf9gf09nc7y1a261xlfqsf66yn6mb81ahlzzyyd1934sr9hbhd0"; + sha256 = "008xfl1jn9rxsq19phnhbimccf4p64880jmnpg59wqi07kk117w7"; authors = [ "RustCrypto Developers" ]; @@ -5340,11 +5722,42 @@ rec { "std" = [ "block-padding/std" ]; }; }; + "io-uring" = rec { + crateName = "io-uring"; + version = "0.7.8"; + edition = "2021"; + sha256 = "04whnj5a4pml44jhsmmf4p87bpgr7swkcijx4yjcng8900pj0vmq"; + libName = "io_uring"; + authors = [ + "quininer " + ]; + dependencies = [ + { + name = "bitflags"; + packageId = "bitflags"; + } + { + name = "cfg-if"; + packageId = "cfg-if"; + } + { + name = "libc"; + packageId = "libc"; + usesDefaultFeatures = false; + } + ]; + features = { + "bindgen" = [ "dep:bindgen" ]; + "direct-syscall" = [ "sc" ]; + "overwrite" = [ "bindgen" ]; + "sc" = [ "dep:sc" ]; + }; + }; "ipnet" = rec { crateName = "ipnet"; - version = "2.9.0"; + version = "2.11.0"; edition = "2018"; - sha256 = "1hzrcysgwf0knf83ahb3535hrkw63mil88iqc6kjaryfblrqylcg"; + sha256 = "0c5i9sfi2asai28m8xp48k5gvwkqrg5ffpi767py6mzsrswv17s6"; authors = [ "Kris Price " ]; @@ -5358,6 +5771,39 @@ rec { }; resolvedDefaultFeatures = [ "default" "std" ]; }; + "iri-string" = rec { + crateName = "iri-string"; + version = "0.7.8"; + edition = "2021"; + sha256 = "1cl0wfq97wq4s1p4dl0ix5cfgsc5fn7l22ljgw9ab9x1qglypifv"; + libName = "iri_string"; + authors = [ + "YOSHIOKA Takuma " + ]; + dependencies = [ + { + name = "memchr"; + packageId = "memchr"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "serde"; + packageId = "serde"; + optional = true; + usesDefaultFeatures = false; + features = [ "derive" ]; + } + ]; + features = { + "alloc" = [ "serde?/alloc" ]; + "default" = [ "std" ]; + "memchr" = [ "dep:memchr" ]; + "serde" = [ "dep:serde" ]; + "std" = [ "alloc" "memchr?/std" "serde?/std" ]; + }; + resolvedDefaultFeatures = [ "alloc" "default" "std" ]; + }; "is_terminal_polyfill" = rec { crateName = "is_terminal_polyfill"; version = "1.70.1"; @@ -5410,9 +5856,9 @@ rec { }; "itoa" = rec { crateName = "itoa"; - version = "1.0.11"; + version = "1.0.15"; edition = "2018"; - sha256 = "0nv9cqjwzr3q58qz84dcz63ggc54yhf1yqar1m858m1kfd4g3wa9"; + sha256 = "0b4fj9kz54dr3wam0vprjwgygvycyw8r0qwg7vp19ly8b2w16psa"; authors = [ "David Tolnay " ]; @@ -5447,20 +5893,30 @@ rec { }; "js-sys" = rec { crateName = "js-sys"; - version = "0.3.70"; + version = "0.3.77"; edition = "2021"; - sha256 = "0yp3rz7vrn9mmqdpkds426r1p9vs6i8mkxx8ryqdfadr0s2q0s0q"; + sha256 = "13x2qcky5l22z4xgivi59xhjjx4kxir1zg7gcj0f1ijzd4yg7yhw"; libName = "js_sys"; authors = [ "The wasm-bindgen Developers" ]; dependencies = [ + { + name = "once_cell"; + packageId = "once_cell"; + usesDefaultFeatures = false; + } { name = "wasm-bindgen"; packageId = "wasm-bindgen"; + usesDefaultFeatures = false; } ]; - + features = { + "default" = [ "std" ]; + "std" = [ "wasm-bindgen/std" ]; + }; + resolvedDefaultFeatures = [ "default" "std" ]; }; "json-patch" = rec { crateName = "json-patch"; @@ -5487,7 +5943,7 @@ rec { } { name = "thiserror"; - packageId = "thiserror 1.0.63"; + packageId = "thiserror 1.0.69"; } ]; devDependencies = [ @@ -5585,7 +6041,7 @@ rec { dependencies = [ { name = "base64"; - packageId = "base64 0.22.1"; + packageId = "base64"; usesDefaultFeatures = false; features = [ "alloc" ]; } @@ -5651,7 +6107,7 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.4"; + packageId = "snafu 0.8.6"; } ]; features = { @@ -5746,7 +6202,7 @@ rec { dependencies = [ { name = "base64"; - packageId = "base64 0.22.1"; + packageId = "base64"; optional = true; } { @@ -5899,7 +6355,7 @@ rec { } { name = "tower-http"; - packageId = "tower-http 0.6.2"; + packageId = "tower-http 0.6.6"; optional = true; features = [ "auth" "map-response-body" "trace" ]; } @@ -6097,7 +6553,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.87"; + packageId = "syn 2.0.104"; features = [ "extra-traits" ]; } ]; @@ -6156,7 +6612,7 @@ rec { } { name = "hashbrown"; - packageId = "hashbrown 0.15.2"; + packageId = "hashbrown 0.15.4"; } { name = "hostname"; @@ -6248,9 +6704,9 @@ rec { }; "libc" = rec { crateName = "libc"; - version = "0.2.171"; + version = "0.2.174"; edition = "2021"; - sha256 = "1mipla3dy3l59pfa9xy4iw2vdgn8n30dzf4vdnasjflxdqhkg6f1"; + sha256 = "0xl7pqvw7g2874dy3kjady2fjr4rhj5lxsnxkkhr5689jcr6jw8i"; authors = [ "The Rust Project Developers" ]; @@ -6264,9 +6720,9 @@ rec { }; "libloading" = rec { crateName = "libloading"; - version = "0.8.5"; + version = "0.8.8"; edition = "2015"; - sha256 = "194dvczq4sifwkzllfmw0qkgvilpha7m5xy90gd6i446vcpz4ya9"; + sha256 = "0rw6q94psj3d6k0bi9nymqhyrz78lbdblryphhaszsw9p9ikj0q7"; authors = [ "Simonas Kazlauskas " ]; @@ -6278,7 +6734,7 @@ rec { } { name = "windows-targets"; - packageId = "windows-targets 0.52.6"; + packageId = "windows-targets 0.53.2"; target = { target, features }: (target."windows" or false); } ]; @@ -6286,30 +6742,30 @@ rec { }; "libm" = rec { crateName = "libm"; - version = "0.2.8"; - edition = "2018"; - sha256 = "0n4hk1rs8pzw8hdfmwn96c4568s93kfxqgcqswr7sajd2diaihjf"; + version = "0.2.15"; + edition = "2021"; + sha256 = "1plpzf0p829viazdj57yw5dhmlr8ywf3apayxc2f2bq5a6mvryzr"; authors = [ "Jorge Aparicio " ]; features = { - "musl-reference-tests" = [ "rand" ]; - "rand" = [ "dep:rand" ]; + "default" = [ "arch" ]; + "unstable" = [ "unstable-intrinsics" "unstable-float" ]; }; - resolvedDefaultFeatures = [ "default" ]; + resolvedDefaultFeatures = [ "arch" "default" ]; }; - "libredox 0.0.2" = rec { + "libredox" = rec { crateName = "libredox"; - version = "0.0.2"; + version = "0.1.4"; edition = "2021"; - sha256 = "01v6pb09j7dl2gnbvzz6zmy2k4zyxjjzvl7wacwjjffqsxajry9s"; + sha256 = "0f06ikfym363zrqy9llp4asgcbakz0aiq0ds0rkljdg52088100m"; authors = [ "4lDO2 <4lDO2@protonmail.com>" ]; dependencies = [ { name = "bitflags"; - packageId = "bitflags 2.6.0"; + packageId = "bitflags"; } { name = "libc"; @@ -6317,31 +6773,8 @@ rec { } { name = "redox_syscall"; - packageId = "redox_syscall 0.4.1"; - } - ]; - features = { - "default" = [ "call" ]; - "scheme" = [ "call" ]; - }; - resolvedDefaultFeatures = [ "call" "default" ]; - }; - "libredox 0.1.3" = rec { - crateName = "libredox"; - version = "0.1.3"; - edition = "2021"; - sha256 = "139602gzgs0k91zb7dvgj1qh4ynb8g1lbxsswdim18hcb6ykgzy0"; - authors = [ - "4lDO2 <4lDO2@protonmail.com>" - ]; - dependencies = [ - { - name = "bitflags"; - packageId = "bitflags 2.6.0"; - } - { - name = "libc"; - packageId = "libc"; + packageId = "redox_syscall"; + optional = true; } ]; features = { @@ -6350,13 +6783,13 @@ rec { "mkns" = [ "ioslice" ]; "redox_syscall" = [ "dep:redox_syscall" ]; }; - resolvedDefaultFeatures = [ "call" "std" ]; + resolvedDefaultFeatures = [ "call" "default" "redox_syscall" "std" ]; }; "linux-raw-sys" = rec { crateName = "linux-raw-sys"; - version = "0.4.14"; + version = "0.4.15"; edition = "2021"; - sha256 = "12gsjgbhhjwywpqcrizv80vrp7p7grsz5laqq773i33wphjsxcvq"; + sha256 = "1aq7r2g7786hyxhv40spzf2nhag5xbw2axxc1k8z5k1dsgdm4v6j"; libName = "linux_raw_sys"; authors = [ "Dan Gohman " @@ -6369,11 +6802,28 @@ rec { }; resolvedDefaultFeatures = [ "elf" "errno" "general" "ioctl" "no_std" ]; }; + "litemap" = rec { + crateName = "litemap"; + version = "0.8.0"; + edition = "2021"; + sha256 = "0mlrlskwwhirxk3wsz9psh6nxcy491n0dh8zl02qgj0jzpssw7i4"; + authors = [ + "The ICU4X Project Developers" + ]; + features = { + "databake" = [ "dep:databake" ]; + "default" = [ "alloc" ]; + "serde" = [ "dep:serde" "alloc" ]; + "testing" = [ "alloc" ]; + "yoke" = [ "dep:yoke" ]; + }; + resolvedDefaultFeatures = [ "alloc" ]; + }; "lock_api" = rec { crateName = "lock_api"; - version = "0.4.12"; + version = "0.4.13"; edition = "2021"; - sha256 = "05qvxa6g27yyva25a5ghsg85apdxkvr77yhkyhapj6r8vnf8pbq7"; + sha256 = "0rd73p4299mjwl4hhlfj9qr88v3r0kc8s1nszkfmnq2ky43nb4wn"; authors = [ "Amanieu d'Antras " ]; @@ -6399,9 +6849,9 @@ rec { }; "log" = rec { crateName = "log"; - version = "0.4.22"; + version = "0.4.27"; edition = "2021"; - sha256 = "093vs0wkm1rgyykk7fjbqp2lwizbixac1w52gv109p5r4jh0p9x7"; + sha256 = "150x589dqil307rv0rwj0jsgz5bjbwvl83gyl61jf873a7rjvp0k"; authors = [ "The Rust Project Developers" ]; @@ -6420,6 +6870,17 @@ rec { }; resolvedDefaultFeatures = [ "std" ]; }; + "lru-slab" = rec { + crateName = "lru-slab"; + version = "0.1.2"; + edition = "2021"; + sha256 = "0m2139k466qj3bnpk66bwivgcx3z88qkxvlzk70vd65jq373jaqi"; + libName = "lru_slab"; + authors = [ + "Benjamin Saunders " + ]; + + }; "matchers" = rec { crateName = "matchers"; version = "0.1.0"; @@ -6462,19 +6923,18 @@ rec { }; "memchr" = rec { crateName = "memchr"; - version = "2.7.4"; + version = "2.7.5"; edition = "2021"; - sha256 = "18z32bhxrax0fnjikv475z7ii718hq457qwmaryixfxsl2qrmjkq"; + sha256 = "1h2bh2jajkizz04fh047lpid5wgw2cr9igpkdhl3ibzscpd858ij"; authors = [ "Andrew Gallant " "bluss" ]; features = { - "compiler_builtins" = [ "dep:compiler_builtins" ]; "core" = [ "dep:core" ]; "default" = [ "std" ]; "logging" = [ "dep:log" ]; - "rustc-dep-of-std" = [ "core" "compiler_builtins" ]; + "rustc-dep-of-std" = [ "core" ]; "std" = [ "alloc" ]; "use_std" = [ "std" ]; }; @@ -6533,40 +6993,15 @@ rec { }; resolvedDefaultFeatures = [ "std" ]; }; - "miniz_oxide 0.7.4" = rec { - crateName = "miniz_oxide"; - version = "0.7.4"; - edition = "2018"; - sha256 = "024wv14aa75cvik7005s5y2nfc8zfidddbd7g55g7sjgnzfl18mq"; - authors = [ - "Frommi " - "oyvindln " - ]; - dependencies = [ - { - name = "adler"; - packageId = "adler"; - usesDefaultFeatures = false; - } - ]; - features = { - "alloc" = [ "dep:alloc" ]; - "compiler_builtins" = [ "dep:compiler_builtins" ]; - "core" = [ "dep:core" ]; - "default" = [ "with-alloc" ]; - "rustc-dep-of-std" = [ "core" "alloc" "compiler_builtins" "adler/rustc-dep-of-std" ]; - "simd" = [ "simd-adler32" ]; - "simd-adler32" = [ "dep:simd-adler32" ]; - }; - }; - "miniz_oxide 0.8.0" = rec { + "miniz_oxide" = rec { crateName = "miniz_oxide"; - version = "0.8.0"; + version = "0.8.9"; edition = "2021"; - sha256 = "1wadxkg6a6z4lr7kskapj5d8pxlx7cp1ifw4daqnkzqjxych5n72"; + sha256 = "05k3pdg8bjjzayq3rf0qhpirq9k37pxnasfn4arbs17phqn6m9qz"; authors = [ "Frommi " "oyvindln " + "Rich Geldreich richgel99@gmail.com" ]; dependencies = [ { @@ -6577,10 +7012,10 @@ rec { ]; features = { "alloc" = [ "dep:alloc" ]; - "compiler_builtins" = [ "dep:compiler_builtins" ]; "core" = [ "dep:core" ]; "default" = [ "with-alloc" ]; - "rustc-dep-of-std" = [ "core" "alloc" "compiler_builtins" "adler2/rustc-dep-of-std" ]; + "rustc-dep-of-std" = [ "core" "alloc" "adler2/rustc-dep-of-std" ]; + "serde" = [ "dep:serde" ]; "simd" = [ "simd-adler32" ]; "simd-adler32" = [ "dep:simd-adler32" ]; }; @@ -6588,9 +7023,9 @@ rec { }; "mio" = rec { crateName = "mio"; - version = "1.0.2"; + version = "1.0.4"; edition = "2021"; - sha256 = "1v1cnnn44awxbcfm4zlavwgkvbyg7gp5zzjm8mqf1apkrwflvq40"; + sha256 = "073n3kam3nz8j8had35fd2nn7j6a33pi3y5w3kq608cari2d9gkq"; authors = [ "Carl Lerche " "Thomas de Zeeuw " @@ -6598,9 +7033,8 @@ rec { ]; dependencies = [ { - name = "hermit-abi"; - packageId = "hermit-abi"; - rename = "libc"; + name = "libc"; + packageId = "libc"; target = { target, features }: ("hermit" == target."os" or null); } { @@ -6615,12 +7049,12 @@ rec { } { name = "wasi"; - packageId = "wasi 0.11.0+wasi-snapshot-preview1"; + packageId = "wasi 0.11.1+wasi-snapshot-preview1"; target = { target, features }: ("wasi" == target."os" or null); } { name = "windows-sys"; - packageId = "windows-sys 0.52.0"; + packageId = "windows-sys 0.59.0"; target = { target, features }: (target."windows" or false); features = [ "Wdk_Foundation" "Wdk_Storage_FileSystem" "Wdk_System_IO" "Win32_Foundation" "Win32_Networking_WinSock" "Win32_Storage_FileSystem" "Win32_System_IO" "Win32_System_WindowsProgramming" ]; } @@ -6632,6 +7066,69 @@ rec { }; resolvedDefaultFeatures = [ "net" "os-ext" "os-poll" ]; }; + "multer" = rec { + crateName = "multer"; + version = "3.1.0"; + edition = "2018"; + sha256 = "0jr2snfay5fjz50yvdja4vbnddlj1iriiqjym88pbj3daiv7gs43"; + authors = [ + "Rousan Ali " + ]; + dependencies = [ + { + name = "bytes"; + packageId = "bytes"; + } + { + name = "encoding_rs"; + packageId = "encoding_rs"; + } + { + name = "futures-util"; + packageId = "futures-util"; + usesDefaultFeatures = false; + } + { + name = "http"; + packageId = "http"; + } + { + name = "httparse"; + packageId = "httparse"; + } + { + name = "memchr"; + packageId = "memchr"; + } + { + name = "mime"; + packageId = "mime"; + } + { + name = "spin"; + packageId = "spin"; + usesDefaultFeatures = false; + features = [ "spin_mutex" ]; + } + ]; + buildDependencies = [ + { + name = "version_check"; + packageId = "version_check"; + } + ]; + features = { + "all" = [ "json" ]; + "json" = [ "serde" "serde_json" ]; + "log" = [ "dep:log" ]; + "serde" = [ "dep:serde" ]; + "serde_json" = [ "dep:serde_json" ]; + "tokio" = [ "dep:tokio" ]; + "tokio-io" = [ "tokio" "tokio-util" ]; + "tokio-util" = [ "dep:tokio-util" ]; + }; + resolvedDefaultFeatures = [ "default" ]; + }; "nom" = rec { crateName = "nom"; version = "7.1.3"; @@ -6721,9 +7218,9 @@ rec { }; "num_enum" = rec { crateName = "num_enum"; - version = "0.7.3"; + version = "0.7.4"; edition = "2021"; - sha256 = "0yai0vafhy85mvhknzfqd7lm04hzaln7i5c599rhy8mj831kyqaf"; + sha256 = "0ykvfah4ddfi2dwjcksc33j34i84kb7plycxwr6dijp69kjb8wx9"; authors = [ "Daniel Wagner-Hall " "Daniel Henry-Mantilla " @@ -6735,6 +7232,10 @@ rec { packageId = "num_enum_derive"; usesDefaultFeatures = false; } + { + name = "rustversion"; + packageId = "rustversion"; + } ]; features = { "complex-expressions" = [ "num_enum_derive/complex-expressions" ]; @@ -6745,9 +7246,9 @@ rec { }; "num_enum_derive" = rec { crateName = "num_enum_derive"; - version = "0.7.3"; + version = "0.7.4"; edition = "2021"; - sha256 = "0mksna1jj87ydh146gn6jcqkvvs920c3dgh0p4f3xk184kpl865g"; + sha256 = "03gr5218x4rs52kx4srx3jn1c6vmx3drd506vl0axax88v47is3p"; procMacro = true; authors = [ "Daniel Wagner-Hall " @@ -6770,14 +7271,14 @@ rec { } { name = "syn"; - packageId = "syn 2.0.87"; + packageId = "syn 2.0.104"; features = [ "parsing" ]; } ]; devDependencies = [ { name = "syn"; - packageId = "syn 2.0.87"; + packageId = "syn 2.0.104"; features = [ "extra-traits" "parsing" ]; } ]; @@ -6789,36 +7290,21 @@ rec { }; resolvedDefaultFeatures = [ "proc-macro-crate" "std" ]; }; - "number_prefix" = rec { - crateName = "number_prefix"; - version = "0.4.0"; - edition = "2015"; - sha256 = "1wvh13wvlajqxkb1filsfzbrnq0vrmrw298v2j3sy82z1rm282w3"; - authors = [ - "Benjamin Sago " - ]; - features = { - "default" = [ "std" ]; - }; - resolvedDefaultFeatures = [ "default" "std" ]; - }; "numtoa" = rec { crateName = "numtoa"; - version = "0.1.0"; + version = "0.2.4"; edition = "2015"; - sha256 = "1vs9rhggqbql1p26x8nkha1j06wawwgb2jp5fs88b5gi7prvvy5q"; + sha256 = "03yhkhjb3d1zx22m3pgcbpk8baj0zzvaxqc25c584sdq77jw98ka"; authors = [ "Michael Aaron Murphy " ]; - features = { - }; - resolvedDefaultFeatures = [ "std" ]; + }; "object" = rec { crateName = "object"; - version = "0.36.4"; + version = "0.36.7"; edition = "2018"; - sha256 = "02h7k38dwi8rndc3y81n6yjxijbss99p2jm9c0b6ak5c45c1lkq8"; + sha256 = "11vv97djn9nc5n6w1gc6bd96d2qk2c8cg1kw5km9bsi3v4a8x532"; dependencies = [ { name = "memchr"; @@ -6850,9 +7336,9 @@ rec { }; "once_cell" = rec { crateName = "once_cell"; - version = "1.19.0"; + version = "1.21.3"; edition = "2021"; - sha256 = "14kvw7px5z96dk4dwdm1r9cqhhy2cyj1l5n5b29mynbb8yr15nrz"; + sha256 = "0b9x77lb9f1j6nqgf5aka4s2qj0nly176bpbrv6f9iakk5ff3xa2"; authors = [ "Aleksey Kladov " ]; @@ -6867,11 +7353,20 @@ rec { }; resolvedDefaultFeatures = [ "alloc" "default" "race" "std" ]; }; + "once_cell_polyfill" = rec { + crateName = "once_cell_polyfill"; + version = "1.70.1"; + edition = "2021"; + sha256 = "1bg0w99srq8h4mkl68l1mza2n2f2hvrg0n8vfa3izjr5nism32d4"; + features = { + }; + resolvedDefaultFeatures = [ "default" ]; + }; "openssl-probe" = rec { crateName = "openssl-probe"; - version = "0.1.5"; - edition = "2015"; - sha256 = "1kq18qm48rvkwgcggfkqq6pm948190czqc94d6bm2sir5hq1l0gz"; + version = "0.1.6"; + edition = "2021"; + sha256 = "0bl52x55laalqb707k009h8kfawliwp992rlsvkzy49n47p2fpnh"; libName = "openssl_probe"; authors = [ "Alex Crichton " @@ -7362,9 +7857,9 @@ rec { }; "parking" = rec { crateName = "parking"; - version = "2.2.0"; + version = "2.2.1"; edition = "2018"; - sha256 = "1blwbkq6im1hfxp5wlbr475mw98rsyc0bbr2d5n16m38z253p0dv"; + sha256 = "1fnfgmzkfpjd69v4j9x737b1k8pnn054bvzcn5dm3pkgq595d3gk"; authors = [ "Stjepan Glavina " "The Rust Project Developers" @@ -7375,9 +7870,9 @@ rec { }; "parking_lot" = rec { crateName = "parking_lot"; - version = "0.12.3"; + version = "0.12.4"; edition = "2021"; - sha256 = "09ws9g6245iiq8z975h8ycf818a66q3c6zv4b5h8skpm7hc1igzi"; + sha256 = "04sab1c7304jg8k0d5b2pxbj1fvgzcf69l3n2mfpkdb96vs8pmbh"; authors = [ "Amanieu d'Antras " ]; @@ -7402,9 +7897,9 @@ rec { }; "parking_lot_core" = rec { crateName = "parking_lot_core"; - version = "0.9.10"; + version = "0.9.11"; edition = "2021"; - sha256 = "1y3cf9ld9ijf7i4igwzffcn0xl16dxyn4c5bwgjck1dkgabiyh0y"; + sha256 = "19g4d6m5k4ggacinqprnn8xvdaszc3y5smsmbz1adcdmaqm8v0xw"; authors = [ "Amanieu d'Antras " ]; @@ -7420,7 +7915,7 @@ rec { } { name = "redox_syscall"; - packageId = "redox_syscall 0.5.3"; + packageId = "redox_syscall"; target = { target, features }: ("redox" == target."os" or null); } { @@ -7458,16 +7953,16 @@ rec { }; "pem" = rec { crateName = "pem"; - version = "3.0.4"; + version = "3.0.5"; edition = "2021"; - sha256 = "1blgcn17wc41yxdzrxlsir5m6ds8r13ijmpsqda6lwwhwmjr6icf"; + sha256 = "1wwfk8sbyi9l18fvvn6z9p2gy7v7q7wimbhvrvixxj8a8zl3ibrq"; authors = [ "Jonathan Creekmore " ]; dependencies = [ { name = "base64"; - packageId = "base64 0.22.1"; + packageId = "base64"; usesDefaultFeatures = false; features = [ "alloc" ]; } @@ -7502,9 +7997,9 @@ rec { }; "pest" = rec { crateName = "pest"; - version = "2.7.11"; + version = "2.8.1"; edition = "2021"; - sha256 = "15cxh3nc7yibzjn6dbndjkbhadhkry60jdx83kf5ywr67zwdylyd"; + sha256 = "08s342r6vv6ml5in4jk7pb97wgpf0frcnrvg0sqshn23sdb5zc0x"; authors = [ "Dragoș Tiselice " ]; @@ -7516,7 +8011,7 @@ rec { } { name = "thiserror"; - packageId = "thiserror 1.0.63"; + packageId = "thiserror 2.0.12"; optional = true; } { @@ -7528,6 +8023,7 @@ rec { features = { "default" = [ "std" "memchr" ]; "memchr" = [ "dep:memchr" ]; + "miette-error" = [ "std" "pretty-print" "dep:miette" "dep:thiserror" ]; "pretty-print" = [ "dep:serde" "dep:serde_json" ]; "std" = [ "ucd-trie/std" "dep:thiserror" ]; }; @@ -7535,9 +8031,9 @@ rec { }; "pest_derive" = rec { crateName = "pest_derive"; - version = "2.7.11"; + version = "2.8.1"; edition = "2021"; - sha256 = "16p49072arqm45l6j5blisjshj45rxpx6m254hf3nxx6xhmqsm1a"; + sha256 = "1g20ma4y29axbjhi3z64ihhpqzmiix71qjn7bs224yd7isg6s1dv"; procMacro = true; authors = [ "Dragoș Tiselice " @@ -7564,9 +8060,9 @@ rec { }; "pest_generator" = rec { crateName = "pest_generator"; - version = "2.7.11"; + version = "2.8.1"; edition = "2021"; - sha256 = "10vi0wbrxih85pghd1y2vkpnka68hyl5wkplpbf2amqlilpai4rw"; + sha256 = "0rj9a20g4bjb4sl3zyzpxqg8mbn8c1kxp0nw08rfp0gp73k09r47"; authors = [ "Dragoș Tiselice " ]; @@ -7590,7 +8086,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.87"; + packageId = "syn 2.0.104"; } ]; features = { @@ -7603,17 +8099,13 @@ rec { }; "pest_meta" = rec { crateName = "pest_meta"; - version = "2.7.11"; + version = "2.8.1"; edition = "2021"; - sha256 = "0ksc295cyz9yxzsqvaaxfmmwrapzns2nfksyqbgbw23yxagl4hd9"; + sha256 = "1mf01iln7shbnyxpdfnpf59gzn83nndqjkwiw3yh6n8g2wgi1lgd"; authors = [ "Dragoș Tiselice " ]; dependencies = [ - { - name = "once_cell"; - packageId = "once_cell"; - } { name = "pest"; packageId = "pest"; @@ -7633,9 +8125,9 @@ rec { }; "phf" = rec { crateName = "phf"; - version = "0.11.2"; + version = "0.11.3"; edition = "2021"; - sha256 = "1p03rsw66l7naqhpgr1a34r9yzi1gv9jh16g3fsk6wrwyfwdiqmd"; + sha256 = "0y6hxp1d48rx2434wgi5g8j1pr8s5jja29ha2b65435fh057imhz"; authors = [ "Steven Fackler " ]; @@ -7659,9 +8151,9 @@ rec { }; "phf_codegen" = rec { crateName = "phf_codegen"; - version = "0.11.2"; + version = "0.11.3"; edition = "2021"; - sha256 = "0nia6h4qfwaypvfch3pnq1nd2qj64dif4a6kai3b7rjrsf49dlz8"; + sha256 = "0si1n6zr93kzjs3wah04ikw8z6npsr39jw4dam8yi9czg2609y5f"; authors = [ "Steven Fackler " ]; @@ -7679,10 +8171,10 @@ rec { }; "phf_generator" = rec { crateName = "phf_generator"; - version = "0.11.2"; + version = "0.11.3"; edition = "2021"; crateBin = []; - sha256 = "1c14pjyxbcpwkdgw109f7581cc5fa3fnkzdq1ikvx7mdq9jcrr28"; + sha256 = "0gc4np7s91ynrgw73s2i7iakhb4lzdv1gcyx7yhlc0n214a2701w"; authors = [ "Steven Fackler " ]; @@ -7705,9 +8197,9 @@ rec { }; "phf_shared" = rec { crateName = "phf_shared"; - version = "0.11.2"; + version = "0.11.3"; edition = "2021"; - sha256 = "0azphb0a330ypqx3qvyffal5saqnks0xvl8rj73jlk3qxxgbkz4h"; + sha256 = "1rallyvh28jqd9i916gk5gk2igdmzlgvv5q0l3xbf3m6y8pbrsk7"; authors = [ "Steven Fackler " ]; @@ -7726,9 +8218,9 @@ rec { }; "pin-project" = rec { crateName = "pin-project"; - version = "1.1.5"; + version = "1.1.10"; edition = "2021"; - sha256 = "1cxl146x0q7lawp0m1826wsgj8mmmfs6ja8q7m6f7ff5j6vl7gxn"; + sha256 = "12kadbnfm1f43cyadw9gsbyln1cy7vj764wz5c8wxaiza3filzv7"; libName = "pin_project"; dependencies = [ { @@ -7740,9 +8232,9 @@ rec { }; "pin-project-internal" = rec { crateName = "pin-project-internal"; - version = "1.1.5"; + version = "1.1.10"; edition = "2021"; - sha256 = "0r9r4ivwiyqf45sv6b30l1dx282lxaax2f6gl84jwa3q590s8f1g"; + sha256 = "0qgqzfl0f4lzaz7yl5llhbg97g68r15kljzihaw9wm64z17qx4bf"; procMacro = true; libName = "pin_project_internal"; dependencies = [ @@ -7756,17 +8248,18 @@ rec { } { name = "syn"; - packageId = "syn 2.0.87"; - features = [ "full" "visit-mut" ]; + packageId = "syn 2.0.104"; + usesDefaultFeatures = false; + features = [ "parsing" "printing" "clone-impls" "proc-macro" "full" "visit-mut" ]; } ]; }; "pin-project-lite" = rec { crateName = "pin-project-lite"; - version = "0.2.14"; + version = "0.2.16"; edition = "2018"; - sha256 = "00nx3f04agwjlsmd3mc5rx5haibj2v8q9b52b0kwn63wcv4nz9mx"; + sha256 = "16wzc7z7dfkf9bmjin22f5282783f6mdksnr0nv0j5ym5f9gyg1v"; libName = "pin_project_lite"; }; @@ -7783,9 +8276,9 @@ rec { }; "portable-atomic" = rec { crateName = "portable-atomic"; - version = "1.11.0"; + version = "1.11.1"; edition = "2018"; - sha256 = "0glb2wngflvfmg789qbf6dbnwcf6ai212fs7n0lf1c66rd49n3im"; + sha256 = "10s4cx9y3jvw0idip09ar52s2kymq8rq9a668f793shn1ar6fhpq"; libName = "portable_atomic"; features = { "critical-section" = [ "dep:critical-section" ]; @@ -7794,6 +8287,31 @@ rec { }; resolvedDefaultFeatures = [ "default" "fallback" ]; }; + "potential_utf" = rec { + crateName = "potential_utf"; + version = "0.1.2"; + edition = "2021"; + sha256 = "11dm6k3krx3drbvhgjw8z508giiv0m09wzl6ghza37176w4c79z5"; + authors = [ + "The ICU4X Project Developers" + ]; + dependencies = [ + { + name = "zerovec"; + packageId = "zerovec"; + optional = true; + usesDefaultFeatures = false; + } + ]; + features = { + "alloc" = [ "serde?/alloc" "zerovec?/alloc" ]; + "databake" = [ "dep:databake" ]; + "serde" = [ "dep:serde" ]; + "writeable" = [ "dep:writeable" "alloc" ]; + "zerovec" = [ "dep:zerovec" ]; + }; + resolvedDefaultFeatures = [ "zerovec" ]; + }; "powerfmt" = rec { crateName = "powerfmt"; version = "0.2.0"; @@ -7810,9 +8328,9 @@ rec { }; "ppv-lite86" = rec { crateName = "ppv-lite86"; - version = "0.2.20"; + version = "0.2.21"; edition = "2021"; - sha256 = "017ax9ssdnpww7nrl1hvqh2lzncpv04nnsibmnw9nxjnaqlpp5bp"; + sha256 = "1abxx6qz5qnd43br1dd9b2savpihzjza8gb4fbzdql1gxp2f7sl5"; libName = "ppv_lite86"; authors = [ "The CryptoCorrosion Contributors" @@ -7820,8 +8338,8 @@ rec { dependencies = [ { name = "zerocopy"; - packageId = "zerocopy 0.7.35"; - features = [ "simd" "derive" ]; + packageId = "zerocopy"; + features = [ "simd" ]; } ]; features = { @@ -7831,10 +8349,10 @@ rec { }; "prettyplease" = rec { crateName = "prettyplease"; - version = "0.2.22"; + version = "0.2.35"; edition = "2021"; links = "prettyplease02"; - sha256 = "1fpsyn4x1scbp8ik8xw4pfh4jxfm5bv7clax5k1jcd5vzd0gk727"; + sha256 = "16jklwmgqfzi6izcs6c4mqbmkzjv4zrbn9cx8wk9n1qycchi4706"; authors = [ "David Tolnay " ]; @@ -7846,7 +8364,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.87"; + packageId = "syn 2.0.104"; usesDefaultFeatures = false; features = [ "full" ]; } @@ -7859,9 +8377,9 @@ rec { } { name = "syn"; - packageId = "syn 2.0.87"; + packageId = "syn 2.0.104"; usesDefaultFeatures = false; - features = [ "parsing" ]; + features = [ "clone-impls" "extra-traits" "parsing" "printing" "visit-mut" ]; } ]; features = { @@ -7871,9 +8389,9 @@ rec { }; "proc-macro-crate" = rec { crateName = "proc-macro-crate"; - version = "3.2.0"; + version = "3.3.0"; edition = "2021"; - sha256 = "0yzsqnavb3lmrcsmbrdjfrky9vcbl46v59xi9avn0796rb3likwf"; + sha256 = "0d9xlymplfi9yv3f5g4bp0d6qh70apnihvqcjllampx4f5lmikpd"; libName = "proc_macro_crate"; authors = [ "Bastian Köcher " @@ -7882,6 +8400,8 @@ rec { { name = "toml_edit"; packageId = "toml_edit"; + usesDefaultFeatures = false; + features = [ "parse" ]; } ]; @@ -7958,9 +8478,9 @@ rec { }; "proc-macro2" = rec { crateName = "proc-macro2"; - version = "1.0.86"; + version = "1.0.95"; edition = "2021"; - sha256 = "0xrv22p8lqlfdf1w0pj4si8n2ws4aw0kilmziwf0vpv5ys6rwway"; + sha256 = "0y7pwxv6sh4fgg6s715ygk1i7g3w02c0ljgcsfm046isibkfbcq2"; libName = "proc_macro2"; authors = [ "David Tolnay " @@ -8023,7 +8543,7 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.4"; + packageId = "snafu 0.8.6"; } { name = "xml-rs"; @@ -8094,7 +8614,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.87"; + packageId = "syn 2.0.104"; features = [ "extra-traits" ]; } ]; @@ -8102,9 +8622,9 @@ rec { }; "quinn" = rec { crateName = "quinn"; - version = "0.11.5"; + version = "0.11.8"; edition = "2021"; - sha256 = "1146h9wkn5bb8l1mllnw7s1hkvg0iykg1i3x881p5bndwgfmyz4c"; + sha256 = "1j02h87nfxww5mjcw4vjcnx8b70q0yinnc8xvjv82ryskii18qk2"; dependencies = [ { name = "bytes"; @@ -8129,22 +8649,23 @@ rec { } { name = "rustc-hash"; - packageId = "rustc-hash 2.0.0"; + packageId = "rustc-hash 2.1.1"; } { name = "rustls"; packageId = "rustls"; optional = true; usesDefaultFeatures = false; - features = [ "ring" "std" ]; + features = [ "std" ]; } { name = "socket2"; packageId = "socket2"; + target = { target, features }: (!((builtins.elem "wasm" target."family") && ("unknown" == target."os" or null))); } { name = "thiserror"; - packageId = "thiserror 1.0.63"; + packageId = "thiserror 2.0.12"; } { name = "tokio"; @@ -8157,6 +8678,17 @@ rec { usesDefaultFeatures = false; features = [ "std" ]; } + { + name = "web-time"; + packageId = "web-time"; + target = { target, features }: ((builtins.elem "wasm" target."family") && ("unknown" == target."os" or null)); + } + ]; + buildDependencies = [ + { + name = "cfg_aliases"; + packageId = "cfg_aliases"; + } ]; devDependencies = [ { @@ -8168,7 +8700,10 @@ rec { features = { "async-io" = [ "dep:async-io" ]; "async-std" = [ "dep:async-std" ]; - "default" = [ "log" "platform-verifier" "ring" "runtime-tokio" "rustls" ]; + "aws-lc-rs" = [ "proto/aws-lc-rs" ]; + "aws-lc-rs-fips" = [ "proto/aws-lc-rs-fips" ]; + "bloom" = [ "proto/bloom" ]; + "default" = [ "log" "platform-verifier" "runtime-tokio" "rustls-ring" "bloom" ]; "futures-io" = [ "dep:futures-io" ]; "log" = [ "tracing/log" "proto/log" "udp/log" ]; "platform-verifier" = [ "proto/platform-verifier" ]; @@ -8176,41 +8711,68 @@ rec { "runtime-async-std" = [ "async-io" "async-std" ]; "runtime-smol" = [ "async-io" "smol" ]; "runtime-tokio" = [ "tokio/time" "tokio/rt" "tokio/net" ]; - "rustls" = [ "dep:rustls" "proto/rustls" "proto/ring" ]; + "rustls" = [ "rustls-ring" ]; + "rustls-aws-lc-rs" = [ "dep:rustls" "aws-lc-rs" "proto/rustls-aws-lc-rs" "proto/aws-lc-rs" ]; + "rustls-aws-lc-rs-fips" = [ "dep:rustls" "aws-lc-rs-fips" "proto/rustls-aws-lc-rs-fips" "proto/aws-lc-rs-fips" ]; + "rustls-log" = [ "rustls?/logging" ]; + "rustls-ring" = [ "dep:rustls" "ring" "proto/rustls-ring" "proto/ring" ]; "smol" = [ "dep:smol" ]; }; - resolvedDefaultFeatures = [ "ring" "runtime-tokio" "rustls" ]; + resolvedDefaultFeatures = [ "ring" "runtime-tokio" "rustls" "rustls-ring" ]; }; "quinn-proto" = rec { crateName = "quinn-proto"; - version = "0.11.8"; + version = "0.11.12"; edition = "2021"; - sha256 = "19m4219ybsma7kkz79j721lzhy3vgfqfwwxvc40rsf3zrp9axpzs"; + sha256 = "0bj2yyrf1mrg2bcj19ipsspvrj5sq0di0pz5maw5pj31j4x89ps9"; libName = "quinn_proto"; dependencies = [ { name = "bytes"; packageId = "bytes"; } + { + name = "getrandom"; + packageId = "getrandom 0.3.3"; + usesDefaultFeatures = false; + target = { target, features }: ((builtins.elem "wasm" target."family") && ("unknown" == target."os" or null)); + features = [ "wasm_js" ]; + } + { + name = "lru-slab"; + packageId = "lru-slab"; + } { name = "rand"; - packageId = "rand 0.8.5"; + packageId = "rand 0.9.1"; } { name = "ring"; packageId = "ring"; optional = true; } + { + name = "ring"; + packageId = "ring"; + target = { target, features }: ((builtins.elem "wasm" target."family") && ("unknown" == target."os" or null)); + features = [ "wasm32_unknown_unknown_js" ]; + } { name = "rustc-hash"; - packageId = "rustc-hash 2.0.0"; + packageId = "rustc-hash 2.1.1"; } { name = "rustls"; packageId = "rustls"; optional = true; usesDefaultFeatures = false; - features = [ "ring" "std" ]; + features = [ "std" ]; + } + { + name = "rustls-pki-types"; + packageId = "rustls-pki-types"; + target = { target, features }: ((builtins.elem "wasm" target."family") && ("unknown" == target."os" or null)); + features = [ "web" ]; } { name = "slab"; @@ -8218,7 +8780,7 @@ rec { } { name = "thiserror"; - packageId = "thiserror 1.0.63"; + packageId = "thiserror 2.0.12"; } { name = "tinyvec"; @@ -8231,22 +8793,34 @@ rec { usesDefaultFeatures = false; features = [ "std" ]; } + { + name = "web-time"; + packageId = "web-time"; + target = { target, features }: ((builtins.elem "wasm" target."family") && ("unknown" == target."os" or null)); + } ]; features = { "arbitrary" = [ "dep:arbitrary" ]; - "default" = [ "rustls" "log" ]; + "aws-lc-rs" = [ "dep:aws-lc-rs" "aws-lc-rs?/aws-lc-sys" "aws-lc-rs?/prebuilt-nasm" ]; + "aws-lc-rs-fips" = [ "aws-lc-rs" "aws-lc-rs?/fips" ]; + "bloom" = [ "dep:fastbloom" ]; + "default" = [ "rustls-ring" "log" "bloom" ]; "log" = [ "tracing/log" ]; "platform-verifier" = [ "dep:rustls-platform-verifier" ]; "ring" = [ "dep:ring" ]; - "rustls" = [ "dep:rustls" "ring" ]; + "rustls" = [ "rustls-ring" ]; + "rustls-aws-lc-rs" = [ "dep:rustls" "rustls?/aws-lc-rs" "aws-lc-rs" ]; + "rustls-aws-lc-rs-fips" = [ "rustls-aws-lc-rs" "aws-lc-rs-fips" ]; + "rustls-log" = [ "rustls?/logging" ]; + "rustls-ring" = [ "dep:rustls" "rustls?/ring" "ring" ]; }; - resolvedDefaultFeatures = [ "ring" "rustls" ]; + resolvedDefaultFeatures = [ "ring" "rustls-ring" ]; }; "quinn-udp" = rec { crateName = "quinn-udp"; - version = "0.5.5"; + version = "0.5.13"; edition = "2021"; - sha256 = "02qlqjsbmfgwin9jpb652d0hkjyzz7wvsgb833i384hskqp8rrjg"; + sha256 = "0w0ri3wv5g419i5dfv4qmjxh4ayc4hp77y2gy4p3axp2kqhb3szw"; libName = "quinn_udp"; dependencies = [ { @@ -8261,6 +8835,7 @@ rec { { name = "socket2"; packageId = "socket2"; + target = { target, features }: (!((builtins.elem "wasm" target."family") && ("unknown" == target."os" or null))); } { name = "tracing"; @@ -8276,6 +8851,12 @@ rec { features = [ "Win32_Foundation" "Win32_System_IO" "Win32_Networking_WinSock" ]; } ]; + buildDependencies = [ + { + name = "cfg_aliases"; + packageId = "cfg_aliases"; + } + ]; features = { "default" = [ "tracing" "log" ]; "direct-log" = [ "dep:log" ]; @@ -8286,9 +8867,9 @@ rec { }; "quote" = rec { crateName = "quote"; - version = "1.0.37"; + version = "1.0.40"; edition = "2018"; - sha256 = "1brklraw2g34bxy9y4q1nbrccn7bv36ylihv12c9vlcii55x7fdm"; + sha256 = "1394cxjg6nwld82pzp2d4fp6pmaz32gai1zh9z5hvh0dawww118q"; authors = [ "David Tolnay " ]; @@ -8307,15 +8888,14 @@ rec { }; "r-efi" = rec { crateName = "r-efi"; - version = "5.2.0"; + version = "5.3.0"; edition = "2018"; - sha256 = "1ig93jvpqyi87nc5kb6dri49p56q7r7qxrn8kfizmqkfj5nmyxkl"; + sha256 = "03sbfm3g7myvzyylff6qaxk4z6fy76yv860yy66jiswc2m6b7kb9"; libName = "r_efi"; features = { - "compiler_builtins" = [ "dep:compiler_builtins" ]; "core" = [ "dep:core" ]; "examples" = [ "native" ]; - "rustc-dep-of-std" = [ "compiler_builtins/rustc-dep-of-std" "core" ]; + "rustc-dep-of-std" = [ "core" ]; }; }; "rand 0.8.5" = rec { @@ -8362,11 +8942,11 @@ rec { }; resolvedDefaultFeatures = [ "alloc" "default" "getrandom" "libc" "rand_chacha" "small_rng" "std" "std_rng" ]; }; - "rand 0.9.0" = rec { + "rand 0.9.1" = rec { crateName = "rand"; - version = "0.9.0"; + version = "0.9.1"; edition = "2021"; - sha256 = "156dyvsfa6fjnv6nx5vzczay1scy5183dvjchd7bvs47xd5bjy9p"; + sha256 = "15yxfcxbgmwba5cv7mjg9bhc1r5c9483dfcdfspg62x4jk8dkgwz"; authors = [ "The Rand Project Developers" "The Rust Project Developers" @@ -8383,19 +8963,12 @@ rec { packageId = "rand_core 0.9.3"; usesDefaultFeatures = false; } - { - name = "zerocopy"; - packageId = "zerocopy 0.8.24"; - usesDefaultFeatures = false; - features = [ "simd" ]; - } ]; features = { "default" = [ "std" "std_rng" "os_rng" "small_rng" "thread_rng" ]; "log" = [ "dep:log" ]; "os_rng" = [ "rand_core/os_rng" ]; "serde" = [ "dep:serde" "rand_core/serde" ]; - "simd_support" = [ "zerocopy/simd-nightly" ]; "std" = [ "rand_core/std" "rand_chacha?/std" "alloc" ]; "std_rng" = [ "dep:rand_chacha" ]; "thread_rng" = [ "std" "std_rng" "os_rng" ]; @@ -8481,7 +9054,7 @@ rec { dependencies = [ { name = "getrandom"; - packageId = "getrandom 0.2.15"; + packageId = "getrandom 0.2.16"; optional = true; } ]; @@ -8505,7 +9078,7 @@ rec { dependencies = [ { name = "getrandom"; - packageId = "getrandom 0.3.2"; + packageId = "getrandom 0.3.3"; optional = true; } ]; @@ -8516,11 +9089,11 @@ rec { }; resolvedDefaultFeatures = [ "os_rng" "std" ]; }; - "redox_syscall 0.4.1" = rec { + "redox_syscall" = rec { crateName = "redox_syscall"; - version = "0.4.1"; - edition = "2018"; - sha256 = "1aiifyz5dnybfvkk4cdab9p2kmphag1yad6iknc7aszlxxldf8j7"; + version = "0.5.13"; + edition = "2021"; + sha256 = "1mlzna9bcd7ss1973bmysr3hpjrys82b3bd7l03h4jkbxv8bf10d"; libName = "syscall"; authors = [ "Jeremy Soller " @@ -8528,39 +9101,21 @@ rec { dependencies = [ { name = "bitflags"; - packageId = "bitflags 1.3.2"; + packageId = "bitflags"; } ]; features = { "core" = [ "dep:core" ]; + "default" = [ "userspace" ]; "rustc-dep-of-std" = [ "core" "bitflags/rustc-dep-of-std" ]; }; + resolvedDefaultFeatures = [ "default" "userspace" ]; }; - "redox_syscall 0.5.3" = rec { - crateName = "redox_syscall"; - version = "0.5.3"; - edition = "2018"; - sha256 = "1916m7abg9649gkif055pn5nsvqjhp70isy0v7gx1zgi01p8m41a"; - libName = "syscall"; - authors = [ - "Jeremy Soller " - ]; - dependencies = [ - { - name = "bitflags"; - packageId = "bitflags 2.6.0"; - } - ]; - features = { - "core" = [ "dep:core" ]; - "rustc-dep-of-std" = [ "core" "bitflags/rustc-dep-of-std" ]; - }; - }; - "redox_termios" = rec { - crateName = "redox_termios"; - version = "0.1.3"; - edition = "2021"; - sha256 = "1jzifsj7fqyksz4325l3azfzpyv027kjabf93zcmass3p9q5c510"; + "redox_termios" = rec { + crateName = "redox_termios"; + version = "0.1.3"; + edition = "2021"; + sha256 = "1jzifsj7fqyksz4325l3azfzpyv027kjabf93zcmass3p9q5c510"; authors = [ "Jeremy Soller " ]; @@ -8578,18 +9133,18 @@ rec { dependencies = [ { name = "getrandom"; - packageId = "getrandom 0.2.15"; + packageId = "getrandom 0.2.16"; features = [ "std" ]; } { name = "libredox"; - packageId = "libredox 0.1.3"; + packageId = "libredox"; usesDefaultFeatures = false; features = [ "std" "call" ]; } { name = "thiserror"; - packageId = "thiserror 1.0.63"; + packageId = "thiserror 1.0.69"; } ]; features = { @@ -8601,9 +9156,9 @@ rec { }; "regex" = rec { crateName = "regex"; - version = "1.10.6"; + version = "1.11.1"; edition = "2021"; - sha256 = "06cnlxwzyqfbw1za1i7ks89ns4i2kr0lpg5ykx56b8v7dd6df6a2"; + sha256 = "148i41mzbx8bmq32hsj1q4karkzzx5m60qza6gdw4pdc9qdyyi5m"; authors = [ "The Rust Project Developers" "Andrew Gallant " @@ -8623,13 +9178,13 @@ rec { } { name = "regex-automata"; - packageId = "regex-automata 0.4.7"; + packageId = "regex-automata 0.4.9"; usesDefaultFeatures = false; features = [ "alloc" "syntax" "meta" "nfa-pikevm" ]; } { name = "regex-syntax"; - packageId = "regex-syntax 0.8.4"; + packageId = "regex-syntax 0.8.5"; usesDefaultFeatures = false; } ]; @@ -8682,11 +9237,11 @@ rec { }; resolvedDefaultFeatures = [ "default" "regex-syntax" "std" ]; }; - "regex-automata 0.4.7" = rec { + "regex-automata 0.4.9" = rec { crateName = "regex-automata"; - version = "0.4.7"; + version = "0.4.9"; edition = "2021"; - sha256 = "1pwjdi4jckpbaivpl6x4v5g4crb37zr2wac93wlfsbzgqn6gbjiq"; + sha256 = "02092l8zfh3vkmk47yjc8d631zhhcd49ck2zr133prvd3z38v7l0"; libName = "regex_automata"; authors = [ "The Rust Project Developers" @@ -8707,7 +9262,7 @@ rec { } { name = "regex-syntax"; - packageId = "regex-syntax 0.8.4"; + packageId = "regex-syntax 0.8.5"; optional = true; usesDefaultFeatures = false; } @@ -8758,11 +9313,11 @@ rec { }; resolvedDefaultFeatures = [ "default" "unicode" "unicode-age" "unicode-bool" "unicode-case" "unicode-gencat" "unicode-perl" "unicode-script" "unicode-segment" ]; }; - "regex-syntax 0.8.4" = rec { + "regex-syntax 0.8.5" = rec { crateName = "regex-syntax"; - version = "0.8.4"; + version = "0.8.5"; edition = "2021"; - sha256 = "16r0kjy20vx33dr4mhasj5l1f87czas714x2fz6zl0f8wwxa0rks"; + sha256 = "0p41p3hj9ww7blnbwbj9h7rwxzxg0c1hvrdycgys8rxyhqqw859b"; libName = "regex_syntax"; authors = [ "The Rust Project Developers" @@ -8791,16 +9346,16 @@ rec { }; "reqwest" = rec { crateName = "reqwest"; - version = "0.12.7"; + version = "0.12.22"; edition = "2021"; - sha256 = "0qsymmmgam6whjcymnlpf5kvk3ylc4bs92lygz63hp7g95b9bx7q"; + sha256 = "0cbmfrcrk6wbg93apmji0fln1ca9322af2kc7dpa18vcgs9k3jfb"; authors = [ "Sean McArthur " ]; dependencies = [ { name = "base64"; - packageId = "base64 0.22.1"; + packageId = "base64"; } { name = "bytes"; @@ -8820,6 +9375,7 @@ rec { { name = "futures-util"; packageId = "futures-util"; + optional = true; usesDefaultFeatures = false; } { @@ -8854,12 +9410,7 @@ rec { name = "hyper-util"; packageId = "hyper-util"; target = { target, features }: (!("wasm32" == target."arch" or null)); - features = [ "http1" "client" "client-legacy" "tokio" ]; - } - { - name = "ipnet"; - packageId = "ipnet"; - target = { target, features }: (!("wasm32" == target."arch" or null)); + features = [ "http1" "client" "client-legacy" "client-proxy" "tokio" ]; } { name = "js-sys"; @@ -8871,16 +9422,6 @@ rec { packageId = "log"; target = { target, features }: (!("wasm32" == target."arch" or null)); } - { - name = "mime"; - packageId = "mime"; - target = { target, features }: (!("wasm32" == target."arch" or null)); - } - { - name = "once_cell"; - packageId = "once_cell"; - target = { target, features }: (!("wasm32" == target."arch" or null)); - } { name = "percent-encoding"; packageId = "percent-encoding"; @@ -8909,13 +9450,7 @@ rec { } { name = "rustls-native-certs"; - packageId = "rustls-native-certs"; - optional = true; - target = { target, features }: (!("wasm32" == target."arch" or null)); - } - { - name = "rustls-pemfile"; - packageId = "rustls-pemfile"; + packageId = "rustls-native-certs 0.8.1"; optional = true; target = { target, features }: (!("wasm32" == target."arch" or null)); } @@ -8924,7 +9459,7 @@ rec { packageId = "rustls-pki-types"; optional = true; target = { target, features }: (!("wasm32" == target."arch" or null)); - features = [ "alloc" ]; + features = [ "std" ]; } { name = "serde"; @@ -8946,7 +9481,7 @@ rec { } { name = "sync_wrapper"; - packageId = "sync_wrapper 1.0.1"; + packageId = "sync_wrapper"; features = [ "futures" ]; } { @@ -8964,6 +9499,20 @@ rec { target = { target, features }: (!("wasm32" == target."arch" or null)); features = [ "tls12" ]; } + { + name = "tower"; + packageId = "tower 0.5.2"; + usesDefaultFeatures = false; + target = { target, features }: (!("wasm32" == target."arch" or null)); + features = [ "timeout" "util" ]; + } + { + name = "tower-http"; + packageId = "tower-http 0.6.6"; + usesDefaultFeatures = false; + target = { target, features }: (!("wasm32" == target."arch" or null)); + features = [ "follow-redirect" ]; + } { name = "tower-service"; packageId = "tower-service"; @@ -8994,11 +9543,6 @@ rec { optional = true; target = { target, features }: (!("wasm32" == target."arch" or null)); } - { - name = "windows-registry"; - packageId = "windows-registry"; - target = { target, features }: (target."windows" or false); - } ]; devDependencies = [ { @@ -9019,14 +9563,7 @@ rec { name = "hyper-util"; packageId = "hyper-util"; target = {target, features}: (!("wasm32" == target."arch" or null)); - features = [ "http1" "http2" "client" "client-legacy" "server-auto" "tokio" ]; - } - { - name = "rustls"; - packageId = "rustls"; - usesDefaultFeatures = false; - target = {target, features}: (!("wasm32" == target."arch" or null)); - features = [ "ring" ]; + features = [ "http1" "http2" "client" "client-legacy" "server-auto" "server-graceful" "tokio" ]; } { name = "serde"; @@ -9041,6 +9578,12 @@ rec { target = {target, features}: (!("wasm32" == target."arch" or null)); features = [ "macros" "rt-multi-thread" ]; } + { + name = "tower"; + packageId = "tower 0.5.2"; + usesDefaultFeatures = false; + features = [ "limit" ]; + } { name = "wasm-bindgen"; packageId = "wasm-bindgen"; @@ -9049,48 +9592,47 @@ rec { } ]; features = { - "__rustls" = [ "dep:hyper-rustls" "dep:tokio-rustls" "dep:rustls" "__tls" "dep:rustls-pemfile" "dep:rustls-pki-types" ]; + "__rustls" = [ "dep:hyper-rustls" "dep:tokio-rustls" "dep:rustls" "__tls" ]; "__rustls-ring" = [ "hyper-rustls?/ring" "tokio-rustls?/ring" "rustls?/ring" "quinn?/ring" ]; - "__tls" = [ "dep:rustls-pemfile" "tokio/io-util" ]; - "blocking" = [ "dep:futures-channel" "futures-channel?/sink" "futures-util/io" "futures-util/sink" "tokio/sync" ]; - "brotli" = [ "dep:async-compression" "async-compression?/brotli" "dep:tokio-util" ]; - "charset" = [ "dep:encoding_rs" ]; + "__tls" = [ "dep:rustls-pki-types" "tokio/io-util" ]; + "blocking" = [ "dep:futures-channel" "futures-channel?/sink" "dep:futures-util" "futures-util?/io" "futures-util?/sink" "tokio/sync" ]; + "brotli" = [ "dep:async-compression" "async-compression?/brotli" "dep:futures-util" "dep:tokio-util" ]; + "charset" = [ "dep:encoding_rs" "dep:mime" ]; "cookies" = [ "dep:cookie_crate" "dep:cookie_store" ]; - "default" = [ "default-tls" "charset" "http2" "macos-system-configuration" ]; + "default" = [ "default-tls" "charset" "http2" "system-proxy" ]; "default-tls" = [ "dep:hyper-tls" "dep:native-tls-crate" "__tls" "dep:tokio-native-tls" ]; - "deflate" = [ "dep:async-compression" "async-compression?/zlib" "dep:tokio-util" ]; - "gzip" = [ "dep:async-compression" "async-compression?/gzip" "dep:tokio-util" ]; + "deflate" = [ "dep:async-compression" "async-compression?/zlib" "dep:futures-util" "dep:tokio-util" ]; + "gzip" = [ "dep:async-compression" "async-compression?/gzip" "dep:futures-util" "dep:tokio-util" ]; "h2" = [ "dep:h2" ]; - "hickory-dns" = [ "dep:hickory-resolver" ]; + "hickory-dns" = [ "dep:hickory-resolver" "dep:once_cell" ]; "http2" = [ "h2" "hyper/http2" "hyper-util/http2" "hyper-rustls?/http2" ]; - "http3" = [ "rustls-tls-manual-roots" "dep:h3" "dep:h3-quinn" "dep:quinn" "dep:slab" "dep:futures-channel" ]; + "http3" = [ "rustls-tls-manual-roots" "dep:h3" "dep:h3-quinn" "dep:quinn" "tokio/macros" ]; "json" = [ "dep:serde_json" ]; - "macos-system-configuration" = [ "dep:system-configuration" ]; - "multipart" = [ "dep:mime_guess" ]; + "macos-system-configuration" = [ "system-proxy" ]; + "multipart" = [ "dep:mime_guess" "dep:futures-util" ]; "native-tls" = [ "default-tls" ]; "native-tls-alpn" = [ "native-tls" "native-tls-crate?/alpn" "hyper-tls?/alpn" ]; "native-tls-vendored" = [ "native-tls" "native-tls-crate?/vendored" ]; "rustls-tls" = [ "rustls-tls-webpki-roots" ]; - "rustls-tls-manual-roots" = [ "__rustls" "__rustls-ring" ]; + "rustls-tls-manual-roots" = [ "rustls-tls-manual-roots-no-provider" "__rustls-ring" ]; "rustls-tls-manual-roots-no-provider" = [ "__rustls" ]; - "rustls-tls-native-roots" = [ "dep:rustls-native-certs" "hyper-rustls?/native-tokio" "__rustls" "__rustls-ring" ]; + "rustls-tls-native-roots" = [ "rustls-tls-native-roots-no-provider" "__rustls-ring" ]; + "rustls-tls-native-roots-no-provider" = [ "dep:rustls-native-certs" "hyper-rustls?/native-tokio" "__rustls" ]; "rustls-tls-no-provider" = [ "rustls-tls-manual-roots-no-provider" ]; - "rustls-tls-webpki-roots" = [ "dep:webpki-roots" "hyper-rustls?/webpki-tokio" "__rustls" "__rustls-ring" ]; - "socks" = [ "dep:tokio-socks" ]; - "stream" = [ "tokio/fs" "dep:tokio-util" "dep:wasm-streams" ]; - "zstd" = [ "dep:async-compression" "async-compression?/zstd" "dep:tokio-util" ]; + "rustls-tls-webpki-roots" = [ "rustls-tls-webpki-roots-no-provider" "__rustls-ring" ]; + "rustls-tls-webpki-roots-no-provider" = [ "dep:webpki-roots" "hyper-rustls?/webpki-tokio" "__rustls" ]; + "stream" = [ "tokio/fs" "dep:futures-util" "dep:tokio-util" "dep:wasm-streams" ]; + "system-proxy" = [ "hyper-util/client-proxy-system" ]; + "zstd" = [ "dep:async-compression" "async-compression?/zstd" "dep:futures-util" "dep:tokio-util" ]; }; - resolvedDefaultFeatures = [ "__rustls" "__rustls-ring" "__tls" "blocking" "json" "rustls-tls" "rustls-tls-native-roots" "rustls-tls-webpki-roots" ]; + resolvedDefaultFeatures = [ "__rustls" "__rustls-ring" "__tls" "blocking" "json" "rustls-tls" "rustls-tls-native-roots" "rustls-tls-native-roots-no-provider" "rustls-tls-webpki-roots" "rustls-tls-webpki-roots-no-provider" ]; }; "ring" = rec { crateName = "ring"; - version = "0.17.8"; + version = "0.17.14"; edition = "2021"; - links = "ring_core_0_17_8"; - sha256 = "03fwlb1ssrmfxdckvqv033pfmk01rhx9ynwi7r186dcfcp5s8zy1"; - authors = [ - "Brian Smith " - ]; + links = "ring_core_0_17_14_"; + sha256 = "1dw32gv19ccq4hsx3ribhpdzri1vnrlcfqb2vj41xn4l49n9ws54"; dependencies = [ { name = "cfg-if"; @@ -9099,20 +9641,19 @@ rec { } { name = "getrandom"; - packageId = "getrandom 0.2.15"; + packageId = "getrandom 0.2.16"; } { name = "libc"; packageId = "libc"; usesDefaultFeatures = false; - target = { target, features }: ((("android" == target."os" or null) || ("linux" == target."os" or null)) && (("aarch64" == target."arch" or null) || ("arm" == target."arch" or null))); + target = { target, features }: ((("aarch64" == target."arch" or null) && ("little" == target."endian" or null)) && ("apple" == target."vendor" or null) && (("ios" == target."os" or null) || ("macos" == target."os" or null) || ("tvos" == target."os" or null) || ("visionos" == target."os" or null) || ("watchos" == target."os" or null))); } { - name = "spin"; - packageId = "spin"; + name = "libc"; + packageId = "libc"; usesDefaultFeatures = false; - target = { target, features }: (("aarch64" == target."arch" or null) || ("arm" == target."arch" or null) || ("x86" == target."arch" or null) || ("x86_64" == target."arch" or null)); - features = [ "once" ]; + target = { target, features }: (((("aarch64" == target."arch" or null) && ("little" == target."endian" or null)) || (("arm" == target."arch" or null) && ("little" == target."endian" or null))) && (("android" == target."os" or null) || ("linux" == target."os" or null))); } { name = "untrusted"; @@ -9121,7 +9662,7 @@ rec { { name = "windows-sys"; packageId = "windows-sys 0.52.0"; - target = { target, features }: (("aarch64" == target."arch" or null) && ("windows" == target."os" or null)); + target = { target, features }: ((("aarch64" == target."arch" or null) && ("little" == target."endian" or null)) && ("windows" == target."os" or null)); features = [ "Win32_Foundation" "Win32_System_Threading" ]; } ]; @@ -9145,7 +9686,7 @@ rec { "std" = [ "alloc" ]; "wasm32_unknown_unknown_js" = [ "getrandom/js" ]; }; - resolvedDefaultFeatures = [ "alloc" "default" "dev_urandom_fallback" ]; + resolvedDefaultFeatures = [ "alloc" "default" "dev_urandom_fallback" "wasm32_unknown_unknown_js" ]; }; "roff" = rec { crateName = "roff"; @@ -9233,7 +9774,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.87"; + packageId = "syn 2.0.104"; features = [ "full" "parsing" "extra-traits" "visit" "visit-mut" ]; } { @@ -9255,12 +9796,12 @@ rec { }; "rust-embed" = rec { crateName = "rust-embed"; - version = "8.5.0"; + version = "8.7.2"; edition = "2018"; - sha256 = "1h2k15ajsq9x70l11h61m4wlg8qias4mw4bg4yy7wpnx9x5ayrps"; + sha256 = "12hprnl569f1pg2sn960gfla913mk1mxdwpn2a6vl9iad2w0hn82"; libName = "rust_embed"; authors = [ - "pyros2097 " + "pyrossh" ]; dependencies = [ { @@ -9283,6 +9824,7 @@ rec { "axum-ex" = [ "axum" "tokio" "mime_guess" ]; "compression" = [ "rust-embed-impl/compression" "include-flate" ]; "debug-embed" = [ "rust-embed-impl/debug-embed" "rust-embed-utils/debug-embed" ]; + "deterministic-timestamps" = [ "rust-embed-impl/deterministic-timestamps" ]; "hex" = [ "dep:hex" ]; "include-exclude" = [ "rust-embed-impl/include-exclude" "rust-embed-utils/include-exclude" ]; "include-flate" = [ "dep:include-flate" ]; @@ -9301,13 +9843,13 @@ rec { }; "rust-embed-impl" = rec { crateName = "rust-embed-impl"; - version = "8.5.0"; + version = "8.7.2"; edition = "2018"; - sha256 = "0y0lfrvpqnh98lngf6z6crjwkhp9yhvl2ac7xig14lbrhv4dn9b1"; + sha256 = "171lshvdh122ypbf23gmhvrqnhbk0q9g27gaq6g82w9b76jg2rb0"; procMacro = true; libName = "rust_embed_impl"; authors = [ - "pyros2097 " + "pyrossh" ]; dependencies = [ { @@ -9324,7 +9866,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.87"; + packageId = "syn 2.0.104"; usesDefaultFeatures = false; features = [ "derive" "parsing" "proc-macro" "printing" ]; } @@ -9342,12 +9884,12 @@ rec { }; "rust-embed-utils" = rec { crateName = "rust-embed-utils"; - version = "8.5.0"; + version = "8.7.2"; edition = "2018"; - sha256 = "17aj29y2xis2fhp4i1wyf0xqm6ljhn3z5qdh75hbbb4sgrvlflrf"; + sha256 = "151m1966qk75y10msazdp0xj4fqw1khcry0z946bf84bcj0hrk7n"; libName = "rust_embed_utils"; authors = [ - "pyros2097 " + "pyrossh" ]; dependencies = [ { @@ -9368,17 +9910,16 @@ rec { }; "rustc-demangle" = rec { crateName = "rustc-demangle"; - version = "0.1.24"; + version = "0.1.25"; edition = "2015"; - sha256 = "07zysaafgrkzy2rjgwqdj2a8qdpsm6zv6f5pgpk9x0lm40z9b6vi"; + sha256 = "0kxq6m0drr40434ch32j31dkg00iaf4zxmqg7sqxajhcz0wng7lq"; libName = "rustc_demangle"; authors = [ "Alex Crichton " ]; features = { - "compiler_builtins" = [ "dep:compiler_builtins" ]; "core" = [ "dep:core" ]; - "rustc-dep-of-std" = [ "core" "compiler_builtins" ]; + "rustc-dep-of-std" = [ "core" ]; }; }; "rustc-hash 1.1.0" = rec { @@ -9395,11 +9936,11 @@ rec { }; resolvedDefaultFeatures = [ "default" "std" ]; }; - "rustc-hash 2.0.0" = rec { + "rustc-hash 2.1.1" = rec { crateName = "rustc-hash"; - version = "2.0.0"; + version = "2.1.1"; edition = "2021"; - sha256 = "0lni0lf846bzrf3jvci6jaf4142n1mdqxvcpczk5ch9pfgyk8c2q"; + sha256 = "03gz5lvd9ghcwsal022cgkq67dmimcgdjghfb5yb5d352ga06xrm"; libName = "rustc_hash"; authors = [ "The Rust Project Developers" @@ -9425,9 +9966,9 @@ rec { }; "rustix" = rec { crateName = "rustix"; - version = "0.38.35"; + version = "0.38.44"; edition = "2021"; - sha256 = "0vy38cpprg64i6kfwz0w5hj2lqgliyimnx6vmplninir499m0pd8"; + sha256 = "0m61v0h15lf5rrnbjhcb9306bgqrhskrqv7i1n0939dsw8dbrdgx"; authors = [ "Dan Gohman " "Jakub Konka " @@ -9435,7 +9976,7 @@ rec { dependencies = [ { name = "bitflags"; - packageId = "bitflags 2.6.0"; + packageId = "bitflags"; usesDefaultFeatures = false; } { @@ -9444,14 +9985,14 @@ rec { rename = "libc_errno"; optional = true; usesDefaultFeatures = false; - target = { target, features }: ((!(target."rustix_use_libc" or false)) && (!(target."miri" or false)) && ("linux" == target."os" or null) && ("little" == target."endian" or null) && (("arm" == target."arch" or null) || (("aarch64" == target."arch" or null) && ("64" == target."pointer_width" or null)) || ("riscv64" == target."arch" or null) || ((target."rustix_use_experimental_asm" or false) && ("powerpc64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips32r6" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64r6" == target."arch" or null)) || ("x86" == target."arch" or null) || (("x86_64" == target."arch" or null) && ("64" == target."pointer_width" or null)))); + target = { target, features }: ((!(target."rustix_use_libc" or false)) && (!(target."miri" or false)) && ("linux" == target."os" or null) && (("little" == target."endian" or null) || ("s390x" == target."arch" or null)) && (("arm" == target."arch" or null) || (("aarch64" == target."arch" or null) && ("64" == target."pointer_width" or null)) || ("riscv64" == target."arch" or null) || ((target."rustix_use_experimental_asm" or false) && ("powerpc64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("s390x" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips32r6" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64r6" == target."arch" or null)) || ("x86" == target."arch" or null) || (("x86_64" == target."arch" or null) && ("64" == target."pointer_width" or null)))); } { name = "errno"; packageId = "errno"; rename = "libc_errno"; usesDefaultFeatures = false; - target = { target, features }: ((!(target."windows" or false)) && ((target."rustix_use_libc" or false) || (target."miri" or false) || (!(("linux" == target."os" or null) && ("little" == target."endian" or null) && (("arm" == target."arch" or null) || (("aarch64" == target."arch" or null) && ("64" == target."pointer_width" or null)) || ("riscv64" == target."arch" or null) || ((target."rustix_use_experimental_asm" or false) && ("powerpc64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips32r6" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64r6" == target."arch" or null)) || ("x86" == target."arch" or null) || (("x86_64" == target."arch" or null) && ("64" == target."pointer_width" or null))))))); + target = { target, features }: ((!(target."windows" or false)) && ((target."rustix_use_libc" or false) || (target."miri" or false) || (!(("linux" == target."os" or null) && (("little" == target."endian" or null) || ("s390x" == target."arch" or null)) && (("arm" == target."arch" or null) || (("aarch64" == target."arch" or null) && ("64" == target."pointer_width" or null)) || ("riscv64" == target."arch" or null) || ((target."rustix_use_experimental_asm" or false) && ("powerpc64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("s390x" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips32r6" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64r6" == target."arch" or null)) || ("x86" == target."arch" or null) || (("x86_64" == target."arch" or null) && ("64" == target."pointer_width" or null))))))); } { name = "errno"; @@ -9465,31 +10006,31 @@ rec { packageId = "libc"; optional = true; usesDefaultFeatures = false; - target = { target, features }: ((!(target."rustix_use_libc" or false)) && (!(target."miri" or false)) && ("linux" == target."os" or null) && ("little" == target."endian" or null) && (("arm" == target."arch" or null) || (("aarch64" == target."arch" or null) && ("64" == target."pointer_width" or null)) || ("riscv64" == target."arch" or null) || ((target."rustix_use_experimental_asm" or false) && ("powerpc64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips32r6" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64r6" == target."arch" or null)) || ("x86" == target."arch" or null) || (("x86_64" == target."arch" or null) && ("64" == target."pointer_width" or null)))); + target = { target, features }: ((!(target."rustix_use_libc" or false)) && (!(target."miri" or false)) && ("linux" == target."os" or null) && (("little" == target."endian" or null) || ("s390x" == target."arch" or null)) && (("arm" == target."arch" or null) || (("aarch64" == target."arch" or null) && ("64" == target."pointer_width" or null)) || ("riscv64" == target."arch" or null) || ((target."rustix_use_experimental_asm" or false) && ("powerpc64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("s390x" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips32r6" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64r6" == target."arch" or null)) || ("x86" == target."arch" or null) || (("x86_64" == target."arch" or null) && ("64" == target."pointer_width" or null)))); } { name = "libc"; packageId = "libc"; usesDefaultFeatures = false; - target = { target, features }: ((!(target."windows" or false)) && ((target."rustix_use_libc" or false) || (target."miri" or false) || (!(("linux" == target."os" or null) && ("little" == target."endian" or null) && (("arm" == target."arch" or null) || (("aarch64" == target."arch" or null) && ("64" == target."pointer_width" or null)) || ("riscv64" == target."arch" or null) || ((target."rustix_use_experimental_asm" or false) && ("powerpc64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips32r6" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64r6" == target."arch" or null)) || ("x86" == target."arch" or null) || (("x86_64" == target."arch" or null) && ("64" == target."pointer_width" or null))))))); + target = { target, features }: ((!(target."windows" or false)) && ((target."rustix_use_libc" or false) || (target."miri" or false) || (!(("linux" == target."os" or null) && (("little" == target."endian" or null) || ("s390x" == target."arch" or null)) && (("arm" == target."arch" or null) || (("aarch64" == target."arch" or null) && ("64" == target."pointer_width" or null)) || ("riscv64" == target."arch" or null) || ((target."rustix_use_experimental_asm" or false) && ("powerpc64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("s390x" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips32r6" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64r6" == target."arch" or null)) || ("x86" == target."arch" or null) || (("x86_64" == target."arch" or null) && ("64" == target."pointer_width" or null))))))); } { name = "linux-raw-sys"; packageId = "linux-raw-sys"; usesDefaultFeatures = false; - target = { target, features }: ((("android" == target."os" or null) || ("linux" == target."os" or null)) && ((target."rustix_use_libc" or false) || (target."miri" or false) || (!(("linux" == target."os" or null) && ("little" == target."endian" or null) && (("arm" == target."arch" or null) || (("aarch64" == target."arch" or null) && ("64" == target."pointer_width" or null)) || ("riscv64" == target."arch" or null) || ((target."rustix_use_experimental_asm" or false) && ("powerpc64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips32r6" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64r6" == target."arch" or null)) || ("x86" == target."arch" or null) || (("x86_64" == target."arch" or null) && ("64" == target."pointer_width" or null))))))); + target = { target, features }: ((("android" == target."os" or null) || ("linux" == target."os" or null)) && ((target."rustix_use_libc" or false) || (target."miri" or false) || (!(("linux" == target."os" or null) && (("little" == target."endian" or null) || ("s390x" == target."arch" or null)) && (("arm" == target."arch" or null) || (("aarch64" == target."arch" or null) && ("64" == target."pointer_width" or null)) || ("riscv64" == target."arch" or null) || ((target."rustix_use_experimental_asm" or false) && ("powerpc64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("s390x" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips32r6" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64r6" == target."arch" or null)) || ("x86" == target."arch" or null) || (("x86_64" == target."arch" or null) && ("64" == target."pointer_width" or null))))))); features = [ "general" "ioctl" "no_std" ]; } { name = "linux-raw-sys"; packageId = "linux-raw-sys"; usesDefaultFeatures = false; - target = { target, features }: ((!(target."rustix_use_libc" or false)) && (!(target."miri" or false)) && ("linux" == target."os" or null) && ("little" == target."endian" or null) && (("arm" == target."arch" or null) || (("aarch64" == target."arch" or null) && ("64" == target."pointer_width" or null)) || ("riscv64" == target."arch" or null) || ((target."rustix_use_experimental_asm" or false) && ("powerpc64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips32r6" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64r6" == target."arch" or null)) || ("x86" == target."arch" or null) || (("x86_64" == target."arch" or null) && ("64" == target."pointer_width" or null)))); + target = { target, features }: ((!(target."rustix_use_libc" or false)) && (!(target."miri" or false)) && ("linux" == target."os" or null) && (("little" == target."endian" or null) || ("s390x" == target."arch" or null)) && (("arm" == target."arch" or null) || (("aarch64" == target."arch" or null) && ("64" == target."pointer_width" or null)) || ("riscv64" == target."arch" or null) || ((target."rustix_use_experimental_asm" or false) && ("powerpc64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("s390x" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips32r6" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64r6" == target."arch" or null)) || ("x86" == target."arch" or null) || (("x86_64" == target."arch" or null) && ("64" == target."pointer_width" or null)))); features = [ "general" "errno" "ioctl" "no_std" "elf" ]; } { name = "windows-sys"; - packageId = "windows-sys 0.52.0"; + packageId = "windows-sys 0.59.0"; target = { target, features }: (target."windows" or false); features = [ "Win32_Foundation" "Win32_Networking_WinSock" "Win32_NetworkManagement_IpHelper" "Win32_System_Threading" ]; } @@ -9532,13 +10073,13 @@ rec { "thread" = [ "linux-raw-sys/prctl" ]; "use-libc" = [ "libc_errno" "libc" "libc-extra-traits" ]; }; - resolvedDefaultFeatures = [ "alloc" "fs" "libc-extra-traits" "std" ]; + resolvedDefaultFeatures = [ "alloc" "fs" "libc-extra-traits" "std" "stdio" "termios" ]; }; "rustls" = rec { crateName = "rustls"; - version = "0.23.25"; + version = "0.23.29"; edition = "2021"; - sha256 = "0g5idwxm04i71k3n66ml30zyfbgv6p85a7jky2i09v64i8cfjbl2"; + sha256 = "1lcvzvzqk8xx8jzg0x5v3mkqgwkwr7v6zdq8zw8rp6xj74h3i494"; dependencies = [ { name = "log"; @@ -9589,7 +10130,7 @@ rec { "aws-lc-rs" = [ "aws_lc_rs" ]; "aws_lc_rs" = [ "dep:aws-lc-rs" "webpki/aws-lc-rs" "aws-lc-rs/aws-lc-sys" "aws-lc-rs/prebuilt-nasm" ]; "brotli" = [ "dep:brotli" "dep:brotli-decompressor" "std" ]; - "default" = [ "aws_lc_rs" "logging" "std" "tls12" ]; + "default" = [ "aws_lc_rs" "logging" "prefer-post-quantum" "std" "tls12" ]; "fips" = [ "aws_lc_rs" "aws-lc-rs?/fips" "webpki/aws-lc-rs-fips" ]; "hashbrown" = [ "dep:hashbrown" ]; "log" = [ "dep:log" ]; @@ -9603,7 +10144,7 @@ rec { }; resolvedDefaultFeatures = [ "log" "logging" "ring" "std" "tls12" ]; }; - "rustls-native-certs" = rec { + "rustls-native-certs 0.7.3" = rec { crateName = "rustls-native-certs"; version = "0.7.3"; edition = "2021"; @@ -9631,7 +10172,38 @@ rec { } { name = "security-framework"; - packageId = "security-framework"; + packageId = "security-framework 2.11.1"; + target = { target, features }: ("macos" == target."os" or null); + } + ]; + + }; + "rustls-native-certs 0.8.1" = rec { + crateName = "rustls-native-certs"; + version = "0.8.1"; + edition = "2021"; + sha256 = "1ls7laa3748mkn23fmi3g4mlwk131lx6chq2lyc8v2mmabfz5kvz"; + libName = "rustls_native_certs"; + dependencies = [ + { + name = "openssl-probe"; + packageId = "openssl-probe"; + target = { target, features }: ((target."unix" or false) && (!("macos" == target."os" or null))); + } + { + name = "rustls-pki-types"; + packageId = "rustls-pki-types"; + rename = "pki-types"; + features = [ "std" ]; + } + { + name = "schannel"; + packageId = "schannel"; + target = { target, features }: (target."windows" or false); + } + { + name = "security-framework"; + packageId = "security-framework 3.2.0"; target = { target, features }: ("macos" == target."os" or null); } ]; @@ -9639,17 +10211,11 @@ rec { }; "rustls-pemfile" = rec { crateName = "rustls-pemfile"; - version = "2.1.3"; + version = "2.2.0"; edition = "2018"; - sha256 = "09bl873pkibmb2da49kkbm9jlagscjvzrv257q6k01p101my2vqr"; + sha256 = "0l3f3mrfkgdjrava7ibwzgwc4h3dljw3pdkbsi9rkwz3zvji9qyw"; libName = "rustls_pemfile"; dependencies = [ - { - name = "base64"; - packageId = "base64 0.22.1"; - usesDefaultFeatures = false; - features = [ "alloc" ]; - } { name = "rustls-pki-types"; packageId = "rustls-pki-types"; @@ -9658,29 +10224,43 @@ rec { ]; features = { "default" = [ "std" ]; - "std" = [ "base64/std" ]; + "std" = [ "pki-types/std" ]; }; resolvedDefaultFeatures = [ "default" "std" ]; }; "rustls-pki-types" = rec { crateName = "rustls-pki-types"; - version = "1.11.0"; + version = "1.12.0"; edition = "2021"; - sha256 = "0755isc0x5iymm3wsn59s0ad1pm9zidw7p34qfqlsjsac9jf4z4i"; + sha256 = "0yawbdpix8jif6s8zj1p2hbyb7y3bj66fhx0y7hyf4qh4964m6i2"; libName = "rustls_pki_types"; + dependencies = [ + { + name = "web-time"; + packageId = "web-time"; + optional = true; + target = { target, features }: ((builtins.elem "wasm" target."family") && ("unknown" == target."os" or null)); + } + { + name = "zeroize"; + packageId = "zeroize"; + optional = true; + } + ]; features = { + "alloc" = [ "dep:zeroize" ]; "default" = [ "alloc" ]; "std" = [ "alloc" ]; "web" = [ "web-time" ]; "web-time" = [ "dep:web-time" ]; }; - resolvedDefaultFeatures = [ "alloc" "default" "std" ]; + resolvedDefaultFeatures = [ "alloc" "default" "std" "web" "web-time" ]; }; "rustls-webpki" = rec { crateName = "rustls-webpki"; - version = "0.103.1"; + version = "0.103.4"; edition = "2021"; - sha256 = "00rcdz0rb9ia2ivrq7412ry9qkvbh78pra2phl4p7kxck9vbiy7y"; + sha256 = "1z4jmmgasjgk9glb160a66bshvgifa64mgfjrkqp7dy1w158h5qa"; libName = "webpki"; dependencies = [ { @@ -9704,6 +10284,7 @@ rec { "alloc" = [ "ring?/alloc" "pki-types/alloc" ]; "aws-lc-rs" = [ "dep:aws-lc-rs" "aws-lc-rs/aws-lc-sys" "aws-lc-rs/prebuilt-nasm" ]; "aws-lc-rs-fips" = [ "dep:aws-lc-rs" "aws-lc-rs/fips" ]; + "aws-lc-rs-unstable" = [ "aws-lc-rs" "aws-lc-rs/unstable" ]; "default" = [ "std" ]; "ring" = [ "dep:ring" ]; "std" = [ "alloc" "pki-types/std" ]; @@ -9712,9 +10293,9 @@ rec { }; "rustversion" = rec { crateName = "rustversion"; - version = "1.0.17"; + version = "1.0.21"; edition = "2018"; - sha256 = "1mm3fckyvb0l2209in1n2k05sws5d9mpkszbnwhq3pkq8apjhpcm"; + sha256 = "07bb1xx05hhwpnl43sqrhsmxyk5sd5m5baadp19nxp69s9xij3ca"; procMacro = true; build = "build/build.rs"; authors = [ @@ -9724,9 +10305,9 @@ rec { }; "ryu" = rec { crateName = "ryu"; - version = "1.0.18"; + version = "1.0.20"; edition = "2018"; - sha256 = "17xx2s8j1lln7iackzd9p0sv546vjq71i779gphjq923vjh5pjzk"; + sha256 = "07s855l8sb333h6bpn24pka5sp7hjk2w667xy6a0khkf6sqv5lr8"; authors = [ "David Tolnay " ]; @@ -9754,9 +10335,9 @@ rec { }; "schannel" = rec { crateName = "schannel"; - version = "0.1.23"; + version = "0.1.27"; edition = "2018"; - sha256 = "0d1m156bsjrws6xzzr1wyfyih9i22mb2csb5pc5kmkrvci2ibjgv"; + sha256 = "0gbbhy28v72kd5iina0z2vcdl3vz63mk5idvkzn5r52z6jmfna8z"; authors = [ "Steven Fackler " "Steffen Butzer " @@ -9764,14 +10345,14 @@ rec { dependencies = [ { name = "windows-sys"; - packageId = "windows-sys 0.52.0"; - features = [ "Win32_Foundation" "Win32_Security_Cryptography" "Win32_Security_Authentication_Identity" "Win32_Security_Credentials" "Win32_System_Memory" ]; + packageId = "windows-sys 0.59.0"; + features = [ "Win32_Foundation" "Win32_Security_Cryptography" "Win32_Security_Authentication_Identity" "Win32_Security_Credentials" "Win32_System_LibraryLoader" "Win32_System_Memory" "Win32_System_SystemInformation" ]; } ]; devDependencies = [ { name = "windows-sys"; - packageId = "windows-sys 0.52.0"; + packageId = "windows-sys 0.59.0"; features = [ "Win32_System_SystemInformation" "Win32_System_Time" ]; } ]; @@ -9867,7 +10448,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.87"; + packageId = "syn 2.0.104"; features = [ "extra-traits" ]; } ]; @@ -9905,7 +10486,7 @@ rec { "serde" = [ "dep:serde" ]; }; }; - "security-framework" = rec { + "security-framework 2.11.1" = rec { crateName = "security-framework"; version = "2.11.1"; edition = "2021"; @@ -9918,11 +10499,11 @@ rec { dependencies = [ { name = "bitflags"; - packageId = "bitflags 2.6.0"; + packageId = "bitflags"; } { name = "core-foundation"; - packageId = "core-foundation"; + packageId = "core-foundation 0.9.4"; } { name = "core-foundation-sys"; @@ -9952,11 +10533,55 @@ rec { }; resolvedDefaultFeatures = [ "OSX_10_10" "OSX_10_11" "OSX_10_12" "OSX_10_9" "default" ]; }; + "security-framework 3.2.0" = rec { + crateName = "security-framework"; + version = "3.2.0"; + edition = "2021"; + sha256 = "05mkrddi9i18h9p098d0iimqv1xxz0wd8mbgpbvh9jj67x0205r7"; + libName = "security_framework"; + authors = [ + "Steven Fackler " + "Kornel " + ]; + dependencies = [ + { + name = "bitflags"; + packageId = "bitflags"; + } + { + name = "core-foundation"; + packageId = "core-foundation 0.10.1"; + } + { + name = "core-foundation-sys"; + packageId = "core-foundation-sys"; + } + { + name = "libc"; + packageId = "libc"; + } + { + name = "security-framework-sys"; + packageId = "security-framework-sys"; + usesDefaultFeatures = false; + } + ]; + features = { + "OSX_10_12" = [ "security-framework-sys/OSX_10_12" ]; + "OSX_10_13" = [ "OSX_10_12" "security-framework-sys/OSX_10_13" "alpn" "session-tickets" ]; + "OSX_10_14" = [ "OSX_10_13" "security-framework-sys/OSX_10_14" ]; + "OSX_10_15" = [ "OSX_10_14" "security-framework-sys/OSX_10_15" ]; + "default" = [ "OSX_10_12" ]; + "log" = [ "dep:log" ]; + "sync-keychain" = [ "OSX_10_13" ]; + }; + resolvedDefaultFeatures = [ "OSX_10_12" "default" ]; + }; "security-framework-sys" = rec { crateName = "security-framework-sys"; - version = "2.11.1"; + version = "2.14.0"; edition = "2021"; - sha256 = "1byfpx39sbmndfjrlqqylcxdpn3mpjyb9d92dffzw24vkgz2knkm"; + sha256 = "0chwn01qrnvs59i5220bymd38iddy4krbnmfnhf4k451aqfj7ns9"; libName = "security_framework_sys"; authors = [ "Steven Fackler " @@ -9985,9 +10610,9 @@ rec { }; "semver" = rec { crateName = "semver"; - version = "1.0.23"; + version = "1.0.26"; edition = "2018"; - sha256 = "12wqpxfflclbq4dv8sa6gchdh92ahhwn4ci1ls22wlby3h57wsb1"; + sha256 = "1l5q2vb8fjkby657kdyfpvv40x2i2xqq9bg57pxqakfj92fgmrjn"; authors = [ "David Tolnay " ]; @@ -10085,7 +10710,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.87"; + packageId = "syn 2.0.104"; usesDefaultFeatures = false; features = [ "clone-impls" "derive" "parsing" "printing" "proc-macro" ]; } @@ -10117,7 +10742,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.87"; + packageId = "syn 2.0.104"; usesDefaultFeatures = false; features = [ "clone-impls" "derive" "parsing" "printing" ]; } @@ -10171,9 +10796,9 @@ rec { }; "serde_path_to_error" = rec { crateName = "serde_path_to_error"; - version = "0.1.16"; + version = "0.1.17"; edition = "2021"; - sha256 = "19hlz2359l37ifirskpcds7sxg0gzpqvfilibs7whdys0128i6dg"; + sha256 = "0alb447z25dvczd6ll3vfjbf51pypn23mgs5hv8978vzjczv3yjr"; authors = [ "David Tolnay " ]; @@ -10228,7 +10853,7 @@ rec { dependencies = [ { name = "indexmap"; - packageId = "indexmap 2.5.0"; + packageId = "indexmap 2.10.0"; } { name = "itoa"; @@ -10290,9 +10915,9 @@ rec { }; "sha2" = rec { crateName = "sha2"; - version = "0.10.8"; + version = "0.10.9"; edition = "2018"; - sha256 = "1j1x78zk9il95w9iv46dh9wm73r6xrgj32y6lzzw7bxws9dbfgbr"; + sha256 = "10xjj843v31ghsksd9sl9y12qfc48157j1xpb8v1ml39jy0psl57"; authors = [ "RustCrypto Developers" ]; @@ -10367,9 +10992,9 @@ rec { }; "signal-hook-registry" = rec { crateName = "signal-hook-registry"; - version = "1.4.2"; + version = "1.4.5"; edition = "2015"; - sha256 = "1cb5akgq8ajnd5spyn587srvs4n26ryq0p78nswffwhv46sf1sd9"; + sha256 = "042lkqrpnlrgvrrcirgigxyp1zk70d8v0fsr5w7a18k3bw2vh0wj"; libName = "signal_hook_registry"; authors = [ "Michal 'vorner' Vaner " @@ -10385,9 +11010,9 @@ rec { }; "siphasher" = rec { crateName = "siphasher"; - version = "0.3.11"; + version = "1.0.1"; edition = "2018"; - sha256 = "03axamhmwsrmh0psdw3gf7c0zc4fyl5yjxfifz9qfka6yhkqid9q"; + sha256 = "17f35782ma3fn6sh21c027kjmd227xyrx06ffi8gw4xzv9yry6an"; authors = [ "Frank Denis " ]; @@ -10402,18 +11027,12 @@ rec { }; "slab" = rec { crateName = "slab"; - version = "0.4.9"; + version = "0.4.10"; edition = "2018"; - sha256 = "0rxvsgir0qw5lkycrqgb1cxsvxzjv9bmx73bk5y42svnzfba94lg"; + sha256 = "03f5a9gdp33mngya4qwq2555138pj74pl015scv57wsic5rikp04"; authors = [ "Carl Lerche " ]; - buildDependencies = [ - { - name = "autocfg"; - packageId = "autocfg"; - } - ]; features = { "default" = [ "std" ]; "serde" = [ "dep:serde" ]; @@ -10443,17 +11062,21 @@ rec { }; "smallvec" = rec { crateName = "smallvec"; - version = "1.13.2"; + version = "1.15.1"; edition = "2018"; - sha256 = "0rsw5samawl3wsw6glrsb127rx6sh89a8wyikicw6dkdcjd1lpiw"; + sha256 = "00xxdxxpgyq5vjnpljvkmy99xij5rxgh913ii1v16kzynnivgcb7"; authors = [ "The Servo Project Developers" ]; features = { "arbitrary" = [ "dep:arbitrary" ]; + "bincode" = [ "dep:bincode" ]; "const_new" = [ "const_generics" ]; "drain_keep_rest" = [ "drain_filter" ]; + "impl_bincode" = [ "bincode" "unty" ]; + "malloc_size_of" = [ "dep:malloc_size_of" ]; "serde" = [ "dep:serde" ]; + "unty" = [ "dep:unty" ]; }; resolvedDefaultFeatures = [ "const_generics" "const_new" ]; }; @@ -10492,11 +11115,11 @@ rec { }; resolvedDefaultFeatures = [ "default" "guide" "std" ]; }; - "snafu 0.8.4" = rec { + "snafu 0.8.6" = rec { crateName = "snafu"; - version = "0.8.4"; + version = "0.8.6"; edition = "2018"; - sha256 = "17f7w6d3szwc2s4q2vkc616yb4g70llqcbb7b90v63b60awmr0rb"; + sha256 = "09znwwss9xi7i28kpj29b29nh28nv5kfjjsa99x5v3dz27h022rj"; authors = [ "Jake Goulding " ]; @@ -10516,7 +11139,7 @@ rec { } { name = "snafu-derive"; - packageId = "snafu-derive 0.8.4"; + packageId = "snafu-derive 0.8.6"; } ]; features = { @@ -10530,9 +11153,11 @@ rec { "pin-project" = [ "dep:pin-project" ]; "rust_1_61" = [ "snafu-derive/rust_1_61" ]; "rust_1_65" = [ "rust_1_61" ]; + "rust_1_81" = [ "rust_1_65" ]; + "std" = [ "alloc" ]; "unstable-provider-api" = [ "snafu-derive/unstable-provider-api" ]; }; - resolvedDefaultFeatures = [ "default" "futures" "futures-core-crate" "pin-project" "rust_1_61" "rust_1_65" "std" ]; + resolvedDefaultFeatures = [ "alloc" "default" "futures" "futures-core-crate" "pin-project" "rust_1_61" "rust_1_65" "std" ]; }; "snafu-derive 0.6.10" = rec { crateName = "snafu-derive"; @@ -10562,11 +11187,11 @@ rec { features = { }; }; - "snafu-derive 0.8.4" = rec { + "snafu-derive 0.8.6" = rec { crateName = "snafu-derive"; - version = "0.8.4"; + version = "0.8.6"; edition = "2018"; - sha256 = "1r8s45plv1nxy60d9xyvyjxz0692jh6aax1icj064ps0r8py1l9q"; + sha256 = "1xs7w5hg9sw45lw34mzza1nnpx9lz5snjp9s9lh2852c8bpy4q8r"; procMacro = true; libName = "snafu_derive"; authors = [ @@ -10588,7 +11213,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.87"; + packageId = "syn 2.0.104"; features = [ "full" ]; } ]; @@ -10598,9 +11223,9 @@ rec { }; "socket2" = rec { crateName = "socket2"; - version = "0.5.9"; + version = "0.5.10"; edition = "2021"; - sha256 = "1vzds1wwwi0a51fn10r98j7cx3ir4shvhykpbk7md2h5h1ydapsg"; + sha256 = "0y067ki5q946w91xlz2sb175pnfazizva6fi3kfp639mxnmpc8z2"; authors = [ "Alex Crichton " "Thomas de Zeeuw " @@ -10645,7 +11270,21 @@ rec { "ticket_mutex" = [ "mutex" ]; "use_ticket_mutex" = [ "mutex" "ticket_mutex" ]; }; - resolvedDefaultFeatures = [ "once" ]; + resolvedDefaultFeatures = [ "mutex" "spin_mutex" ]; + }; + "stable_deref_trait" = rec { + crateName = "stable_deref_trait"; + version = "1.2.0"; + edition = "2015"; + sha256 = "1lxjr8q2n534b2lhkxd6l6wcddzjvnksi58zv11f9y0jjmr15wd8"; + authors = [ + "Robert Grosse " + ]; + features = { + "default" = [ "std" ]; + "std" = [ "alloc" ]; + }; + resolvedDefaultFeatures = [ "alloc" ]; }; "stackable-cockpit" = rec { crateName = "stackable-cockpit"; @@ -10671,7 +11310,7 @@ rec { } { name = "indexmap"; - packageId = "indexmap 2.5.0"; + packageId = "indexmap 2.10.0"; features = [ "serde" ]; } { @@ -10724,7 +11363,7 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.4"; + packageId = "snafu 0.8.6"; features = [ "futures" ]; } { @@ -10819,7 +11458,7 @@ rec { dependencies = [ { name = "axum"; - packageId = "axum 0.7.5"; + packageId = "axum 0.7.9"; features = [ "http2" ]; } { @@ -10853,7 +11492,7 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.4"; + packageId = "snafu 0.8.6"; features = [ "futures" ]; } { @@ -10958,7 +11597,7 @@ rec { } { name = "indexmap"; - packageId = "indexmap 2.5.0"; + packageId = "indexmap 2.10.0"; } { name = "json-patch"; @@ -11008,7 +11647,7 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.4"; + packageId = "snafu 0.8.6"; } { name = "stackable-operator-derive"; @@ -11030,7 +11669,7 @@ rec { } { name = "strum"; - packageId = "strum 0.27.1"; + packageId = "strum"; features = [ "derive" ]; } { @@ -11093,7 +11732,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.87"; + packageId = "syn 2.0.104"; } ]; @@ -11134,7 +11773,7 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.4"; + packageId = "snafu 0.8.6"; } ]; @@ -11156,7 +11795,7 @@ rec { dependencies = [ { name = "axum"; - packageId = "axum 0.8.3"; + packageId = "axum 0.8.4"; } { name = "clap"; @@ -11193,11 +11832,11 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.4"; + packageId = "snafu 0.8.6"; } { name = "strum"; - packageId = "strum 0.27.1"; + packageId = "strum"; features = [ "derive" ]; } { @@ -11327,7 +11966,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.87"; + packageId = "syn 2.0.104"; } ]; devDependencies = [ @@ -11392,7 +12031,7 @@ rec { } { name = "indexmap"; - packageId = "indexmap 2.5.0"; + packageId = "indexmap 2.10.0"; features = [ "serde" ]; } { @@ -11437,7 +12076,7 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.4"; + packageId = "snafu 0.8.6"; features = [ "futures" ]; } { @@ -11493,23 +12132,7 @@ rec { ]; }; - "strum 0.26.3" = rec { - crateName = "strum"; - version = "0.26.3"; - edition = "2018"; - sha256 = "01lgl6jvrf4j28v5kmx9bp480ygf1nhvac8b4p7rcj9hxw50zv4g"; - authors = [ - "Peter Glotfelty " - ]; - features = { - "default" = [ "std" ]; - "derive" = [ "strum_macros" ]; - "phf" = [ "dep:phf" ]; - "strum_macros" = [ "dep:strum_macros" ]; - }; - resolvedDefaultFeatures = [ "default" "std" ]; - }; - "strum 0.27.1" = rec { + "strum" = rec { crateName = "strum"; version = "0.27.1"; edition = "2021"; @@ -11520,7 +12143,7 @@ rec { dependencies = [ { name = "strum_macros"; - packageId = "strum_macros 0.27.1"; + packageId = "strum_macros"; optional = true; } ]; @@ -11532,41 +12155,7 @@ rec { }; resolvedDefaultFeatures = [ "default" "derive" "std" "strum_macros" ]; }; - "strum_macros 0.26.4" = rec { - crateName = "strum_macros"; - version = "0.26.4"; - edition = "2018"; - sha256 = "1gl1wmq24b8md527cpyd5bw9rkbqldd7k1h38kf5ajd2ln2ywssc"; - procMacro = true; - authors = [ - "Peter Glotfelty " - ]; - dependencies = [ - { - name = "heck"; - packageId = "heck"; - } - { - name = "proc-macro2"; - packageId = "proc-macro2"; - } - { - name = "quote"; - packageId = "quote"; - } - { - name = "rustversion"; - packageId = "rustversion"; - } - { - name = "syn"; - packageId = "syn 2.0.87"; - features = [ "parsing" "extra-traits" ]; - } - ]; - - }; - "strum_macros 0.27.1" = rec { + "strum_macros" = rec { crateName = "strum_macros"; version = "0.27.1"; edition = "2021"; @@ -11594,7 +12183,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.87"; + packageId = "syn 2.0.104"; features = [ "parsing" ]; } ]; @@ -11647,11 +12236,11 @@ rec { }; resolvedDefaultFeatures = [ "clone-impls" "default" "derive" "full" "parsing" "printing" "proc-macro" "quote" ]; }; - "syn 2.0.87" = rec { + "syn 2.0.104" = rec { crateName = "syn"; - version = "2.0.87"; + version = "2.0.104"; edition = "2021"; - sha256 = "0bd3mfcswvn4jkrp7ich5kk58kmpph8412yxd36nsfnh8vilrai5"; + sha256 = "0h2s8cxh5dsh9h41dxnlzpifqqn59cqgm0kljawws61ljq2zgdhp"; authors = [ "David Tolnay " ]; @@ -11678,26 +12267,13 @@ rec { "proc-macro" = [ "proc-macro2/proc-macro" "quote?/proc-macro" ]; "test" = [ "syn-test-suite/all-features" ]; }; - resolvedDefaultFeatures = [ "clone-impls" "default" "derive" "extra-traits" "full" "parsing" "printing" "proc-macro" "visit" "visit-mut" ]; - }; - "sync_wrapper 0.1.2" = rec { - crateName = "sync_wrapper"; - version = "0.1.2"; - edition = "2018"; - sha256 = "0q01lyj0gr9a93n10nxsn8lwbzq97jqd6b768x17c8f7v7gccir0"; - authors = [ - "Actyx AG " - ]; - features = { - "futures" = [ "futures-core" ]; - "futures-core" = [ "dep:futures-core" ]; - }; + resolvedDefaultFeatures = [ "clone-impls" "default" "derive" "extra-traits" "fold" "full" "parsing" "printing" "proc-macro" "visit" "visit-mut" ]; }; - "sync_wrapper 1.0.1" = rec { + "sync_wrapper" = rec { crateName = "sync_wrapper"; - version = "1.0.1"; - edition = "2018"; - sha256 = "150k6lwvr4nl237ngsz8fj5j78k712m4bggrfyjsidllraz5l1m7"; + version = "1.0.2"; + edition = "2021"; + sha256 = "0qvjyasd6w18mjg5xlaq5jgy84jsjfsvmnn12c13gypxbv75dwhb"; authors = [ "Actyx AG " ]; @@ -11715,19 +12291,51 @@ rec { }; resolvedDefaultFeatures = [ "futures" "futures-core" ]; }; - "tera" = rec { - crateName = "tera"; - version = "1.20.0"; + "synstructure" = rec { + crateName = "synstructure"; + version = "0.13.2"; edition = "2018"; - sha256 = "1vnj9imw2h9szkd1izsrhwrc9jvazvdsp84x65wg2rg88ldqb7db"; + sha256 = "1lh9lx3r3jb18f8sbj29am5hm9jymvbwh6jb1izsnnxgvgrp12kj"; authors = [ - "Vincent Prouillet " + "Nika Layzell " ]; dependencies = [ { - name = "chrono"; - packageId = "chrono"; - optional = true; + name = "proc-macro2"; + packageId = "proc-macro2"; + usesDefaultFeatures = false; + } + { + name = "quote"; + packageId = "quote"; + usesDefaultFeatures = false; + } + { + name = "syn"; + packageId = "syn 2.0.104"; + usesDefaultFeatures = false; + features = [ "derive" "parsing" "printing" "clone-impls" "visit" "extra-traits" ]; + } + ]; + features = { + "default" = [ "proc-macro" ]; + "proc-macro" = [ "proc-macro2/proc-macro" "syn/proc-macro" "quote/proc-macro" ]; + }; + resolvedDefaultFeatures = [ "default" "proc-macro" ]; + }; + "tera" = rec { + crateName = "tera"; + version = "1.20.0"; + edition = "2018"; + sha256 = "1vnj9imw2h9szkd1izsrhwrc9jvazvdsp84x65wg2rg88ldqb7db"; + authors = [ + "Vincent Prouillet " + ]; + dependencies = [ + { + name = "chrono"; + packageId = "chrono"; + optional = true; usesDefaultFeatures = false; features = [ "std" "clock" ]; } @@ -11806,9 +12414,9 @@ rec { }; "termion" = rec { crateName = "termion"; - version = "4.0.2"; + version = "4.0.5"; edition = "2015"; - sha256 = "0j1ql1p1q43r992bdjnha0kpj2xnc13xbvbn13l764cda67fdk0w"; + sha256 = "1fr2q51grjia1ysl9q3vsixx6b3ybzsi79ss38rdd6b7wafscs9n"; authors = [ "ticki " "gycos " @@ -11823,13 +12431,12 @@ rec { } { name = "libredox"; - packageId = "libredox 0.0.2"; + packageId = "libredox"; target = { target, features }: ("redox" == target."os" or null); } { name = "numtoa"; packageId = "numtoa"; - features = [ "std" ]; } { name = "redox_termios"; @@ -11841,18 +12448,18 @@ rec { "serde" = [ "dep:serde" ]; }; }; - "thiserror 1.0.63" = rec { + "thiserror 1.0.69" = rec { crateName = "thiserror"; - version = "1.0.63"; + version = "1.0.69"; edition = "2021"; - sha256 = "092p83mf4p1vkjb2j6h6z96dan4raq2simhirjv12slbndq26d60"; + sha256 = "0lizjay08agcr5hs9yfzzj6axs53a2rgx070a1dsi3jpkcrzbamn"; authors = [ "David Tolnay " ]; dependencies = [ { name = "thiserror-impl"; - packageId = "thiserror-impl 1.0.63"; + packageId = "thiserror-impl 1.0.69"; } ]; @@ -11876,11 +12483,11 @@ rec { }; resolvedDefaultFeatures = [ "default" "std" ]; }; - "thiserror-impl 1.0.63" = rec { + "thiserror-impl 1.0.69" = rec { crateName = "thiserror-impl"; - version = "1.0.63"; + version = "1.0.69"; edition = "2021"; - sha256 = "0qd21l2jjrkvnpr5da3l3b58v4wmrkn6aa0h1z5dg6kb8rc8nmd4"; + sha256 = "1h84fmn2nai41cxbhk6pqf46bxqq1b344v8yz089w1chzi76rvjg"; procMacro = true; libName = "thiserror_impl"; authors = [ @@ -11897,7 +12504,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.87"; + packageId = "syn 2.0.104"; } ]; @@ -11923,16 +12530,16 @@ rec { } { name = "syn"; - packageId = "syn 2.0.87"; + packageId = "syn 2.0.104"; } ]; }; "thread_local" = rec { crateName = "thread_local"; - version = "1.1.8"; + version = "1.1.9"; edition = "2021"; - sha256 = "173i5lyjh011gsimk21np9jn8al18rxsrkjli20a7b8ks2xgk7lb"; + sha256 = "1191jvl8d63agnq06pcnarivf63qzgpws5xa33hgc92gjjj4c0pn"; authors = [ "Amanieu d'Antras " ]; @@ -11941,19 +12548,15 @@ rec { name = "cfg-if"; packageId = "cfg-if"; } - { - name = "once_cell"; - packageId = "once_cell"; - } ]; features = { }; }; "time" = rec { crateName = "time"; - version = "0.3.36"; + version = "0.3.41"; edition = "2021"; - sha256 = "11g8hdpahgrf1wwl2rpsg5nxq3aj7ri6xr672v4qcij6cgjqizax"; + sha256 = "0h0cpiyya8cjlrh00d2r72bmgg4lsdcncs76qpwy0rn2kghijxla"; authors = [ "Jacob Pratt " "Time contributors" @@ -12031,9 +12634,9 @@ rec { }; "time-core" = rec { crateName = "time-core"; - version = "0.1.2"; + version = "0.1.4"; edition = "2021"; - sha256 = "1wx3qizcihw6z151hywfzzyd1y5dl804ydyxci6qm07vbakpr4pg"; + sha256 = "0z5h9fknvdvbs2k2s1chpi3ab3jvgkfhdnqwrvixjngm263s7sf9"; libName = "time_core"; authors = [ "Jacob Pratt " @@ -12043,9 +12646,9 @@ rec { }; "time-macros" = rec { crateName = "time-macros"; - version = "0.2.18"; + version = "0.2.22"; edition = "2021"; - sha256 = "1kqwxvfh2jkpg38fy673d6danh1bhcmmbsmffww3mphgail2l99z"; + sha256 = "0jcaxpw220han2bzbrdlpqhy1s5k9i8ri3lw6n5zv4zcja9p69im"; procMacro = true; libName = "time_macros"; authors = [ @@ -12066,11 +12669,41 @@ rec { }; resolvedDefaultFeatures = [ "formatting" "parsing" ]; }; + "tinystr" = rec { + crateName = "tinystr"; + version = "0.8.1"; + edition = "2021"; + sha256 = "12sc6h3hnn6x78iycm5v6wrs2xhxph0ydm43yyn7gdfw8l8nsksx"; + authors = [ + "The ICU4X Project Developers" + ]; + dependencies = [ + { + name = "displaydoc"; + packageId = "displaydoc"; + usesDefaultFeatures = false; + } + { + name = "zerovec"; + packageId = "zerovec"; + optional = true; + usesDefaultFeatures = false; + } + ]; + features = { + "alloc" = [ "zerovec?/alloc" ]; + "databake" = [ "dep:databake" ]; + "default" = [ "alloc" ]; + "serde" = [ "dep:serde" ]; + "zerovec" = [ "dep:zerovec" ]; + }; + resolvedDefaultFeatures = [ "alloc" "zerovec" ]; + }; "tinyvec" = rec { crateName = "tinyvec"; - version = "1.8.0"; + version = "1.9.0"; edition = "2018"; - sha256 = "0f5rf6a2wzyv6w4jmfga9iw7rp9fp5gf4d604xgjsf3d9wgqhpj4"; + sha256 = "0w9w8qcifns9lzvlbfwa01y0skhr542anwa3rpn28rg82wgndcq9"; authors = [ "Lokathor " ]; @@ -12084,8 +12717,13 @@ rec { features = { "alloc" = [ "tinyvec_macros" ]; "arbitrary" = [ "dep:arbitrary" ]; + "borsh" = [ "dep:borsh" ]; + "generic-array" = [ "dep:generic-array" ]; + "latest_stable_rust" = [ "rustc_1_61" ]; "real_blackbox" = [ "criterion/real_blackbox" ]; + "rustc_1_55" = [ "rustc_1_40" ]; "rustc_1_57" = [ "rustc_1_55" ]; + "rustc_1_61" = [ "rustc_1_57" ]; "serde" = [ "dep:serde" ]; "std" = [ "alloc" ]; "tinyvec_macros" = [ "dep:tinyvec_macros" ]; @@ -12104,9 +12742,9 @@ rec { }; "tokio" = rec { crateName = "tokio"; - version = "1.40.0"; + version = "1.46.1"; edition = "2021"; - sha256 = "166rllhfkyqp0fs7sxn6crv74iizi4wzd3cvxkcpmlk52qip1c72"; + sha256 = "05sxldy7kcgysnxyzz1h1l8j3d9mjyqfh7r48ni27gmg9lsa5hqc"; authors = [ "Tokio Contributors " ]; @@ -12121,6 +12759,17 @@ rec { packageId = "bytes"; optional = true; } + { + name = "io-uring"; + packageId = "io-uring"; + usesDefaultFeatures = false; + target = { target, features }: ((target."tokio_uring" or false) && ("linux" == target."os" or null)); + } + { + name = "libc"; + packageId = "libc"; + target = { target, features }: ((target."tokio_uring" or false) && ("linux" == target."os" or null)); + } { name = "libc"; packageId = "libc"; @@ -12133,6 +12782,13 @@ rec { optional = true; usesDefaultFeatures = false; } + { + name = "mio"; + packageId = "mio"; + usesDefaultFeatures = false; + target = { target, features }: ((target."tokio_uring" or false) && ("linux" == target."os" or null)); + features = [ "os-poll" "os-ext" ]; + } { name = "pin-project-lite"; packageId = "pin-project-lite"; @@ -12143,6 +12799,11 @@ rec { optional = true; target = { target, features }: (target."unix" or false); } + { + name = "slab"; + packageId = "slab"; + target = { target, features }: ((target."tokio_uring" or false) && ("linux" == target."os" or null)); + } { name = "socket2"; packageId = "socket2"; @@ -12203,9 +12864,9 @@ rec { }; "tokio-macros" = rec { crateName = "tokio-macros"; - version = "2.4.0"; + version = "2.5.0"; edition = "2021"; - sha256 = "0lnpg14h1v3fh2jvnc8cz7cjf0m7z1xgkwfpcyy632g829imjgb9"; + sha256 = "1f6az2xbvqp7am417b78d1za8axbvjvxnmkakz9vr8s52czx81kf"; procMacro = true; libName = "tokio_macros"; authors = [ @@ -12222,7 +12883,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.87"; + packageId = "syn 2.0.104"; features = [ "full" ]; } ]; @@ -12230,9 +12891,9 @@ rec { }; "tokio-rustls" = rec { crateName = "tokio-rustls"; - version = "0.26.0"; + version = "0.26.2"; edition = "2021"; - sha256 = "1m00czrmk8x7pdjnz10a3da3i1d0sdf9j9vfp5dnk5ss1q6w8yqc"; + sha256 = "16wf007q3584j46wc4s0zc4szj6280g23hka6x6bgs50l4v7nwlf"; libName = "tokio_rustls"; dependencies = [ { @@ -12241,11 +12902,6 @@ rec { usesDefaultFeatures = false; features = [ "std" ]; } - { - name = "rustls-pki-types"; - packageId = "rustls-pki-types"; - rename = "pki-types"; - } { name = "tokio"; packageId = "tokio"; @@ -12376,9 +13032,9 @@ rec { }; "tokio-util" = rec { crateName = "tokio-util"; - version = "0.7.11"; + version = "0.7.15"; edition = "2021"; - sha256 = "1qcz30db6m8lxkl61b3nic4bim1symi636nhbb3rmi3i6xxv9xlw"; + sha256 = "1pypd9lm1fdnpw0779pqvc16qqrxjy63dgfm20ajhpbdmnlkk9b6"; libName = "tokio_util"; authors = [ "Tokio Contributors " @@ -12436,29 +13092,22 @@ rec { }; "toml_datetime" = rec { crateName = "toml_datetime"; - version = "0.6.8"; + version = "0.6.11"; edition = "2021"; - sha256 = "0hgv7v9g35d7y9r2afic58jvlwnf73vgd1mz2k8gihlgrf73bmqd"; - authors = [ - "Alex Crichton " - ]; + sha256 = "077ix2hb1dcya49hmi1avalwbixmrs75zgzb3b2i7g2gizwdmk92"; features = { "serde" = [ "dep:serde" ]; }; }; "toml_edit" = rec { crateName = "toml_edit"; - version = "0.22.20"; + version = "0.22.27"; edition = "2021"; - sha256 = "07ffw4626k6abicjxb2idh12f1p5fn965zk660zhqsyj5b048g2q"; - authors = [ - "Andronik Ordian " - "Ed Page " - ]; + sha256 = "16l15xm40404asih8vyjvnka9g0xs9i4hfb6ry3ph9g419k8rzj1"; dependencies = [ { name = "indexmap"; - packageId = "indexmap 2.5.0"; + packageId = "indexmap 2.10.0"; features = [ "std" ]; } { @@ -12473,11 +13122,13 @@ rec { ]; features = { "default" = [ "parse" "display" ]; + "display" = [ "dep:toml_write" ]; "parse" = [ "dep:winnow" ]; "perf" = [ "dep:kstring" ]; "serde" = [ "dep:serde" "toml_datetime/serde" "dep:serde_spanned" ]; + "unstable-debug" = [ "winnow?/debug" ]; }; - resolvedDefaultFeatures = [ "default" "display" "parse" ]; + resolvedDefaultFeatures = [ "parse" ]; }; "tonic" = rec { crateName = "tonic"; @@ -12500,13 +13151,13 @@ rec { } { name = "axum"; - packageId = "axum 0.7.5"; + packageId = "axum 0.7.9"; optional = true; usesDefaultFeatures = false; } { name = "base64"; - packageId = "base64 0.22.1"; + packageId = "base64"; } { name = "bytes"; @@ -12750,7 +13401,7 @@ rec { "tracing" = [ "dep:tracing" ]; "util" = [ "__common" "futures-util" "pin-project" ]; }; - resolvedDefaultFeatures = [ "__common" "balance" "buffer" "discover" "futures-core" "futures-util" "indexmap" "limit" "load" "log" "make" "pin-project" "pin-project-lite" "rand" "ready-cache" "slab" "tokio" "tokio-util" "tracing" "util" ]; + resolvedDefaultFeatures = [ "__common" "balance" "buffer" "discover" "futures-core" "futures-util" "indexmap" "limit" "load" "make" "pin-project" "pin-project-lite" "rand" "ready-cache" "slab" "tokio" "tokio-util" "tracing" "util" ]; }; "tower 0.5.2" = rec { crateName = "tower"; @@ -12780,7 +13431,7 @@ rec { } { name = "sync_wrapper"; - packageId = "sync_wrapper 1.0.1"; + packageId = "sync_wrapper"; optional = true; } { @@ -12859,7 +13510,7 @@ rec { "tracing" = [ "dep:tracing" ]; "util" = [ "__common" "futures-util" "pin-project-lite" "sync_wrapper" ]; }; - resolvedDefaultFeatures = [ "__common" "buffer" "filter" "futures-core" "futures-util" "log" "make" "pin-project-lite" "sync_wrapper" "tokio" "tokio-util" "tracing" "util" ]; + resolvedDefaultFeatures = [ "__common" "buffer" "filter" "futures-core" "futures-util" "log" "make" "pin-project-lite" "sync_wrapper" "timeout" "tokio" "tokio-util" "tracing" "util" ]; }; "tower-http 0.5.2" = rec { crateName = "tower-http"; @@ -12873,7 +13524,7 @@ rec { dependencies = [ { name = "bitflags"; - packageId = "bitflags 2.6.0"; + packageId = "bitflags"; } { name = "bytes"; @@ -12955,11 +13606,11 @@ rec { }; resolvedDefaultFeatures = [ "default" "mime" "validate-request" ]; }; - "tower-http 0.6.2" = rec { + "tower-http 0.6.6" = rec { crateName = "tower-http"; - version = "0.6.2"; + version = "0.6.6"; edition = "2018"; - sha256 = "15wnvhl6cpir9125s73bqjzjsvfb0fmndmsimnl2ddnlhfvs6gs0"; + sha256 = "1wh51y4rf03f91c6rvli6nwzsarx7097yx6sqlm75ag27pbjzj5d"; libName = "tower_http"; authors = [ "Tower Maintainers " @@ -12967,17 +13618,23 @@ rec { dependencies = [ { name = "base64"; - packageId = "base64 0.22.1"; + packageId = "base64"; optional = true; } { name = "bitflags"; - packageId = "bitflags 2.6.0"; + packageId = "bitflags"; } { name = "bytes"; packageId = "bytes"; } + { + name = "futures-util"; + packageId = "futures-util"; + optional = true; + usesDefaultFeatures = false; + } { name = "http"; packageId = "http"; @@ -12987,6 +13644,11 @@ rec { packageId = "http-body"; optional = true; } + { + name = "iri-string"; + packageId = "iri-string"; + optional = true; + } { name = "mime"; packageId = "mime"; @@ -12997,6 +13659,11 @@ rec { name = "pin-project-lite"; packageId = "pin-project-lite"; } + { + name = "tower"; + packageId = "tower 0.5.2"; + optional = true; + } { name = "tower-layer"; packageId = "tower-layer"; @@ -13017,10 +13684,19 @@ rec { name = "bytes"; packageId = "bytes"; } + { + name = "futures-util"; + packageId = "futures-util"; + } { name = "http-body"; packageId = "http-body"; } + { + name = "tower"; + packageId = "tower 0.5.2"; + features = [ "buffer" "util" "retry" "make" "timeout" ]; + } ]; features = { "async-compression" = [ "dep:async-compression" ]; @@ -13038,7 +13714,7 @@ rec { "decompression-gzip" = [ "async-compression/gzip" "futures-core" "dep:http-body" "dep:http-body-util" "tokio-util" "tokio" ]; "decompression-zstd" = [ "async-compression/zstd" "futures-core" "dep:http-body" "dep:http-body-util" "tokio-util" "tokio" ]; "follow-redirect" = [ "futures-util" "dep:http-body" "iri-string" "tower/util" ]; - "fs" = [ "futures-util" "dep:http-body" "dep:http-body-util" "tokio/fs" "tokio-util/io" "tokio/io-util" "dep:http-range-header" "mime_guess" "mime" "percent-encoding" "httpdate" "set-status" "futures-util/alloc" "tracing" ]; + "fs" = [ "futures-core" "futures-util" "dep:http-body" "dep:http-body-util" "tokio/fs" "tokio-util/io" "tokio/io-util" "dep:http-range-header" "mime_guess" "mime" "percent-encoding" "httpdate" "set-status" "futures-util/alloc" "tracing" ]; "full" = [ "add-extension" "auth" "catch-panic" "compression-full" "cors" "decompression-full" "follow-redirect" "fs" "limit" "map-request-body" "map-response-body" "metrics" "normalize-path" "propagate-header" "redirect" "request-id" "sensitive-headers" "set-header" "set-status" "timeout" "trace" "util" "validate-request" ]; "futures-core" = [ "dep:futures-core" ]; "futures-util" = [ "dep:futures-util" ]; @@ -13060,7 +13736,7 @@ rec { "uuid" = [ "dep:uuid" ]; "validate-request" = [ "mime" ]; }; - resolvedDefaultFeatures = [ "auth" "base64" "default" "map-response-body" "mime" "trace" "tracing" "validate-request" ]; + resolvedDefaultFeatures = [ "auth" "base64" "default" "follow-redirect" "futures-util" "iri-string" "map-response-body" "mime" "tower" "trace" "tracing" "validate-request" ]; }; "tower-layer" = rec { crateName = "tower-layer"; @@ -13086,9 +13762,9 @@ rec { }; "tracing" = rec { crateName = "tracing"; - version = "0.1.40"; + version = "0.1.41"; edition = "2018"; - sha256 = "1vv48dac9zgj9650pg2b4d0j3w6f3x9gbggf43scq5hrlysklln3"; + sha256 = "1l5xrzyjfyayrwhvhldfnwdyligi1mpqm8mzbi2m1d6y6p2hlkkq"; authors = [ "Eliza Weisman " "Tokio Contributors " @@ -13148,7 +13824,7 @@ rec { } { name = "thiserror"; - packageId = "thiserror 1.0.63"; + packageId = "thiserror 1.0.69"; } { name = "time"; @@ -13169,9 +13845,9 @@ rec { }; "tracing-attributes" = rec { crateName = "tracing-attributes"; - version = "0.1.27"; + version = "0.1.30"; edition = "2018"; - sha256 = "1rvb5dn9z6d0xdj14r403z0af0bbaqhg02hq4jc97g5wds6lqw1l"; + sha256 = "00v9bhfgfg3v101nmmy7s3vdwadb7ngc8c1iw6wai9vj9sv3lf41"; procMacro = true; libName = "tracing_attributes"; authors = [ @@ -13190,7 +13866,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.87"; + packageId = "syn 2.0.104"; usesDefaultFeatures = false; features = [ "full" "parsing" "printing" "visit-mut" "clone-impls" "extra-traits" "proc-macro" ]; } @@ -13200,9 +13876,9 @@ rec { }; "tracing-core" = rec { crateName = "tracing-core"; - version = "0.1.33"; + version = "0.1.34"; edition = "2018"; - sha256 = "170gc7cxyjx824r9kr17zc9gvzx89ypqfdzq259pr56gg5bwjwp6"; + sha256 = "0y3nc4mpnr79rzkrcylv5f5bnjjp19lsxwis9l4kzs97ya0jbldr"; libName = "tracing_core"; authors = [ "Tokio Contributors " @@ -13231,9 +13907,9 @@ rec { }; "tracing-indicatif" = rec { crateName = "tracing-indicatif"; - version = "0.3.9"; - edition = "2021"; - sha256 = "188anka0xqrjbd7bzj41854rqvf02qszs9l2jzpr7n0c1r1wl0c2"; + version = "0.3.11"; + edition = "2024"; + sha256 = "007jcv7c72bfgi79hmai8cdvpgjrxz379lnvzpy09ns6zk44qwcc"; libName = "tracing_indicatif"; dependencies = [ { @@ -13389,9 +14065,9 @@ rec { }; "tracing-serde" = rec { crateName = "tracing-serde"; - version = "0.1.3"; + version = "0.2.0"; edition = "2018"; - sha256 = "1qfr0va69djvxqvjrx4vqq7p6myy414lx4w1f6amcn0hfwqj2sxw"; + sha256 = "1wbgzi364vzfswfkvy48a3p0z5xmv98sx342r57sil70ggmiljvh"; libName = "tracing_serde"; authors = [ "Tokio Contributors " @@ -13414,9 +14090,9 @@ rec { }; "tracing-subscriber" = rec { crateName = "tracing-subscriber"; - version = "0.3.18"; + version = "0.3.19"; edition = "2018"; - sha256 = "12vs1bwk4kig1l2qqjbbn2nm5amwiqmkcmnznylzmnfvjy6083xd"; + sha256 = "0220rignck8072i89jjsh140vmh14ydwpdwnifyaf3xcnpn9s678"; libName = "tracing_subscriber"; authors = [ "Eliza Weisman " @@ -13587,7 +14263,7 @@ rec { } { name = "rand"; - packageId = "rand 0.9.0"; + packageId = "rand 0.9.1"; } { name = "sha1"; @@ -13606,7 +14282,7 @@ rec { devDependencies = [ { name = "rand"; - packageId = "rand 0.9.0"; + packageId = "rand 0.9.1"; } ]; features = { @@ -13632,10 +14308,9 @@ rec { }; "typenum" = rec { crateName = "typenum"; - version = "1.17.0"; + version = "1.18.0"; edition = "2018"; - sha256 = "09dqxv69m9lj9zvv6xw5vxaqx15ps0vxyy5myg33i0kbqvq0pzs2"; - build = "build/main.rs"; + sha256 = "0gwgz8n91pv40gabrr1lzji0b0hsmg0817njpy397bq7rvizzk0x"; authors = [ "Paho Lurie-Gregg " "Andre Bogus " @@ -13647,9 +14322,9 @@ rec { }; "ucd-trie" = rec { crateName = "ucd-trie"; - version = "0.1.6"; + version = "0.1.7"; edition = "2021"; - sha256 = "1ff4yfksirqs37ybin9aw71aa5gva00hw7jdxbw8w668zy964r7d"; + sha256 = "0wc9p07sqwz320848i52nvyjvpsxkx3kv5bfbmm6s35809fdk5i8"; libName = "ucd_trie"; authors = [ "Andrew Gallant " @@ -13765,73 +14440,26 @@ rec { }; "unicase" = rec { crateName = "unicase"; - version = "2.7.0"; - edition = "2015"; - sha256 = "12gd74j79f94k4clxpf06l99wiv4p30wjr0qm04ihqk9zgdd9lpp"; - authors = [ - "Sean McArthur " - ]; - buildDependencies = [ - { - name = "version_check"; - packageId = "version_check"; - } - ]; - features = { - }; - }; - "unicode-bidi" = rec { - crateName = "unicode-bidi"; - version = "0.3.15"; + version = "2.8.1"; edition = "2018"; - sha256 = "0xcdxm7h0ydyprwpcbh436rbs6s6lph7f3gr527lzgv6lw053y88"; - libName = "unicode_bidi"; + sha256 = "0fd5ddbhpva7wrln2iah054ar2pc1drqjcll0f493vj3fv8l9f3m"; authors = [ - "The Servo Project Developers" + "Sean McArthur " ]; features = { - "default" = [ "std" "hardcoded-data" ]; - "flame" = [ "dep:flame" ]; - "flame_it" = [ "flame" "flamer" ]; - "flamer" = [ "dep:flamer" ]; - "serde" = [ "dep:serde" ]; - "with_serde" = [ "serde" ]; }; - resolvedDefaultFeatures = [ "hardcoded-data" "std" ]; }; "unicode-ident" = rec { crateName = "unicode-ident"; - version = "1.0.12"; + version = "1.0.18"; edition = "2018"; - sha256 = "0jzf1znfpb2gx8nr8mvmyqs1crnv79l57nxnbiszc7xf7ynbjm1k"; + sha256 = "04k5r6sijkafzljykdq26mhjpmhdx4jwzvn1lh90g9ax9903jpss"; libName = "unicode_ident"; authors = [ "David Tolnay " ]; }; - "unicode-normalization" = rec { - crateName = "unicode-normalization"; - version = "0.1.23"; - edition = "2018"; - sha256 = "1x81a50h2zxigj74b9bqjsirxxbyhmis54kg600xj213vf31cvd5"; - libName = "unicode_normalization"; - authors = [ - "kwantam " - "Manish Goregaokar " - ]; - dependencies = [ - { - name = "tinyvec"; - packageId = "tinyvec"; - features = [ "alloc" ]; - } - ]; - features = { - "default" = [ "std" ]; - }; - resolvedDefaultFeatures = [ "std" ]; - }; "unicode-segmentation" = rec { crateName = "unicode-segmentation"; version = "1.12.0"; @@ -13845,11 +14473,11 @@ rec { features = { }; }; - "unicode-width 0.1.13" = rec { + "unicode-width 0.1.14" = rec { crateName = "unicode-width"; - version = "0.1.13"; + version = "0.1.14"; edition = "2021"; - sha256 = "0p92vl8n7qc8mxz45xn6qbgi0259z96n32a158l6vj5bywwdadh3"; + sha256 = "1bzn2zv0gp8xxbxbhifw778a7fc93pa6a1kj24jgg9msj07f7mkx"; libName = "unicode_width"; authors = [ "kwantam " @@ -13858,35 +14486,35 @@ rec { features = { "compiler_builtins" = [ "dep:compiler_builtins" ]; "core" = [ "dep:core" ]; + "default" = [ "cjk" ]; "rustc-dep-of-std" = [ "std" "core" "compiler_builtins" ]; "std" = [ "dep:std" ]; }; - resolvedDefaultFeatures = [ "default" ]; + resolvedDefaultFeatures = [ "cjk" "default" ]; }; - "unicode-width 0.2.0" = rec { + "unicode-width 0.2.1" = rec { crateName = "unicode-width"; - version = "0.2.0"; + version = "0.2.1"; edition = "2021"; - sha256 = "1zd0r5vs52ifxn25rs06gxrgz8cmh4xpra922k0xlmrchib1kj0z"; + sha256 = "0k0mlq7xy1y1kq6cgv1r2rs2knn6rln3g3af50rhi0dkgp60f6ja"; libName = "unicode_width"; authors = [ "kwantam " "Manish Goregaokar " ]; features = { - "compiler_builtins" = [ "dep:compiler_builtins" ]; "core" = [ "dep:core" ]; "default" = [ "cjk" ]; - "rustc-dep-of-std" = [ "std" "core" "compiler_builtins" ]; + "rustc-dep-of-std" = [ "std" "core" ]; "std" = [ "dep:std" ]; }; resolvedDefaultFeatures = [ "cjk" "default" ]; }; "unicode-xid" = rec { crateName = "unicode-xid"; - version = "0.2.5"; + version = "0.2.6"; edition = "2015"; - sha256 = "02n96yhcjwx7vphbwf9p7xfqbwvqgzdw2qz4h0x3wd5wgxj315r2"; + sha256 = "0lzqaky89fq0bcrh6jj6bhlz37scfd8c7dsj5dq7y32if56c1hgb"; libName = "unicode_xid"; authors = [ "erick.tryzelaar " @@ -13897,6 +14525,21 @@ rec { }; resolvedDefaultFeatures = [ "default" ]; }; + "unit-prefix" = rec { + crateName = "unit-prefix"; + version = "0.5.1"; + edition = "2018"; + sha256 = "05rq0asf2f1q5vrcv4bwf0c3y6q20asqkiqpr8wqyrfxyb7h4d1j"; + libName = "unit_prefix"; + authors = [ + "Fabio Valentini " + "Benjamin Sago " + ]; + features = { + "default" = [ "std" ]; + }; + resolvedDefaultFeatures = [ "default" "std" ]; + }; "unsafe-libyaml" = rec { crateName = "unsafe-libyaml"; version = "0.2.11"; @@ -13921,9 +14564,9 @@ rec { }; "url" = rec { crateName = "url"; - version = "2.5.2"; + version = "2.5.4"; edition = "2018"; - sha256 = "0v2dx50mx7xzl9454cl5qmpjnhkbahmn59gd3apyipbgyyylsy12"; + sha256 = "0q6sgznyy2n4l5lm16zahkisvc9nip9aa5q1pps7656xra3bdy1j"; authors = [ "The rust-url developers" ]; @@ -13931,14 +14574,20 @@ rec { { name = "form_urlencoded"; packageId = "form_urlencoded"; + usesDefaultFeatures = false; + features = [ "alloc" ]; } { name = "idna"; packageId = "idna"; + usesDefaultFeatures = false; + features = [ "alloc" "compiled_data" ]; } { name = "percent-encoding"; packageId = "percent-encoding"; + usesDefaultFeatures = false; + features = [ "alloc" ]; } { name = "serde"; @@ -13955,9 +14604,11 @@ rec { } ]; features = { + "default" = [ "std" ]; "serde" = [ "dep:serde" ]; + "std" = [ "idna/std" "percent-encoding/std" "form_urlencoded/std" ]; }; - resolvedDefaultFeatures = [ "default" "serde" ]; + resolvedDefaultFeatures = [ "default" "serde" "std" ]; }; "urlencoding" = rec { crateName = "urlencoding"; @@ -13980,6 +14631,16 @@ rec { "Simon Sapin " ]; + }; + "utf8_iter" = rec { + crateName = "utf8_iter"; + version = "1.0.4"; + edition = "2021"; + sha256 = "1gmna9flnj8dbyd8ba17zigrp9c4c3zclngf5lnb5yvz1ri41hdn"; + authors = [ + "Henri Sivonen " + ]; + }; "utf8parse" = rec { crateName = "utf8parse"; @@ -14005,7 +14666,7 @@ rec { dependencies = [ { name = "indexmap"; - packageId = "indexmap 2.5.0"; + packageId = "indexmap 2.10.0"; features = [ "serde" ]; } { @@ -14047,9 +14708,9 @@ rec { }; "utoipa-gen" = rec { crateName = "utoipa-gen"; - version = "4.3.0"; + version = "4.3.1"; edition = "2021"; - sha256 = "1glhh4zhldspf3f6dficg2mbrga926mi0pxn58rgajxw09nf3w3v"; + sha256 = "14j3bim9igkqpzmgxc6i2rj1wq1mandx68mdd9sfxycgns54xhi0"; procMacro = true; libName = "utoipa_gen"; authors = [ @@ -14070,7 +14731,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.87"; + packageId = "syn 2.0.104"; features = [ "full" "extra-traits" ]; } ]; @@ -14098,7 +14759,7 @@ rec { dependencies = [ { name = "axum"; - packageId = "axum 0.7.5"; + packageId = "axum 0.7.9"; optional = true; usesDefaultFeatures = false; features = [ "json" ]; @@ -14170,9 +14831,9 @@ rec { }; "uuid" = rec { crateName = "uuid"; - version = "1.10.0"; + version = "1.17.0"; edition = "2018"; - sha256 = "0503gvp08dh5mnm3f0ffqgisj6x3mbs53dmnn1lm19pga43a1pw1"; + sha256 = "07ckq4fdiygy02gmislzfp727hx9zw6lskk9dbcds5ax3sfikx1w"; authors = [ "Ashley Mannix" "Dylan DPC" @@ -14181,8 +14842,31 @@ rec { dependencies = [ { name = "getrandom"; - packageId = "getrandom 0.2.15"; + packageId = "getrandom 0.3.3"; + optional = true; + target = { target, features }: (!(("wasm32" == target."arch" or null) && (("unknown" == target."os" or null) || ("none" == target."os" or null)))); + } + { + name = "js-sys"; + packageId = "js-sys"; + optional = true; + usesDefaultFeatures = false; + target = { target, features }: (("wasm32" == target."arch" or null) && (("unknown" == target."os" or null) || ("none" == target."os" or null)) && (builtins.elem "atomics" targetFeatures)); + } + { + name = "wasm-bindgen"; + packageId = "wasm-bindgen"; optional = true; + usesDefaultFeatures = false; + target = { target, features }: (("wasm32" == target."arch" or null) && (("unknown" == target."os" or null) || ("none" == target."os" or null))); + features = [ "msrv" ]; + } + ]; + devDependencies = [ + { + name = "wasm-bindgen"; + packageId = "wasm-bindgen"; + target = {target, features}: (("wasm32" == target."arch" or null) && (("unknown" == target."os" or null) || ("none" == target."os" or null))); } ]; features = { @@ -14192,13 +14876,17 @@ rec { "bytemuck" = [ "dep:bytemuck" ]; "default" = [ "std" ]; "fast-rng" = [ "rng" "dep:rand" ]; - "js" = [ "dep:wasm-bindgen" "getrandom?/js" ]; + "js" = [ "dep:wasm-bindgen" "dep:js-sys" ]; "macro-diagnostics" = [ "dep:uuid-macro-internal" ]; "md5" = [ "dep:md-5" ]; "rng" = [ "dep:getrandom" ]; + "rng-getrandom" = [ "rng" "dep:getrandom" "uuid-rng-internal-lib" "uuid-rng-internal-lib/getrandom" ]; + "rng-rand" = [ "rng" "dep:rand" "uuid-rng-internal-lib" "uuid-rng-internal-lib/rand" ]; "serde" = [ "dep:serde" ]; "sha1" = [ "dep:sha1_smol" ]; "slog" = [ "dep:slog" ]; + "std" = [ "wasm-bindgen?/std" "js-sys?/std" ]; + "uuid-rng-internal-lib" = [ "dep:uuid-rng-internal-lib" ]; "v1" = [ "atomic" ]; "v3" = [ "md5" ]; "v4" = [ "rng" ]; @@ -14211,9 +14899,9 @@ rec { }; "valuable" = rec { crateName = "valuable"; - version = "0.1.0"; - edition = "2018"; - sha256 = "0v9gp3nkjbl30z0fd56d8mx7w1csk86wwjhfjhr400wh9mfpw2w3"; + version = "0.1.1"; + edition = "2021"; + sha256 = "0r9srp55v7g27s5bg7a2m095fzckrcdca5maih6dy9bay6fflwxs"; features = { "default" = [ "std" ]; "derive" = [ "valuable-derive" ]; @@ -14251,7 +14939,7 @@ rec { } { name = "unicode-width"; - packageId = "unicode-width 0.1.13"; + packageId = "unicode-width 0.1.14"; } { name = "vte"; @@ -14266,11 +14954,11 @@ rec { ]; }; - "vte 0.10.1" = rec { + "vte 0.11.1" = rec { crateName = "vte"; - version = "0.10.1"; - edition = "2018"; - sha256 = "10srmy9ssircrwsb5lpx3fbhx71460j77kvz0krz38jcmf9fdg3c"; + version = "0.11.1"; + edition = "2021"; + sha256 = "15r1ff4j8ndqj9vsyil3wqwxhhl7jsz5g58f31n0h1wlpxgjn0pm"; authors = [ "Joe Wilm " "Christian Duerr " @@ -14278,7 +14966,7 @@ rec { dependencies = [ { name = "arrayvec"; - packageId = "arrayvec 0.5.2"; + packageId = "arrayvec"; optional = true; usesDefaultFeatures = false; } @@ -14292,18 +14980,21 @@ rec { } ]; features = { + "ansi" = [ "log" ]; "arrayvec" = [ "dep:arrayvec" ]; "default" = [ "no_std" ]; + "log" = [ "dep:log" ]; "nightly" = [ "utf8parse/nightly" ]; "no_std" = [ "arrayvec" ]; + "serde" = [ "dep:serde" ]; }; resolvedDefaultFeatures = [ "arrayvec" "default" "no_std" ]; }; - "vte 0.11.1" = rec { + "vte 0.14.1" = rec { crateName = "vte"; - version = "0.11.1"; + version = "0.14.1"; edition = "2021"; - sha256 = "15r1ff4j8ndqj9vsyil3wqwxhhl7jsz5g58f31n0h1wlpxgjn0pm"; + sha256 = "0xy01fgkzb2080prh2ncd8949hm2248fc5wf1lryhdrhxzbxq7r3"; authors = [ "Joe Wilm " "Christian Duerr " @@ -14311,25 +15002,22 @@ rec { dependencies = [ { name = "arrayvec"; - packageId = "arrayvec 0.7.6"; + packageId = "arrayvec"; optional = true; usesDefaultFeatures = false; } { - name = "utf8parse"; - packageId = "utf8parse"; - } - { - name = "vte_generate_state_changes"; - packageId = "vte_generate_state_changes"; + name = "memchr"; + packageId = "memchr"; } ]; features = { - "ansi" = [ "log" ]; + "ansi" = [ "log" "cursor-icon" "bitflags" ]; "arrayvec" = [ "dep:arrayvec" ]; + "bitflags" = [ "dep:bitflags" ]; + "cursor-icon" = [ "dep:cursor-icon" ]; "default" = [ "no_std" ]; "log" = [ "dep:log" ]; - "nightly" = [ "utf8parse/nightly" ]; "no_std" = [ "arrayvec" ]; "serde" = [ "dep:serde" ]; }; @@ -14393,19 +15081,18 @@ rec { ]; }; - "wasi 0.11.0+wasi-snapshot-preview1" = rec { + "wasi 0.11.1+wasi-snapshot-preview1" = rec { crateName = "wasi"; - version = "0.11.0+wasi-snapshot-preview1"; + version = "0.11.1+wasi-snapshot-preview1"; edition = "2018"; - sha256 = "08z4hxwkpdpalxjps1ai9y7ihin26y9f476i53dv98v45gkqg3cw"; + sha256 = "0jx49r7nbkbhyfrfyhz0bm4817yrnxgd3jiwwwfv0zl439jyrwyc"; authors = [ "The Cranelift Project Developers" ]; features = { - "compiler_builtins" = [ "dep:compiler_builtins" ]; "core" = [ "dep:core" ]; "default" = [ "std" ]; - "rustc-dep-of-std" = [ "compiler_builtins" "core" "rustc-std-workspace-alloc" ]; + "rustc-dep-of-std" = [ "core" "rustc-std-workspace-alloc" ]; "rustc-std-workspace-alloc" = [ "dep:rustc-std-workspace-alloc" ]; }; resolvedDefaultFeatures = [ "default" "std" ]; @@ -14435,9 +15122,9 @@ rec { }; "wasm-bindgen" = rec { crateName = "wasm-bindgen"; - version = "0.2.93"; + version = "0.2.100"; edition = "2021"; - sha256 = "1dfr7pka5kwvky2fx82m9d060p842hc5fyyw8igryikcdb0xybm8"; + sha256 = "1x8ymcm6yi3i1rwj78myl1agqv2m86i648myy3lc97s9swlqkp0y"; libName = "wasm_bindgen"; authors = [ "The wasm-bindgen Developers" @@ -14450,29 +15137,42 @@ rec { { name = "once_cell"; packageId = "once_cell"; + usesDefaultFeatures = false; + } + { + name = "rustversion"; + packageId = "rustversion"; + optional = true; } { name = "wasm-bindgen-macro"; packageId = "wasm-bindgen-macro"; } ]; + devDependencies = [ + { + name = "once_cell"; + packageId = "once_cell"; + } + ]; features = { - "default" = [ "spans" "std" ]; + "default" = [ "std" "msrv" ]; "enable-interning" = [ "std" ]; + "msrv" = [ "rustversion" ]; + "rustversion" = [ "dep:rustversion" ]; "serde" = [ "dep:serde" ]; "serde-serialize" = [ "serde" "serde_json" "std" ]; "serde_json" = [ "dep:serde_json" ]; - "spans" = [ "wasm-bindgen-macro/spans" ]; "strict-macro" = [ "wasm-bindgen-macro/strict-macro" ]; "xxx_debug_only_print_generated_code" = [ "wasm-bindgen-macro/xxx_debug_only_print_generated_code" ]; }; - resolvedDefaultFeatures = [ "default" "spans" "std" ]; + resolvedDefaultFeatures = [ "default" "msrv" "rustversion" "std" ]; }; "wasm-bindgen-backend" = rec { crateName = "wasm-bindgen-backend"; - version = "0.2.93"; + version = "0.2.100"; edition = "2021"; - sha256 = "0yypblaf94rdgqs5xw97499xfwgs1096yx026d6h88v563d9dqwx"; + sha256 = "1ihbf1hq3y81c4md9lyh6lcwbx6a5j0fw4fygd423g62lm8hc2ig"; libName = "wasm_bindgen_backend"; authors = [ "The wasm-bindgen Developers" @@ -14486,10 +15186,6 @@ rec { name = "log"; packageId = "log"; } - { - name = "once_cell"; - packageId = "once_cell"; - } { name = "proc-macro2"; packageId = "proc-macro2"; @@ -14500,7 +15196,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.87"; + packageId = "syn 2.0.104"; features = [ "full" ]; } { @@ -14511,13 +15207,12 @@ rec { features = { "extra-traits" = [ "syn/extra-traits" ]; }; - resolvedDefaultFeatures = [ "spans" ]; }; "wasm-bindgen-futures" = rec { crateName = "wasm-bindgen-futures"; - version = "0.4.43"; + version = "0.4.50"; edition = "2021"; - sha256 = "1vf8kmaj95xn5893y1bdlav47y5niq85q5bms9pfj8d6cc7k1sb1"; + sha256 = "0q8ymi6i9r3vxly551dhxcyai7nc491mspj0j1wbafxwq074fpam"; libName = "wasm_bindgen_futures"; authors = [ "The wasm-bindgen Developers" @@ -14530,28 +15225,39 @@ rec { { name = "js-sys"; packageId = "js-sys"; + usesDefaultFeatures = false; } { - name = "wasm-bindgen"; - packageId = "wasm-bindgen"; - } + name = "once_cell"; + packageId = "once_cell"; + usesDefaultFeatures = false; + } + { + name = "wasm-bindgen"; + packageId = "wasm-bindgen"; + usesDefaultFeatures = false; + } { name = "web-sys"; packageId = "web-sys"; + usesDefaultFeatures = false; target = { target, features }: (builtins.elem "atomics" targetFeatures); features = [ "MessageEvent" "Worker" ]; } ]; features = { + "default" = [ "std" ]; "futures-core" = [ "dep:futures-core" ]; "futures-core-03-stream" = [ "futures-core" ]; + "std" = [ "wasm-bindgen/std" "js-sys/std" "web-sys/std" ]; }; + resolvedDefaultFeatures = [ "default" "std" ]; }; "wasm-bindgen-macro" = rec { crateName = "wasm-bindgen-macro"; - version = "0.2.93"; + version = "0.2.100"; edition = "2021"; - sha256 = "1kycd1xfx4d9xzqknvzbiqhwb5fzvjqrrn88x692q1vblj8lqp2q"; + sha256 = "01xls2dvzh38yj17jgrbiib1d3nyad7k2yw9s0mpklwys333zrkz"; procMacro = true; libName = "wasm_bindgen_macro"; authors = [ @@ -14568,16 +15274,14 @@ rec { } ]; features = { - "spans" = [ "wasm-bindgen-macro-support/spans" ]; "strict-macro" = [ "wasm-bindgen-macro-support/strict-macro" ]; }; - resolvedDefaultFeatures = [ "spans" ]; }; "wasm-bindgen-macro-support" = rec { crateName = "wasm-bindgen-macro-support"; - version = "0.2.93"; + version = "0.2.100"; edition = "2021"; - sha256 = "0dp8w6jmw44srym6l752nkr3hkplyw38a2fxz5f3j1ch9p3l1hxg"; + sha256 = "1plm8dh20jg2id0320pbmrlsv6cazfv6b6907z19ys4z1jj7xs4a"; libName = "wasm_bindgen_macro_support"; authors = [ "The wasm-bindgen Developers" @@ -14593,8 +15297,8 @@ rec { } { name = "syn"; - packageId = "syn 2.0.87"; - features = [ "visit" "full" ]; + packageId = "syn 2.0.104"; + features = [ "visit" "visit-mut" "full" ]; } { name = "wasm-bindgen-backend"; @@ -14607,27 +15311,31 @@ rec { ]; features = { "extra-traits" = [ "syn/extra-traits" ]; - "spans" = [ "wasm-bindgen-backend/spans" ]; }; - resolvedDefaultFeatures = [ "spans" ]; }; "wasm-bindgen-shared" = rec { crateName = "wasm-bindgen-shared"; - version = "0.2.93"; + version = "0.2.100"; edition = "2021"; links = "wasm_bindgen"; - sha256 = "1104bny0hv40jfap3hp8jhs0q4ya244qcrvql39i38xlghq0lan6"; + sha256 = "0gffxvqgbh9r9xl36gprkfnh3w9gl8wgia6xrin7v11sjcxxf18s"; libName = "wasm_bindgen_shared"; authors = [ "The wasm-bindgen Developers" ]; + dependencies = [ + { + name = "unicode-ident"; + packageId = "unicode-ident"; + } + ]; }; "web-sys" = rec { crateName = "web-sys"; - version = "0.3.70"; + version = "0.3.77"; edition = "2021"; - sha256 = "1h1jspkqnrx1iybwhwhc3qq8c8fn4hy5jcf0wxjry4mxv6pymz96"; + sha256 = "1lnmc1ffbq34qw91nndklqqm75rasaffj2g4f8h1yvqqz4pdvdik"; libName = "web_sys"; authors = [ "The wasm-bindgen Developers" @@ -14636,10 +15344,12 @@ rec { { name = "js-sys"; packageId = "js-sys"; + usesDefaultFeatures = false; } { name = "wasm-bindgen"; packageId = "wasm-bindgen"; + usesDefaultFeatures = false; } ]; features = { @@ -14739,8 +15449,6 @@ rec { "FontFaceSet" = [ "EventTarget" ]; "FontFaceSetLoadEvent" = [ "Event" ]; "GainNode" = [ "AudioNode" "EventTarget" ]; - "GamepadAxisMoveEvent" = [ "Event" "GamepadEvent" ]; - "GamepadButtonEvent" = [ "Event" "GamepadEvent" ]; "GamepadEvent" = [ "Event" ]; "GpuDevice" = [ "EventTarget" ]; "GpuInternalError" = [ "GpuError" ]; @@ -14842,9 +15550,11 @@ rec { "ImageTrack" = [ "EventTarget" ]; "InputDeviceInfo" = [ "MediaDeviceInfo" ]; "InputEvent" = [ "Event" "UiEvent" ]; + "KeyFrameRequestEvent" = [ "Event" ]; "KeyboardEvent" = [ "Event" "UiEvent" ]; "KeyframeEffect" = [ "AnimationEffect" ]; "LocalMediaStream" = [ "EventTarget" "MediaStream" ]; + "MathMlElement" = [ "Element" "EventTarget" "Node" ]; "MediaDevices" = [ "EventTarget" ]; "MediaElementAudioSourceNode" = [ "AudioNode" "EventTarget" ]; "MediaEncryptedEvent" = [ "Event" ]; @@ -14914,9 +15624,13 @@ rec { "RtcPeerConnection" = [ "EventTarget" ]; "RtcPeerConnectionIceErrorEvent" = [ "Event" ]; "RtcPeerConnectionIceEvent" = [ "Event" ]; + "RtcRtpScriptTransformer" = [ "EventTarget" ]; "RtcTrackEvent" = [ "Event" ]; + "RtcTransformEvent" = [ "Event" ]; "RtcdtmfSender" = [ "EventTarget" ]; "RtcdtmfToneChangeEvent" = [ "Event" ]; + "SFrameTransform" = [ "EventTarget" ]; + "SFrameTransformErrorEvent" = [ "Event" ]; "Screen" = [ "EventTarget" ]; "ScreenOrientation" = [ "EventTarget" ]; "ScriptProcessorNode" = [ "AudioNode" "EventTarget" ]; @@ -15094,8 +15808,10 @@ rec { "XrSystem" = [ "EventTarget" ]; "XrViewerPose" = [ "XrPose" ]; "XrWebGlLayer" = [ "EventTarget" "XrLayer" ]; + "default" = [ "std" ]; + "std" = [ "wasm-bindgen/std" "js-sys/std" ]; }; - resolvedDefaultFeatures = [ "AbortController" "AbortSignal" "Blob" "BlobPropertyBag" "Event" "EventTarget" "File" "FormData" "Headers" "MessageEvent" "ReadableStream" "Request" "RequestCredentials" "RequestInit" "RequestMode" "Response" "ServiceWorkerGlobalScope" "Window" "Worker" "WorkerGlobalScope" ]; + resolvedDefaultFeatures = [ "AbortController" "AbortSignal" "Blob" "BlobPropertyBag" "Event" "EventTarget" "File" "FormData" "Headers" "MessageEvent" "ReadableStream" "Request" "RequestCredentials" "RequestInit" "RequestMode" "Response" "ServiceWorkerGlobalScope" "Window" "Worker" "WorkerGlobalScope" "default" "std" ]; }; "web-time" = rec { crateName = "web-time"; @@ -15122,9 +15838,9 @@ rec { }; "webpki-roots" = rec { crateName = "webpki-roots"; - version = "0.26.5"; - edition = "2018"; - sha256 = "0smyrp82rd2qxi3aikgwaxi1by5x8i4aqrhvxk2cd0mgwll4glhb"; + version = "1.0.1"; + edition = "2021"; + sha256 = "00mm4bhkvis59pm2a7yz3ak6q8rykcj0ddj09wxfskm285ddv0l7"; libName = "webpki_roots"; dependencies = [ { @@ -15241,103 +15957,158 @@ rec { }; "windows-core" = rec { crateName = "windows-core"; - version = "0.52.0"; + version = "0.61.2"; edition = "2021"; - sha256 = "1nc3qv7sy24x0nlnb32f7alzpd6f72l4p24vl65vydbyil669ark"; + sha256 = "1qsa3iw14wk4ngfl7ipcvdf9xyq456ms7cx2i9iwf406p7fx7zf0"; libName = "windows_core"; authors = [ "Microsoft" ]; dependencies = [ { - name = "windows-targets"; - packageId = "windows-targets 0.52.6"; + name = "windows-implement"; + packageId = "windows-implement"; + usesDefaultFeatures = false; + } + { + name = "windows-interface"; + packageId = "windows-interface"; + usesDefaultFeatures = false; + } + { + name = "windows-link"; + packageId = "windows-link"; + usesDefaultFeatures = false; + } + { + name = "windows-result"; + packageId = "windows-result"; + usesDefaultFeatures = false; + } + { + name = "windows-strings"; + packageId = "windows-strings"; + usesDefaultFeatures = false; } ]; features = { + "default" = [ "std" ]; + "std" = [ "windows-result/std" "windows-strings/std" ]; }; - resolvedDefaultFeatures = [ "default" ]; + resolvedDefaultFeatures = [ "default" "std" ]; }; - "windows-link" = rec { - crateName = "windows-link"; - version = "0.1.1"; + "windows-implement" = rec { + crateName = "windows-implement"; + version = "0.60.0"; edition = "2021"; - sha256 = "0f2cq7imbrppsmmnz8899hfhg07cp5gq6rh0bjhb1qb6nwshk13n"; - libName = "windows_link"; + sha256 = "0dm88k3hlaax85xkls4gf597ar4z8m5vzjjagzk910ph7b8xszx4"; + procMacro = true; + libName = "windows_implement"; authors = [ "Microsoft" ]; + dependencies = [ + { + name = "proc-macro2"; + packageId = "proc-macro2"; + usesDefaultFeatures = false; + } + { + name = "quote"; + packageId = "quote"; + usesDefaultFeatures = false; + } + { + name = "syn"; + packageId = "syn 2.0.104"; + usesDefaultFeatures = false; + features = [ "parsing" "proc-macro" "printing" "full" "clone-impls" ]; + } + ]; }; - "windows-registry" = rec { - crateName = "windows-registry"; - version = "0.2.0"; + "windows-interface" = rec { + crateName = "windows-interface"; + version = "0.59.1"; edition = "2021"; - sha256 = "1c04923fq0rbvl3z0h67xr6rh2fgwkizhclhqv0j79i0nwdh0074"; - libName = "windows_registry"; + sha256 = "1a4zr8740gyzzhq02xgl6vx8l669jwfby57xgf0zmkcdkyv134mx"; + procMacro = true; + libName = "windows_interface"; authors = [ "Microsoft" ]; dependencies = [ { - name = "windows-result"; - packageId = "windows-result"; + name = "proc-macro2"; + packageId = "proc-macro2"; + usesDefaultFeatures = false; } { - name = "windows-strings"; - packageId = "windows-strings"; + name = "quote"; + packageId = "quote"; + usesDefaultFeatures = false; } { - name = "windows-targets"; - packageId = "windows-targets 0.52.6"; + name = "syn"; + packageId = "syn 2.0.104"; + usesDefaultFeatures = false; + features = [ "parsing" "proc-macro" "printing" "full" "clone-impls" ]; } ]; + }; + "windows-link" = rec { + crateName = "windows-link"; + version = "0.1.3"; + edition = "2021"; + sha256 = "12kr1p46dbhpijr4zbwr2spfgq8i8c5x55mvvfmyl96m01cx4sjy"; + libName = "windows_link"; + authors = [ + "Microsoft" + ]; + }; "windows-result" = rec { crateName = "windows-result"; - version = "0.2.0"; + version = "0.3.4"; edition = "2021"; - sha256 = "03mf2z1xcy2slhhsm15z24p76qxgm2m74xdjp8bihyag47c4640x"; + sha256 = "1il60l6idrc6hqsij0cal0mgva6n3w6gq4ziban8wv6c6b9jpx2n"; libName = "windows_result"; authors = [ "Microsoft" ]; dependencies = [ { - name = "windows-targets"; - packageId = "windows-targets 0.52.6"; + name = "windows-link"; + packageId = "windows-link"; + usesDefaultFeatures = false; } ]; features = { "default" = [ "std" ]; }; - resolvedDefaultFeatures = [ "default" "std" ]; + resolvedDefaultFeatures = [ "std" ]; }; "windows-strings" = rec { crateName = "windows-strings"; - version = "0.1.0"; + version = "0.4.2"; edition = "2021"; - sha256 = "042dxvi3133f7dyi2pgcvknwkikk47k8bddwxbq5s0l6qhjv3nac"; + sha256 = "0mrv3plibkla4v5kaakc2rfksdd0b14plcmidhbkcfqc78zwkrjn"; libName = "windows_strings"; authors = [ "Microsoft" ]; dependencies = [ { - name = "windows-result"; - packageId = "windows-result"; + name = "windows-link"; + packageId = "windows-link"; usesDefaultFeatures = false; } - { - name = "windows-targets"; - packageId = "windows-targets 0.52.6"; - } ]; features = { "default" = [ "std" ]; }; - resolvedDefaultFeatures = [ "default" "std" ]; + resolvedDefaultFeatures = [ "std" ]; }; "windows-sys 0.48.0" = rec { crateName = "windows-sys"; @@ -15879,7 +16650,7 @@ rec { "Win32_Web" = [ "Win32" ]; "Win32_Web_InternetExplorer" = [ "Win32_Web" ]; }; - resolvedDefaultFeatures = [ "Wdk" "Wdk_Foundation" "Wdk_Storage" "Wdk_Storage_FileSystem" "Wdk_System" "Wdk_System_IO" "Win32" "Win32_Foundation" "Win32_NetworkManagement" "Win32_NetworkManagement_IpHelper" "Win32_Networking" "Win32_Networking_WinSock" "Win32_Security" "Win32_Security_Authentication" "Win32_Security_Authentication_Identity" "Win32_Security_Credentials" "Win32_Security_Cryptography" "Win32_Storage" "Win32_Storage_FileSystem" "Win32_System" "Win32_System_Com" "Win32_System_Console" "Win32_System_Diagnostics" "Win32_System_Diagnostics_Debug" "Win32_System_IO" "Win32_System_Memory" "Win32_System_Pipes" "Win32_System_SystemServices" "Win32_System_Threading" "Win32_System_WindowsProgramming" "Win32_UI" "Win32_UI_Input" "Win32_UI_Input_KeyboardAndMouse" "Win32_UI_Shell" "default" ]; + resolvedDefaultFeatures = [ "Win32" "Win32_Foundation" "Win32_Networking" "Win32_Networking_WinSock" "Win32_Security" "Win32_Storage" "Win32_Storage_FileSystem" "Win32_System" "Win32_System_Console" "Win32_System_IO" "Win32_System_Pipes" "Win32_System_SystemServices" "Win32_System_Threading" "Win32_System_WindowsProgramming" "default" ]; }; "windows-sys 0.59.0" = rec { crateName = "windows-sys"; @@ -16138,154 +16909,492 @@ rec { "Win32_Web" = [ "Win32" ]; "Win32_Web_InternetExplorer" = [ "Win32_Web" ]; }; - resolvedDefaultFeatures = [ "Win32" "Win32_Foundation" "Win32_Networking" "Win32_Networking_WinSock" "Win32_Storage" "Win32_Storage_FileSystem" "Win32_System" "Win32_System_Console" "Win32_System_IO" "Win32_System_SystemInformation" "default" ]; - }; - "windows-targets 0.48.5" = rec { - crateName = "windows-targets"; - version = "0.48.5"; - edition = "2018"; - sha256 = "034ljxqshifs1lan89xwpcy1hp0lhdh4b5n0d2z4fwjx2piacbws"; - libName = "windows_targets"; - authors = [ - "Microsoft" - ]; - dependencies = [ - { - name = "windows_aarch64_gnullvm"; - packageId = "windows_aarch64_gnullvm 0.48.5"; - target = { target, features }: (stdenv.hostPlatform.rust.rustcTarget == "aarch64-pc-windows-gnullvm"); - } - { - name = "windows_aarch64_msvc"; - packageId = "windows_aarch64_msvc 0.48.5"; - target = { target, features }: (("aarch64" == target."arch" or null) && ("msvc" == target."env" or null) && (!(target."windows_raw_dylib" or false))); - } - { - name = "windows_i686_gnu"; - packageId = "windows_i686_gnu 0.48.5"; - target = { target, features }: (("x86" == target."arch" or null) && ("gnu" == target."env" or null) && (!(target."windows_raw_dylib" or false))); - } - { - name = "windows_i686_msvc"; - packageId = "windows_i686_msvc 0.48.5"; - target = { target, features }: (("x86" == target."arch" or null) && ("msvc" == target."env" or null) && (!(target."windows_raw_dylib" or false))); - } - { - name = "windows_x86_64_gnu"; - packageId = "windows_x86_64_gnu 0.48.5"; - target = { target, features }: (("x86_64" == target."arch" or null) && ("gnu" == target."env" or null) && (!("llvm" == target."abi" or null)) && (!(target."windows_raw_dylib" or false))); - } - { - name = "windows_x86_64_gnullvm"; - packageId = "windows_x86_64_gnullvm 0.48.5"; - target = { target, features }: (stdenv.hostPlatform.rust.rustcTarget == "x86_64-pc-windows-gnullvm"); - } - { - name = "windows_x86_64_msvc"; - packageId = "windows_x86_64_msvc 0.48.5"; - target = { target, features }: (("x86_64" == target."arch" or null) && ("msvc" == target."env" or null) && (!(target."windows_raw_dylib" or false))); - } - ]; - + resolvedDefaultFeatures = [ "Wdk" "Wdk_Foundation" "Wdk_Storage" "Wdk_Storage_FileSystem" "Wdk_System" "Wdk_System_IO" "Win32" "Win32_Foundation" "Win32_NetworkManagement" "Win32_NetworkManagement_IpHelper" "Win32_Networking" "Win32_Networking_WinSock" "Win32_Security" "Win32_Security_Authentication" "Win32_Security_Authentication_Identity" "Win32_Security_Credentials" "Win32_Security_Cryptography" "Win32_Storage" "Win32_Storage_FileSystem" "Win32_System" "Win32_System_Com" "Win32_System_Console" "Win32_System_IO" "Win32_System_LibraryLoader" "Win32_System_Memory" "Win32_System_Pipes" "Win32_System_SystemInformation" "Win32_System_Threading" "Win32_System_WindowsProgramming" "Win32_UI" "Win32_UI_Input" "Win32_UI_Input_KeyboardAndMouse" "Win32_UI_Shell" "default" ]; }; - "windows-targets 0.52.6" = rec { - crateName = "windows-targets"; - version = "0.52.6"; + "windows-sys 0.60.2" = rec { + crateName = "windows-sys"; + version = "0.60.2"; edition = "2021"; - sha256 = "0wwrx625nwlfp7k93r2rra568gad1mwd888h1jwnl0vfg5r4ywlv"; - libName = "windows_targets"; + sha256 = "1jrbc615ihqnhjhxplr2kw7rasrskv9wj3lr80hgfd42sbj01xgj"; + libName = "windows_sys"; authors = [ "Microsoft" ]; dependencies = [ { - name = "windows_aarch64_gnullvm"; - packageId = "windows_aarch64_gnullvm 0.52.6"; - target = { target, features }: (stdenv.hostPlatform.rust.rustcTarget == "aarch64-pc-windows-gnullvm"); - } - { - name = "windows_aarch64_msvc"; - packageId = "windows_aarch64_msvc 0.52.6"; - target = { target, features }: (("aarch64" == target."arch" or null) && ("msvc" == target."env" or null) && (!(target."windows_raw_dylib" or false))); - } - { - name = "windows_i686_gnu"; - packageId = "windows_i686_gnu 0.52.6"; - target = { target, features }: (("x86" == target."arch" or null) && ("gnu" == target."env" or null) && (!("llvm" == target."abi" or null)) && (!(target."windows_raw_dylib" or false))); - } - { - name = "windows_i686_gnullvm"; - packageId = "windows_i686_gnullvm"; - target = { target, features }: (stdenv.hostPlatform.rust.rustcTarget == "i686-pc-windows-gnullvm"); - } - { - name = "windows_i686_msvc"; - packageId = "windows_i686_msvc 0.52.6"; - target = { target, features }: (("x86" == target."arch" or null) && ("msvc" == target."env" or null) && (!(target."windows_raw_dylib" or false))); - } - { - name = "windows_x86_64_gnu"; - packageId = "windows_x86_64_gnu 0.52.6"; - target = { target, features }: (("x86_64" == target."arch" or null) && ("gnu" == target."env" or null) && (!("llvm" == target."abi" or null)) && (!(target."windows_raw_dylib" or false))); - } - { - name = "windows_x86_64_gnullvm"; - packageId = "windows_x86_64_gnullvm 0.52.6"; - target = { target, features }: (stdenv.hostPlatform.rust.rustcTarget == "x86_64-pc-windows-gnullvm"); - } - { - name = "windows_x86_64_msvc"; - packageId = "windows_x86_64_msvc 0.52.6"; - target = { target, features }: ((("x86_64" == target."arch" or null) || ("arm64ec" == target."arch" or null)) && ("msvc" == target."env" or null) && (!(target."windows_raw_dylib" or false))); + name = "windows-targets"; + packageId = "windows-targets 0.53.2"; + usesDefaultFeatures = false; } ]; - - }; - "windows_aarch64_gnullvm 0.48.5" = rec { - crateName = "windows_aarch64_gnullvm"; - version = "0.48.5"; - edition = "2018"; - sha256 = "1n05v7qblg1ci3i567inc7xrkmywczxrs1z3lj3rkkxw18py6f1b"; - authors = [ - "Microsoft" - ]; - - }; - "windows_aarch64_gnullvm 0.52.6" = rec { - crateName = "windows_aarch64_gnullvm"; - version = "0.52.6"; - edition = "2021"; - sha256 = "1lrcq38cr2arvmz19v32qaggvj8bh1640mdm9c2fr877h0hn591j"; - authors = [ - "Microsoft" - ]; - - }; - "windows_aarch64_msvc 0.48.5" = rec { - crateName = "windows_aarch64_msvc"; - version = "0.48.5"; - edition = "2018"; - sha256 = "1g5l4ry968p73g6bg6jgyvy9lb8fyhcs54067yzxpcpkf44k2dfw"; - authors = [ - "Microsoft" - ]; - - }; - "windows_aarch64_msvc 0.52.6" = rec { - crateName = "windows_aarch64_msvc"; - version = "0.52.6"; - edition = "2021"; - sha256 = "0sfl0nysnz32yyfh773hpi49b1q700ah6y7sacmjbqjjn5xjmv09"; - authors = [ - "Microsoft" - ]; - - }; - "windows_i686_gnu 0.48.5" = rec { - crateName = "windows_i686_gnu"; - version = "0.48.5"; - edition = "2018"; - sha256 = "0gklnglwd9ilqx7ac3cn8hbhkraqisd0n83jxzf9837nvvkiand7"; + features = { + "Wdk" = [ "Win32_Foundation" ]; + "Wdk_Devices" = [ "Wdk" ]; + "Wdk_Devices_Bluetooth" = [ "Wdk_Devices" ]; + "Wdk_Devices_HumanInterfaceDevice" = [ "Wdk_Devices" ]; + "Wdk_Foundation" = [ "Wdk" ]; + "Wdk_Graphics" = [ "Wdk" ]; + "Wdk_Graphics_Direct3D" = [ "Wdk_Graphics" ]; + "Wdk_NetworkManagement" = [ "Wdk" ]; + "Wdk_NetworkManagement_Ndis" = [ "Wdk_NetworkManagement" ]; + "Wdk_NetworkManagement_WindowsFilteringPlatform" = [ "Wdk_NetworkManagement" ]; + "Wdk_Storage" = [ "Wdk" ]; + "Wdk_Storage_FileSystem" = [ "Wdk_Storage" ]; + "Wdk_Storage_FileSystem_Minifilters" = [ "Wdk_Storage_FileSystem" ]; + "Wdk_System" = [ "Wdk" ]; + "Wdk_System_IO" = [ "Wdk_System" ]; + "Wdk_System_Memory" = [ "Wdk_System" ]; + "Wdk_System_OfflineRegistry" = [ "Wdk_System" ]; + "Wdk_System_Registry" = [ "Wdk_System" ]; + "Wdk_System_SystemInformation" = [ "Wdk_System" ]; + "Wdk_System_SystemServices" = [ "Wdk_System" ]; + "Wdk_System_Threading" = [ "Wdk_System" ]; + "Win32" = [ "Win32_Foundation" ]; + "Win32_Data" = [ "Win32" ]; + "Win32_Data_HtmlHelp" = [ "Win32_Data" ]; + "Win32_Data_RightsManagement" = [ "Win32_Data" ]; + "Win32_Devices" = [ "Win32" ]; + "Win32_Devices_AllJoyn" = [ "Win32_Devices" ]; + "Win32_Devices_Beep" = [ "Win32_Devices" ]; + "Win32_Devices_BiometricFramework" = [ "Win32_Devices" ]; + "Win32_Devices_Bluetooth" = [ "Win32_Devices" ]; + "Win32_Devices_Cdrom" = [ "Win32_Devices" ]; + "Win32_Devices_Communication" = [ "Win32_Devices" ]; + "Win32_Devices_DeviceAndDriverInstallation" = [ "Win32_Devices" ]; + "Win32_Devices_DeviceQuery" = [ "Win32_Devices" ]; + "Win32_Devices_Display" = [ "Win32_Devices" ]; + "Win32_Devices_Dvd" = [ "Win32_Devices" ]; + "Win32_Devices_Enumeration" = [ "Win32_Devices" ]; + "Win32_Devices_Enumeration_Pnp" = [ "Win32_Devices_Enumeration" ]; + "Win32_Devices_Fax" = [ "Win32_Devices" ]; + "Win32_Devices_HumanInterfaceDevice" = [ "Win32_Devices" ]; + "Win32_Devices_Nfc" = [ "Win32_Devices" ]; + "Win32_Devices_Nfp" = [ "Win32_Devices" ]; + "Win32_Devices_PortableDevices" = [ "Win32_Devices" ]; + "Win32_Devices_Properties" = [ "Win32_Devices" ]; + "Win32_Devices_Pwm" = [ "Win32_Devices" ]; + "Win32_Devices_Sensors" = [ "Win32_Devices" ]; + "Win32_Devices_SerialCommunication" = [ "Win32_Devices" ]; + "Win32_Devices_Tapi" = [ "Win32_Devices" ]; + "Win32_Devices_Usb" = [ "Win32_Devices" ]; + "Win32_Devices_WebServicesOnDevices" = [ "Win32_Devices" ]; + "Win32_Foundation" = [ "Win32" ]; + "Win32_Gaming" = [ "Win32" ]; + "Win32_Globalization" = [ "Win32" ]; + "Win32_Graphics" = [ "Win32" ]; + "Win32_Graphics_Dwm" = [ "Win32_Graphics" ]; + "Win32_Graphics_Gdi" = [ "Win32_Graphics" ]; + "Win32_Graphics_GdiPlus" = [ "Win32_Graphics" ]; + "Win32_Graphics_Hlsl" = [ "Win32_Graphics" ]; + "Win32_Graphics_OpenGL" = [ "Win32_Graphics" ]; + "Win32_Graphics_Printing" = [ "Win32_Graphics" ]; + "Win32_Graphics_Printing_PrintTicket" = [ "Win32_Graphics_Printing" ]; + "Win32_Management" = [ "Win32" ]; + "Win32_Management_MobileDeviceManagementRegistration" = [ "Win32_Management" ]; + "Win32_Media" = [ "Win32" ]; + "Win32_Media_Audio" = [ "Win32_Media" ]; + "Win32_Media_DxMediaObjects" = [ "Win32_Media" ]; + "Win32_Media_KernelStreaming" = [ "Win32_Media" ]; + "Win32_Media_Multimedia" = [ "Win32_Media" ]; + "Win32_Media_Streaming" = [ "Win32_Media" ]; + "Win32_Media_WindowsMediaFormat" = [ "Win32_Media" ]; + "Win32_NetworkManagement" = [ "Win32" ]; + "Win32_NetworkManagement_Dhcp" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_Dns" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_InternetConnectionWizard" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_IpHelper" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_Multicast" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_Ndis" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_NetBios" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_NetManagement" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_NetShell" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_NetworkDiagnosticsFramework" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_P2P" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_QoS" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_Rras" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_Snmp" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_WNet" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_WebDav" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_WiFi" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_WindowsConnectionManager" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_WindowsFilteringPlatform" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_WindowsFirewall" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_WindowsNetworkVirtualization" = [ "Win32_NetworkManagement" ]; + "Win32_Networking" = [ "Win32" ]; + "Win32_Networking_ActiveDirectory" = [ "Win32_Networking" ]; + "Win32_Networking_Clustering" = [ "Win32_Networking" ]; + "Win32_Networking_HttpServer" = [ "Win32_Networking" ]; + "Win32_Networking_Ldap" = [ "Win32_Networking" ]; + "Win32_Networking_WebSocket" = [ "Win32_Networking" ]; + "Win32_Networking_WinHttp" = [ "Win32_Networking" ]; + "Win32_Networking_WinInet" = [ "Win32_Networking" ]; + "Win32_Networking_WinSock" = [ "Win32_Networking" ]; + "Win32_Networking_WindowsWebServices" = [ "Win32_Networking" ]; + "Win32_Security" = [ "Win32" ]; + "Win32_Security_AppLocker" = [ "Win32_Security" ]; + "Win32_Security_Authentication" = [ "Win32_Security" ]; + "Win32_Security_Authentication_Identity" = [ "Win32_Security_Authentication" ]; + "Win32_Security_Authorization" = [ "Win32_Security" ]; + "Win32_Security_Credentials" = [ "Win32_Security" ]; + "Win32_Security_Cryptography" = [ "Win32_Security" ]; + "Win32_Security_Cryptography_Catalog" = [ "Win32_Security_Cryptography" ]; + "Win32_Security_Cryptography_Certificates" = [ "Win32_Security_Cryptography" ]; + "Win32_Security_Cryptography_Sip" = [ "Win32_Security_Cryptography" ]; + "Win32_Security_Cryptography_UI" = [ "Win32_Security_Cryptography" ]; + "Win32_Security_DiagnosticDataQuery" = [ "Win32_Security" ]; + "Win32_Security_DirectoryServices" = [ "Win32_Security" ]; + "Win32_Security_EnterpriseData" = [ "Win32_Security" ]; + "Win32_Security_ExtensibleAuthenticationProtocol" = [ "Win32_Security" ]; + "Win32_Security_Isolation" = [ "Win32_Security" ]; + "Win32_Security_LicenseProtection" = [ "Win32_Security" ]; + "Win32_Security_NetworkAccessProtection" = [ "Win32_Security" ]; + "Win32_Security_WinTrust" = [ "Win32_Security" ]; + "Win32_Security_WinWlx" = [ "Win32_Security" ]; + "Win32_Storage" = [ "Win32" ]; + "Win32_Storage_Cabinets" = [ "Win32_Storage" ]; + "Win32_Storage_CloudFilters" = [ "Win32_Storage" ]; + "Win32_Storage_Compression" = [ "Win32_Storage" ]; + "Win32_Storage_DistributedFileSystem" = [ "Win32_Storage" ]; + "Win32_Storage_FileHistory" = [ "Win32_Storage" ]; + "Win32_Storage_FileSystem" = [ "Win32_Storage" ]; + "Win32_Storage_Imapi" = [ "Win32_Storage" ]; + "Win32_Storage_IndexServer" = [ "Win32_Storage" ]; + "Win32_Storage_InstallableFileSystems" = [ "Win32_Storage" ]; + "Win32_Storage_IscsiDisc" = [ "Win32_Storage" ]; + "Win32_Storage_Jet" = [ "Win32_Storage" ]; + "Win32_Storage_Nvme" = [ "Win32_Storage" ]; + "Win32_Storage_OfflineFiles" = [ "Win32_Storage" ]; + "Win32_Storage_OperationRecorder" = [ "Win32_Storage" ]; + "Win32_Storage_Packaging" = [ "Win32_Storage" ]; + "Win32_Storage_Packaging_Appx" = [ "Win32_Storage_Packaging" ]; + "Win32_Storage_ProjectedFileSystem" = [ "Win32_Storage" ]; + "Win32_Storage_StructuredStorage" = [ "Win32_Storage" ]; + "Win32_Storage_Vhd" = [ "Win32_Storage" ]; + "Win32_Storage_Xps" = [ "Win32_Storage" ]; + "Win32_System" = [ "Win32" ]; + "Win32_System_AddressBook" = [ "Win32_System" ]; + "Win32_System_Antimalware" = [ "Win32_System" ]; + "Win32_System_ApplicationInstallationAndServicing" = [ "Win32_System" ]; + "Win32_System_ApplicationVerifier" = [ "Win32_System" ]; + "Win32_System_ClrHosting" = [ "Win32_System" ]; + "Win32_System_Com" = [ "Win32_System" ]; + "Win32_System_Com_Marshal" = [ "Win32_System_Com" ]; + "Win32_System_Com_StructuredStorage" = [ "Win32_System_Com" ]; + "Win32_System_Com_Urlmon" = [ "Win32_System_Com" ]; + "Win32_System_ComponentServices" = [ "Win32_System" ]; + "Win32_System_Console" = [ "Win32_System" ]; + "Win32_System_CorrelationVector" = [ "Win32_System" ]; + "Win32_System_DataExchange" = [ "Win32_System" ]; + "Win32_System_DeploymentServices" = [ "Win32_System" ]; + "Win32_System_DeveloperLicensing" = [ "Win32_System" ]; + "Win32_System_Diagnostics" = [ "Win32_System" ]; + "Win32_System_Diagnostics_Ceip" = [ "Win32_System_Diagnostics" ]; + "Win32_System_Diagnostics_Debug" = [ "Win32_System_Diagnostics" ]; + "Win32_System_Diagnostics_Debug_Extensions" = [ "Win32_System_Diagnostics_Debug" ]; + "Win32_System_Diagnostics_Etw" = [ "Win32_System_Diagnostics" ]; + "Win32_System_Diagnostics_ProcessSnapshotting" = [ "Win32_System_Diagnostics" ]; + "Win32_System_Diagnostics_ToolHelp" = [ "Win32_System_Diagnostics" ]; + "Win32_System_Diagnostics_TraceLogging" = [ "Win32_System_Diagnostics" ]; + "Win32_System_DistributedTransactionCoordinator" = [ "Win32_System" ]; + "Win32_System_Environment" = [ "Win32_System" ]; + "Win32_System_ErrorReporting" = [ "Win32_System" ]; + "Win32_System_EventCollector" = [ "Win32_System" ]; + "Win32_System_EventLog" = [ "Win32_System" ]; + "Win32_System_EventNotificationService" = [ "Win32_System" ]; + "Win32_System_GroupPolicy" = [ "Win32_System" ]; + "Win32_System_HostCompute" = [ "Win32_System" ]; + "Win32_System_HostComputeNetwork" = [ "Win32_System" ]; + "Win32_System_HostComputeSystem" = [ "Win32_System" ]; + "Win32_System_Hypervisor" = [ "Win32_System" ]; + "Win32_System_IO" = [ "Win32_System" ]; + "Win32_System_Iis" = [ "Win32_System" ]; + "Win32_System_Ioctl" = [ "Win32_System" ]; + "Win32_System_JobObjects" = [ "Win32_System" ]; + "Win32_System_Js" = [ "Win32_System" ]; + "Win32_System_Kernel" = [ "Win32_System" ]; + "Win32_System_LibraryLoader" = [ "Win32_System" ]; + "Win32_System_Mailslots" = [ "Win32_System" ]; + "Win32_System_Mapi" = [ "Win32_System" ]; + "Win32_System_Memory" = [ "Win32_System" ]; + "Win32_System_Memory_NonVolatile" = [ "Win32_System_Memory" ]; + "Win32_System_MessageQueuing" = [ "Win32_System" ]; + "Win32_System_MixedReality" = [ "Win32_System" ]; + "Win32_System_Ole" = [ "Win32_System" ]; + "Win32_System_PasswordManagement" = [ "Win32_System" ]; + "Win32_System_Performance" = [ "Win32_System" ]; + "Win32_System_Performance_HardwareCounterProfiling" = [ "Win32_System_Performance" ]; + "Win32_System_Pipes" = [ "Win32_System" ]; + "Win32_System_Power" = [ "Win32_System" ]; + "Win32_System_ProcessStatus" = [ "Win32_System" ]; + "Win32_System_Recovery" = [ "Win32_System" ]; + "Win32_System_Registry" = [ "Win32_System" ]; + "Win32_System_RemoteDesktop" = [ "Win32_System" ]; + "Win32_System_RemoteManagement" = [ "Win32_System" ]; + "Win32_System_RestartManager" = [ "Win32_System" ]; + "Win32_System_Restore" = [ "Win32_System" ]; + "Win32_System_Rpc" = [ "Win32_System" ]; + "Win32_System_Search" = [ "Win32_System" ]; + "Win32_System_Search_Common" = [ "Win32_System_Search" ]; + "Win32_System_SecurityCenter" = [ "Win32_System" ]; + "Win32_System_Services" = [ "Win32_System" ]; + "Win32_System_SetupAndMigration" = [ "Win32_System" ]; + "Win32_System_Shutdown" = [ "Win32_System" ]; + "Win32_System_StationsAndDesktops" = [ "Win32_System" ]; + "Win32_System_SubsystemForLinux" = [ "Win32_System" ]; + "Win32_System_SystemInformation" = [ "Win32_System" ]; + "Win32_System_SystemServices" = [ "Win32_System" ]; + "Win32_System_Threading" = [ "Win32_System" ]; + "Win32_System_Time" = [ "Win32_System" ]; + "Win32_System_TpmBaseServices" = [ "Win32_System" ]; + "Win32_System_UserAccessLogging" = [ "Win32_System" ]; + "Win32_System_Variant" = [ "Win32_System" ]; + "Win32_System_VirtualDosMachines" = [ "Win32_System" ]; + "Win32_System_WindowsProgramming" = [ "Win32_System" ]; + "Win32_System_Wmi" = [ "Win32_System" ]; + "Win32_UI" = [ "Win32" ]; + "Win32_UI_Accessibility" = [ "Win32_UI" ]; + "Win32_UI_ColorSystem" = [ "Win32_UI" ]; + "Win32_UI_Controls" = [ "Win32_UI" ]; + "Win32_UI_Controls_Dialogs" = [ "Win32_UI_Controls" ]; + "Win32_UI_HiDpi" = [ "Win32_UI" ]; + "Win32_UI_Input" = [ "Win32_UI" ]; + "Win32_UI_Input_Ime" = [ "Win32_UI_Input" ]; + "Win32_UI_Input_KeyboardAndMouse" = [ "Win32_UI_Input" ]; + "Win32_UI_Input_Pointer" = [ "Win32_UI_Input" ]; + "Win32_UI_Input_Touch" = [ "Win32_UI_Input" ]; + "Win32_UI_Input_XboxController" = [ "Win32_UI_Input" ]; + "Win32_UI_InteractionContext" = [ "Win32_UI" ]; + "Win32_UI_Magnification" = [ "Win32_UI" ]; + "Win32_UI_Shell" = [ "Win32_UI" ]; + "Win32_UI_Shell_Common" = [ "Win32_UI_Shell" ]; + "Win32_UI_Shell_PropertiesSystem" = [ "Win32_UI_Shell" ]; + "Win32_UI_TabletPC" = [ "Win32_UI" ]; + "Win32_UI_TextServices" = [ "Win32_UI" ]; + "Win32_UI_WindowsAndMessaging" = [ "Win32_UI" ]; + "Win32_Web" = [ "Win32" ]; + "Win32_Web_InternetExplorer" = [ "Win32_Web" ]; + }; + resolvedDefaultFeatures = [ "Win32" "Win32_Foundation" "Win32_Storage" "Win32_Storage_FileSystem" "Win32_System" "Win32_System_Console" "Win32_System_Diagnostics" "Win32_System_Diagnostics_Debug" "Win32_UI" "Win32_UI_Input" "Win32_UI_Input_KeyboardAndMouse" "default" ]; + }; + "windows-targets 0.48.5" = rec { + crateName = "windows-targets"; + version = "0.48.5"; + edition = "2018"; + sha256 = "034ljxqshifs1lan89xwpcy1hp0lhdh4b5n0d2z4fwjx2piacbws"; + libName = "windows_targets"; + authors = [ + "Microsoft" + ]; + dependencies = [ + { + name = "windows_aarch64_gnullvm"; + packageId = "windows_aarch64_gnullvm 0.48.5"; + target = { target, features }: (stdenv.hostPlatform.rust.rustcTarget == "aarch64-pc-windows-gnullvm"); + } + { + name = "windows_aarch64_msvc"; + packageId = "windows_aarch64_msvc 0.48.5"; + target = { target, features }: (("aarch64" == target."arch" or null) && ("msvc" == target."env" or null) && (!(target."windows_raw_dylib" or false))); + } + { + name = "windows_i686_gnu"; + packageId = "windows_i686_gnu 0.48.5"; + target = { target, features }: (("x86" == target."arch" or null) && ("gnu" == target."env" or null) && (!(target."windows_raw_dylib" or false))); + } + { + name = "windows_i686_msvc"; + packageId = "windows_i686_msvc 0.48.5"; + target = { target, features }: (("x86" == target."arch" or null) && ("msvc" == target."env" or null) && (!(target."windows_raw_dylib" or false))); + } + { + name = "windows_x86_64_gnu"; + packageId = "windows_x86_64_gnu 0.48.5"; + target = { target, features }: (("x86_64" == target."arch" or null) && ("gnu" == target."env" or null) && (!("llvm" == target."abi" or null)) && (!(target."windows_raw_dylib" or false))); + } + { + name = "windows_x86_64_gnullvm"; + packageId = "windows_x86_64_gnullvm 0.48.5"; + target = { target, features }: (stdenv.hostPlatform.rust.rustcTarget == "x86_64-pc-windows-gnullvm"); + } + { + name = "windows_x86_64_msvc"; + packageId = "windows_x86_64_msvc 0.48.5"; + target = { target, features }: (("x86_64" == target."arch" or null) && ("msvc" == target."env" or null) && (!(target."windows_raw_dylib" or false))); + } + ]; + + }; + "windows-targets 0.52.6" = rec { + crateName = "windows-targets"; + version = "0.52.6"; + edition = "2021"; + sha256 = "0wwrx625nwlfp7k93r2rra568gad1mwd888h1jwnl0vfg5r4ywlv"; + libName = "windows_targets"; + authors = [ + "Microsoft" + ]; + dependencies = [ + { + name = "windows_aarch64_gnullvm"; + packageId = "windows_aarch64_gnullvm 0.52.6"; + target = { target, features }: (stdenv.hostPlatform.rust.rustcTarget == "aarch64-pc-windows-gnullvm"); + } + { + name = "windows_aarch64_msvc"; + packageId = "windows_aarch64_msvc 0.52.6"; + target = { target, features }: (("aarch64" == target."arch" or null) && ("msvc" == target."env" or null) && (!(target."windows_raw_dylib" or false))); + } + { + name = "windows_i686_gnu"; + packageId = "windows_i686_gnu 0.52.6"; + target = { target, features }: (("x86" == target."arch" or null) && ("gnu" == target."env" or null) && (!("llvm" == target."abi" or null)) && (!(target."windows_raw_dylib" or false))); + } + { + name = "windows_i686_gnullvm"; + packageId = "windows_i686_gnullvm 0.52.6"; + target = { target, features }: (stdenv.hostPlatform.rust.rustcTarget == "i686-pc-windows-gnullvm"); + } + { + name = "windows_i686_msvc"; + packageId = "windows_i686_msvc 0.52.6"; + target = { target, features }: (("x86" == target."arch" or null) && ("msvc" == target."env" or null) && (!(target."windows_raw_dylib" or false))); + } + { + name = "windows_x86_64_gnu"; + packageId = "windows_x86_64_gnu 0.52.6"; + target = { target, features }: (("x86_64" == target."arch" or null) && ("gnu" == target."env" or null) && (!("llvm" == target."abi" or null)) && (!(target."windows_raw_dylib" or false))); + } + { + name = "windows_x86_64_gnullvm"; + packageId = "windows_x86_64_gnullvm 0.52.6"; + target = { target, features }: (stdenv.hostPlatform.rust.rustcTarget == "x86_64-pc-windows-gnullvm"); + } + { + name = "windows_x86_64_msvc"; + packageId = "windows_x86_64_msvc 0.52.6"; + target = { target, features }: ((("x86_64" == target."arch" or null) || ("arm64ec" == target."arch" or null)) && ("msvc" == target."env" or null) && (!(target."windows_raw_dylib" or false))); + } + ]; + + }; + "windows-targets 0.53.2" = rec { + crateName = "windows-targets"; + version = "0.53.2"; + edition = "2021"; + sha256 = "1vwanhx2br7dh8mmrszdbcf01bccjr01mcyxcscxl4ffr7y6jvy6"; + libName = "windows_targets"; + authors = [ + "Microsoft" + ]; + dependencies = [ + { + name = "windows_aarch64_gnullvm"; + packageId = "windows_aarch64_gnullvm 0.53.0"; + target = { target, features }: (stdenv.hostPlatform.rust.rustcTarget == "aarch64-pc-windows-gnullvm"); + } + { + name = "windows_aarch64_msvc"; + packageId = "windows_aarch64_msvc 0.53.0"; + target = { target, features }: (("aarch64" == target."arch" or null) && ("msvc" == target."env" or null) && (!(target."windows_raw_dylib" or false))); + } + { + name = "windows_i686_gnu"; + packageId = "windows_i686_gnu 0.53.0"; + target = { target, features }: (("x86" == target."arch" or null) && ("gnu" == target."env" or null) && (!("llvm" == target."abi" or null)) && (!(target."windows_raw_dylib" or false))); + } + { + name = "windows_i686_gnullvm"; + packageId = "windows_i686_gnullvm 0.53.0"; + target = { target, features }: (stdenv.hostPlatform.rust.rustcTarget == "i686-pc-windows-gnullvm"); + } + { + name = "windows_i686_msvc"; + packageId = "windows_i686_msvc 0.53.0"; + target = { target, features }: (("x86" == target."arch" or null) && ("msvc" == target."env" or null) && (!(target."windows_raw_dylib" or false))); + } + { + name = "windows_x86_64_gnu"; + packageId = "windows_x86_64_gnu 0.53.0"; + target = { target, features }: (("x86_64" == target."arch" or null) && ("gnu" == target."env" or null) && (!("llvm" == target."abi" or null)) && (!(target."windows_raw_dylib" or false))); + } + { + name = "windows_x86_64_gnullvm"; + packageId = "windows_x86_64_gnullvm 0.53.0"; + target = { target, features }: (stdenv.hostPlatform.rust.rustcTarget == "x86_64-pc-windows-gnullvm"); + } + { + name = "windows_x86_64_msvc"; + packageId = "windows_x86_64_msvc 0.53.0"; + target = { target, features }: ((("x86_64" == target."arch" or null) || ("arm64ec" == target."arch" or null)) && ("msvc" == target."env" or null) && (!(target."windows_raw_dylib" or false))); + } + ]; + + }; + "windows_aarch64_gnullvm 0.48.5" = rec { + crateName = "windows_aarch64_gnullvm"; + version = "0.48.5"; + edition = "2018"; + sha256 = "1n05v7qblg1ci3i567inc7xrkmywczxrs1z3lj3rkkxw18py6f1b"; + authors = [ + "Microsoft" + ]; + + }; + "windows_aarch64_gnullvm 0.52.6" = rec { + crateName = "windows_aarch64_gnullvm"; + version = "0.52.6"; + edition = "2021"; + sha256 = "1lrcq38cr2arvmz19v32qaggvj8bh1640mdm9c2fr877h0hn591j"; + authors = [ + "Microsoft" + ]; + + }; + "windows_aarch64_gnullvm 0.53.0" = rec { + crateName = "windows_aarch64_gnullvm"; + version = "0.53.0"; + edition = "2021"; + sha256 = "0r77pbpbcf8bq4yfwpz2hpq3vns8m0yacpvs2i5cn6fx1pwxbf46"; + authors = [ + "Microsoft" + ]; + + }; + "windows_aarch64_msvc 0.48.5" = rec { + crateName = "windows_aarch64_msvc"; + version = "0.48.5"; + edition = "2018"; + sha256 = "1g5l4ry968p73g6bg6jgyvy9lb8fyhcs54067yzxpcpkf44k2dfw"; + authors = [ + "Microsoft" + ]; + + }; + "windows_aarch64_msvc 0.52.6" = rec { + crateName = "windows_aarch64_msvc"; + version = "0.52.6"; + edition = "2021"; + sha256 = "0sfl0nysnz32yyfh773hpi49b1q700ah6y7sacmjbqjjn5xjmv09"; + authors = [ + "Microsoft" + ]; + + }; + "windows_aarch64_msvc 0.53.0" = rec { + crateName = "windows_aarch64_msvc"; + version = "0.53.0"; + edition = "2021"; + sha256 = "0v766yqw51pzxxwp203yqy39ijgjamp54hhdbsyqq6x1c8gilrf7"; + authors = [ + "Microsoft" + ]; + + }; + "windows_i686_gnu 0.48.5" = rec { + crateName = "windows_i686_gnu"; + version = "0.48.5"; + edition = "2018"; + sha256 = "0gklnglwd9ilqx7ac3cn8hbhkraqisd0n83jxzf9837nvvkiand7"; authors = [ "Microsoft" ]; @@ -16301,7 +17410,17 @@ rec { ]; }; - "windows_i686_gnullvm" = rec { + "windows_i686_gnu 0.53.0" = rec { + crateName = "windows_i686_gnu"; + version = "0.53.0"; + edition = "2021"; + sha256 = "1hvjc8nv95sx5vdd79fivn8bpm7i517dqyf4yvsqgwrmkmjngp61"; + authors = [ + "Microsoft" + ]; + + }; + "windows_i686_gnullvm 0.52.6" = rec { crateName = "windows_i686_gnullvm"; version = "0.52.6"; edition = "2021"; @@ -16310,6 +17429,16 @@ rec { "Microsoft" ]; + }; + "windows_i686_gnullvm 0.53.0" = rec { + crateName = "windows_i686_gnullvm"; + version = "0.53.0"; + edition = "2021"; + sha256 = "04df1in2k91qyf1wzizvh560bvyzq20yf68k8xa66vdzxnywrrlw"; + authors = [ + "Microsoft" + ]; + }; "windows_i686_msvc 0.48.5" = rec { crateName = "windows_i686_msvc"; @@ -16330,6 +17459,16 @@ rec { "Microsoft" ]; + }; + "windows_i686_msvc 0.53.0" = rec { + crateName = "windows_i686_msvc"; + version = "0.53.0"; + edition = "2021"; + sha256 = "0pcvb25fkvqnp91z25qr5x61wyya12lx8p7nsa137cbb82ayw7sq"; + authors = [ + "Microsoft" + ]; + }; "windows_x86_64_gnu 0.48.5" = rec { crateName = "windows_x86_64_gnu"; @@ -16350,6 +17489,16 @@ rec { "Microsoft" ]; + }; + "windows_x86_64_gnu 0.53.0" = rec { + crateName = "windows_x86_64_gnu"; + version = "0.53.0"; + edition = "2021"; + sha256 = "1flh84xkssn1n6m1riddipydcksp2pdl45vdf70jygx3ksnbam9f"; + authors = [ + "Microsoft" + ]; + }; "windows_x86_64_gnullvm 0.48.5" = rec { crateName = "windows_x86_64_gnullvm"; @@ -16370,6 +17519,16 @@ rec { "Microsoft" ]; + }; + "windows_x86_64_gnullvm 0.53.0" = rec { + crateName = "windows_x86_64_gnullvm"; + version = "0.53.0"; + edition = "2021"; + sha256 = "0mvc8119xpbi3q2m6mrjcdzl6afx4wffacp13v76g4jrs1fh6vha"; + authors = [ + "Microsoft" + ]; + }; "windows_x86_64_msvc 0.48.5" = rec { crateName = "windows_x86_64_msvc"; @@ -16390,12 +17549,22 @@ rec { "Microsoft" ]; + }; + "windows_x86_64_msvc 0.53.0" = rec { + crateName = "windows_x86_64_msvc"; + version = "0.53.0"; + edition = "2021"; + sha256 = "11h4i28hq0zlnjcaqi2xdxr7ibnpa8djfggch9rki1zzb8qi8517"; + authors = [ + "Microsoft" + ]; + }; "winnow" = rec { crateName = "winnow"; - version = "0.6.18"; + version = "0.7.12"; edition = "2021"; - sha256 = "0vrsrnf2nm9jsk1161x1vacmi3ns4h3h10fib91rs28zd6jbvab8"; + sha256 = "159y8inpy86xswmr4yig9hxss0v2fssyqy1kk12504n8jbsfpvgk"; dependencies = [ { name = "memchr"; @@ -16405,7 +17574,7 @@ rec { } ]; features = { - "debug" = [ "std" "dep:anstream" "dep:anstyle" "dep:is-terminal" "dep:terminal_size" ]; + "debug" = [ "std" "dep:anstream" "dep:anstyle" "dep:is_terminal_polyfill" "dep:terminal_size" ]; "default" = [ "std" ]; "simd" = [ "dep:memchr" ]; "std" = [ "alloc" "memchr?/std" ]; @@ -16448,7 +17617,7 @@ rec { dependencies = [ { name = "bitflags"; - packageId = "bitflags 2.6.0"; + packageId = "bitflags"; optional = true; } ]; @@ -16458,12 +17627,24 @@ rec { }; resolvedDefaultFeatures = [ "bitflags" ]; }; + "writeable" = rec { + crateName = "writeable"; + version = "0.6.1"; + edition = "2021"; + sha256 = "1fx29zncvbrqzgz7li88vzdm8zvgwgwy2r9bnjqxya09pfwi0bza"; + authors = [ + "The ICU4X Project Developers" + ]; + features = { + "either" = [ "dep:either" ]; + }; + }; "xml-rs" = rec { crateName = "xml-rs"; - version = "0.8.21"; + version = "0.8.27"; edition = "2021"; crateBin = []; - sha256 = "00g63s3kcnj69hsgg96gvbh822qa71vv2sfsqvf37qqdgkp7g6jk"; + sha256 = "1irplg223x6w3lvj0yig6czbiwci06495wc9xg3660kh6cvl1n3g"; libName = "xml"; authors = [ "Vladimir Matveev " @@ -16514,7 +17695,7 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.4"; + packageId = "snafu 0.8.6"; features = [ "futures" ]; } { @@ -16532,53 +17713,91 @@ rec { ]; }; - "zerocopy 0.7.35" = rec { - crateName = "zerocopy"; - version = "0.7.35"; - edition = "2018"; - sha256 = "1w36q7b9il2flg0qskapgi9ymgg7p985vniqd09vi0mwib8lz6qv"; + "yoke" = rec { + crateName = "yoke"; + version = "0.8.0"; + edition = "2021"; + sha256 = "1k4mfr48vgi7wh066y11b7v1ilakghlnlhw9snzz8vi2p00vnhaz"; authors = [ - "Joshua Liebow-Feeser " + "Manish Goregaokar " ]; dependencies = [ { - name = "byteorder"; - packageId = "byteorder"; + name = "serde"; + packageId = "serde"; optional = true; usesDefaultFeatures = false; } { - name = "zerocopy-derive"; - packageId = "zerocopy-derive 0.7.35"; + name = "stable_deref_trait"; + packageId = "stable_deref_trait"; + usesDefaultFeatures = false; + } + { + name = "yoke-derive"; + packageId = "yoke-derive"; optional = true; + usesDefaultFeatures = false; } { - name = "zerocopy-derive"; - packageId = "zerocopy-derive 0.7.35"; - target = { target, features }: false; + name = "zerofrom"; + packageId = "zerofrom"; + optional = true; + usesDefaultFeatures = false; } ]; devDependencies = [ { - name = "zerocopy-derive"; - packageId = "zerocopy-derive 0.7.35"; + name = "serde"; + packageId = "serde"; + usesDefaultFeatures = false; } ]; features = { - "__internal_use_only_features_that_work_on_stable" = [ "alloc" "derive" "simd" ]; - "byteorder" = [ "dep:byteorder" ]; - "default" = [ "byteorder" ]; - "derive" = [ "zerocopy-derive" ]; - "simd-nightly" = [ "simd" ]; - "zerocopy-derive" = [ "dep:zerocopy-derive" ]; + "alloc" = [ "stable_deref_trait/alloc" "serde?/alloc" "zerofrom/alloc" ]; + "default" = [ "alloc" "zerofrom" ]; + "derive" = [ "dep:yoke-derive" "zerofrom/derive" ]; + "serde" = [ "dep:serde" ]; + "zerofrom" = [ "dep:zerofrom" ]; }; - resolvedDefaultFeatures = [ "byteorder" "default" "derive" "simd" "zerocopy-derive" ]; + resolvedDefaultFeatures = [ "alloc" "derive" "zerofrom" ]; + }; + "yoke-derive" = rec { + crateName = "yoke-derive"; + version = "0.8.0"; + edition = "2021"; + sha256 = "1dha5jrjz9jaq8kmxq1aag86b98zbnm9lyjrihy5sv716sbkrniq"; + procMacro = true; + libName = "yoke_derive"; + authors = [ + "Manish Goregaokar " + ]; + dependencies = [ + { + name = "proc-macro2"; + packageId = "proc-macro2"; + } + { + name = "quote"; + packageId = "quote"; + } + { + name = "syn"; + packageId = "syn 2.0.104"; + features = [ "fold" ]; + } + { + name = "synstructure"; + packageId = "synstructure"; + } + ]; + }; - "zerocopy 0.8.24" = rec { + "zerocopy" = rec { crateName = "zerocopy"; - version = "0.8.24"; + version = "0.8.26"; edition = "2021"; - sha256 = "0yb8hyzfnwzr2wg4p7cnqmjps8fsw8xqnprafgpmfs8qisigx1i5"; + sha256 = "0bvsj0qzq26zc6nlrm3z10ihvjspyngs7n0jw1fz031i7h6xsf8h"; authors = [ "Joshua Liebow-Feeser " "Jack Wrenn " @@ -16586,19 +17805,19 @@ rec { dependencies = [ { name = "zerocopy-derive"; - packageId = "zerocopy-derive 0.8.24"; + packageId = "zerocopy-derive"; optional = true; } { name = "zerocopy-derive"; - packageId = "zerocopy-derive 0.8.24"; + packageId = "zerocopy-derive"; target = { target, features }: false; } ]; devDependencies = [ { name = "zerocopy-derive"; - packageId = "zerocopy-derive 0.8.24"; + packageId = "zerocopy-derive"; } ]; features = { @@ -16610,15 +17829,16 @@ rec { }; resolvedDefaultFeatures = [ "simd" ]; }; - "zerocopy-derive 0.7.35" = rec { + "zerocopy-derive" = rec { crateName = "zerocopy-derive"; - version = "0.7.35"; - edition = "2018"; - sha256 = "0gnf2ap2y92nwdalzz3x7142f2b83sni66l39vxp2ijd6j080kzs"; + version = "0.8.26"; + edition = "2021"; + sha256 = "10aiywi5qkha0mpsnb1zjwi44wl2rhdncaf3ykbp4i9nqm65pkwy"; procMacro = true; libName = "zerocopy_derive"; authors = [ "Joshua Liebow-Feeser " + "Jack Wrenn " ]; dependencies = [ { @@ -16631,21 +17851,43 @@ rec { } { name = "syn"; - packageId = "syn 2.0.87"; + packageId = "syn 2.0.104"; + features = [ "full" ]; } ]; }; - "zerocopy-derive 0.8.24" = rec { - crateName = "zerocopy-derive"; - version = "0.8.24"; + "zerofrom" = rec { + crateName = "zerofrom"; + version = "0.1.6"; + edition = "2021"; + sha256 = "19dyky67zkjichsb7ykhv0aqws3q0jfvzww76l66c19y6gh45k2h"; + authors = [ + "Manish Goregaokar " + ]; + dependencies = [ + { + name = "zerofrom-derive"; + packageId = "zerofrom-derive"; + optional = true; + usesDefaultFeatures = false; + } + ]; + features = { + "default" = [ "alloc" ]; + "derive" = [ "dep:zerofrom-derive" ]; + }; + resolvedDefaultFeatures = [ "alloc" "derive" ]; + }; + "zerofrom-derive" = rec { + crateName = "zerofrom-derive"; + version = "0.1.6"; edition = "2021"; - sha256 = "1gk9047pbq1yjj2jyiv0s37nqc53maqbmhcsjp6lhi2w7kvai5m9"; + sha256 = "00l5niw7c1b0lf1vhvajpjmcnbdp2vn96jg4nmkhq2db0rp5s7np"; procMacro = true; - libName = "zerocopy_derive"; + libName = "zerofrom_derive"; authors = [ - "Joshua Liebow-Feeser " - "Jack Wrenn " + "Manish Goregaokar " ]; dependencies = [ { @@ -16658,8 +17900,12 @@ rec { } { name = "syn"; - packageId = "syn 2.0.87"; - features = [ "full" ]; + packageId = "syn 2.0.104"; + features = [ "fold" ]; + } + { + name = "synstructure"; + packageId = "synstructure"; } ]; @@ -16681,6 +17927,115 @@ rec { }; resolvedDefaultFeatures = [ "alloc" "default" ]; }; + "zerotrie" = rec { + crateName = "zerotrie"; + version = "0.2.2"; + edition = "2021"; + sha256 = "15gmka7vw5k0d24s0vxgymr2j6zn2iwl12wpmpnpjgsqg3abpw1n"; + authors = [ + "The ICU4X Project Developers" + ]; + dependencies = [ + { + name = "displaydoc"; + packageId = "displaydoc"; + usesDefaultFeatures = false; + } + { + name = "yoke"; + packageId = "yoke"; + optional = true; + usesDefaultFeatures = false; + features = [ "derive" ]; + } + { + name = "zerofrom"; + packageId = "zerofrom"; + optional = true; + usesDefaultFeatures = false; + } + ]; + features = { + "databake" = [ "dep:databake" "zerovec?/databake" ]; + "litemap" = [ "dep:litemap" "alloc" ]; + "serde" = [ "dep:serde" "dep:litemap" "alloc" "litemap/serde" "zerovec?/serde" ]; + "yoke" = [ "dep:yoke" ]; + "zerofrom" = [ "dep:zerofrom" ]; + "zerovec" = [ "dep:zerovec" ]; + }; + resolvedDefaultFeatures = [ "yoke" "zerofrom" ]; + }; + "zerovec" = rec { + crateName = "zerovec"; + version = "0.11.2"; + edition = "2021"; + sha256 = "0a2457fmz39k9vrrj3rm82q5ykdhgxgbwfz2r6fa6nq11q4fn1aa"; + authors = [ + "The ICU4X Project Developers" + ]; + dependencies = [ + { + name = "yoke"; + packageId = "yoke"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "zerofrom"; + packageId = "zerofrom"; + usesDefaultFeatures = false; + } + { + name = "zerovec-derive"; + packageId = "zerovec-derive"; + optional = true; + usesDefaultFeatures = false; + } + ]; + devDependencies = [ + { + name = "yoke"; + packageId = "yoke"; + usesDefaultFeatures = false; + features = [ "derive" ]; + } + ]; + features = { + "databake" = [ "dep:databake" ]; + "derive" = [ "dep:zerovec-derive" ]; + "hashmap" = [ "dep:twox-hash" "alloc" ]; + "serde" = [ "dep:serde" "alloc" ]; + "yoke" = [ "dep:yoke" ]; + }; + resolvedDefaultFeatures = [ "alloc" "derive" "yoke" ]; + }; + "zerovec-derive" = rec { + crateName = "zerovec-derive"; + version = "0.11.1"; + edition = "2021"; + sha256 = "13zms8hj7vzpfswypwggyfr4ckmyc7v3di49pmj8r1qcz9z275jv"; + procMacro = true; + libName = "zerovec_derive"; + authors = [ + "Manish Goregaokar " + ]; + dependencies = [ + { + name = "proc-macro2"; + packageId = "proc-macro2"; + } + { + name = "quote"; + packageId = "quote"; + } + { + name = "syn"; + packageId = "syn 2.0.104"; + features = [ "extra-traits" ]; + } + ]; + + }; "zip" = rec { crateName = "zip"; version = "1.1.4"; @@ -16722,7 +18077,7 @@ rec { } { name = "indexmap"; - packageId = "indexmap 2.5.0"; + packageId = "indexmap 2.10.0"; } { name = "num_enum"; @@ -16730,7 +18085,7 @@ rec { } { name = "thiserror"; - packageId = "thiserror 1.0.63"; + packageId = "thiserror 1.0.69"; } ]; features = { diff --git a/Cargo.toml b/Cargo.toml index 800e4df1..93e88231 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -31,7 +31,7 @@ directories = "5.0" dotenvy = "0.15" futures = "0.3" indexmap = { version = "2.2", features = ["serde"] } -indicatif = "0.17.11" +indicatif = "0.18" k8s-openapi = { version = "0.24", default-features = false, features = ["v1_32"] } kube = { version = "0.99", default-features = false, features = ["client", "rustls-tls", "ws", "socks5", "http-proxy"] } lazy_static = "1.5" diff --git a/deny.toml b/deny.toml index 238ae1cc..60c7b706 100644 --- a/deny.toml +++ b/deny.toml @@ -1,3 +1,4 @@ +[graph] targets = [ { triple = "x86_64-unknown-linux-gnu" }, { triple = "aarch64-unknown-linux-gnu" }, @@ -7,34 +8,24 @@ targets = [ ] [advisories] -vulnerability = "warn" -unmaintained = "allow" -unsound = "warn" +unmaintained = "workspace" yanked = "warn" -notice = "warn" [bans] multiple-versions = "allow" [licenses] -unlicensed = "deny" -copyleft = "deny" -allow-osi-fsf-free = "neither" -default = "deny" confidence-threshold = 1.0 allow = [ "Apache-2.0", "BSD-2-Clause", "BSD-3-Clause", - "CC0-1.0", "ISC", - "LicenseRef-ring", - "LicenseRef-webpki", "MIT", "MPL-2.0", - "Unicode-DFS-2016", - "Zlib", + "Unicode-3.0", "Unlicense", + "Zlib", ] private = { ignore = true } diff --git a/deploy/helm/stackable-cockpit/templates/roles.yaml b/deploy/helm/stackable-cockpit/templates/roles.yaml index 6899e605..0c45049f 100644 --- a/deploy/helm/stackable-cockpit/templates/roles.yaml +++ b/deploy/helm/stackable-cockpit/templates/roles.yaml @@ -21,6 +21,7 @@ rules: - kafka.stackable.tech - nifi.stackable.tech - opa.stackable.tech + - opensearch.stackable.tech - spark.stackable.tech - superset.stackable.tech - trino.stackable.tech diff --git a/docs/modules/stackablectl/partials/commands/cache.adoc b/docs/modules/stackablectl/partials/commands/cache.adoc index 4158759b..511c26f0 100644 --- a/docs/modules/stackablectl/partials/commands/cache.adoc +++ b/docs/modules/stackablectl/partials/commands/cache.adoc @@ -62,22 +62,22 @@ File options: to provide multiple additional release files. Helm repository options: - --helm-repo-stable + --helm-repo-stable Provide a custom Helm stable repository URL [default: https://repo.stackable.tech/repository/helm-stable/] - --helm-repo-test + --helm-repo-test Provide a custom Helm test repository URL [default: https://repo.stackable.tech/repository/helm-test/] - --helm-repo-dev + --helm-repo-dev Provide a custom Helm dev repository URL [default: https://repo.stackable.tech/repository/helm-dev/] - --chart-source + --chart-source Source the charts from either a OCI registry or from index.yaml-based repositories. [default: oci] diff --git a/docs/modules/stackablectl/partials/commands/completions.adoc b/docs/modules/stackablectl/partials/commands/completions.adoc index f1ae0f57..e9213ef0 100644 --- a/docs/modules/stackablectl/partials/commands/completions.adoc +++ b/docs/modules/stackablectl/partials/commands/completions.adoc @@ -65,22 +65,22 @@ File options: to provide multiple additional release files. Helm repository options: - --helm-repo-stable + --helm-repo-stable Provide a custom Helm stable repository URL [default: https://repo.stackable.tech/repository/helm-stable/] - --helm-repo-test + --helm-repo-test Provide a custom Helm test repository URL [default: https://repo.stackable.tech/repository/helm-test/] - --helm-repo-dev + --helm-repo-dev Provide a custom Helm dev repository URL [default: https://repo.stackable.tech/repository/helm-dev/] - --chart-source + --chart-source Source the charts from either a OCI registry or from index.yaml-based repositories. [default: oci] diff --git a/docs/modules/stackablectl/partials/commands/demo.adoc b/docs/modules/stackablectl/partials/commands/demo.adoc index d9f2e91b..f796f3e6 100644 --- a/docs/modules/stackablectl/partials/commands/demo.adoc +++ b/docs/modules/stackablectl/partials/commands/demo.adoc @@ -66,22 +66,22 @@ File options: to provide multiple additional release files. Helm repository options: - --helm-repo-stable + --helm-repo-stable Provide a custom Helm stable repository URL [default: https://repo.stackable.tech/repository/helm-stable/] - --helm-repo-test + --helm-repo-test Provide a custom Helm test repository URL [default: https://repo.stackable.tech/repository/helm-test/] - --helm-repo-dev + --helm-repo-dev Provide a custom Helm dev repository URL [default: https://repo.stackable.tech/repository/helm-dev/] - --chart-source + --chart-source Source the charts from either a OCI registry or from index.yaml-based repositories. [default: oci] diff --git a/docs/modules/stackablectl/partials/commands/experimental-debug.adoc b/docs/modules/stackablectl/partials/commands/experimental-debug.adoc index 42ebfae9..69beb787 100644 --- a/docs/modules/stackablectl/partials/commands/experimental-debug.adoc +++ b/docs/modules/stackablectl/partials/commands/experimental-debug.adoc @@ -79,22 +79,22 @@ File options: to provide multiple additional release files. Helm repository options: - --helm-repo-stable + --helm-repo-stable Provide a custom Helm stable repository URL [default: https://repo.stackable.tech/repository/helm-stable/] - --helm-repo-test + --helm-repo-test Provide a custom Helm test repository URL [default: https://repo.stackable.tech/repository/helm-test/] - --helm-repo-dev + --helm-repo-dev Provide a custom Helm dev repository URL [default: https://repo.stackable.tech/repository/helm-dev/] - --chart-source + --chart-source Source the charts from either a OCI registry or from index.yaml-based repositories. [default: oci] diff --git a/docs/modules/stackablectl/partials/commands/index.adoc b/docs/modules/stackablectl/partials/commands/index.adoc index 93bbdad8..a83def02 100644 --- a/docs/modules/stackablectl/partials/commands/index.adoc +++ b/docs/modules/stackablectl/partials/commands/index.adoc @@ -68,22 +68,22 @@ File options: to provide multiple additional release files. Helm repository options: - --helm-repo-stable + --helm-repo-stable Provide a custom Helm stable repository URL [default: https://repo.stackable.tech/repository/helm-stable/] - --helm-repo-test + --helm-repo-test Provide a custom Helm test repository URL [default: https://repo.stackable.tech/repository/helm-test/] - --helm-repo-dev + --helm-repo-dev Provide a custom Helm dev repository URL [default: https://repo.stackable.tech/repository/helm-dev/] - --chart-source + --chart-source Source the charts from either a OCI registry or from index.yaml-based repositories. [default: oci] diff --git a/docs/modules/stackablectl/partials/commands/operator.adoc b/docs/modules/stackablectl/partials/commands/operator.adoc index b032e1a1..0d97ae6d 100644 --- a/docs/modules/stackablectl/partials/commands/operator.adoc +++ b/docs/modules/stackablectl/partials/commands/operator.adoc @@ -65,22 +65,22 @@ File options: to provide multiple additional release files. Helm repository options: - --helm-repo-stable + --helm-repo-stable Provide a custom Helm stable repository URL [default: https://repo.stackable.tech/repository/helm-stable/] - --helm-repo-test + --helm-repo-test Provide a custom Helm test repository URL [default: https://repo.stackable.tech/repository/helm-test/] - --helm-repo-dev + --helm-repo-dev Provide a custom Helm dev repository URL [default: https://repo.stackable.tech/repository/helm-dev/] - --chart-source + --chart-source Source the charts from either a OCI registry or from index.yaml-based repositories. [default: oci] diff --git a/docs/modules/stackablectl/partials/commands/release.adoc b/docs/modules/stackablectl/partials/commands/release.adoc index eac12e67..ed089158 100644 --- a/docs/modules/stackablectl/partials/commands/release.adoc +++ b/docs/modules/stackablectl/partials/commands/release.adoc @@ -65,22 +65,22 @@ File options: to provide multiple additional release files. Helm repository options: - --helm-repo-stable + --helm-repo-stable Provide a custom Helm stable repository URL [default: https://repo.stackable.tech/repository/helm-stable/] - --helm-repo-test + --helm-repo-test Provide a custom Helm test repository URL [default: https://repo.stackable.tech/repository/helm-test/] - --helm-repo-dev + --helm-repo-dev Provide a custom Helm dev repository URL [default: https://repo.stackable.tech/repository/helm-dev/] - --chart-source + --chart-source Source the charts from either a OCI registry or from index.yaml-based repositories. [default: oci] diff --git a/docs/modules/stackablectl/partials/commands/stack.adoc b/docs/modules/stackablectl/partials/commands/stack.adoc index e03586ee..f92156ec 100644 --- a/docs/modules/stackablectl/partials/commands/stack.adoc +++ b/docs/modules/stackablectl/partials/commands/stack.adoc @@ -66,22 +66,22 @@ File options: to provide multiple additional release files. Helm repository options: - --helm-repo-stable + --helm-repo-stable Provide a custom Helm stable repository URL [default: https://repo.stackable.tech/repository/helm-stable/] - --helm-repo-test + --helm-repo-test Provide a custom Helm test repository URL [default: https://repo.stackable.tech/repository/helm-test/] - --helm-repo-dev + --helm-repo-dev Provide a custom Helm dev repository URL [default: https://repo.stackable.tech/repository/helm-dev/] - --chart-source + --chart-source Source the charts from either a OCI registry or from index.yaml-based repositories. [default: oci] diff --git a/docs/modules/stackablectl/partials/commands/stacklet.adoc b/docs/modules/stackablectl/partials/commands/stacklet.adoc index 282b41bb..9b7f9ad3 100644 --- a/docs/modules/stackablectl/partials/commands/stacklet.adoc +++ b/docs/modules/stackablectl/partials/commands/stacklet.adoc @@ -67,22 +67,22 @@ File options: to provide multiple additional release files. Helm repository options: - --helm-repo-stable + --helm-repo-stable Provide a custom Helm stable repository URL [default: https://repo.stackable.tech/repository/helm-stable/] - --helm-repo-test + --helm-repo-test Provide a custom Helm test repository URL [default: https://repo.stackable.tech/repository/helm-test/] - --helm-repo-dev + --helm-repo-dev Provide a custom Helm dev repository URL [default: https://repo.stackable.tech/repository/helm-dev/] - --chart-source + --chart-source Source the charts from either a OCI registry or from index.yaml-based repositories. [default: oci] diff --git a/extra/completions/_stackablectl b/extra/completions/_stackablectl index 768a339a..7c13569f 100644 --- a/extra/completions/_stackablectl +++ b/extra/completions/_stackablectl @@ -15,8 +15,8 @@ _stackablectl() { local context curcontext="$curcontext" state line _arguments "${_arguments_options[@]}" : \ -'-l+[Log level this application uses]:LOG_LEVEL: ' \ -'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'-l+[Log level this application uses]:LOG_LEVEL:_default' \ +'--log-level=[Log level this application uses]:LOG_LEVEL:_default' \ '*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ @@ -44,8 +44,8 @@ repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based o case $line[1] in (operator) _arguments "${_arguments_options[@]}" : \ -'-l+[Log level this application uses]:LOG_LEVEL: ' \ -'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'-l+[Log level this application uses]:LOG_LEVEL:_default' \ +'--log-level=[Log level this application uses]:LOG_LEVEL:_default' \ '*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ @@ -82,8 +82,8 @@ yaml\:"Print output formatted as YAML"))' \ table\:"Print output formatted as a table" json\:"Print output formatted as JSON" yaml\:"Print output formatted as YAML"))' \ -'-l+[Log level this application uses]:LOG_LEVEL: ' \ -'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'-l+[Log level this application uses]:LOG_LEVEL:_default' \ +'--log-level=[Log level this application uses]:LOG_LEVEL:_default' \ '*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ @@ -112,8 +112,8 @@ yaml\:"Print output formatted as YAML"))' \ table\:"Print output formatted as a table" json\:"Print output formatted as JSON" yaml\:"Print output formatted as YAML"))' \ -'-l+[Log level this application uses]:LOG_LEVEL: ' \ -'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'-l+[Log level this application uses]:LOG_LEVEL:_default' \ +'--log-level=[Log level this application uses]:LOG_LEVEL:_default' \ '*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ @@ -130,22 +130,22 @@ repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based o '--help[Print help (see more with '\''--help'\'')]' \ '-V[Print version]' \ '--version[Print version]' \ -':OPERATOR -- Operator to describe:' \ +':OPERATOR -- Operator to describe:_default' \ && ret=0 ;; (install) _arguments "${_arguments_options[@]}" : \ -'--operator-namespace=[Namespace in the cluster used to deploy the operators]:OPERATOR_NAMESPACE: ' \ -'--operator-ns=[Namespace in the cluster used to deploy the operators]:OPERATOR_NAMESPACE: ' \ +'--operator-namespace=[Namespace in the cluster used to deploy the operators]:OPERATOR_NAMESPACE:_default' \ +'--operator-ns=[Namespace in the cluster used to deploy the operators]:OPERATOR_NAMESPACE:_default' \ '-c+[Type of local cluster to use for testing]:CLUSTER_TYPE:((kind\:"Use a kind cluster, see " minikube\:"Use a minikube cluster"))' \ '--cluster=[Type of local cluster to use for testing]:CLUSTER_TYPE:((kind\:"Use a kind cluster, see " minikube\:"Use a minikube cluster"))' \ -'--cluster-name=[Name of the local cluster]:CLUSTER_NAME: ' \ -'--cluster-nodes=[Number of total nodes in the local cluster]:CLUSTER_NODES: ' \ -'--cluster-cp-nodes=[Number of control plane nodes in the local cluster]:CLUSTER_CP_NODES: ' \ -'-l+[Log level this application uses]:LOG_LEVEL: ' \ -'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'--cluster-name=[Name of the local cluster]:CLUSTER_NAME:_default' \ +'--cluster-nodes=[Number of total nodes in the local cluster]:CLUSTER_NODES:_default' \ +'--cluster-cp-nodes=[Number of control plane nodes in the local cluster]:CLUSTER_CP_NODES:_default' \ +'-l+[Log level this application uses]:LOG_LEVEL:_default' \ +'--log-level=[Log level this application uses]:LOG_LEVEL:_default' \ '*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ @@ -162,15 +162,15 @@ repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based o '--help[Print help (see more with '\''--help'\'')]' \ '-V[Print version]' \ '--version[Print version]' \ -'*::OPERATORS -- Operator(s) to install:' \ +'*::OPERATORS -- Operator(s) to install:_default' \ && ret=0 ;; (uninstall) _arguments "${_arguments_options[@]}" : \ -'--operator-namespace=[Namespace in the cluster used to deploy the operators]:OPERATOR_NAMESPACE: ' \ -'--operator-ns=[Namespace in the cluster used to deploy the operators]:OPERATOR_NAMESPACE: ' \ -'-l+[Log level this application uses]:LOG_LEVEL: ' \ -'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'--operator-namespace=[Namespace in the cluster used to deploy the operators]:OPERATOR_NAMESPACE:_default' \ +'--operator-ns=[Namespace in the cluster used to deploy the operators]:OPERATOR_NAMESPACE:_default' \ +'-l+[Log level this application uses]:LOG_LEVEL:_default' \ +'--log-level=[Log level this application uses]:LOG_LEVEL:_default' \ '*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ @@ -187,7 +187,7 @@ repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based o '--help[Print help (see more with '\''--help'\'')]' \ '-V[Print version]' \ '--version[Print version]' \ -'*::operators -- One or more operators to uninstall:' \ +'*::operators -- One or more operators to uninstall:_default' \ && ret=0 ;; (installed) @@ -200,10 +200,10 @@ yaml\:"Print output formatted as YAML"))' \ table\:"Print output formatted as a table" json\:"Print output formatted as JSON" yaml\:"Print output formatted as YAML"))' \ -'--operator-namespace=[Namespace in the cluster used to deploy the operators]:OPERATOR_NAMESPACE: ' \ -'--operator-ns=[Namespace in the cluster used to deploy the operators]:OPERATOR_NAMESPACE: ' \ -'-l+[Log level this application uses]:LOG_LEVEL: ' \ -'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'--operator-namespace=[Namespace in the cluster used to deploy the operators]:OPERATOR_NAMESPACE:_default' \ +'--operator-ns=[Namespace in the cluster used to deploy the operators]:OPERATOR_NAMESPACE:_default' \ +'-l+[Log level this application uses]:LOG_LEVEL:_default' \ +'--log-level=[Log level this application uses]:LOG_LEVEL:_default' \ '*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ @@ -268,8 +268,8 @@ esac ;; (release) _arguments "${_arguments_options[@]}" : \ -'-l+[Log level this application uses]:LOG_LEVEL: ' \ -'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'-l+[Log level this application uses]:LOG_LEVEL:_default' \ +'--log-level=[Log level this application uses]:LOG_LEVEL:_default' \ '*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ @@ -306,8 +306,8 @@ yaml\:"Print output formatted as YAML"))' \ table\:"Print output formatted as a table" json\:"Print output formatted as JSON" yaml\:"Print output formatted as YAML"))' \ -'-l+[Log level this application uses]:LOG_LEVEL: ' \ -'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'-l+[Log level this application uses]:LOG_LEVEL:_default' \ +'--log-level=[Log level this application uses]:LOG_LEVEL:_default' \ '*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ @@ -336,8 +336,8 @@ yaml\:"Print output formatted as YAML"))' \ table\:"Print output formatted as a table" json\:"Print output formatted as JSON" yaml\:"Print output formatted as YAML"))' \ -'-l+[Log level this application uses]:LOG_LEVEL: ' \ -'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'-l+[Log level this application uses]:LOG_LEVEL:_default' \ +'--log-level=[Log level this application uses]:LOG_LEVEL:_default' \ '*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ @@ -354,26 +354,26 @@ repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based o '--help[Print help (see more with '\''--help'\'')]' \ '-V[Print version]' \ '--version[Print version]' \ -':RELEASE:' \ +':RELEASE:_default' \ && ret=0 ;; (install) _arguments "${_arguments_options[@]}" : \ -'*-i+[Whitelist of product operators to install]:INCLUDED_PRODUCTS: ' \ -'*--include=[Whitelist of product operators to install]:INCLUDED_PRODUCTS: ' \ -'*-e+[Blacklist of product operators to install]:EXCLUDED_PRODUCTS: ' \ -'*--exclude=[Blacklist of product operators to install]:EXCLUDED_PRODUCTS: ' \ -'--operator-namespace=[Namespace in the cluster used to deploy the operators]:OPERATOR_NAMESPACE: ' \ -'--operator-ns=[Namespace in the cluster used to deploy the operators]:OPERATOR_NAMESPACE: ' \ +'*-i+[Whitelist of product operators to install]:INCLUDED_PRODUCTS:_default' \ +'*--include=[Whitelist of product operators to install]:INCLUDED_PRODUCTS:_default' \ +'*-e+[Blacklist of product operators to install]:EXCLUDED_PRODUCTS:_default' \ +'*--exclude=[Blacklist of product operators to install]:EXCLUDED_PRODUCTS:_default' \ +'--operator-namespace=[Namespace in the cluster used to deploy the operators]:OPERATOR_NAMESPACE:_default' \ +'--operator-ns=[Namespace in the cluster used to deploy the operators]:OPERATOR_NAMESPACE:_default' \ '-c+[Type of local cluster to use for testing]:CLUSTER_TYPE:((kind\:"Use a kind cluster, see " minikube\:"Use a minikube cluster"))' \ '--cluster=[Type of local cluster to use for testing]:CLUSTER_TYPE:((kind\:"Use a kind cluster, see " minikube\:"Use a minikube cluster"))' \ -'--cluster-name=[Name of the local cluster]:CLUSTER_NAME: ' \ -'--cluster-nodes=[Number of total nodes in the local cluster]:CLUSTER_NODES: ' \ -'--cluster-cp-nodes=[Number of control plane nodes in the local cluster]:CLUSTER_CP_NODES: ' \ -'-l+[Log level this application uses]:LOG_LEVEL: ' \ -'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'--cluster-name=[Name of the local cluster]:CLUSTER_NAME:_default' \ +'--cluster-nodes=[Number of total nodes in the local cluster]:CLUSTER_NODES:_default' \ +'--cluster-cp-nodes=[Number of control plane nodes in the local cluster]:CLUSTER_CP_NODES:_default' \ +'-l+[Log level this application uses]:LOG_LEVEL:_default' \ +'--log-level=[Log level this application uses]:LOG_LEVEL:_default' \ '*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ @@ -390,15 +390,15 @@ repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based o '--help[Print help (see more with '\''--help'\'')]' \ '-V[Print version]' \ '--version[Print version]' \ -':RELEASE -- Release to install:' \ +':RELEASE -- Release to install:_default' \ && ret=0 ;; (uninstall) _arguments "${_arguments_options[@]}" : \ -'--operator-namespace=[Namespace in the cluster used to deploy the operators]:OPERATOR_NAMESPACE: ' \ -'--operator-ns=[Namespace in the cluster used to deploy the operators]:OPERATOR_NAMESPACE: ' \ -'-l+[Log level this application uses]:LOG_LEVEL: ' \ -'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'--operator-namespace=[Namespace in the cluster used to deploy the operators]:OPERATOR_NAMESPACE:_default' \ +'--operator-ns=[Namespace in the cluster used to deploy the operators]:OPERATOR_NAMESPACE:_default' \ +'-l+[Log level this application uses]:LOG_LEVEL:_default' \ +'--log-level=[Log level this application uses]:LOG_LEVEL:_default' \ '*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ @@ -415,19 +415,19 @@ repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based o '--help[Print help (see more with '\''--help'\'')]' \ '-V[Print version]' \ '--version[Print version]' \ -':RELEASE -- Name of the release to uninstall:' \ +':RELEASE -- Name of the release to uninstall:_default' \ && ret=0 ;; (upgrade) _arguments "${_arguments_options[@]}" : \ -'*-i+[List of product operators to upgrade]:INCLUDED_PRODUCTS: ' \ -'*--include=[List of product operators to upgrade]:INCLUDED_PRODUCTS: ' \ -'*-e+[Blacklist of product operators to install]:EXCLUDED_PRODUCTS: ' \ -'*--exclude=[Blacklist of product operators to install]:EXCLUDED_PRODUCTS: ' \ -'--operator-namespace=[Namespace in the cluster used to deploy the operators]:OPERATOR_NAMESPACE: ' \ -'--operator-ns=[Namespace in the cluster used to deploy the operators]:OPERATOR_NAMESPACE: ' \ -'-l+[Log level this application uses]:LOG_LEVEL: ' \ -'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'*-i+[List of product operators to upgrade]:INCLUDED_PRODUCTS:_default' \ +'*--include=[List of product operators to upgrade]:INCLUDED_PRODUCTS:_default' \ +'*-e+[Blacklist of product operators to install]:EXCLUDED_PRODUCTS:_default' \ +'*--exclude=[Blacklist of product operators to install]:EXCLUDED_PRODUCTS:_default' \ +'--operator-namespace=[Namespace in the cluster used to deploy the operators]:OPERATOR_NAMESPACE:_default' \ +'--operator-ns=[Namespace in the cluster used to deploy the operators]:OPERATOR_NAMESPACE:_default' \ +'-l+[Log level this application uses]:LOG_LEVEL:_default' \ +'--log-level=[Log level this application uses]:LOG_LEVEL:_default' \ '*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ @@ -444,7 +444,7 @@ repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based o '--help[Print help (see more with '\''--help'\'')]' \ '-V[Print version]' \ '--version[Print version]' \ -':RELEASE -- Upgrade to the specified release:' \ +':RELEASE -- Upgrade to the specified release:_default' \ && ret=0 ;; (help) @@ -493,9 +493,9 @@ esac ;; (stack) _arguments "${_arguments_options[@]}" : \ -'--release=[Target a specific Stackable release]:RELEASE: ' \ -'-l+[Log level this application uses]:LOG_LEVEL: ' \ -'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'--release=[Target a specific Stackable release]:RELEASE:_default' \ +'-l+[Log level this application uses]:LOG_LEVEL:_default' \ +'--log-level=[Log level this application uses]:LOG_LEVEL:_default' \ '*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ @@ -532,9 +532,9 @@ yaml\:"Print output formatted as YAML"))' \ table\:"Print output formatted as a table" json\:"Print output formatted as JSON" yaml\:"Print output formatted as YAML"))' \ -'--release=[Target a specific Stackable release]:RELEASE: ' \ -'-l+[Log level this application uses]:LOG_LEVEL: ' \ -'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'--release=[Target a specific Stackable release]:RELEASE:_default' \ +'-l+[Log level this application uses]:LOG_LEVEL:_default' \ +'--log-level=[Log level this application uses]:LOG_LEVEL:_default' \ '*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ @@ -563,9 +563,9 @@ yaml\:"Print output formatted as YAML"))' \ table\:"Print output formatted as a table" json\:"Print output formatted as JSON" yaml\:"Print output formatted as YAML"))' \ -'--release=[Target a specific Stackable release]:RELEASE: ' \ -'-l+[Log level this application uses]:LOG_LEVEL: ' \ -'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'--release=[Target a specific Stackable release]:RELEASE:_default' \ +'-l+[Log level this application uses]:LOG_LEVEL:_default' \ +'--log-level=[Log level this application uses]:LOG_LEVEL:_default' \ '*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ @@ -582,28 +582,28 @@ repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based o '--help[Print help (see more with '\''--help'\'')]' \ '-V[Print version]' \ '--version[Print version]' \ -':stack_name -- Name of the stack to describe:' \ +':stack_name -- Name of the stack to describe:_default' \ && ret=0 ;; (install) _arguments "${_arguments_options[@]}" : \ -'*--stack-parameters=[List of parameters to use when installing the stack]:STACK_PARAMETERS: ' \ -'*--parameters=[List of parameters to use when installing the stack]:PARAMETERS: ' \ +'*--stack-parameters=[List of parameters to use when installing the stack]:STACK_PARAMETERS:_default' \ +'*--parameters=[List of parameters to use when installing the stack]:PARAMETERS:_default' \ '-c+[Type of local cluster to use for testing]:CLUSTER_TYPE:((kind\:"Use a kind cluster, see " minikube\:"Use a minikube cluster"))' \ '--cluster=[Type of local cluster to use for testing]:CLUSTER_TYPE:((kind\:"Use a kind cluster, see " minikube\:"Use a minikube cluster"))' \ -'--cluster-name=[Name of the local cluster]:CLUSTER_NAME: ' \ -'--cluster-nodes=[Number of total nodes in the local cluster]:CLUSTER_NODES: ' \ -'--cluster-cp-nodes=[Number of control plane nodes in the local cluster]:CLUSTER_CP_NODES: ' \ -'--operator-namespace=[Namespace where the operators are deployed]:OPERATOR_NAMESPACE: ' \ -'--operator-ns=[Namespace where the operators are deployed]:OPERATOR_NAMESPACE: ' \ -'-n+[Namespace where the stacks or demos are deployed]:NAMESPACE: ' \ -'--namespace=[Namespace where the stacks or demos are deployed]:NAMESPACE: ' \ -'--product-ns=[Namespace where the stacks or demos are deployed]:NAMESPACE: ' \ -'--release=[Target a specific Stackable release]:RELEASE: ' \ -'-l+[Log level this application uses]:LOG_LEVEL: ' \ -'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'--cluster-name=[Name of the local cluster]:CLUSTER_NAME:_default' \ +'--cluster-nodes=[Number of total nodes in the local cluster]:CLUSTER_NODES:_default' \ +'--cluster-cp-nodes=[Number of control plane nodes in the local cluster]:CLUSTER_CP_NODES:_default' \ +'--operator-namespace=[Namespace where the operators are deployed]:OPERATOR_NAMESPACE:_default' \ +'--operator-ns=[Namespace where the operators are deployed]:OPERATOR_NAMESPACE:_default' \ +'-n+[Namespace where the stacks or demos are deployed]:NAMESPACE:_default' \ +'--namespace=[Namespace where the stacks or demos are deployed]:NAMESPACE:_default' \ +'--product-ns=[Namespace where the stacks or demos are deployed]:NAMESPACE:_default' \ +'--release=[Target a specific Stackable release]:RELEASE:_default' \ +'-l+[Log level this application uses]:LOG_LEVEL:_default' \ +'--log-level=[Log level this application uses]:LOG_LEVEL:_default' \ '*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ @@ -621,7 +621,7 @@ repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based o '--help[Print help (see more with '\''--help'\'')]' \ '-V[Print version]' \ '--version[Print version]' \ -':stack_name -- Name of the stack to describe:' \ +':stack_name -- Name of the stack to describe:_default' \ && ret=0 ;; (help) @@ -662,8 +662,8 @@ esac ;; (stacklet) _arguments "${_arguments_options[@]}" : \ -'-l+[Log level this application uses]:LOG_LEVEL: ' \ -'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'-l+[Log level this application uses]:LOG_LEVEL:_default' \ +'--log-level=[Log level this application uses]:LOG_LEVEL:_default' \ '*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ @@ -692,10 +692,10 @@ repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based o case $line[1] in (credentials) _arguments "${_arguments_options[@]}" : \ -'-n+[Namespace in the cluster used to deploy the products]:NAMESPACE: ' \ -'--namespace=[Namespace in the cluster used to deploy the products]:NAMESPACE: ' \ -'-l+[Log level this application uses]:LOG_LEVEL: ' \ -'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'-n+[Namespace in the cluster used to deploy the products]:NAMESPACE:_default' \ +'--namespace=[Namespace in the cluster used to deploy the products]:NAMESPACE:_default' \ +'-l+[Log level this application uses]:LOG_LEVEL:_default' \ +'--log-level=[Log level this application uses]:LOG_LEVEL:_default' \ '*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ @@ -712,8 +712,8 @@ repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based o '--help[Print help (see more with '\''--help'\'')]' \ '-V[Print version]' \ '--version[Print version]' \ -':product_name -- The name of the product, for example '\''superset'\'':' \ -':stacklet_name -- The name of the stacklet, for example '\''superset'\'':' \ +':product_name -- The name of the product, for example '\''superset'\'':_default' \ +':stacklet_name -- The name of the stacklet, for example '\''superset'\'':_default' \ && ret=0 ;; (list) @@ -726,13 +726,13 @@ yaml\:"Print output formatted as YAML"))' \ table\:"Print output formatted as a table" json\:"Print output formatted as JSON" yaml\:"Print output formatted as YAML"))' \ -'--operator-namespace=[Namespace where the operators are deployed]:OPERATOR_NAMESPACE: ' \ -'--operator-ns=[Namespace where the operators are deployed]:OPERATOR_NAMESPACE: ' \ -'-n+[Namespace where the stacks or demos are deployed]:NAMESPACE: ' \ -'--namespace=[Namespace where the stacks or demos are deployed]:NAMESPACE: ' \ -'--product-ns=[Namespace where the stacks or demos are deployed]:NAMESPACE: ' \ -'-l+[Log level this application uses]:LOG_LEVEL: ' \ -'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'--operator-namespace=[Namespace where the operators are deployed]:OPERATOR_NAMESPACE:_default' \ +'--operator-ns=[Namespace where the operators are deployed]:OPERATOR_NAMESPACE:_default' \ +'-n+[Namespace where the stacks or demos are deployed]:NAMESPACE:_default' \ +'--namespace=[Namespace where the stacks or demos are deployed]:NAMESPACE:_default' \ +'--product-ns=[Namespace where the stacks or demos are deployed]:NAMESPACE:_default' \ +'-l+[Log level this application uses]:LOG_LEVEL:_default' \ +'--log-level=[Log level this application uses]:LOG_LEVEL:_default' \ '*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ @@ -785,9 +785,9 @@ esac ;; (demo) _arguments "${_arguments_options[@]}" : \ -'--release=[Target a specific Stackable release]:RELEASE: ' \ -'-l+[Log level this application uses]:LOG_LEVEL: ' \ -'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'--release=[Target a specific Stackable release]:RELEASE:_default' \ +'-l+[Log level this application uses]:LOG_LEVEL:_default' \ +'--log-level=[Log level this application uses]:LOG_LEVEL:_default' \ '*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ @@ -824,9 +824,9 @@ yaml\:"Print output formatted as YAML"))' \ table\:"Print output formatted as a table" json\:"Print output formatted as JSON" yaml\:"Print output formatted as YAML"))' \ -'--release=[Target a specific Stackable release]:RELEASE: ' \ -'-l+[Log level this application uses]:LOG_LEVEL: ' \ -'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'--release=[Target a specific Stackable release]:RELEASE:_default' \ +'-l+[Log level this application uses]:LOG_LEVEL:_default' \ +'--log-level=[Log level this application uses]:LOG_LEVEL:_default' \ '*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ @@ -855,9 +855,9 @@ yaml\:"Print output formatted as YAML"))' \ table\:"Print output formatted as a table" json\:"Print output formatted as JSON" yaml\:"Print output formatted as YAML"))' \ -'--release=[Target a specific Stackable release]:RELEASE: ' \ -'-l+[Log level this application uses]:LOG_LEVEL: ' \ -'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'--release=[Target a specific Stackable release]:RELEASE:_default' \ +'-l+[Log level this application uses]:LOG_LEVEL:_default' \ +'--log-level=[Log level this application uses]:LOG_LEVEL:_default' \ '*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ @@ -874,28 +874,28 @@ repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based o '--help[Print help (see more with '\''--help'\'')]' \ '-V[Print version]' \ '--version[Print version]' \ -':DEMO -- Demo to describe:' \ +':DEMO -- Demo to describe:_default' \ && ret=0 ;; (install) _arguments "${_arguments_options[@]}" : \ -'*--stack-parameters=[List of parameters to use when installing the stack]:STACK_PARAMETERS: ' \ -'*--parameters=[List of parameters to use when installing the demo]:PARAMETERS: ' \ +'*--stack-parameters=[List of parameters to use when installing the stack]:STACK_PARAMETERS:_default' \ +'*--parameters=[List of parameters to use when installing the demo]:PARAMETERS:_default' \ '-c+[Type of local cluster to use for testing]:CLUSTER_TYPE:((kind\:"Use a kind cluster, see " minikube\:"Use a minikube cluster"))' \ '--cluster=[Type of local cluster to use for testing]:CLUSTER_TYPE:((kind\:"Use a kind cluster, see " minikube\:"Use a minikube cluster"))' \ -'--cluster-name=[Name of the local cluster]:CLUSTER_NAME: ' \ -'--cluster-nodes=[Number of total nodes in the local cluster]:CLUSTER_NODES: ' \ -'--cluster-cp-nodes=[Number of control plane nodes in the local cluster]:CLUSTER_CP_NODES: ' \ -'--operator-namespace=[Namespace where the operators are deployed]:OPERATOR_NAMESPACE: ' \ -'--operator-ns=[Namespace where the operators are deployed]:OPERATOR_NAMESPACE: ' \ -'-n+[Namespace where the stacks or demos are deployed]:NAMESPACE: ' \ -'--namespace=[Namespace where the stacks or demos are deployed]:NAMESPACE: ' \ -'--product-ns=[Namespace where the stacks or demos are deployed]:NAMESPACE: ' \ -'--release=[Target a specific Stackable release]:RELEASE: ' \ -'-l+[Log level this application uses]:LOG_LEVEL: ' \ -'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'--cluster-name=[Name of the local cluster]:CLUSTER_NAME:_default' \ +'--cluster-nodes=[Number of total nodes in the local cluster]:CLUSTER_NODES:_default' \ +'--cluster-cp-nodes=[Number of control plane nodes in the local cluster]:CLUSTER_CP_NODES:_default' \ +'--operator-namespace=[Namespace where the operators are deployed]:OPERATOR_NAMESPACE:_default' \ +'--operator-ns=[Namespace where the operators are deployed]:OPERATOR_NAMESPACE:_default' \ +'-n+[Namespace where the stacks or demos are deployed]:NAMESPACE:_default' \ +'--namespace=[Namespace where the stacks or demos are deployed]:NAMESPACE:_default' \ +'--product-ns=[Namespace where the stacks or demos are deployed]:NAMESPACE:_default' \ +'--release=[Target a specific Stackable release]:RELEASE:_default' \ +'-l+[Log level this application uses]:LOG_LEVEL:_default' \ +'--log-level=[Log level this application uses]:LOG_LEVEL:_default' \ '*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ @@ -913,7 +913,7 @@ repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based o '--help[Print help (see more with '\''--help'\'')]' \ '-V[Print version]' \ '--version[Print version]' \ -':DEMO -- Demo to install:' \ +':DEMO -- Demo to install:_default' \ && ret=0 ;; (help) @@ -954,8 +954,8 @@ esac ;; (completions) _arguments "${_arguments_options[@]}" : \ -'-l+[Log level this application uses]:LOG_LEVEL: ' \ -'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'-l+[Log level this application uses]:LOG_LEVEL:_default' \ +'--log-level=[Log level this application uses]:LOG_LEVEL:_default' \ '*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ @@ -984,8 +984,8 @@ repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based o case $line[1] in (bash) _arguments "${_arguments_options[@]}" : \ -'-l+[Log level this application uses]:LOG_LEVEL: ' \ -'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'-l+[Log level this application uses]:LOG_LEVEL:_default' \ +'--log-level=[Log level this application uses]:LOG_LEVEL:_default' \ '*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ @@ -1006,8 +1006,8 @@ repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based o ;; (elvish) _arguments "${_arguments_options[@]}" : \ -'-l+[Log level this application uses]:LOG_LEVEL: ' \ -'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'-l+[Log level this application uses]:LOG_LEVEL:_default' \ +'--log-level=[Log level this application uses]:LOG_LEVEL:_default' \ '*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ @@ -1028,8 +1028,8 @@ repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based o ;; (fish) _arguments "${_arguments_options[@]}" : \ -'-l+[Log level this application uses]:LOG_LEVEL: ' \ -'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'-l+[Log level this application uses]:LOG_LEVEL:_default' \ +'--log-level=[Log level this application uses]:LOG_LEVEL:_default' \ '*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ @@ -1050,8 +1050,8 @@ repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based o ;; (nushell) _arguments "${_arguments_options[@]}" : \ -'-l+[Log level this application uses]:LOG_LEVEL: ' \ -'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'-l+[Log level this application uses]:LOG_LEVEL:_default' \ +'--log-level=[Log level this application uses]:LOG_LEVEL:_default' \ '*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ @@ -1072,8 +1072,8 @@ repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based o ;; (zsh) _arguments "${_arguments_options[@]}" : \ -'-l+[Log level this application uses]:LOG_LEVEL: ' \ -'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'-l+[Log level this application uses]:LOG_LEVEL:_default' \ +'--log-level=[Log level this application uses]:LOG_LEVEL:_default' \ '*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ @@ -1138,8 +1138,8 @@ esac ;; (cache) _arguments "${_arguments_options[@]}" : \ -'-l+[Log level this application uses]:LOG_LEVEL: ' \ -'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'-l+[Log level this application uses]:LOG_LEVEL:_default' \ +'--log-level=[Log level this application uses]:LOG_LEVEL:_default' \ '*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ @@ -1168,8 +1168,8 @@ repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based o case $line[1] in (list) _arguments "${_arguments_options[@]}" : \ -'-l+[Log level this application uses]:LOG_LEVEL: ' \ -'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'-l+[Log level this application uses]:LOG_LEVEL:_default' \ +'--log-level=[Log level this application uses]:LOG_LEVEL:_default' \ '*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ @@ -1190,8 +1190,8 @@ repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based o ;; (clean) _arguments "${_arguments_options[@]}" : \ -'-l+[Log level this application uses]:LOG_LEVEL: ' \ -'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'-l+[Log level this application uses]:LOG_LEVEL:_default' \ +'--log-level=[Log level this application uses]:LOG_LEVEL:_default' \ '*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ @@ -1246,13 +1246,13 @@ esac ;; (experimental-debug) _arguments "${_arguments_options[@]}" : \ -'-n+[The namespace of the Pod being debugged]:NAMESPACE: ' \ -'--namespace=[The namespace of the Pod being debugged]:NAMESPACE: ' \ -'-c+[The target container to debug]:CONTAINER: ' \ -'--container=[The target container to debug]:CONTAINER: ' \ -'--image=[The debug container image]:IMAGE: ' \ -'-l+[Log level this application uses]:LOG_LEVEL: ' \ -'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'-n+[The namespace of the Pod being debugged]:NAMESPACE:_default' \ +'--namespace=[The namespace of the Pod being debugged]:NAMESPACE:_default' \ +'-c+[The target container to debug]:CONTAINER:_default' \ +'--container=[The target container to debug]:CONTAINER:_default' \ +'--image=[The debug container image]:IMAGE:_default' \ +'-l+[Log level this application uses]:LOG_LEVEL:_default' \ +'--log-level=[Log level this application uses]:LOG_LEVEL:_default' \ '*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ '*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ @@ -1269,8 +1269,8 @@ repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based o '--help[Print help (see more with '\''--help'\'')]' \ '-V[Print version]' \ '--version[Print version]' \ -':pod -- The Pod to debug:' \ -'*::cmd -- The command to run in the debug container:' \ +':pod -- The Pod to debug:_default' \ +'*::cmd -- The command to run in the debug container:_default' \ && ret=0 ;; (help) diff --git a/extra/completions/stackablectl.bash b/extra/completions/stackablectl.bash index bd247a0c..6bc70973 100644 --- a/extra/completions/stackablectl.bash +++ b/extra/completions/stackablectl.bash @@ -1,12 +1,16 @@ _stackablectl() { local i cur prev opts cmd COMPREPLY=() - cur="${COMP_WORDS[COMP_CWORD]}" - prev="${COMP_WORDS[COMP_CWORD-1]}" + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + cur="$2" + else + cur="${COMP_WORDS[COMP_CWORD]}" + fi + prev="$3" cmd="" opts="" - for i in ${COMP_WORDS[@]} + for i in "${COMP_WORDS[@]:0:COMP_CWORD}" do case "${cmd},${i}" in ",$1") diff --git a/extra/completions/stackablectl.fish b/extra/completions/stackablectl.fish index 28cb3fa0..ef741c3c 100644 --- a/extra/completions/stackablectl.fish +++ b/extra/completions/stackablectl.fish @@ -31,7 +31,8 @@ complete -c stackablectl -n "__fish_stackablectl_needs_command" -s r -l release- complete -c stackablectl -n "__fish_stackablectl_needs_command" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_needs_command" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_needs_command" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f -complete -c stackablectl -n "__fish_stackablectl_needs_command" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "{oci\t'OCI registry',repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'}" +complete -c stackablectl -n "__fish_stackablectl_needs_command" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' +repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" complete -c stackablectl -n "__fish_stackablectl_needs_command" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_needs_command" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_needs_command" -s V -l version -d 'Print version' @@ -51,7 +52,8 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and not __fish_seen_subcommand_from list describe install uninstall installed help" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and not __fish_seen_subcommand_from list describe install uninstall installed help" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and not __fish_seen_subcommand_from list describe install uninstall installed help" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f -complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and not __fish_seen_subcommand_from list describe install uninstall installed help" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "{oci\t'OCI registry',repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and not __fish_seen_subcommand_from list describe install uninstall installed help" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' +repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and not __fish_seen_subcommand_from list describe install uninstall installed help" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and not __fish_seen_subcommand_from list describe install uninstall installed help" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and not __fish_seen_subcommand_from list describe install uninstall installed help" -s V -l version -d 'Print version' @@ -61,7 +63,10 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and not __fish_seen_subcommand_from list describe install uninstall installed help" -f -a "uninstall" -d 'Uninstall one or more operators' complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and not __fish_seen_subcommand_from list describe install uninstall installed help" -f -a "installed" -d 'List installed operators' complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and not __fish_seen_subcommand_from list describe install uninstall installed help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' -complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from list" -s o -l output -r -f -a "{plain\t'Print output formatted as plain text',table\t'Print output formatted as a table',json\t'Print output formatted as JSON',yaml\t'Print output formatted as YAML'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from list" -s o -l output -r -f -a "plain\t'Print output formatted as plain text' +table\t'Print output formatted as a table' +json\t'Print output formatted as JSON' +yaml\t'Print output formatted as YAML'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from list" -s l -l log-level -d 'Log level this application uses' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from list" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from list" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F @@ -69,11 +74,15 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from list" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from list" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from list" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f -complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from list" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "{oci\t'OCI registry',repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from list" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' +repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from list" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from list" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from list" -s V -l version -d 'Print version' -complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from describe" -s o -l output -r -f -a "{plain\t'Print output formatted as plain text',table\t'Print output formatted as a table',json\t'Print output formatted as JSON',yaml\t'Print output formatted as YAML'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from describe" -s o -l output -r -f -a "plain\t'Print output formatted as plain text' +table\t'Print output formatted as a table' +json\t'Print output formatted as JSON' +yaml\t'Print output formatted as YAML'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from describe" -s l -l log-level -d 'Log level this application uses' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from describe" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from describe" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F @@ -81,12 +90,14 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from describe" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from describe" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from describe" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f -complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from describe" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "{oci\t'OCI registry',repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from describe" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' +repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from describe" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from describe" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from describe" -s V -l version -d 'Print version' complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from install" -l operator-namespace -l operator-ns -d 'Namespace in the cluster used to deploy the operators' -r -complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from install" -s c -l cluster -d 'Type of local cluster to use for testing' -r -f -a "{kind\t'Use a kind cluster, see ',minikube\t'Use a minikube cluster'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from install" -s c -l cluster -d 'Type of local cluster to use for testing' -r -f -a "kind\t'Use a kind cluster, see ' +minikube\t'Use a minikube cluster'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from install" -l cluster-name -d 'Name of the local cluster' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from install" -l cluster-nodes -d 'Number of total nodes in the local cluster' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from install" -l cluster-cp-nodes -d 'Number of control plane nodes in the local cluster' -r @@ -97,7 +108,8 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from install" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from install" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from install" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f -complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from install" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "{oci\t'OCI registry',repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from install" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' +repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from install" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from install" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from install" -s V -l version -d 'Print version' @@ -109,11 +121,15 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from uninstall" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from uninstall" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from uninstall" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f -complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from uninstall" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "{oci\t'OCI registry',repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from uninstall" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' +repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from uninstall" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from uninstall" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from uninstall" -s V -l version -d 'Print version' -complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from installed" -s o -l output -r -f -a "{plain\t'Print output formatted as plain text',table\t'Print output formatted as a table',json\t'Print output formatted as JSON',yaml\t'Print output formatted as YAML'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from installed" -s o -l output -r -f -a "plain\t'Print output formatted as plain text' +table\t'Print output formatted as a table' +json\t'Print output formatted as JSON' +yaml\t'Print output formatted as YAML'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from installed" -l operator-namespace -l operator-ns -d 'Namespace in the cluster used to deploy the operators' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from installed" -s l -l log-level -d 'Log level this application uses' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from installed" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F @@ -122,7 +138,8 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from installed" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from installed" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from installed" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f -complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from installed" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "{oci\t'OCI registry',repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from installed" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' +repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from installed" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from installed" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from installed" -s V -l version -d 'Print version' @@ -139,7 +156,8 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and n complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall upgrade help" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall upgrade help" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall upgrade help" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f -complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall upgrade help" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "{oci\t'OCI registry',repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall upgrade help" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' +repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall upgrade help" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall upgrade help" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall upgrade help" -s V -l version -d 'Print version' @@ -149,7 +167,10 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and n complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall upgrade help" -f -a "uninstall" -d 'Uninstall a release' complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall upgrade help" -f -a "upgrade" -d 'Upgrade a release' complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall upgrade help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' -complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from list" -s o -l output -r -f -a "{plain\t'Print output formatted as plain text',table\t'Print output formatted as a table',json\t'Print output formatted as JSON',yaml\t'Print output formatted as YAML'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from list" -s o -l output -r -f -a "plain\t'Print output formatted as plain text' +table\t'Print output formatted as a table' +json\t'Print output formatted as JSON' +yaml\t'Print output formatted as YAML'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from list" -s l -l log-level -d 'Log level this application uses' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from list" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from list" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F @@ -157,11 +178,15 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and _ complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from list" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from list" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from list" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f -complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from list" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "{oci\t'OCI registry',repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from list" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' +repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from list" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from list" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from list" -s V -l version -d 'Print version' -complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from describe" -s o -l output -r -f -a "{plain\t'Print output formatted as plain text',table\t'Print output formatted as a table',json\t'Print output formatted as JSON',yaml\t'Print output formatted as YAML'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from describe" -s o -l output -r -f -a "plain\t'Print output formatted as plain text' +table\t'Print output formatted as a table' +json\t'Print output formatted as JSON' +yaml\t'Print output formatted as YAML'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from describe" -s l -l log-level -d 'Log level this application uses' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from describe" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from describe" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F @@ -169,14 +194,16 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and _ complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from describe" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from describe" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from describe" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f -complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from describe" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "{oci\t'OCI registry',repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from describe" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' +repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from describe" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from describe" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from describe" -s V -l version -d 'Print version' complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from install" -s i -l include -d 'Whitelist of product operators to install' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from install" -s e -l exclude -d 'Blacklist of product operators to install' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from install" -l operator-namespace -l operator-ns -d 'Namespace in the cluster used to deploy the operators' -r -complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from install" -s c -l cluster -d 'Type of local cluster to use for testing' -r -f -a "{kind\t'Use a kind cluster, see ',minikube\t'Use a minikube cluster'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from install" -s c -l cluster -d 'Type of local cluster to use for testing' -r -f -a "kind\t'Use a kind cluster, see ' +minikube\t'Use a minikube cluster'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from install" -l cluster-name -d 'Name of the local cluster' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from install" -l cluster-nodes -d 'Number of total nodes in the local cluster' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from install" -l cluster-cp-nodes -d 'Number of control plane nodes in the local cluster' -r @@ -187,7 +214,8 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and _ complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from install" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from install" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from install" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f -complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from install" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "{oci\t'OCI registry',repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from install" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' +repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from install" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from install" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from install" -s V -l version -d 'Print version' @@ -199,7 +227,8 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and _ complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from uninstall" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from uninstall" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from uninstall" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f -complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from uninstall" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "{oci\t'OCI registry',repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from uninstall" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' +repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from uninstall" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from uninstall" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from uninstall" -s V -l version -d 'Print version' @@ -213,7 +242,8 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and _ complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from upgrade" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from upgrade" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from upgrade" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f -complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from upgrade" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "{oci\t'OCI registry',repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from upgrade" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' +repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from upgrade" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from upgrade" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from upgrade" -s V -l version -d 'Print version' @@ -231,7 +261,8 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f -complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "{oci\t'OCI registry',repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' +repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -s V -l version -d 'Print version' @@ -239,7 +270,10 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -f -a "describe" -d 'Describe a specific stack' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -f -a "install" -d 'Install a specific stack' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' -complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from list" -s o -l output -r -f -a "{plain\t'Print output formatted as plain text',table\t'Print output formatted as a table',json\t'Print output formatted as JSON',yaml\t'Print output formatted as YAML'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from list" -s o -l output -r -f -a "plain\t'Print output formatted as plain text' +table\t'Print output formatted as a table' +json\t'Print output formatted as JSON' +yaml\t'Print output formatted as YAML'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from list" -l release -d 'Target a specific Stackable release' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from list" -s l -l log-level -d 'Log level this application uses' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from list" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F @@ -248,11 +282,15 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from list" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from list" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from list" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f -complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from list" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "{oci\t'OCI registry',repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from list" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' +repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from list" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from list" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from list" -s V -l version -d 'Print version' -complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from describe" -s o -l output -r -f -a "{plain\t'Print output formatted as plain text',table\t'Print output formatted as a table',json\t'Print output formatted as JSON',yaml\t'Print output formatted as YAML'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from describe" -s o -l output -r -f -a "plain\t'Print output formatted as plain text' +table\t'Print output formatted as a table' +json\t'Print output formatted as JSON' +yaml\t'Print output formatted as YAML'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from describe" -l release -d 'Target a specific Stackable release' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from describe" -s l -l log-level -d 'Log level this application uses' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from describe" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F @@ -261,13 +299,15 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from describe" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from describe" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from describe" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f -complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from describe" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "{oci\t'OCI registry',repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from describe" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' +repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from describe" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from describe" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from describe" -s V -l version -d 'Print version' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from install" -l stack-parameters -d 'List of parameters to use when installing the stack' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from install" -l parameters -d 'List of parameters to use when installing the stack' -r -complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from install" -s c -l cluster -d 'Type of local cluster to use for testing' -r -f -a "{kind\t'Use a kind cluster, see ',minikube\t'Use a minikube cluster'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from install" -s c -l cluster -d 'Type of local cluster to use for testing' -r -f -a "kind\t'Use a kind cluster, see ' +minikube\t'Use a minikube cluster'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from install" -l cluster-name -d 'Name of the local cluster' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from install" -l cluster-nodes -d 'Number of total nodes in the local cluster' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from install" -l cluster-cp-nodes -d 'Number of control plane nodes in the local cluster' -r @@ -281,7 +321,8 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from install" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from install" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from install" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f -complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from install" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "{oci\t'OCI registry',repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from install" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' +repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from install" -l skip-release -d 'Skip the installation of the release during the stack install process' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from install" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from install" -s h -l help -d 'Print help (see more with \'--help\')' @@ -297,7 +338,8 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and not __fish_seen_subcommand_from credentials list help" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and not __fish_seen_subcommand_from credentials list help" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and not __fish_seen_subcommand_from credentials list help" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f -complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and not __fish_seen_subcommand_from credentials list help" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "{oci\t'OCI registry',repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and not __fish_seen_subcommand_from credentials list help" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' +repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and not __fish_seen_subcommand_from credentials list help" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and not __fish_seen_subcommand_from credentials list help" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and not __fish_seen_subcommand_from credentials list help" -s V -l version -d 'Print version' @@ -312,11 +354,15 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from credentials" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from credentials" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from credentials" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f -complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from credentials" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "{oci\t'OCI registry',repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from credentials" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' +repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from credentials" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from credentials" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from credentials" -s V -l version -d 'Print version' -complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from list" -s o -l output -r -f -a "{plain\t'Print output formatted as plain text',table\t'Print output formatted as a table',json\t'Print output formatted as JSON',yaml\t'Print output formatted as YAML'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from list" -s o -l output -r -f -a "plain\t'Print output formatted as plain text' +table\t'Print output formatted as a table' +json\t'Print output formatted as JSON' +yaml\t'Print output formatted as YAML'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from list" -l operator-namespace -l operator-ns -d 'Namespace where the operators are deployed' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from list" -s n -l namespace -l product-ns -d 'Namespace where the stacks or demos are deployed' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from list" -s l -l log-level -d 'Log level this application uses' -r @@ -326,7 +372,8 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from list" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from list" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from list" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f -complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from list" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "{oci\t'OCI registry',repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from list" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' +repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from list" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from list" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from list" -s V -l version -d 'Print version' @@ -341,7 +388,8 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install help" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install help" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install help" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f -complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install help" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "{oci\t'OCI registry',repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install help" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' +repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install help" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install help" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install help" -s V -l version -d 'Print version' @@ -349,7 +397,10 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install help" -f -a "describe" -d 'Print out detailed demo information' complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install help" -f -a "install" -d 'Install a specific demo' complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' -complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from list" -s o -l output -r -f -a "{plain\t'Print output formatted as plain text',table\t'Print output formatted as a table',json\t'Print output formatted as JSON',yaml\t'Print output formatted as YAML'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from list" -s o -l output -r -f -a "plain\t'Print output formatted as plain text' +table\t'Print output formatted as a table' +json\t'Print output formatted as JSON' +yaml\t'Print output formatted as YAML'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from list" -l release -d 'Target a specific Stackable release' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from list" -s l -l log-level -d 'Log level this application uses' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from list" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F @@ -358,11 +409,15 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fi complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from list" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from list" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from list" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f -complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from list" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "{oci\t'OCI registry',repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from list" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' +repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from list" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from list" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from list" -s V -l version -d 'Print version' -complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from describe" -s o -l output -r -f -a "{plain\t'Print output formatted as plain text',table\t'Print output formatted as a table',json\t'Print output formatted as JSON',yaml\t'Print output formatted as YAML'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from describe" -s o -l output -r -f -a "plain\t'Print output formatted as plain text' +table\t'Print output formatted as a table' +json\t'Print output formatted as JSON' +yaml\t'Print output formatted as YAML'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from describe" -l release -d 'Target a specific Stackable release' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from describe" -s l -l log-level -d 'Log level this application uses' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from describe" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F @@ -371,13 +426,15 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fi complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from describe" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from describe" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from describe" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f -complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from describe" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "{oci\t'OCI registry',repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from describe" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' +repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from describe" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from describe" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from describe" -s V -l version -d 'Print version' complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from install" -l stack-parameters -d 'List of parameters to use when installing the stack' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from install" -l parameters -d 'List of parameters to use when installing the demo' -r -complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from install" -s c -l cluster -d 'Type of local cluster to use for testing' -r -f -a "{kind\t'Use a kind cluster, see ',minikube\t'Use a minikube cluster'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from install" -s c -l cluster -d 'Type of local cluster to use for testing' -r -f -a "kind\t'Use a kind cluster, see ' +minikube\t'Use a minikube cluster'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from install" -l cluster-name -d 'Name of the local cluster' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from install" -l cluster-nodes -d 'Number of total nodes in the local cluster' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from install" -l cluster-cp-nodes -d 'Number of control plane nodes in the local cluster' -r @@ -391,7 +448,8 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fi complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from install" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from install" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from install" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f -complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from install" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "{oci\t'OCI registry',repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from install" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' +repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from install" -l skip-release -d 'Skip the installation of the release during the stack install process' complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from install" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from install" -s h -l help -d 'Print help (see more with \'--help\')' @@ -407,7 +465,8 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; a complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and not __fish_seen_subcommand_from bash elvish fish nushell zsh help" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and not __fish_seen_subcommand_from bash elvish fish nushell zsh help" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and not __fish_seen_subcommand_from bash elvish fish nushell zsh help" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f -complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and not __fish_seen_subcommand_from bash elvish fish nushell zsh help" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "{oci\t'OCI registry',repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and not __fish_seen_subcommand_from bash elvish fish nushell zsh help" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' +repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and not __fish_seen_subcommand_from bash elvish fish nushell zsh help" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and not __fish_seen_subcommand_from bash elvish fish nushell zsh help" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and not __fish_seen_subcommand_from bash elvish fish nushell zsh help" -s V -l version -d 'Print version' @@ -424,7 +483,8 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; a complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from bash" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from bash" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from bash" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f -complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from bash" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "{oci\t'OCI registry',repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from bash" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' +repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from bash" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from bash" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from bash" -s V -l version -d 'Print version' @@ -435,7 +495,8 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; a complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from elvish" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from elvish" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from elvish" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f -complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from elvish" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "{oci\t'OCI registry',repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from elvish" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' +repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from elvish" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from elvish" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from elvish" -s V -l version -d 'Print version' @@ -446,7 +507,8 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; a complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from fish" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from fish" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from fish" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f -complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from fish" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "{oci\t'OCI registry',repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from fish" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' +repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from fish" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from fish" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from fish" -s V -l version -d 'Print version' @@ -457,7 +519,8 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; a complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from nushell" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from nushell" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from nushell" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f -complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from nushell" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "{oci\t'OCI registry',repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from nushell" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' +repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from nushell" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from nushell" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from nushell" -s V -l version -d 'Print version' @@ -468,7 +531,8 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; a complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from zsh" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from zsh" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from zsh" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f -complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from zsh" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "{oci\t'OCI registry',repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from zsh" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' +repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from zsh" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from zsh" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from zsh" -s V -l version -d 'Print version' @@ -485,7 +549,8 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and not complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and not __fish_seen_subcommand_from list clean help" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and not __fish_seen_subcommand_from list clean help" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and not __fish_seen_subcommand_from list clean help" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f -complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and not __fish_seen_subcommand_from list clean help" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "{oci\t'OCI registry',repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and not __fish_seen_subcommand_from list clean help" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' +repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and not __fish_seen_subcommand_from list clean help" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and not __fish_seen_subcommand_from list clean help" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and not __fish_seen_subcommand_from list clean help" -s V -l version -d 'Print version' @@ -499,7 +564,8 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __f complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __fish_seen_subcommand_from list" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __fish_seen_subcommand_from list" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __fish_seen_subcommand_from list" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f -complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __fish_seen_subcommand_from list" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "{oci\t'OCI registry',repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __fish_seen_subcommand_from list" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' +repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __fish_seen_subcommand_from list" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __fish_seen_subcommand_from list" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __fish_seen_subcommand_from list" -s V -l version -d 'Print version' @@ -510,7 +576,8 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __f complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __fish_seen_subcommand_from clean" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __fish_seen_subcommand_from clean" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __fish_seen_subcommand_from clean" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f -complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __fish_seen_subcommand_from clean" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "{oci\t'OCI registry',repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __fish_seen_subcommand_from clean" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' +repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __fish_seen_subcommand_from clean" -l old -l outdated -d 'Only remove outdated files in the cache' complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __fish_seen_subcommand_from clean" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __fish_seen_subcommand_from clean" -s h -l help -d 'Print help (see more with \'--help\')' @@ -528,7 +595,8 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand experimental-d complete -c stackablectl -n "__fish_stackablectl_using_subcommand experimental-debug" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand experimental-debug" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand experimental-debug" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f -complete -c stackablectl -n "__fish_stackablectl_using_subcommand experimental-debug" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "{oci\t'OCI registry',repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'}" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand experimental-debug" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' +repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" complete -c stackablectl -n "__fish_stackablectl_using_subcommand experimental-debug" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand experimental-debug" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand experimental-debug" -s V -l version -d 'Print version' diff --git a/extra/completions/stackablectl.nu b/extra/completions/stackablectl.nu index 6d899b1b..f3d53e8a 100644 --- a/extra/completions/stackablectl.nu +++ b/extra/completions/stackablectl.nu @@ -8,9 +8,9 @@ module completions { export extern stackablectl [ --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files - --demo-file(-d): string # Provide one or more additional (custom) demo file(s) - --stack-file(-s): string # Provide one or more additional (custom) stack file(s) - --release-file(-r): string # Provide one or more additional (custom) release file(s) + --demo-file(-d): path # Provide one or more additional (custom) demo file(s) + --stack-file(-s): path # Provide one or more additional (custom) stack file(s) + --release-file(-r): path # Provide one or more additional (custom) release file(s) --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -27,9 +27,9 @@ module completions { export extern "stackablectl operator" [ --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files - --demo-file(-d): string # Provide one or more additional (custom) demo file(s) - --stack-file(-s): string # Provide one or more additional (custom) stack file(s) - --release-file(-r): string # Provide one or more additional (custom) release file(s) + --demo-file(-d): path # Provide one or more additional (custom) demo file(s) + --stack-file(-s): path # Provide one or more additional (custom) stack file(s) + --release-file(-r): path # Provide one or more additional (custom) release file(s) --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -51,9 +51,9 @@ module completions { --output(-o): string@"nu-complete stackablectl operator list output_type" --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files - --demo-file(-d): string # Provide one or more additional (custom) demo file(s) - --stack-file(-s): string # Provide one or more additional (custom) stack file(s) - --release-file(-r): string # Provide one or more additional (custom) release file(s) + --demo-file(-d): path # Provide one or more additional (custom) demo file(s) + --stack-file(-s): path # Provide one or more additional (custom) stack file(s) + --release-file(-r): path # Provide one or more additional (custom) release file(s) --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -76,9 +76,9 @@ module completions { --output(-o): string@"nu-complete stackablectl operator describe output_type" --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files - --demo-file(-d): string # Provide one or more additional (custom) demo file(s) - --stack-file(-s): string # Provide one or more additional (custom) stack file(s) - --release-file(-r): string # Provide one or more additional (custom) release file(s) + --demo-file(-d): path # Provide one or more additional (custom) demo file(s) + --stack-file(-s): path # Provide one or more additional (custom) stack file(s) + --release-file(-r): path # Provide one or more additional (custom) release file(s) --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -106,9 +106,9 @@ module completions { --cluster-cp-nodes: string # Number of control plane nodes in the local cluster --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files - --demo-file(-d): string # Provide one or more additional (custom) demo file(s) - --stack-file(-s): string # Provide one or more additional (custom) stack file(s) - --release-file(-r): string # Provide one or more additional (custom) release file(s) + --demo-file(-d): path # Provide one or more additional (custom) demo file(s) + --stack-file(-s): path # Provide one or more additional (custom) stack file(s) + --release-file(-r): path # Provide one or more additional (custom) release file(s) --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -128,9 +128,9 @@ module completions { --operator-ns: string # Namespace in the cluster used to deploy the operators --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files - --demo-file(-d): string # Provide one or more additional (custom) demo file(s) - --stack-file(-s): string # Provide one or more additional (custom) stack file(s) - --release-file(-r): string # Provide one or more additional (custom) release file(s) + --demo-file(-d): path # Provide one or more additional (custom) demo file(s) + --stack-file(-s): path # Provide one or more additional (custom) stack file(s) + --release-file(-r): path # Provide one or more additional (custom) release file(s) --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -154,9 +154,9 @@ module completions { --operator-ns: string # Namespace in the cluster used to deploy the operators --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files - --demo-file(-d): string # Provide one or more additional (custom) demo file(s) - --stack-file(-s): string # Provide one or more additional (custom) stack file(s) - --release-file(-r): string # Provide one or more additional (custom) release file(s) + --demo-file(-d): path # Provide one or more additional (custom) demo file(s) + --stack-file(-s): path # Provide one or more additional (custom) stack file(s) + --release-file(-r): path # Provide one or more additional (custom) release file(s) --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -201,9 +201,9 @@ module completions { export extern "stackablectl release" [ --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files - --demo-file(-d): string # Provide one or more additional (custom) demo file(s) - --stack-file(-s): string # Provide one or more additional (custom) stack file(s) - --release-file(-r): string # Provide one or more additional (custom) release file(s) + --demo-file(-d): path # Provide one or more additional (custom) demo file(s) + --stack-file(-s): path # Provide one or more additional (custom) stack file(s) + --release-file(-r): path # Provide one or more additional (custom) release file(s) --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -225,9 +225,9 @@ module completions { --output(-o): string@"nu-complete stackablectl release list output_type" --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files - --demo-file(-d): string # Provide one or more additional (custom) demo file(s) - --stack-file(-s): string # Provide one or more additional (custom) stack file(s) - --release-file(-r): string # Provide one or more additional (custom) release file(s) + --demo-file(-d): path # Provide one or more additional (custom) demo file(s) + --stack-file(-s): path # Provide one or more additional (custom) stack file(s) + --release-file(-r): path # Provide one or more additional (custom) release file(s) --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -250,9 +250,9 @@ module completions { --output(-o): string@"nu-complete stackablectl release describe output_type" --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files - --demo-file(-d): string # Provide one or more additional (custom) demo file(s) - --stack-file(-s): string # Provide one or more additional (custom) stack file(s) - --release-file(-r): string # Provide one or more additional (custom) release file(s) + --demo-file(-d): path # Provide one or more additional (custom) demo file(s) + --stack-file(-s): path # Provide one or more additional (custom) stack file(s) + --release-file(-r): path # Provide one or more additional (custom) release file(s) --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -282,9 +282,9 @@ module completions { --cluster-cp-nodes: string # Number of control plane nodes in the local cluster --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files - --demo-file(-d): string # Provide one or more additional (custom) demo file(s) - --stack-file(-s): string # Provide one or more additional (custom) stack file(s) - --release-file(-r): string # Provide one or more additional (custom) release file(s) + --demo-file(-d): path # Provide one or more additional (custom) demo file(s) + --stack-file(-s): path # Provide one or more additional (custom) stack file(s) + --release-file(-r): path # Provide one or more additional (custom) release file(s) --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -304,9 +304,9 @@ module completions { --operator-ns: string # Namespace in the cluster used to deploy the operators --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files - --demo-file(-d): string # Provide one or more additional (custom) demo file(s) - --stack-file(-s): string # Provide one or more additional (custom) stack file(s) - --release-file(-r): string # Provide one or more additional (custom) release file(s) + --demo-file(-d): path # Provide one or more additional (custom) demo file(s) + --stack-file(-s): path # Provide one or more additional (custom) stack file(s) + --release-file(-r): path # Provide one or more additional (custom) release file(s) --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -328,9 +328,9 @@ module completions { --operator-ns: string # Namespace in the cluster used to deploy the operators --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files - --demo-file(-d): string # Provide one or more additional (custom) demo file(s) - --stack-file(-s): string # Provide one or more additional (custom) stack file(s) - --release-file(-r): string # Provide one or more additional (custom) release file(s) + --demo-file(-d): path # Provide one or more additional (custom) demo file(s) + --stack-file(-s): path # Provide one or more additional (custom) stack file(s) + --release-file(-r): path # Provide one or more additional (custom) release file(s) --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -376,9 +376,9 @@ module completions { --release: string # Target a specific Stackable release --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files - --demo-file(-d): string # Provide one or more additional (custom) demo file(s) - --stack-file(-s): string # Provide one or more additional (custom) stack file(s) - --release-file(-r): string # Provide one or more additional (custom) release file(s) + --demo-file(-d): path # Provide one or more additional (custom) demo file(s) + --stack-file(-s): path # Provide one or more additional (custom) stack file(s) + --release-file(-r): path # Provide one or more additional (custom) release file(s) --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -401,9 +401,9 @@ module completions { --release: string # Target a specific Stackable release --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files - --demo-file(-d): string # Provide one or more additional (custom) demo file(s) - --stack-file(-s): string # Provide one or more additional (custom) stack file(s) - --release-file(-r): string # Provide one or more additional (custom) release file(s) + --demo-file(-d): path # Provide one or more additional (custom) demo file(s) + --stack-file(-s): path # Provide one or more additional (custom) stack file(s) + --release-file(-r): path # Provide one or more additional (custom) release file(s) --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -427,9 +427,9 @@ module completions { --release: string # Target a specific Stackable release --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files - --demo-file(-d): string # Provide one or more additional (custom) demo file(s) - --stack-file(-s): string # Provide one or more additional (custom) stack file(s) - --release-file(-r): string # Provide one or more additional (custom) release file(s) + --demo-file(-d): path # Provide one or more additional (custom) demo file(s) + --stack-file(-s): path # Provide one or more additional (custom) stack file(s) + --release-file(-r): path # Provide one or more additional (custom) release file(s) --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -463,9 +463,9 @@ module completions { --release: string # Target a specific Stackable release --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files - --demo-file(-d): string # Provide one or more additional (custom) demo file(s) - --stack-file(-s): string # Provide one or more additional (custom) stack file(s) - --release-file(-r): string # Provide one or more additional (custom) release file(s) + --demo-file(-d): path # Provide one or more additional (custom) demo file(s) + --stack-file(-s): path # Provide one or more additional (custom) stack file(s) + --release-file(-r): path # Provide one or more additional (custom) release file(s) --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -502,9 +502,9 @@ module completions { export extern "stackablectl stacklet" [ --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files - --demo-file(-d): string # Provide one or more additional (custom) demo file(s) - --stack-file(-s): string # Provide one or more additional (custom) stack file(s) - --release-file(-r): string # Provide one or more additional (custom) release file(s) + --demo-file(-d): path # Provide one or more additional (custom) demo file(s) + --stack-file(-s): path # Provide one or more additional (custom) stack file(s) + --release-file(-r): path # Provide one or more additional (custom) release file(s) --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -524,9 +524,9 @@ module completions { --namespace(-n): string # Namespace in the cluster used to deploy the products --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files - --demo-file(-d): string # Provide one or more additional (custom) demo file(s) - --stack-file(-s): string # Provide one or more additional (custom) stack file(s) - --release-file(-r): string # Provide one or more additional (custom) release file(s) + --demo-file(-d): path # Provide one or more additional (custom) demo file(s) + --stack-file(-s): path # Provide one or more additional (custom) stack file(s) + --release-file(-r): path # Provide one or more additional (custom) release file(s) --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -552,9 +552,9 @@ module completions { --product-ns: string # Namespace where the stacks or demos are deployed --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files - --demo-file(-d): string # Provide one or more additional (custom) demo file(s) - --stack-file(-s): string # Provide one or more additional (custom) stack file(s) - --release-file(-r): string # Provide one or more additional (custom) release file(s) + --demo-file(-d): path # Provide one or more additional (custom) demo file(s) + --stack-file(-s): path # Provide one or more additional (custom) stack file(s) + --release-file(-r): path # Provide one or more additional (custom) release file(s) --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -588,9 +588,9 @@ module completions { --release: string # Target a specific Stackable release --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files - --demo-file(-d): string # Provide one or more additional (custom) demo file(s) - --stack-file(-s): string # Provide one or more additional (custom) stack file(s) - --release-file(-r): string # Provide one or more additional (custom) release file(s) + --demo-file(-d): path # Provide one or more additional (custom) demo file(s) + --stack-file(-s): path # Provide one or more additional (custom) stack file(s) + --release-file(-r): path # Provide one or more additional (custom) release file(s) --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -613,9 +613,9 @@ module completions { --release: string # Target a specific Stackable release --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files - --demo-file(-d): string # Provide one or more additional (custom) demo file(s) - --stack-file(-s): string # Provide one or more additional (custom) stack file(s) - --release-file(-r): string # Provide one or more additional (custom) release file(s) + --demo-file(-d): path # Provide one or more additional (custom) demo file(s) + --stack-file(-s): path # Provide one or more additional (custom) stack file(s) + --release-file(-r): path # Provide one or more additional (custom) release file(s) --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -639,9 +639,9 @@ module completions { --release: string # Target a specific Stackable release --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files - --demo-file(-d): string # Provide one or more additional (custom) demo file(s) - --stack-file(-s): string # Provide one or more additional (custom) stack file(s) - --release-file(-r): string # Provide one or more additional (custom) release file(s) + --demo-file(-d): path # Provide one or more additional (custom) demo file(s) + --stack-file(-s): path # Provide one or more additional (custom) stack file(s) + --release-file(-r): path # Provide one or more additional (custom) release file(s) --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -675,9 +675,9 @@ module completions { --release: string # Target a specific Stackable release --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files - --demo-file(-d): string # Provide one or more additional (custom) demo file(s) - --stack-file(-s): string # Provide one or more additional (custom) stack file(s) - --release-file(-r): string # Provide one or more additional (custom) release file(s) + --demo-file(-d): path # Provide one or more additional (custom) demo file(s) + --stack-file(-s): path # Provide one or more additional (custom) stack file(s) + --release-file(-r): path # Provide one or more additional (custom) release file(s) --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -714,9 +714,9 @@ module completions { export extern "stackablectl completions" [ --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files - --demo-file(-d): string # Provide one or more additional (custom) demo file(s) - --stack-file(-s): string # Provide one or more additional (custom) stack file(s) - --release-file(-r): string # Provide one or more additional (custom) release file(s) + --demo-file(-d): path # Provide one or more additional (custom) demo file(s) + --stack-file(-s): path # Provide one or more additional (custom) stack file(s) + --release-file(-r): path # Provide one or more additional (custom) release file(s) --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -733,9 +733,9 @@ module completions { export extern "stackablectl completions bash" [ --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files - --demo-file(-d): string # Provide one or more additional (custom) demo file(s) - --stack-file(-s): string # Provide one or more additional (custom) stack file(s) - --release-file(-r): string # Provide one or more additional (custom) release file(s) + --demo-file(-d): path # Provide one or more additional (custom) demo file(s) + --stack-file(-s): path # Provide one or more additional (custom) stack file(s) + --release-file(-r): path # Provide one or more additional (custom) release file(s) --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -752,9 +752,9 @@ module completions { export extern "stackablectl completions elvish" [ --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files - --demo-file(-d): string # Provide one or more additional (custom) demo file(s) - --stack-file(-s): string # Provide one or more additional (custom) stack file(s) - --release-file(-r): string # Provide one or more additional (custom) release file(s) + --demo-file(-d): path # Provide one or more additional (custom) demo file(s) + --stack-file(-s): path # Provide one or more additional (custom) stack file(s) + --release-file(-r): path # Provide one or more additional (custom) release file(s) --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -771,9 +771,9 @@ module completions { export extern "stackablectl completions fish" [ --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files - --demo-file(-d): string # Provide one or more additional (custom) demo file(s) - --stack-file(-s): string # Provide one or more additional (custom) stack file(s) - --release-file(-r): string # Provide one or more additional (custom) release file(s) + --demo-file(-d): path # Provide one or more additional (custom) demo file(s) + --stack-file(-s): path # Provide one or more additional (custom) stack file(s) + --release-file(-r): path # Provide one or more additional (custom) release file(s) --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -790,9 +790,9 @@ module completions { export extern "stackablectl completions nushell" [ --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files - --demo-file(-d): string # Provide one or more additional (custom) demo file(s) - --stack-file(-s): string # Provide one or more additional (custom) stack file(s) - --release-file(-r): string # Provide one or more additional (custom) release file(s) + --demo-file(-d): path # Provide one or more additional (custom) demo file(s) + --stack-file(-s): path # Provide one or more additional (custom) stack file(s) + --release-file(-r): path # Provide one or more additional (custom) release file(s) --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -809,9 +809,9 @@ module completions { export extern "stackablectl completions zsh" [ --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files - --demo-file(-d): string # Provide one or more additional (custom) demo file(s) - --stack-file(-s): string # Provide one or more additional (custom) stack file(s) - --release-file(-r): string # Provide one or more additional (custom) release file(s) + --demo-file(-d): path # Provide one or more additional (custom) demo file(s) + --stack-file(-s): path # Provide one or more additional (custom) stack file(s) + --release-file(-r): path # Provide one or more additional (custom) release file(s) --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -856,9 +856,9 @@ module completions { export extern "stackablectl cache" [ --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files - --demo-file(-d): string # Provide one or more additional (custom) demo file(s) - --stack-file(-s): string # Provide one or more additional (custom) stack file(s) - --release-file(-r): string # Provide one or more additional (custom) release file(s) + --demo-file(-d): path # Provide one or more additional (custom) demo file(s) + --stack-file(-s): path # Provide one or more additional (custom) stack file(s) + --release-file(-r): path # Provide one or more additional (custom) release file(s) --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -875,9 +875,9 @@ module completions { export extern "stackablectl cache list" [ --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files - --demo-file(-d): string # Provide one or more additional (custom) demo file(s) - --stack-file(-s): string # Provide one or more additional (custom) stack file(s) - --release-file(-r): string # Provide one or more additional (custom) release file(s) + --demo-file(-d): path # Provide one or more additional (custom) demo file(s) + --stack-file(-s): path # Provide one or more additional (custom) stack file(s) + --release-file(-r): path # Provide one or more additional (custom) release file(s) --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -896,9 +896,9 @@ module completions { --outdated # Only remove outdated files in the cache --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files - --demo-file(-d): string # Provide one or more additional (custom) demo file(s) - --stack-file(-s): string # Provide one or more additional (custom) stack file(s) - --release-file(-r): string # Provide one or more additional (custom) release file(s) + --demo-file(-d): path # Provide one or more additional (custom) demo file(s) + --stack-file(-s): path # Provide one or more additional (custom) stack file(s) + --release-file(-r): path # Provide one or more additional (custom) release file(s) --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -936,9 +936,9 @@ module completions { ...cmd: string # The command to run in the debug container --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files - --demo-file(-d): string # Provide one or more additional (custom) demo file(s) - --stack-file(-s): string # Provide one or more additional (custom) stack file(s) - --release-file(-r): string # Provide one or more additional (custom) release file(s) + --demo-file(-d): path # Provide one or more additional (custom) demo file(s) + --stack-file(-s): path # Provide one or more additional (custom) stack file(s) + --release-file(-r): path # Provide one or more additional (custom) release file(s) --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL diff --git a/extra/man/stackablectl.1 b/extra/man/stackablectl.1 index 8eb5168a..08abc859 100644 --- a/extra/man/stackablectl.1 +++ b/extra/man/stackablectl.1 @@ -18,6 +18,13 @@ Do not cache the remote (default) demo, stack and release files Cached files are saved at \*(Aq$XDG_CACHE_HOME/stackablectl\*(Aq, which is usually \*(Aq$HOME/.cache/stackablectl\*(Aq when not explicitly set. .TP +\fB\-h\fR, \fB\-\-help\fR +Print help (see a summary with \*(Aq\-h\*(Aq) +.TP +\fB\-V\fR, \fB\-\-version\fR +Print version +.SH "FILE OPTIONS" +.TP \fB\-d\fR, \fB\-\-demo\-file\fR=\fIDEMO_FILE\fR Provide one or more additional (custom) demo file(s) @@ -51,6 +58,7 @@ definition will be used. Use "stackablectl [OPTIONS] \-r path/to/releases1.yaml \-r path/to/releases2.yaml" to provide multiple additional release files. +.SH "HELM REPOSITORY OPTIONS" .TP \fB\-\-helm\-repo\-stable\fR=\fIURL\fR [default: https://repo.stackable.tech/repository/helm\-stable/] Provide a custom Helm stable repository URL @@ -73,12 +81,6 @@ oci: OCI registry .IP \(bu 2 repo: index.yaml\-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator\-specific .RE -.TP -\fB\-h\fR, \fB\-\-help\fR -Print help (see a summary with \*(Aq\-h\*(Aq) -.TP -\fB\-V\fR, \fB\-\-version\fR -Print version .SH SUBCOMMANDS .TP stackablectl\-operator(1) diff --git a/rust-toolchain.toml b/rust-toolchain.toml index c1bc0a69..291696d0 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,2 +1,3 @@ [toolchain] -channel = "1.85.0" +channel = "1.87.0" +profile = "default" diff --git a/rust/stackable-cockpit/src/constants.rs b/rust/stackable-cockpit/src/constants.rs index 120e5d8f..1c75953e 100644 --- a/rust/stackable-cockpit/src/constants.rs +++ b/rust/stackable-cockpit/src/constants.rs @@ -27,20 +27,61 @@ pub const HELM_OCI_REGISTRY: &str = "oci://oci.stackable.tech/sdp-charts"; pub const HELM_DEFAULT_CHART_VERSION: &str = "0.0.0-dev"; -pub const PRODUCT_NAMES: &[&str] = &[ - "airflow", - "druid", - "hbase", - "hdfs", - "hive", - "kafka", - "nifi", - "opa", - "spark-connect", - "spark-history", - "superset", - "trino", - "zookeeper", +/// Tuple of (product name, group, version, kind) +/// Group is usually `.stackable.tech`. +/// The version is currently hard-coded to `v1alpha1`. +/// Kind is usually `Cluster`. +/// But there are exceptions. +pub const PRODUCTS: &[(&str, &str, &str, &str)] = &[ + ( + "airflow", + "airflow.stackable.tech", + "v1alpha1", + "AirflowCluster", + ), + ("druid", "druid.stackable.tech", "v1alpha1", "DruidCluster"), + ("hbase", "hbase.stackable.tech", "v1alpha1", "HbaseCluster"), + ("hdfs", "hdfs.stackable.tech", "v1alpha1", "HdfsCluster"), + ("hive", "hive.stackable.tech", "v1alpha1", "HiveCluster"), + ("kafka", "kafka.stackable.tech", "v1alpha1", "KafkaCluster"), + ("nifi", "nifi.stackable.tech", "v1alpha1", "NifiCluster"), + ("opa", "opa.stackable.tech", "v1alpha1", "OpaCluster"), + // Kind is `OpenSearchCluster` instead of `OpensearchCluster`. + ( + "opensearch", + "opensearch.stackable.tech", + "v1alpha1", + "OpenSearchCluster", + ), + // Group is `spark.stackable.tech` instead of `spark-connect.stackable.tech`. + // Kind is `SparkConnectServer` instead of `Spark-connectCluster`. + ( + "spark-connect", + "spark.stackable.tech", + "v1alpha1", + "SparkConnectServer", + ), + // Group is `spark.stackable.tech` instead of `spark-history.stackable.tech`. + // Kind is `SparkHistoryServer` instead of `Spark-historyCluster`. + ( + "spark-history", + "spark.stackable.tech", + "v1alpha1", + "SparkHistoryServer", + ), + ( + "superset", + "superset.stackable.tech", + "v1alpha1", + "SupersetCluster", + ), + ("trino", "trino.stackable.tech", "v1alpha1", "TrinoCluster"), + ( + "zookeeper", + "zookeeper.stackable.tech", + "v1alpha1", + "ZookeeperCluster", + ), ]; pub const OCI_INDEX_PAGE_SIZE: usize = 20; diff --git a/rust/stackable-cockpit/src/engine/kind/mod.rs b/rust/stackable-cockpit/src/engine/kind/mod.rs index eabe318e..b3f86401 100644 --- a/rust/stackable-cockpit/src/engine/kind/mod.rs +++ b/rust/stackable-cockpit/src/engine/kind/mod.rs @@ -141,9 +141,12 @@ impl Cluster { .await .context(CommandFailedToRunSnafu)?; - ensure!(output.status.success(), CommandErroredOutSnafu { - error: String::from_utf8_lossy(&output.stderr) - }); + ensure!( + output.status.success(), + CommandErroredOutSnafu { + error: String::from_utf8_lossy(&output.stderr) + } + ); let output = String::from_utf8_lossy(&output.stdout); Ok(output.lines().any(|name| name == cluster_name)) diff --git a/rust/stackable-cockpit/src/oci.rs b/rust/stackable-cockpit/src/oci.rs index 5e350bd3..337cc876 100644 --- a/rust/stackable-cockpit/src/oci.rs +++ b/rust/stackable-cockpit/src/oci.rs @@ -128,9 +128,12 @@ pub async fn get_oci_index<'a>() -> Result HELM_REPO_NAME_TEST, HELM_REPO_NAME_DEV, ] { - source_index_files.insert(repo_name, ChartSourceMetadata { - entries: HashMap::new(), - }); + source_index_files.insert( + repo_name, + ChartSourceMetadata { + entries: HashMap::new(), + }, + ); } let base_url = format!("https://{HELM_OCI_BASE}/api/v2.0"); diff --git a/rust/stackable-cockpit/src/platform/credentials.rs b/rust/stackable-cockpit/src/platform/credentials.rs index 5b96da02..334d3bf4 100644 --- a/rust/stackable-cockpit/src/platform/credentials.rs +++ b/rust/stackable-cockpit/src/platform/credentials.rs @@ -11,7 +11,10 @@ pub type Result = std::result::Result; #[derive(Debug, Snafu)] pub enum Error { #[snafu(display("failed to fetch data from Kubernetes API"))] - KubeClientFetch { source: k8s::Error }, + KubeClientFetch { + #[snafu(source(from(k8s::Error, Box::new)))] + source: Box, + }, #[snafu(display("no credentials secret found"))] NoSecret, diff --git a/rust/stackable-cockpit/src/platform/namespace.rs b/rust/stackable-cockpit/src/platform/namespace.rs index 10e2ca01..17da2e5b 100644 --- a/rust/stackable-cockpit/src/platform/namespace.rs +++ b/rust/stackable-cockpit/src/platform/namespace.rs @@ -5,7 +5,7 @@ use crate::utils::k8s::{self, Client}; #[derive(Debug, Snafu)] pub enum Error { #[snafu(display("failed to create Kubernetes client"))] - KubeClientCreate { source: k8s::Error }, + KubeClientCreate { source: Box }, #[snafu(display( "permission denied - try to create the namespace manually or choose an already existing one to which you have access to" @@ -24,9 +24,11 @@ pub async fn create_if_needed(client: &Client, name: String) -> Result<(), Error k8s::Error::KubeClientCreate { source } => match source { kube::Error::Api(err) if err.code == 401 => Error::PermissionDenied, _ => Error::KubeClientCreate { - source: k8s::Error::KubeClientCreate { source }, + source: Box::new(k8s::Error::KubeClientCreate { source }), }, }, - _ => Error::KubeClientCreate { source: err }, + _ => Error::KubeClientCreate { + source: Box::new(err), + }, }) } diff --git a/rust/stackable-cockpit/src/platform/operator/mod.rs b/rust/stackable-cockpit/src/platform/operator/mod.rs index 55d4f692..540616ed 100644 --- a/rust/stackable-cockpit/src/platform/operator/mod.rs +++ b/rust/stackable-cockpit/src/platform/operator/mod.rs @@ -26,6 +26,7 @@ pub const VALID_OPERATORS: &[&str] = &[ "listener", "nifi", "opa", + "opensearch", "secret", "spark-k8s", "superset", @@ -92,9 +93,10 @@ impl FromStr for OperatorSpec { ensure!(len <= 2, InvalidEqualSignCountSnafu); // Check if the provided operator name is in the list of valid operators - ensure!(VALID_OPERATORS.contains(&parts[0]), InvalidNameSnafu { - name: parts[0] - }); + ensure!( + VALID_OPERATORS.contains(&parts[0]), + InvalidNameSnafu { name: parts[0] } + ); // If there is only one part, the input didn't include // the optional version identifier diff --git a/rust/stackable-cockpit/src/platform/release/spec.rs b/rust/stackable-cockpit/src/platform/release/spec.rs index 13f589a9..7367c29d 100644 --- a/rust/stackable-cockpit/src/platform/release/spec.rs +++ b/rust/stackable-cockpit/src/platform/release/spec.rs @@ -49,7 +49,10 @@ pub enum Error { BackgroundTask { source: JoinError }, #[snafu(display("failed to deploy manifests using the kube client"))] - DeployManifest { source: k8s::Error }, + DeployManifest { + #[snafu(source(from(k8s::Error, Box::new)))] + source: Box, + }, } #[derive(Clone, Debug, Deserialize, Serialize)] diff --git a/rust/stackable-cockpit/src/platform/service.rs b/rust/stackable-cockpit/src/platform/service.rs index 73ff576c..3db59982 100644 --- a/rust/stackable-cockpit/src/platform/service.rs +++ b/rust/stackable-cockpit/src/platform/service.rs @@ -18,7 +18,10 @@ use crate::utils::k8s::{self, Client, ListParamsExt}; #[derive(Debug, Snafu)] pub enum Error { #[snafu(display("failed to fetch data from Kubernetes API"))] - KubeClientFetch { source: k8s::Error }, + KubeClientFetch { + #[snafu(source(from(k8s::Error, Box::new)))] + source: Box, + }, #[snafu(display("missing namespace for service {service:?}"))] MissingServiceNamespace { service: String }, diff --git a/rust/stackable-cockpit/src/platform/stacklet/mod.rs b/rust/stackable-cockpit/src/platform/stacklet/mod.rs index 7c4cd449..8fd3d153 100644 --- a/rust/stackable-cockpit/src/platform/stacklet/mod.rs +++ b/rust/stackable-cockpit/src/platform/stacklet/mod.rs @@ -1,19 +1,16 @@ use indexmap::IndexMap; use kube::{ResourceExt, core::GroupVersionKind}; use serde::Serialize; -use snafu::{ResultExt, Snafu}; +use snafu::{OptionExt, ResultExt, Snafu}; use stackable_operator::status::condition::ClusterCondition; use tracing::info; #[cfg(feature = "openapi")] use utoipa::ToSchema; use crate::{ - constants::PRODUCT_NAMES, + constants::PRODUCTS, platform::{credentials, service}, - utils::{ - k8s::{self, Client, ConditionsExt}, - string::Casing, - }, + utils::k8s::{self, Client, ConditionsExt}, }; mod grafana; @@ -45,10 +42,16 @@ pub struct Stacklet { #[derive(Debug, Snafu)] pub enum Error { #[snafu(display("failed to create Kubernetes client"))] - KubeClientCreate { source: k8s::Error }, + KubeClientCreate { + #[snafu(source(from(k8s::Error, Box::new)))] + source: Box, + }, #[snafu(display("failed to fetch data from the Kubernetes API"))] - KubeClientFetch { source: k8s::Error }, + KubeClientFetch { + #[snafu(source(from(k8s::Error, Box::new)))] + source: Box, + }, #[snafu(display("no namespace set for custom resource {crd_name:?}"))] CustomCrdNamespace { crd_name: String }, @@ -58,6 +61,9 @@ pub enum Error { #[snafu(display("failed to receive service information"))] ServiceFetch { source: service::Error }, + + #[snafu(display("product name {product_name:?} not found"))] + GetProduct { product_name: String }, } /// Lists all installed stacklets. If `namespace` is [`None`], stacklets from ALL @@ -83,7 +89,7 @@ pub async fn get_credentials_for_product( object_name: &str, product_name: &str, ) -> Result, Error> { - let product_gvk = gvk_from_product_name(product_name); + let product_gvk = gvk_from_product_name(product_name)?; let product_cluster = match client .get_namespaced_object(namespace, object_name, &product_gvk) .await @@ -113,10 +119,14 @@ async fn list_stackable_stacklets( client: &Client, namespace: Option<&str>, ) -> Result, Error> { - let product_list = build_products_gvk_list(PRODUCT_NAMES); let mut stacklets = Vec::new(); - for (product_name, product_gvk) in product_list { + for (product_name, group, version, kind) in PRODUCTS { + let product_gvk = GroupVersionKind { + group: group.to_string(), + version: version.to_string(), + kind: kind.to_string(), + }; let objects = match client .list_objects(&product_gvk, namespace) .await @@ -164,42 +174,15 @@ async fn list_stackable_stacklets( Ok(stacklets) } -fn build_products_gvk_list<'a>(product_names: &[&'a str]) -> IndexMap<&'a str, GroupVersionKind> { - let mut map = IndexMap::new(); - - for product_name in product_names { - // Note(techassi): Why? Just why? Can we please make this consistent? - // Note(sbernauer): I think it's legit that SparkHistoryServer and SparkConnectServer are in - // the api group spark.stackable.tech. All of this will probably be rewritten any as soon as - // we have versions different than v1alpha1. - if *product_name == "spark-history" { - map.insert(*product_name, GroupVersionKind { - group: "spark.stackable.tech".into(), - version: "v1alpha1".into(), - kind: "SparkHistoryServer".into(), - }); - } else if *product_name == "spark-connect" { - map.insert(*product_name, GroupVersionKind { - group: "spark.stackable.tech".into(), - version: "v1alpha1".into(), - kind: "SparkConnectServer".into(), - }); - } else { - map.insert(*product_name, gvk_from_product_name(product_name)); - } - } - - map -} - -// FIXME: Support SparkApplication and SparkConnectServer -fn gvk_from_product_name(product_name: &str) -> GroupVersionKind { - GroupVersionKind { - group: format!("{product_name}.stackable.tech"), - version: "v1alpha1".into(), - kind: format!( - "{product_name}Cluster", - product_name = product_name.capitalize() - ), - } +fn gvk_from_product_name(product_name: &str) -> Result { + let (_, group, version, kind) = PRODUCTS + .iter() + .find(|(other_product_name, _, _, _)| product_name == *other_product_name) + .context(GetProductSnafu { product_name })?; + + Ok(GroupVersionKind { + group: group.to_string(), + version: version.to_string(), + kind: kind.to_string(), + }) } diff --git a/rust/stackable-cockpit/src/utils/k8s/client.rs b/rust/stackable-cockpit/src/utils/k8s/client.rs index c8c4863c..d7b5ccee 100644 --- a/rust/stackable-cockpit/src/utils/k8s/client.rs +++ b/rust/stackable-cockpit/src/utils/k8s/client.rs @@ -51,7 +51,7 @@ pub enum Error { GVKDiscoveryRun { source: kube::error::Error }, #[snafu(display("failed to deploy manifest because type of object {object:?} is not set"))] - ObjectType { object: DynamicObject }, + ObjectType { object: Box }, // Using output close to Display for ObjectRef https://docs.rs/kube-runtime/0.99.0/src/kube_runtime/reflector/object_ref.rs.html#292-296 #[snafu(display("failed to resolve GVK: {kind}.{version}.{group}", @@ -440,13 +440,16 @@ impl Client { pub async fn create_namespace(&self, name: String) -> Result<()> { let namespace_api: Api = Api::all(self.client.clone()); namespace_api - .create(&PostParams::default(), &Namespace { - metadata: ObjectMeta { - name: Some(name), + .create( + &PostParams::default(), + &Namespace { + metadata: ObjectMeta { + name: Some(name), + ..Default::default() + }, ..Default::default() }, - ..Default::default() - }) + ) .await .context(KubeClientPatchSnafu)?; diff --git a/rust/stackable-cockpit/src/utils/mod.rs b/rust/stackable-cockpit/src/utils/mod.rs index ee2018a4..1339f0c1 100644 --- a/rust/stackable-cockpit/src/utils/mod.rs +++ b/rust/stackable-cockpit/src/utils/mod.rs @@ -3,7 +3,6 @@ pub mod check; pub mod k8s; pub mod params; pub mod path; -pub mod string; pub mod templating; /// Returns the name of the operator used in the Helm repository. diff --git a/rust/stackable-cockpit/src/utils/params.rs b/rust/stackable-cockpit/src/utils/params.rs index d688009d..a3948ccd 100644 --- a/rust/stackable-cockpit/src/utils/params.rs +++ b/rust/stackable-cockpit/src/utils/params.rs @@ -281,17 +281,23 @@ mod test { let p = iter.next(); assert!(p.is_some()); - assert_eq!(p.unwrap(), &RawParameter { - name: "param1".into(), - value: "value1".into() - }); + assert_eq!( + p.unwrap(), + &RawParameter { + name: "param1".into(), + value: "value1".into() + } + ); let p = iter.next(); assert!(p.is_some()); - assert_eq!(p.unwrap(), &RawParameter { - name: "param2".into(), - value: "value2".into() - }); + assert_eq!( + p.unwrap(), + &RawParameter { + name: "param2".into(), + value: "value2".into() + } + ); let p = iter.next(); assert!(p.is_none()); @@ -309,17 +315,23 @@ mod test { let p = iter.next(); assert!(p.is_some()); - assert_eq!(p.unwrap(), &RawParameter { - name: "param1".into(), - value: "value1".into() - }); + assert_eq!( + p.unwrap(), + &RawParameter { + name: "param1".into(), + value: "value1".into() + } + ); let p = iter.next(); assert!(p.is_some()); - assert_eq!(p.unwrap(), &RawParameter { - name: "param2".into(), - value: "value2".into() - }); + assert_eq!( + p.unwrap(), + &RawParameter { + name: "param2".into(), + value: "value2".into() + } + ); let p = iter.next(); assert!(p.is_none()); @@ -367,10 +379,13 @@ mod test { match input.into_params(valid_parameters) { Ok(validated) => panic!("SHOULD FAIL: {validated:?}"), - Err(err) => assert_eq!(err, IntoParametersError::InvalidParameter { - parameter: "param2".into(), - expected: "param1".into() - }), + Err(err) => assert_eq!( + err, + IntoParametersError::InvalidParameter { + parameter: "param2".into(), + expected: "param1".into() + } + ), } } } diff --git a/rust/stackable-cockpit/src/utils/string.rs b/rust/stackable-cockpit/src/utils/string.rs deleted file mode 100644 index b2255f5e..00000000 --- a/rust/stackable-cockpit/src/utils/string.rs +++ /dev/null @@ -1,16 +0,0 @@ -pub trait Casing { - fn capitalize(&self) -> String; -} - -impl> Casing for T { - fn capitalize(&self) -> String { - let mut chars = self.as_ref().chars(); - match chars.next() { - None => String::new(), - Some(first) => first - .to_uppercase() - .chain(chars.map(|c| c.to_ascii_lowercase())) - .collect(), - } - } -} diff --git a/rust/stackable-cockpitd/src/handlers/ui.rs b/rust/stackable-cockpitd/src/handlers/ui.rs index 9abdb02b..e250e0bb 100644 --- a/rust/stackable-cockpitd/src/handlers/ui.rs +++ b/rust/stackable-cockpitd/src/handlers/ui.rs @@ -18,11 +18,14 @@ async fn ui() -> Html<&'static str> { } async fn asset(Path(name): Path) -> impl IntoResponse { ( - [(CONTENT_TYPE, match name.rsplit_once('.') { - Some((_, "js")) => HeaderValue::from_static("text/javascript"), - Some((_, "css")) => HeaderValue::from_static("text/css"), - _ => HeaderValue::from_static("application/octet-stream"), - })], + [( + CONTENT_TYPE, + match name.rsplit_once('.') { + Some((_, "js")) => HeaderValue::from_static("text/javascript"), + Some((_, "css")) => HeaderValue::from_static("text/css"), + _ => HeaderValue::from_static("application/octet-stream"), + }, + )], stackable_cockpit_web::ASSETS[&name], ) } diff --git a/rust/stackablectl/CHANGELOG.md b/rust/stackablectl/CHANGELOG.md index ac903cc4..ab78e761 100644 --- a/rust/stackablectl/CHANGELOG.md +++ b/rust/stackablectl/CHANGELOG.md @@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file. ## [Unreleased] +### Added + +- Add OpenSearch to the list of supported products ([#400]). + ### Fixed - nix: Update nixpkgs and upgrade nodejs-18 to nodejs_20 ([#384]). @@ -15,6 +19,7 @@ All notable changes to this project will be documented in this file. [#384]: https://github.com/stackabletech/stackable-cockpit/pull/384 [#386]: https://github.com/stackabletech/stackable-cockpit/pull/386 [#388]: https://github.com/stackabletech/stackable-cockpit/pull/388 +[#400]: https://github.com/stackabletech/stackable-cockpit/pull/400 ## [1.0.0] - 2025-06-02 diff --git a/rust/stackablectl/README.md b/rust/stackablectl/README.md index 26ba50b7..bb4d37d5 100644 --- a/rust/stackablectl/README.md +++ b/rust/stackablectl/README.md @@ -77,22 +77,22 @@ File options: to provide multiple additional release files. Helm repository options: - --helm-repo-stable + --helm-repo-stable Provide a custom Helm stable repository URL [default: https://repo.stackable.tech/repository/helm-stable/] - --helm-repo-test + --helm-repo-test Provide a custom Helm test repository URL [default: https://repo.stackable.tech/repository/helm-test/] - --helm-repo-dev + --helm-repo-dev Provide a custom Helm dev repository URL [default: https://repo.stackable.tech/repository/helm-dev/] - --chart-source + --chart-source Source the charts from either a OCI registry or from index.yaml-based repositories. [default: oci] diff --git a/rust/stackablectl/src/cli/mod.rs b/rust/stackablectl/src/cli/mod.rs index 641c8cd4..a5a3d53f 100644 --- a/rust/stackablectl/src/cli/mod.rs +++ b/rust/stackablectl/src/cli/mod.rs @@ -88,11 +88,8 @@ impl Cli { /// the default demo file URL constructed from [`DEMOS_REPOSITORY_URL_BASE`] and the provided branch, files provided /// by the ENV variable [`ENV_KEY_DEMO_FILES`], and lastly, files provided by the CLI argument `--demo-file`. pub fn get_demo_files(&self, branch: &str) -> Result, PathOrUrlParseError> { - let branch_url = format!( - "{base}/{branch}/{demos}", - base = DEMOS_REPOSITORY_URL_BASE, - demos = DEMOS_REPOSITORY_DEMOS_SUBPATH - ); + let branch_url = + format!("{DEMOS_REPOSITORY_URL_BASE}/{branch}/{DEMOS_REPOSITORY_DEMOS_SUBPATH}"); let mut files = get_files(&branch_url, ENV_KEY_DEMO_FILES)?; @@ -106,11 +103,8 @@ impl Cli { /// the default stack file URL constructed from [`DEMOS_REPOSITORY_URL_BASE`] and the provided branch, files provided /// by the ENV variable [`ENV_KEY_STACK_FILES`], and lastly, files provided by the CLI argument `--stack-file`. pub fn get_stack_files(&self, branch: &str) -> Result, PathOrUrlParseError> { - let branch_url = format!( - "{base}/{branch}/{stacks}", - base = DEMOS_REPOSITORY_URL_BASE, - stacks = DEMOS_REPOSITORY_STACKS_SUBPATH - ); + let branch_url = + format!("{DEMOS_REPOSITORY_URL_BASE}/{branch}/{DEMOS_REPOSITORY_STACKS_SUBPATH}"); let mut files = get_files(&branch_url, ENV_KEY_STACK_FILES)?; diff --git a/rust/stackablectl/src/cmds/debug.rs b/rust/stackablectl/src/cmds/debug.rs index 83ad165c..faea88fb 100644 --- a/rust/stackablectl/src/cmds/debug.rs +++ b/rust/stackablectl/src/cmds/debug.rs @@ -36,7 +36,8 @@ pub enum CmdError { #[snafu(display("failed to get {pod}"))] GetPod { - source: kube::Error, + #[snafu(source(from(kube::Error, Box::new)))] + source: Box, pod: ObjectRef, }, @@ -48,15 +49,17 @@ pub enum CmdError { #[snafu(display("failed to create ephemeral debug container {container:?} on {pod}"))] CreateDebugContainer { - source: kube::Error, - pod: ObjectRef, + #[snafu(source(from(kube::Error, Box::new)))] + source: Box, + pod: Box>, container: String, }, #[snafu(display("debug container {container:?} on {pod} never became ready"))] AwaitDebugContainerReadiness { - source: kube::runtime::wait::Error, - pod: ObjectRef, + #[snafu(source(from(kube::runtime::wait::Error, Box::new)))] + source: Box, + pod: Box>, container: String, }, @@ -68,8 +71,9 @@ pub enum CmdError { #[snafu(display("failed to attach to container {container:?} on {pod}"))] AttachContainer { - source: kube::Error, - pod: ObjectRef, + #[snafu(source(from(kube::Error, Box::new)))] + source: Box, + pod: Box>, container: String, }, diff --git a/rust/stackablectl/src/cmds/demo.rs b/rust/stackablectl/src/cmds/demo.rs index bffc38a0..c8c003e8 100644 --- a/rust/stackablectl/src/cmds/demo.rs +++ b/rust/stackablectl/src/cmds/demo.rs @@ -173,9 +173,10 @@ impl DemoArgs { let release_branch = match &self.release { Some(release) => { - ensure!(release_list.contains_key(release), NoSuchReleaseSnafu { - release - }); + ensure!( + release_list.contains_key(release), + NoSuchReleaseSnafu { release } + ); if release == "dev" { "main".to_string() @@ -185,7 +186,7 @@ impl DemoArgs { } None => { let (release_name, _) = release_list.first().context(LatestReleaseSnafu)?; - format!("release-{release}", release = release_name,) + format!("release-{release_name}") } }; diff --git a/rust/stackablectl/src/cmds/operator.rs b/rust/stackablectl/src/cmds/operator.rs index 8d7cbb5b..2c01fbea 100644 --- a/rust/stackablectl/src/cmds/operator.rs +++ b/rust/stackablectl/src/cmds/operator.rs @@ -156,7 +156,10 @@ pub enum CmdError { SerializeJsonOutput { source: serde_json::Error }, #[snafu(display("failed to create Kubernetes client"))] - KubeClientCreate { source: k8s::Error }, + KubeClientCreate { + #[snafu(source(from(k8s::Error, Box::new)))] + source: Box, + }, #[snafu(display("failed to create namespace {namespace:?}"))] NamespaceCreate { diff --git a/rust/stackablectl/src/cmds/stack.rs b/rust/stackablectl/src/cmds/stack.rs index a027166d..65cf3a26 100644 --- a/rust/stackablectl/src/cmds/stack.rs +++ b/rust/stackablectl/src/cmds/stack.rs @@ -135,7 +135,8 @@ pub enum CmdError { #[snafu(display("failed to install stack {stack_name:?}"))] InstallStack { - source: stack::Error, + #[snafu(source(from(stack::Error, Box::new)))] + source: Box, stack_name: String, }, @@ -143,7 +144,10 @@ pub enum CmdError { BuildLabels { source: LabelError }, #[snafu(display("failed to create Kubernetes client"))] - KubeClientCreate { source: k8s::Error }, + KubeClientCreate { + #[snafu(source(from(k8s::Error, Box::new)))] + source: Box, + }, } impl StackArgs { @@ -159,9 +163,10 @@ impl StackArgs { let release_branch = match &self.release { Some(release) => { - ensure!(release_list.contains_key(release), NoSuchReleaseSnafu { - release - }); + ensure!( + release_list.contains_key(release), + NoSuchReleaseSnafu { release } + ); if release == "dev" { "main".to_string() @@ -171,7 +176,7 @@ impl StackArgs { } None => { let (release_name, _) = release_list.first().context(LatestReleaseSnafu)?; - format!("release-{release}", release = release_name,) + format!("release-{release_name}") } }; diff --git a/rust/xtask/src/openapi.rs b/rust/xtask/src/openapi.rs index 693c3e02..270e64fb 100644 --- a/rust/xtask/src/openapi.rs +++ b/rust/xtask/src/openapi.rs @@ -35,9 +35,12 @@ pub fn generate() -> Result<(), GenOpenapiError> { .write_all(openapi_json.as_bytes()) .context(WriteOpenapiSchemaSnafu)?; let status = codegen.wait().context(ImportOpenapiSchemaRunSnafu)?; - ensure!(status.success(), ImportOpenapiSchemaSnafu { - error_code: status.code() - }); + ensure!( + status.success(), + ImportOpenapiSchemaSnafu { + error_code: status.code() + } + ); Ok(()) } From 72e88c3616c16f66a52ee27bc243f145aef308d3 Mon Sep 17 00:00:00 2001 From: Siegfried Weber Date: Wed, 16 Jul 2025 12:47:05 +0200 Subject: [PATCH 31/63] chore: Release stackablectl 1.1.0 (#401) --- Cargo.lock | 2 +- Cargo.nix | 2 +- extra/man/stackablectl.1 | 4 ++-- rust/stackablectl/CHANGELOG.md | 2 ++ rust/stackablectl/Cargo.toml | 2 +- 5 files changed, 7 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 75522ae4..874ade60 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3625,7 +3625,7 @@ dependencies = [ [[package]] name = "stackablectl" -version = "1.0.0" +version = "1.1.0" dependencies = [ "clap", "clap_complete", diff --git a/Cargo.nix b/Cargo.nix index c9fb8d88..6148325c 100644 --- a/Cargo.nix +++ b/Cargo.nix @@ -11985,7 +11985,7 @@ rec { }; "stackablectl" = rec { crateName = "stackablectl"; - version = "1.0.0"; + version = "1.1.0"; edition = "2021"; crateBin = [ { diff --git a/extra/man/stackablectl.1 b/extra/man/stackablectl.1 index 08abc859..da7c8877 100644 --- a/extra/man/stackablectl.1 +++ b/extra/man/stackablectl.1 @@ -1,6 +1,6 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' -.TH stackablectl 1 "stackablectl 1.0.0" +.TH stackablectl 1 "stackablectl 1.1.0" .SH NAME stackablectl \- Command line tool to interact with the Stackable Data Platform .SH SYNOPSIS @@ -110,6 +110,6 @@ EXPERIMENTAL: Launch a debug container for a Pod stackablectl\-help(1) Print this message or the help of the given subcommand(s) .SH VERSION -v1.0.0 +v1.1.0 .SH AUTHORS Stackable GmbH diff --git a/rust/stackablectl/CHANGELOG.md b/rust/stackablectl/CHANGELOG.md index ab78e761..356d88a8 100644 --- a/rust/stackablectl/CHANGELOG.md +++ b/rust/stackablectl/CHANGELOG.md @@ -4,6 +4,8 @@ All notable changes to this project will be documented in this file. ## [Unreleased] +## [1.1.0] - 2025-07-16 + ### Added - Add OpenSearch to the list of supported products ([#400]). diff --git a/rust/stackablectl/Cargo.toml b/rust/stackablectl/Cargo.toml index a4137a25..3cdef988 100644 --- a/rust/stackablectl/Cargo.toml +++ b/rust/stackablectl/Cargo.toml @@ -2,7 +2,7 @@ name = "stackablectl" description = "Command line tool to interact with the Stackable Data Platform" # See /Cargo.toml -version = "1.0.0" +version = "1.1.0" authors.workspace = true license.workspace = true edition.workspace = true From f55a49c2db398b5820251a9212d0e9bfaa3ef0d0 Mon Sep 17 00:00:00 2001 From: Techassi Date: Thu, 24 Jul 2025 15:31:18 +0200 Subject: [PATCH 32/63] docs: Add release notes for stackablectl (#402) * docs: Add release notes for stackablectl * docs: Add 1.1.0 release notes * chore: Add include for 1.1.0 release notes * chore: Fix typos * docs: Add note about independent versioning * chore: Apply suggestion Co-authored-by: Nick <10092581+NickLarsenNZ@users.noreply.github.com> --------- Co-authored-by: Nick <10092581+NickLarsenNZ@users.noreply.github.com> --- docs/modules/stackablectl/nav.adoc | 1 + .../stackablectl/pages/release-notes.adoc | 12 +++++++ .../partials/release-notes/release-1.0.0.adoc | 15 +++++++++ .../partials/release-notes/release-1.1.0.adoc | 9 ++++++ .../partials/release-notes/releases-old.adoc | 31 +++++++++++++++++++ 5 files changed, 68 insertions(+) create mode 100644 docs/modules/stackablectl/pages/release-notes.adoc create mode 100644 docs/modules/stackablectl/partials/release-notes/release-1.0.0.adoc create mode 100644 docs/modules/stackablectl/partials/release-notes/release-1.1.0.adoc create mode 100644 docs/modules/stackablectl/partials/release-notes/releases-old.adoc diff --git a/docs/modules/stackablectl/nav.adoc b/docs/modules/stackablectl/nav.adoc index b57cb95c..4be5b9e1 100644 --- a/docs/modules/stackablectl/nav.adoc +++ b/docs/modules/stackablectl/nav.adoc @@ -1,6 +1,7 @@ * xref:index.adoc[stackablectl] ** xref:installation.adoc[Installation] ** xref:quickstart.adoc[Quickstart] +** xref:release-notes.adoc[Release notes] ** xref:commands/index.adoc[Commands] *** xref:commands/cache.adoc[cache] *** xref:commands/completions.adoc[completions] diff --git a/docs/modules/stackablectl/pages/release-notes.adoc b/docs/modules/stackablectl/pages/release-notes.adoc new file mode 100644 index 00000000..1d09486c --- /dev/null +++ b/docs/modules/stackablectl/pages/release-notes.adoc @@ -0,0 +1,12 @@ += Release notes for stackablectl +:page-toclevels: 3 +:description: Learn about the latest features and changes in the release notes for stackablectl. + +A full list of changes is available directly in https://github.com/stackabletech/stackable-cockpit/blob/main/rust/stackablectl/CHANGELOG.md[stackablectl's changelog]. + +// WARNING: Please keep the empty newlines, otherwise headings are broken. +include::partial$release-notes/release-1.1.0.adoc[] + +include::partial$release-notes/release-1.0.0.adoc[] + +include::partial$release-notes/releases-old.adoc[] diff --git a/docs/modules/stackablectl/partials/release-notes/release-1.0.0.adoc b/docs/modules/stackablectl/partials/release-notes/release-1.0.0.adoc new file mode 100644 index 00000000..66126596 --- /dev/null +++ b/docs/modules/stackablectl/partials/release-notes/release-1.0.0.adoc @@ -0,0 +1,15 @@ +== 1.0.0 + +[NOTE] +==== +Previously, `stackablectl` was release alongside each Stackable Data Platform (SDP) release. +However, the patch releases from thereon were not related to SDP. +We have since decided to version `stackablectl` independently of SDP, starting at 1.0.0. +==== + +* We have added visual progress reporting to more easily see what the tool is doing at any given moment in time. + Previously, it looked like the tool was hanging as nothing was printed out to the terminal during the installation, but only after. + See https://github.com/stackabletech/stackable-cockpit/pull/376[stackable-cockpit#376]. +* Releases can now be upgraded with the new `release upgrade` command. + This makes it easier to upgrade installed operators to a newer SDP release. + See https://github.com/stackabletech/stackable-cockpit/pull/379[stackable-cockpit#379]. diff --git a/docs/modules/stackablectl/partials/release-notes/release-1.1.0.adoc b/docs/modules/stackablectl/partials/release-notes/release-1.1.0.adoc new file mode 100644 index 00000000..354280d2 --- /dev/null +++ b/docs/modules/stackablectl/partials/release-notes/release-1.1.0.adoc @@ -0,0 +1,9 @@ +== 1.1.0 + +* We now support idempotent Helm installations for demos and stacks. + See https://github.com/stackabletech/stackable-cockpit/pull/386[stackable-cockpit#386]. +* Ignore failed re-application of Jobs due to immutability in demo and stack installations. + The user is now asked if these be deleted or recreated. + See https://github.com/stackabletech/stackable-cockpit/pull/386[stackable-cockpit#386]. +* Default to release build for nix users. + See https://github.com/stackabletech/stackable-cockpit/pull/388[stackable-cockpit#388]. diff --git a/docs/modules/stackablectl/partials/release-notes/releases-old.adoc b/docs/modules/stackablectl/partials/release-notes/releases-old.adoc new file mode 100644 index 00000000..d912827e --- /dev/null +++ b/docs/modules/stackablectl/partials/release-notes/releases-old.adoc @@ -0,0 +1,31 @@ +== 25.3.0 + +* A new demo called `jupyterhub-keycloak` was added and is available via `stackablectl`. + The JupyterHub-Keycloak integration demo offers a comprehensive and secure multi-user data science environment on Kubernetes, integrating Single Sign-on Jupyter notebooks with Stackable Spark and S3 storage. + The demo can be installed by running `stackablectl demo install jupyterhub-keycloak`. + See https://github.com/stackabletech/demos/pull/155[demos#155] and https://github.com/stackabletech/documentation/pull/715[documentation#715]. +* Demos and stacks are now versioned and the main branch is considered unstable. + `stackablectl` by default installs the latest stable demo and/or stack. + A specific release can be targeted by providing the `--release` argument. + See https://github.com/stackabletech/stackable-cockpit/pull/340[stackable-cockpit#340]. +* Add new argument --chart-source so that operator charts can be pulled either from an OCI registry (the default) or from a index.yaml-based repository. + See https://github.com/stackabletech/stackable-cockpit/pull/344[stackable-cockpit#344]. +* Use `rustls-native-certs` so that `stackablectl` can be used in environments with internal PKI. + See https://github.com/stackabletech/stackable-cockpit/pull/351[stackable-cockpit#351]. +* Use `heritage` label when looking up the `minio-console` stacklet. + See https://github.com/stackabletech/stackable-cockpit/pull/364[stackable-cockpit#364]. +* Improve tracing and log output. + See https://github.com/stackabletech/stackable-cockpit/pull/365[stackable-cockpit#365]. + +== 24.11.0 + +* Bump Rust dependencies to fix critical vulnerability in quinn-proto. + See https://github.com/advisories/GHSA-vr26-jcq5-fjj8[CVE-2024-45311] and https://github.com/stackabletech/stackable-cockpit/pull/318[stackable-cockpit#318]. +* We now provide additional completions for Nushell and Elvish, support using SOCK5 and HTTP proxies, and have improved the sorting of release versions. + +== 24.7.0 + +* a new experimental debug command +* a pre-built binary for aarch64-unknown-linux-gnu is now available +* complete error messages are now shown (remedying the truncation of some details in previous releases) +* use of the latest Go and Rust versions and respective dependencies From 446d32c6948038f168e7addf606f0c34b1265588 Mon Sep 17 00:00:00 2001 From: Xenia Date: Tue, 29 Jul 2025 11:44:20 +0200 Subject: [PATCH 33/63] chore: update PR template to not use tasklist (#404) --- .github/pull_request_template.md | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index aebd52ca..4fafd3a5 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -10,25 +10,22 @@ - Not all of these items are applicable to all PRs, the author should update this template to only leave the boxes in that are relevant - Please make sure all these things are done and tick the boxes -```[tasklist] -# Author +### Author + - [ ] Changes are OpenShift compatible - [ ] CRD changes approved - [ ] Helm chart can be installed and deployed operator works - [ ] Integration tests passed (for non trivial changes) -``` -```[tasklist] -# Reviewer +### Reviewer + - [ ] Code contains useful comments - [ ] (Integration-)Test cases added - [ ] Documentation added or updated - [ ] Changelog updated - [ ] Cargo.toml only contains references to git tags (not specific commits or branches) -``` -```[tasklist] -# Acceptance +### Acceptance + - [ ] Feature Tracker has been updated - [ ] Proper release label has been added -``` From 7f48ac1777e08275e0b870d20ffeeabc4805035c Mon Sep 17 00:00:00 2001 From: Xenia Date: Tue, 29 Jul 2025 13:09:09 +0200 Subject: [PATCH 34/63] docs: update the stackablectl installation command to use the latest release (#403) --- docs/modules/stackablectl/pages/installation.adoc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/modules/stackablectl/pages/installation.adoc b/docs/modules/stackablectl/pages/installation.adoc index 9c153893..e276386d 100644 --- a/docs/modules/stackablectl/pages/installation.adoc +++ b/docs/modules/stackablectl/pages/installation.adoc @@ -1,7 +1,7 @@ = Installation :page-aliases: stable@stackablectl::installation.adoc -:latest-release: https://github.com/stackabletech/stackable-cockpit/releases/tag/stackablectl-25.3.0 +:latest-release: https://github.com/stackabletech/stackable-cockpit/releases/tag/stackablectl-1.1.0 :fish-comp-loations: https://fishshell.com/docs/current/completions.html#where-to-put-completions :nushell-comp-locations: https://www.nushell.sh/book/custom_commands.html#persisting @@ -23,14 +23,14 @@ You can also use the following command: [source,console] ---- -$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-25.3.0/stackablectl-x86_64-unknown-linux-gnu +$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-1.1.0/stackablectl-x86_64-unknown-linux-gnu ---- **aarch64** (arm64): [source,console] ---- -$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-25.3.0/stackablectl-aarch64-unknown-linux-gnu +$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-1.1.0/stackablectl-aarch64-unknown-linux-gnu ---- Install the binary into a directory in the `$PATH`, and make it executable: @@ -60,14 +60,14 @@ You can also use the following command: [source,console] ---- -$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-25.3.0/stackablectl-x86_64-apple-darwin +$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-1.1.0/stackablectl-x86_64-apple-darwin ---- **aarch64** (arm64): [source,console] ---- -$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-25.3.0/stackablectl-aarch64-apple-darwin +$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-1.1.0/stackablectl-aarch64-apple-darwin ---- Install the binary into a directory in the `$PATH`, and make it executable: From 53a1976c3e4a29c60256b7b9014333e8080305e2 Mon Sep 17 00:00:00 2001 From: Xenia Date: Wed, 13 Aug 2025 07:23:51 +0200 Subject: [PATCH 35/63] chore: update docs to use bitnamilegacy (#405) * chore: update docs to use bitnamilegacy * fix stack example --- .../pages/customization/add-stack.adoc | 53 +++++++++++++------ 1 file changed, 38 insertions(+), 15 deletions(-) diff --git a/docs/modules/stackablectl/pages/customization/add-stack.adoc b/docs/modules/stackablectl/pages/customization/add-stack.adoc index 898662b8..3e0583ba 100644 --- a/docs/modules/stackablectl/pages/customization/add-stack.adoc +++ b/docs/modules/stackablectl/pages/customization/add-stack.adoc @@ -21,31 +21,54 @@ As of writing a `stacks.yaml` file could look as follows: [source,yaml] ---- stacks: - mycorp-warehouse: + mycorp-warehouse: description: Internal stack we use to build our warehouses - stackableRelease: 22.09 # or use your custom release mycorp-release1 + stackableRelease: 25.7 # or use your custom release mycorp-release1 + stackableOperators: + - commons + - listener + - secret + - trino + - superset labels: - mycorp - warehouse manifests: - # We have Superset in out Stack, which needs a postgressql instance + # We have Superset in our Stack, which needs a postgresql instance # So let's install that first - - helmChart: &template-postgresql-superset - releaseName: postgresql-superset - name: postgresql - repo: - name: bitnami - url: https://charts.bitnami.com/bitnami/ - version: 11.0.0 - options: - auth: - username: superset - password: superset - database: superset + - helmChart: https://my.corp/stacks/mycorp-warehouse/postgresql.yaml - plainYaml: https://my.corp/stacks/mycorp-warehouse/trino.yaml - plainYaml: https://my.corp/stacks/mycorp-warehouse/superset.yaml ---- +The referenced `helmChart` file above could look like the following: + +[source,yaml] +---- +releaseName: postgresql-superset +name: postgresql +repo: + name: bitnami + url: https://charts.bitnami.com/bitnami/ +version: 16.7.21 +options: + global: + security: + allowInsecureImages: true + image: + repository: bitnamilegacy/postgresql + volumePermissions: + image: + repository: bitnamilegacy/os-shell + metrics: + image: + repository: bitnamilegacy/postgres-exporter + auth: + username: superset + password: superset + database: superset +---- + == 2. Using the Custom `stacks.yaml` File After creating the `mycorp-stacks.yaml` file, it can be added to the available stacks in `stackablectl` via the CLI From a31686d97f5972a3cd0d490b5e11c6442e6654b2 Mon Sep 17 00:00:00 2001 From: Sebastian Bernauer Date: Mon, 20 Oct 2025 11:29:22 +0200 Subject: [PATCH 36/63] build(stackablectl): Make binary more portable by downgrading glibc version (#407) * fix(stackablectl): Make binary more portable by downgrading glibc version * Update slab to fix RUSTSEC-2025-0047 * Regenerate nix --- .github/workflows/pr_stackablectl.yml | 13 +- Cargo.lock | 1088 ++++++------ Cargo.nix | 2237 ++++++++++++++----------- 3 files changed, 1801 insertions(+), 1537 deletions(-) diff --git a/.github/workflows/pr_stackablectl.yml b/.github/workflows/pr_stackablectl.yml index b63026c5..4067d3c0 100644 --- a/.github/workflows/pr_stackablectl.yml +++ b/.github/workflows/pr_stackablectl.yml @@ -37,10 +37,19 @@ jobs: fail-fast: false matrix: include: + # We intentionally don't use ubuntu-latest because we want to build against an old glibc version. + # (18.04 has glibc 2.27, 20.04 has glibc 2.31, 22.04 has glibc 2.35, 24.04 has glibc 2.39). + # + # A Rust binary will only run on systems that have the same or a newer glibc version! + # By building on a "modern" version we break the pre-build binaries for everyone that isn't + # (e.g. debian is normally behind Ubuntu). + # + # To achieve this we pick the oldest Ubuntu version that works out of the box. - target: x86_64-unknown-linux-gnu - os: ubuntu-24.04 + os: ubuntu-22.04 - target: aarch64-unknown-linux-gnu - os: ubuntu-24.04-arm + os: ubuntu-22.04-arm + # Technically it would be better to pin this versions, but so far this didn't cause any problems - target: x86_64-apple-darwin os: macos-latest - target: aarch64-apple-darwin diff --git a/Cargo.lock b/Cargo.lock index 874ade60..8bc558c3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,15 +2,6 @@ # It is not intended for manual editing. version = 4 -[[package]] -name = "addr2line" -version = "0.24.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" -dependencies = [ - "gimli", -] - [[package]] name = "adler2" version = "2.0.1" @@ -24,7 +15,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [ "cfg-if", - "getrandom 0.3.3", + "getrandom 0.3.4", "once_cell", "version_check", "zerocopy", @@ -45,12 +36,6 @@ version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - [[package]] name = "android_system_properties" version = "0.1.5" @@ -81,9 +66,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.19" +version = "0.6.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "301af1932e46185686725e0fad2f8f2aa7da69dd70bf6ecc44d6b703844a3933" +checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" dependencies = [ "anstyle", "anstyle-parse", @@ -96,9 +81,9 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.11" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" +checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" [[package]] name = "anstyle-parse" @@ -111,35 +96,35 @@ dependencies = [ [[package]] name = "anstyle-query" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9" +checksum = "9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] name = "anstyle-wincon" -version = "3.0.9" +version = "3.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "403f75924867bb1033c59fbf0797484329750cfbe3c4325cd33127941fabc882" +checksum = "3e0633414522a32ffaac8ac6cc8f748e090c5717661fddeea04219e2344f5f2a" dependencies = [ "anstyle", "once_cell_polyfill", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] name = "anyhow" -version = "1.0.98" +version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" +checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" [[package]] name = "arbitrary" -version = "1.4.1" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" +checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" dependencies = [ "derive_arbitrary", ] @@ -191,18 +176,18 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] name = "async-trait" -version = "0.1.88" +version = "0.1.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] @@ -253,11 +238,11 @@ dependencies = [ [[package]] name = "axum" -version = "0.8.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "021e862c184ae977658b36c4500f7feac3221ca5da43e3f25bd04ab6c79a29b5" +checksum = "8a18ed336352031311f4e0b4dd2ff392d4fbb370777c9d18d7fc9d7359f73871" dependencies = [ - "axum-core 0.5.2", + "axum-core 0.5.5", "bytes", "form_urlencoded", "futures-util", @@ -272,8 +257,7 @@ dependencies = [ "mime", "percent-encoding", "pin-project-lite", - "rustversion", - "serde", + "serde_core", "serde_json", "serde_path_to_error", "serde_urlencoded", @@ -308,9 +292,9 @@ dependencies = [ [[package]] name = "axum-core" -version = "0.5.2" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68464cd0412f486726fb3373129ef5d2993f90c34bc2bc1c1e9943b2f4fc7ca6" +checksum = "59446ce19cd142f8833f856eb31f3eb097812d1479ab224f54d72428ca21ea22" dependencies = [ "bytes", "futures-core", @@ -319,7 +303,6 @@ dependencies = [ "http-body-util", "mime", "pin-project-lite", - "rustversion", "sync_wrapper", "tower-layer", "tower-service", @@ -352,30 +335,15 @@ dependencies = [ [[package]] name = "backon" -version = "1.5.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "302eaff5357a264a2c42f127ecb8bac761cf99749fc3dc95677e2743991f99e7" +checksum = "592277618714fbcecda9a02ba7a8781f319d26532a88553bbacc77ba5d2b3a8d" dependencies = [ "fastrand", "gloo-timers", "tokio", ] -[[package]] -name = "backtrace" -version = "0.3.75" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" -dependencies = [ - "addr2line", - "cfg-if", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", - "windows-targets 0.52.6", -] - [[package]] name = "base64" version = "0.22.1" @@ -412,7 +380,7 @@ dependencies = [ "regex", "rustc-hash 1.1.0", "shlex", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] @@ -432,9 +400,9 @@ checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" [[package]] name = "bitflags" -version = "2.9.1" +version = "2.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" +checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" [[package]] name = "block-buffer" @@ -485,10 +453,11 @@ checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" [[package]] name = "cc" -version = "1.2.29" +version = "1.2.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c1599538de2394445747c8cf7935946e3cc27e9625f889d979bfb2aaf569362" +checksum = "ac9fe6cdbb24b6ade63616c0a0688e45bb56732262c158df3c0c4bea4ca47cb7" dependencies = [ + "find-msvc-tools", "shlex", ] @@ -503,9 +472,9 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.1" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "cfg_aliases" @@ -515,15 +484,14 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chrono" -version = "0.4.41" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" +checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" dependencies = [ - "android-tzdata", "iana-time-zone", "num-traits", "serde", - "windows-link", + "windows-link 0.2.1", ] [[package]] @@ -571,9 +539,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.41" +version = "4.5.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be92d32e80243a54711e5d7ce823c35c41c9d929dc4ab58e1276f625841aadf9" +checksum = "f4512b90fa68d3a9932cea5184017c5d200f5921df706d45e853537dea51508f" dependencies = [ "clap_builder", "clap_derive", @@ -581,9 +549,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.41" +version = "4.5.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "707eab41e9622f9139419d573eca0900137718000c517d47da73045f54331c3d" +checksum = "0025e98baa12e766c67ba13ff4695a887a1eba19569aad00a472546795bd6730" dependencies = [ "anstream", "anstyle", @@ -593,18 +561,18 @@ dependencies = [ [[package]] name = "clap_complete" -version = "4.5.55" +version = "4.5.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5abde44486daf70c5be8b8f8f1b66c49f86236edf6fa2abadb4d961c4c6229a" +checksum = "2348487adcd4631696ced64ccdb40d38ac4d31cae7f2eec8817fcea1b9d1c43c" dependencies = [ "clap", ] [[package]] name = "clap_complete_nushell" -version = "4.5.8" +version = "4.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a0c951694691e65bf9d421d597d68416c22de9632e884c28412cb8cd8b73dce" +checksum = "811159f339691baacdf7d534df2946b9d217014081099e23d31d887d99521e70" dependencies = [ "clap", "clap_complete", @@ -612,27 +580,27 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.41" +version = "4.5.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef4f52386a59ca4c860f7393bcf8abd8dfd91ecccc0f774635ff68e92eeef491" +checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] name = "clap_lex" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" +checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d" [[package]] name = "clap_mangen" -version = "0.2.28" +version = "0.2.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2fb6d3f935bbb9819391528b0e7cf655e78a0bc7a7c3d227211a1d24fc11db1" +checksum = "263c8214a8e0cb8129f3c62036c50e9c6e15c7bd364c42e0437c492b9293f778" dependencies = [ "clap", "roff", @@ -646,15 +614,15 @@ checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" [[package]] name = "comfy-table" -version = "7.1.4" +version = "7.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a65ebfec4fb190b6f90e944a817d60499ee0744e582530e2c9900a22e591d9a" +checksum = "b03b7db8e0b4b2fdad6c551e634134e99ec000e5c8c3b6856c65e8bbaded7a3b" dependencies = [ "ansi-str", - "console 0.15.11", + "console", "crossterm", "unicode-segmentation", - "unicode-width 0.2.1", + "unicode-width 0.2.2", ] [[package]] @@ -668,35 +636,22 @@ dependencies = [ [[package]] name = "console" -version = "0.15.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" -dependencies = [ - "encode_unicode", - "libc", - "once_cell", - "unicode-width 0.2.1", - "windows-sys 0.59.0", -] - -[[package]] -name = "console" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e09ced7ebbccb63b4c65413d821f2e00ce54c5ca4514ddc6b3c892fdbcbc69d" +checksum = "b430743a6eb14e9764d4260d4c0d8123087d504eeb9c48f2b2a5e810dd369df4" dependencies = [ "encode_unicode", "libc", "once_cell", - "unicode-width 0.2.1", - "windows-sys 0.60.2", + "unicode-width 0.2.2", + "windows-sys 0.61.2", ] [[package]] name = "const_format" -version = "0.2.34" +version = "0.2.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" +checksum = "7faa7469a93a566e9ccc1c73fe783b4a65c274c5ace346038dca9c39fe0030ad" dependencies = [ "const_format_proc_macros", ] @@ -801,14 +756,15 @@ checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crossterm" -version = "0.28.1" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" +checksum = "d8b9f2e4c67f833b660cdb0a3523065869fb35570177239812ed4c905aeff87b" dependencies = [ "bitflags", "crossterm_winapi", + "document-features", "parking_lot", - "rustix", + "rustix 1.1.2", "winapi", ] @@ -852,7 +808,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] @@ -863,7 +819,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core", "quote", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] @@ -880,27 +836,27 @@ checksum = "6178a82cf56c836a3ba61a7935cdb1c49bfaa6fa4327cd5bf554a503087de26b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] name = "deranged" -version = "0.4.0" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" +checksum = "a41953f86f8a05768a6cda24def994fd2f424b04ec5c719cf89989779f199071" dependencies = [ "powerfmt", ] [[package]] name = "derive_arbitrary" -version = "1.4.1" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" +checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] @@ -948,7 +904,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] @@ -971,6 +927,15 @@ dependencies = [ "snafu 0.6.10", ] +[[package]] +name = "document-features" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95249b50c6c185bee49034bcb378a49dc2b5dff0be90ff6616d31d64febab05d" +dependencies = [ + "litrs", +] + [[package]] name = "dotenvy" version = "0.15.7" @@ -979,9 +944,9 @@ checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" [[package]] name = "dyn-clone" -version = "1.0.19" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" [[package]] name = "educe" @@ -992,7 +957,7 @@ dependencies = [ "enum-ordinalize", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] @@ -1042,7 +1007,7 @@ checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] @@ -1053,19 +1018,19 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] name = "event-listener" -version = "5.4.0" +version = "5.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" +checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" dependencies = [ "concurrent-queue", "parking", @@ -1089,8 +1054,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "531e46835a22af56d1e3b66f04844bed63158bc094a628bec1d321d9b4c44bf2" dependencies = [ "bit-set", - "regex-automata 0.4.9", - "regex-syntax 0.8.5", + "regex-automata", + "regex-syntax", ] [[package]] @@ -1099,11 +1064,17 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" +[[package]] +name = "find-msvc-tools" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127" + [[package]] name = "flate2" -version = "1.1.2" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" +checksum = "dc5a4e564e38c699f2880d3fda590bedc2e69f3f84cd48b457bd892ce61d0aa9" dependencies = [ "crc32fast", "miniz_oxide", @@ -1123,9 +1094,9 @@ checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" [[package]] name = "form_urlencoded" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" dependencies = [ "percent-encoding", ] @@ -1186,7 +1157,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] @@ -1227,9 +1198,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.14.7" +version = "0.14.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" dependencies = [ "typenum", "version_check", @@ -1244,47 +1215,41 @@ dependencies = [ "cfg-if", "js-sys", "libc", - "wasi 0.11.1+wasi-snapshot-preview1", + "wasi", "wasm-bindgen", ] [[package]] name = "getrandom" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", "js-sys", "libc", "r-efi", - "wasi 0.14.2+wasi-0.2.4", + "wasip2", "wasm-bindgen", ] -[[package]] -name = "gimli" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" - [[package]] name = "glob" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "globset" -version = "0.4.16" +version = "0.4.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54a1028dfc5f5df5da8a56a73e6c153c9a9708ec57232470703592a3f18e49f5" +checksum = "eab69130804d941f8075cfd713bf8848a2c3b3f201a9457a11e6f87e1ab62305" dependencies = [ "aho-corasick", "bstr", "log", - "regex-automata 0.4.9", - "regex-syntax 0.8.5", + "regex-automata", + "regex-syntax", ] [[package]] @@ -1312,9 +1277,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17da50a276f1e01e0ba6c029e47b7100754904ee8a278f886546e98575380785" +checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" dependencies = [ "atomic-waker", "bytes", @@ -1322,7 +1287,7 @@ dependencies = [ "futures-core", "futures-sink", "http", - "indexmap 2.10.0", + "indexmap 2.11.4", "slab", "tokio", "tokio-util", @@ -1337,15 +1302,21 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hashbrown" -version = "0.15.4" +version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ "allocator-api2", "equivalent", "foldhash", ] +[[package]] +name = "hashbrown" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" + [[package]] name = "headers" version = "0.4.1" @@ -1382,7 +1353,7 @@ version = "0.0.0-dev" dependencies = [ "bindgen", "cc", - "snafu 0.8.6", + "snafu 0.8.9", ] [[package]] @@ -1402,7 +1373,7 @@ checksum = "a56f203cd1c76362b69e3863fd987520ac36cf70a8c92627449b2f64a8cf7d65" dependencies = [ "cfg-if", "libc", - "windows-link", + "windows-link 0.1.3", ] [[package]] @@ -1462,13 +1433,14 @@ dependencies = [ [[package]] name = "hyper" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e" dependencies = [ + "atomic-waker", "bytes", "futures-channel", - "futures-util", + "futures-core", "h2", "http", "http-body", @@ -1476,6 +1448,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", + "pin-utils", "smallvec", "tokio", "want", @@ -1512,7 +1485,7 @@ dependencies = [ "hyper-util", "log", "rustls", - "rustls-native-certs 0.8.1", + "rustls-native-certs 0.8.2", "rustls-pki-types", "tokio", "tokio-rustls", @@ -1550,9 +1523,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.15" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f66d5bd4c6f02bf0542fad85d626775bab9258cf795a4256dcaf3161114d1df" +checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8" dependencies = [ "base64", "bytes", @@ -1566,7 +1539,7 @@ dependencies = [ "libc", "percent-encoding", "pin-project-lite", - "socket2", + "socket2 0.6.1", "tokio", "tower-service", "tracing", @@ -1574,9 +1547,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.63" +version = "0.1.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" +checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -1690,9 +1663,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "1.0.3" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" dependencies = [ "idna_adapter", "smallvec", @@ -1711,15 +1684,15 @@ dependencies = [ [[package]] name = "ignore" -version = "0.4.23" +version = "0.4.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b" +checksum = "81776e6f9464432afcc28d03e52eb101c93b6f0566f52aef2427663e700f0403" dependencies = [ "crossbeam-deque", "globset", "log", "memchr", - "regex-automata 0.4.9", + "regex-automata", "same-file", "walkdir", "winapi-util", @@ -1737,13 +1710,14 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.10.0" +version = "2.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661" +checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5" dependencies = [ "equivalent", - "hashbrown 0.15.4", + "hashbrown 0.16.0", "serde", + "serde_core", ] [[package]] @@ -1752,9 +1726,9 @@ version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70a646d946d06bedbbc4cac4c218acf4bbf2d87757a784857025f4d447e4e1cd" dependencies = [ - "console 0.16.0", + "console", "portable-atomic", - "unicode-width 0.2.1", + "unicode-width 0.2.2", "unit-prefix", "vt100", "web-time", @@ -1769,17 +1743,6 @@ dependencies = [ "generic-array", ] -[[package]] -name = "io-uring" -version = "0.7.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b86e202f00093dcba4275d4636b93ef9dd75d025ae560d2521b45ea28ab49013" -dependencies = [ - "bitflags", - "cfg-if", - "libc", -] - [[package]] name = "ipnet" version = "2.11.0" @@ -1839,9 +1802,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.77" +version = "0.3.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +checksum = "ec48937a97411dcb524a265206ccd4c90bb711fca92b2792c407f268825b9305" dependencies = [ "once_cell", "wasm-bindgen", @@ -1849,9 +1812,9 @@ dependencies = [ [[package]] name = "json-patch" -version = "4.0.0" +version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "159294d661a039f7644cea7e4d844e6b25aaf71c1ffe9d73a96d768c24b0faf4" +checksum = "f300e415e2134745ef75f04562dd0145405c2f7fd92065db029ac4b16b57fe90" dependencies = [ "jsonptr", "serde", @@ -1869,7 +1832,7 @@ dependencies = [ "pest_derive", "regex", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] @@ -1903,7 +1866,7 @@ source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-ope dependencies = [ "darling", "regex", - "snafu 0.8.6", + "snafu 0.8.9", ] [[package]] @@ -1949,7 +1912,7 @@ dependencies = [ "serde", "serde_json", "serde_yaml", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tokio-tungstenite", "tokio-util", @@ -1973,7 +1936,7 @@ dependencies = [ "serde", "serde-value", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] @@ -1987,7 +1950,7 @@ dependencies = [ "quote", "serde", "serde_json", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] @@ -2003,7 +1966,7 @@ dependencies = [ "backon", "educe", "futures", - "hashbrown 0.15.4", + "hashbrown 0.15.5", "hostname", "json-patch", "k8s-openapi", @@ -2012,7 +1975,7 @@ dependencies = [ "pin-project", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tokio-util", "tracing", @@ -2026,18 +1989,18 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.174" +version = "0.2.177" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" +checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" [[package]] name = "libloading" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" dependencies = [ "cfg-if", - "windows-targets 0.53.2", + "windows-link 0.2.1", ] [[package]] @@ -2048,9 +2011,9 @@ checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "libredox" -version = "0.1.4" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1580801010e535496706ba011c15f8532df6b42297d2e471fec38ceadd8c0638" +checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" dependencies = [ "bitflags", "libc", @@ -2063,27 +2026,38 @@ version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" +[[package]] +name = "linux-raw-sys" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" + [[package]] name = "litemap" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" +[[package]] +name = "litrs" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5e54036fe321fd421e10d732f155734c4e4afd610dd556d9a82833ab3ee0bed" + [[package]] name = "lock_api" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" dependencies = [ - "autocfg", "scopeguard", ] [[package]] name = "log" -version = "0.4.27" +version = "0.4.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" [[package]] name = "lru-slab" @@ -2093,11 +2067,11 @@ checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" [[package]] name = "matchers" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" dependencies = [ - "regex-automata 0.1.10", + "regex-automata", ] [[package]] @@ -2114,9 +2088,9 @@ checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" [[package]] name = "memchr" -version = "2.7.5" +version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" [[package]] name = "mime" @@ -2147,17 +2121,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", + "simd-adler32", ] [[package]] name = "mio" -version = "1.0.4" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" dependencies = [ "libc", - "wasi 0.11.1+wasi-snapshot-preview1", - "windows-sys 0.59.0", + "wasi", + "windows-sys 0.61.2", ] [[package]] @@ -2189,12 +2164,11 @@ dependencies = [ [[package]] name = "nu-ansi-term" -version = "0.46.0" +version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "overload", - "winapi", + "windows-sys 0.61.2", ] [[package]] @@ -2231,7 +2205,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] @@ -2240,15 +2214,6 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6aa2c4e539b869820a2b82e1aef6ff40aa85e65decdd5185e83fb4b1249cd00f" -[[package]] -name = "object" -version = "0.36.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" -dependencies = [ - "memchr", -] - [[package]] name = "once_cell" version = "1.21.3" @@ -2277,7 +2242,7 @@ dependencies = [ "futures-sink", "js-sys", "pin-project-lite", - "thiserror 2.0.12", + "thiserror 2.0.17", "tracing", ] @@ -2322,7 +2287,7 @@ dependencies = [ "opentelemetry_sdk", "prost", "reqwest", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tonic", "tracing", @@ -2355,7 +2320,7 @@ dependencies = [ "percent-encoding", "rand 0.8.5", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tokio-stream", "tracing", @@ -2376,12 +2341,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" - [[package]] name = "parking" version = "2.2.1" @@ -2390,9 +2349,9 @@ checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "parking_lot" -version = "0.12.4" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" dependencies = [ "lock_api", "parking_lot_core", @@ -2400,15 +2359,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.11" +version = "0.9.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec", - "windows-targets 0.52.6", + "windows-link 0.2.1", ] [[package]] @@ -2422,36 +2381,35 @@ dependencies = [ [[package]] name = "pem" -version = "3.0.5" +version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38af38e8470ac9dee3ce1bae1af9c1671fffc44ddfd8bd1d0a3445bf349a8ef3" +checksum = "1d30c53c26bc5b31a98cd02d20f25a7c8567146caf63ed593a9d87b2775291be" dependencies = [ "base64", - "serde", + "serde_core", ] [[package]] name = "percent-encoding" -version = "2.3.1" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "pest" -version = "2.8.1" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1db05f56d34358a8b1066f67cbb203ee3e7ed2ba674a6263a1d5ec6db2204323" +checksum = "989e7521a040efde50c3ab6bbadafbe15ab6dc042686926be59ac35d74607df4" dependencies = [ "memchr", - "thiserror 2.0.12", "ucd-trie", ] [[package]] name = "pest_derive" -version = "2.8.1" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb056d9e8ea77922845ec74a1c4e8fb17e7c218cc4fc11a15c5d25e189aa40bc" +checksum = "187da9a3030dbafabbbfb20cb323b976dc7b7ce91fcd84f2f74d6e31d378e2de" dependencies = [ "pest", "pest_generator", @@ -2459,22 +2417,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.1" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87e404e638f781eb3202dc82db6760c8ae8a1eeef7fb3fa8264b2ef280504966" +checksum = "49b401d98f5757ebe97a26085998d6c0eecec4995cad6ab7fc30ffdf4b052843" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] name = "pest_meta" -version = "2.8.1" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edd1101f170f5903fde0914f899bb503d9ff5271d7ba76bbb70bea63690cc0d5" +checksum = "72f27a2cfee9f9039c4d86faa5af122a0ac3851441a34865b8a043b46be0065a" dependencies = [ "pest", "sha2", @@ -2535,7 +2493,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] @@ -2558,9 +2516,9 @@ checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" [[package]] name = "potential_utf" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" dependencies = [ "zerovec", ] @@ -2582,19 +2540,19 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.35" +version = "0.2.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "061c1221631e079b26479d25bbf2275bfe5917ae8419cd7e34f13bfc2aa7539a" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] name = "proc-macro-crate" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" dependencies = [ "toml_edit", ] @@ -2625,9 +2583,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.95" +version = "1.0.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" dependencies = [ "unicode-ident", ] @@ -2644,7 +2602,7 @@ dependencies = [ "serde", "serde_json", "serde_yaml", - "snafu 0.8.6", + "snafu 0.8.9", "xml-rs", ] @@ -2668,14 +2626,14 @@ dependencies = [ "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] name = "quinn" -version = "0.11.8" +version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "626214629cda6781b6dc1d316ba307189c85ba657213ce642d9c77670f8202c8" +checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" dependencies = [ "bytes", "cfg_aliases", @@ -2684,8 +2642,8 @@ dependencies = [ "quinn-udp", "rustc-hash 2.1.1", "rustls", - "socket2", - "thiserror 2.0.12", + "socket2 0.6.1", + "thiserror 2.0.17", "tokio", "tracing", "web-time", @@ -2693,20 +2651,20 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.11.12" +version = "0.11.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49df843a9161c85bb8aae55f101bc0bac8bcafd637a620d9122fd7e0b2f7422e" +checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" dependencies = [ "bytes", - "getrandom 0.3.3", + "getrandom 0.3.4", "lru-slab", - "rand 0.9.1", + "rand 0.9.2", "ring", "rustc-hash 2.1.1", "rustls", "rustls-pki-types", "slab", - "thiserror 2.0.12", + "thiserror 2.0.17", "tinyvec", "tracing", "web-time", @@ -2714,23 +2672,23 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.13" +version = "0.5.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcebb1209ee276352ef14ff8732e24cc2b02bbac986cd74a4c81bcb2f9881970" +checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2", + "socket2 0.6.1", "tracing", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] name = "quote" -version = "1.0.40" +version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" dependencies = [ "proc-macro2", ] @@ -2754,9 +2712,9 @@ dependencies = [ [[package]] name = "rand" -version = "0.9.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" dependencies = [ "rand_chacha 0.9.0", "rand_core 0.9.3", @@ -2797,14 +2755,14 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.4", ] [[package]] name = "redox_syscall" -version = "0.5.13" +version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ "bitflags", ] @@ -2828,47 +2786,32 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.1" +version = "1.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.9", - "regex-syntax 0.8.5", -] - -[[package]] -name = "regex-automata" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" -dependencies = [ - "regex-syntax 0.6.29", + "regex-automata", + "regex-syntax", ] [[package]] name = "regex-automata" -version = "0.4.9" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.5", + "regex-syntax", ] [[package]] name = "regex-syntax" -version = "0.6.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" - -[[package]] -name = "regex-syntax" -version = "0.8.5" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" [[package]] name = "relative-path" @@ -2878,9 +2821,9 @@ checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2" [[package]] name = "reqwest" -version = "0.12.22" +version = "0.12.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbc931937e6ca3a06e3b6c0aa7841849b160a90351d6ab467a8b9b9959767531" +checksum = "9d0946410b9f7b082a427e4ef5c8ff541a88b357bc6c637c40db3a68ac70a36f" dependencies = [ "base64", "bytes", @@ -2899,7 +2842,7 @@ dependencies = [ "pin-project-lite", "quinn", "rustls", - "rustls-native-certs 0.8.1", + "rustls-native-certs 0.8.2", "rustls-pki-types", "serde", "serde_json", @@ -2963,7 +2906,7 @@ dependencies = [ "regex", "relative-path", "rustc_version", - "syn 2.0.104", + "syn 2.0.106", "unicode-ident", ] @@ -2987,7 +2930,7 @@ dependencies = [ "proc-macro2", "quote", "rust-embed-utils", - "syn 2.0.104", + "syn 2.0.106", "walkdir", ] @@ -3001,12 +2944,6 @@ dependencies = [ "walkdir", ] -[[package]] -name = "rustc-demangle" -version = "0.1.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" - [[package]] name = "rustc-hash" version = "1.1.0" @@ -3037,15 +2974,28 @@ dependencies = [ "bitflags", "errno", "libc", - "linux-raw-sys", + "linux-raw-sys 0.4.15", "windows-sys 0.59.0", ] +[[package]] +name = "rustix" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys 0.11.0", + "windows-sys 0.61.2", +] + [[package]] name = "rustls" -version = "0.23.29" +version = "0.23.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2491382039b29b9b11ff08b76ff6c97cf287671dbb74f0be44bda389fffe9bd1" +checksum = "751e04a496ca00bb97a5e043158d23d66b5aabf2e1d5aa2a0aaebb1aafe6f82c" dependencies = [ "log", "once_cell", @@ -3071,14 +3021,14 @@ dependencies = [ [[package]] name = "rustls-native-certs" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" +checksum = "9980d917ebb0c0536119ba501e90834767bffc3d60641457fd84a1f3fd337923" dependencies = [ "openssl-probe", "rustls-pki-types", "schannel", - "security-framework 3.2.0", + "security-framework 3.5.1", ] [[package]] @@ -3102,9 +3052,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.103.4" +version = "0.103.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a17884ae0c1b773f1ccd2bd4a8c72f16da897310a98b0e84bf349ad5ead92fc" +checksum = "e10b3f4191e8a80e6b43eebabfac91e5dcecebb27a71f04e820c47ec41d314bf" dependencies = [ "ring", "rustls-pki-types", @@ -3113,9 +3063,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.21" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "ryu" @@ -3134,11 +3084,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -3163,7 +3113,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] @@ -3196,9 +3146,9 @@ dependencies = [ [[package]] name = "security-framework" -version = "3.2.0" +version = "3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" +checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef" dependencies = [ "bitflags", "core-foundation 0.10.1", @@ -3209,9 +3159,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.14.0" +version = "2.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" +checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" dependencies = [ "core-foundation-sys", "libc", @@ -3219,19 +3169,21 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.26" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" dependencies = [ "serde", + "serde_core", ] [[package]] name = "serde" -version = "1.0.219" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" dependencies = [ + "serde_core", "serde_derive", ] @@ -3245,15 +3197,24 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + [[package]] name = "serde_derive" -version = "1.0.219" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] @@ -3264,29 +3225,31 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] name = "serde_json" -version = "1.0.140" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" dependencies = [ "itoa", "memchr", "ryu", "serde", + "serde_core", ] [[package]] name = "serde_path_to_error" -version = "0.1.17" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59fab13f937fa393d08645bf3a84bdfe86e296747b506ada67bb15f10f218b2a" +checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457" dependencies = [ "itoa", "serde", + "serde_core", ] [[package]] @@ -3307,7 +3270,7 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.10.0", + "indexmap 2.11.4", "itoa", "ryu", "serde", @@ -3353,13 +3316,19 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" -version = "1.4.5" +version = "1.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" +checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" dependencies = [ "libc", ] +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + [[package]] name = "siphasher" version = "1.0.1" @@ -3368,9 +3337,9 @@ checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" [[package]] name = "slab" -version = "0.4.10" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" [[package]] name = "slug" @@ -3400,13 +3369,13 @@ dependencies = [ [[package]] name = "snafu" -version = "0.8.6" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "320b01e011bf8d5d7a4a4a4be966d9160968935849c83b918827f6a435e7f627" +checksum = "6e84b3f4eacbf3a1ce05eac6763b4d629d60cbc94d632e4092c54ade71f1e1a2" dependencies = [ "futures-core", "pin-project", - "snafu-derive 0.8.6", + "snafu-derive 0.8.9", ] [[package]] @@ -3422,14 +3391,14 @@ dependencies = [ [[package]] name = "snafu-derive" -version = "0.8.6" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1961e2ef424c1424204d3a5d6975f934f56b6d50ff5732382d84ebf460e147f7" +checksum = "c1c97747dbf44bb1ca44a561ece23508e99cb592e862f22222dcf42f51d1e451" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] @@ -3442,6 +3411,16 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "socket2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + [[package]] name = "spin" version = "0.9.8" @@ -3450,9 +3429,9 @@ checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" [[package]] name = "stable_deref_trait" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" [[package]] name = "stackable-cockpit" @@ -3461,7 +3440,7 @@ dependencies = [ "bcrypt", "futures", "helm-sys", - "indexmap 2.10.0", + "indexmap 2.11.4", "indicatif", "k8s-openapi", "kube", @@ -3473,7 +3452,7 @@ dependencies = [ "serde_json", "serde_yaml", "sha2", - "snafu 0.8.6", + "snafu 0.8.9", "stackable-operator", "tera", "tokio", @@ -3504,7 +3483,7 @@ dependencies = [ "futures", "k8s-openapi", "serde", - "snafu 0.8.6", + "snafu 0.8.9", "stackable-cockpit", "stackable-cockpit-web", "tokio", @@ -3529,7 +3508,7 @@ dependencies = [ "educe", "either", "futures", - "indexmap 2.10.0", + "indexmap 2.11.4", "json-patch", "k8s-openapi", "kube", @@ -3540,7 +3519,7 @@ dependencies = [ "serde", "serde_json", "serde_yaml", - "snafu 0.8.6", + "snafu 0.8.9", "stackable-operator-derive", "stackable-shared", "stackable-telemetry", @@ -3561,7 +3540,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] @@ -3573,7 +3552,7 @@ dependencies = [ "semver", "serde", "serde_yaml", - "snafu 0.8.6", + "snafu 0.8.9", ] [[package]] @@ -3581,7 +3560,7 @@ name = "stackable-telemetry" version = "0.6.0" source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1" dependencies = [ - "axum 0.8.4", + "axum 0.8.6", "clap", "futures-util", "opentelemetry", @@ -3589,7 +3568,7 @@ dependencies = [ "opentelemetry-otlp", "opentelemetry_sdk", "pin-project", - "snafu 0.8.6", + "snafu 0.8.9", "strum", "tokio", "tower 0.5.2", @@ -3620,7 +3599,7 @@ dependencies = [ "kube", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] @@ -3634,7 +3613,7 @@ dependencies = [ "directories", "dotenvy", "futures", - "indexmap 2.10.0", + "indexmap 2.11.4", "indicatif", "lazy_static", "libc", @@ -3644,7 +3623,7 @@ dependencies = [ "serde", "serde_json", "serde_yaml", - "snafu 0.8.6", + "snafu 0.8.9", "stackable-cockpit", "stackable-operator", "tera", @@ -3664,24 +3643,23 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "strum" -version = "0.27.1" +version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f64def088c51c9510a8579e3c5d67c65349dcf755e5479ad3d010aa6454e2c32" +checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" dependencies = [ "strum_macros", ] [[package]] name = "strum_macros" -version = "0.27.1" +version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c77a8c5abcaf0f9ce05d62342b7d298c346515365c36b673df4ebe3ced01fde8" +checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" dependencies = [ "heck", "proc-macro2", "quote", - "rustversion", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] @@ -3703,9 +3681,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.104" +version = "2.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" +checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" dependencies = [ "proc-macro2", "quote", @@ -3729,7 +3707,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] @@ -3777,11 +3755,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.12" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" dependencies = [ - "thiserror-impl 2.0.12", + "thiserror-impl 2.0.17", ] [[package]] @@ -3792,18 +3770,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] name = "thiserror-impl" -version = "2.0.12" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] @@ -3817,9 +3795,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.41" +version = "0.3.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" +checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" dependencies = [ "deranged", "itoa", @@ -3832,15 +3810,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.4" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" +checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" [[package]] name = "time-macros" -version = "0.2.22" +version = "0.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" +checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" dependencies = [ "num-conv", "time-core", @@ -3858,9 +3836,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" dependencies = [ "tinyvec_macros", ] @@ -3873,39 +3851,36 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.46.1" +version = "1.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cc3a2344dafbe23a245241fe8b09735b521110d30fcefbbd5feb1797ca35d17" +checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" dependencies = [ - "backtrace", "bytes", - "io-uring", "libc", "mio", "pin-project-lite", "signal-hook-registry", - "slab", - "socket2", + "socket2 0.6.1", "tokio-macros", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] name = "tokio-macros" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] name = "tokio-rustls" -version = "0.26.2" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" +checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" dependencies = [ "rustls", "tokio", @@ -3936,9 +3911,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.15" +version = "0.7.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" +checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" dependencies = [ "bytes", "futures-core", @@ -3950,18 +3925,31 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.11" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" +checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" +dependencies = [ + "serde_core", +] [[package]] name = "toml_edit" -version = "0.22.27" +version = "0.23.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" dependencies = [ - "indexmap 2.10.0", + "indexmap 2.11.4", "toml_datetime", + "toml_parser", + "winnow", +] + +[[package]] +name = "toml_parser" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" +dependencies = [ "winnow", ] @@ -3987,7 +3975,7 @@ dependencies = [ "percent-encoding", "pin-project", "prost", - "socket2", + "socket2 0.5.10", "tokio", "tokio-stream", "tower 0.4.13", @@ -4115,7 +4103,7 @@ checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] @@ -4130,9 +4118,9 @@ dependencies = [ [[package]] name = "tracing-indicatif" -version = "0.3.11" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c714cc8fc46db04fcfddbd274c6ef59bebb1b435155984e7c6e89c3ce66f200" +checksum = "04d4e11e0e27acef25a47f27e9435355fecdc488867fa2bc90e75b0700d2823d" dependencies = [ "indicatif", "tracing", @@ -4181,14 +4169,14 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.19" +version = "0.3.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" +checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5" dependencies = [ "matchers", "nu-ansi-term", "once_cell", - "regex", + "regex-automata", "serde", "serde_json", "sharded-slab", @@ -4217,17 +4205,17 @@ dependencies = [ "http", "httparse", "log", - "rand 0.9.1", + "rand 0.9.2", "sha1", - "thiserror 2.0.12", + "thiserror 2.0.17", "utf-8", ] [[package]] name = "typenum" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" [[package]] name = "ucd-trie" @@ -4293,9 +4281,9 @@ checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" [[package]] name = "unicode-ident" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" +checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d" [[package]] name = "unicode-segmentation" @@ -4311,9 +4299,9 @@ checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" [[package]] name = "unicode-width" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a1a07cc7db3810833284e8d372ccdc6da29741639ecc70c9ec107df0fa6154c" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" [[package]] name = "unicode-xid" @@ -4341,9 +4329,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.4" +version = "2.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" dependencies = [ "form_urlencoded", "idna", @@ -4381,7 +4369,7 @@ version = "4.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c5afb1a60e207dca502682537fefcfd9921e71d0b83e9576060f09abc6efab23" dependencies = [ - "indexmap 2.10.0", + "indexmap 2.11.4", "serde", "serde_json", "utoipa-gen", @@ -4396,7 +4384,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] @@ -4419,11 +4407,11 @@ dependencies = [ [[package]] name = "uuid" -version = "1.17.0" +version = "1.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cf4199d1e5d15ddd86a694e4d0dffa9c323ce759fea589f00fef9d81cc1931d" +checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.4", "js-sys", "wasm-bindgen", ] @@ -4509,45 +4497,46 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] -name = "wasi" -version = "0.14.2+wasi-0.2.4" +name = "wasip2" +version = "1.0.1+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" dependencies = [ - "wit-bindgen-rt", + "wit-bindgen", ] [[package]] name = "wasm-bindgen" -version = "0.2.100" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +checksum = "c1da10c01ae9f1ae40cbfac0bac3b1e724b320abfcf52229f80b547c0d250e2d" dependencies = [ "cfg-if", "once_cell", "rustversion", "wasm-bindgen-macro", + "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.100" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +checksum = "671c9a5a66f49d8a47345ab942e2cb93c7d1d0339065d4f8139c486121b43b19" dependencies = [ "bumpalo", "log", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.50" +version = "0.4.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +checksum = "7e038d41e478cc73bae0ff9b36c60cff1c98b8f38f8d7e8061e79ee63608ac5c" dependencies = [ "cfg-if", "js-sys", @@ -4558,9 +4547,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.100" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +checksum = "7ca60477e4c59f5f2986c50191cd972e3a50d8a95603bc9434501cf156a9a119" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4568,31 +4557,31 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.100" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +checksum = "9f07d2f20d4da7b26400c9f4a0511e6e0345b040694e8a75bd41d578fa4421d7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.100" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +checksum = "bad67dc8b2a1a6e5448428adec4c3e84c43e561d8c9ee8a9e5aabeb193ec41d1" dependencies = [ "unicode-ident", ] [[package]] name = "web-sys" -version = "0.3.77" +version = "0.3.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +checksum = "9367c417a924a74cae129e6a2ae3b47fabb1f8995595ab474029da749a8be120" dependencies = [ "js-sys", "wasm-bindgen", @@ -4610,9 +4599,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "1.0.1" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8782dd5a41a24eed3a4f40b606249b3e236ca61adf1f25ea4d45c73de122b502" +checksum = "32b130c0d2d49f8b6889abc456e795e82525204f27c42cf767cf0d7734e089b8" dependencies = [ "rustls-pki-types", ] @@ -4625,7 +4614,7 @@ checksum = "b4ee928febd44d98f2f459a4a79bd4d928591333a494a10a868418ac1b39cf1f" dependencies = [ "either", "home", - "rustix", + "rustix 0.38.44", "winsafe", ] @@ -4647,11 +4636,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.9" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -4662,37 +4651,37 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows-core" -version = "0.61.2" +version = "0.62.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" dependencies = [ "windows-implement", "windows-interface", - "windows-link", + "windows-link 0.2.1", "windows-result", "windows-strings", ] [[package]] name = "windows-implement" -version = "0.60.0" +version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] name = "windows-interface" -version = "0.59.1" +version = "0.59.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] @@ -4701,22 +4690,28 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + [[package]] name = "windows-result" -version = "0.3.4" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" dependencies = [ - "windows-link", + "windows-link 0.2.1", ] [[package]] name = "windows-strings" -version = "0.4.2" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" dependencies = [ - "windows-link", + "windows-link 0.2.1", ] [[package]] @@ -4752,7 +4747,16 @@ version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" dependencies = [ - "windows-targets 0.53.2", + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link 0.2.1", ] [[package]] @@ -4788,18 +4792,19 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.53.2" +version = "0.53.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" dependencies = [ - "windows_aarch64_gnullvm 0.53.0", - "windows_aarch64_msvc 0.53.0", - "windows_i686_gnu 0.53.0", - "windows_i686_gnullvm 0.53.0", - "windows_i686_msvc 0.53.0", - "windows_x86_64_gnu 0.53.0", - "windows_x86_64_gnullvm 0.53.0", - "windows_x86_64_msvc 0.53.0", + "windows-link 0.2.1", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", ] [[package]] @@ -4816,9 +4821,9 @@ checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_gnullvm" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" [[package]] name = "windows_aarch64_msvc" @@ -4834,9 +4839,9 @@ checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_aarch64_msvc" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" [[package]] name = "windows_i686_gnu" @@ -4852,9 +4857,9 @@ checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnu" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" [[package]] name = "windows_i686_gnullvm" @@ -4864,9 +4869,9 @@ checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_gnullvm" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" [[package]] name = "windows_i686_msvc" @@ -4882,9 +4887,9 @@ checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_i686_msvc" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" [[package]] name = "windows_x86_64_gnu" @@ -4900,9 +4905,9 @@ checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnu" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" [[package]] name = "windows_x86_64_gnullvm" @@ -4918,9 +4923,9 @@ checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_gnullvm" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" [[package]] name = "windows_x86_64_msvc" @@ -4936,15 +4941,15 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "windows_x86_64_msvc" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] name = "winnow" -version = "0.7.12" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3edebf492c8125044983378ecb5766203ad3b4c2f7a922bd7dd207f6d443e95" +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" dependencies = [ "memchr", ] @@ -4956,13 +4961,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" [[package]] -name = "wit-bindgen-rt" -version = "0.39.0" +name = "wit-bindgen" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" -dependencies = [ - "bitflags", -] +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" [[package]] name = "writeable" @@ -4987,7 +4989,7 @@ dependencies = [ "once_cell", "regex", "serde_json", - "snafu 0.8.6", + "snafu 0.8.9", "stackable-cockpitd", "stackablectl", "tera", @@ -5013,28 +5015,28 @@ checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", "synstructure", ] [[package]] name = "zerocopy" -version = "0.8.26" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" +checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.26" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" +checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] @@ -5054,15 +5056,15 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", "synstructure", ] [[package]] name = "zeroize" -version = "1.8.1" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" [[package]] name = "zerotrie" @@ -5077,9 +5079,9 @@ dependencies = [ [[package]] name = "zerovec" -version = "0.11.2" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" +checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" dependencies = [ "yoke", "zerofrom", @@ -5094,7 +5096,7 @@ checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] @@ -5108,7 +5110,7 @@ dependencies = [ "crossbeam-utils", "displaydoc", "flate2", - "indexmap 2.10.0", + "indexmap 2.11.4", "num_enum", "thiserror 1.0.69", ] diff --git a/Cargo.nix b/Cargo.nix index 6148325c..e7fcf399 100644 --- a/Cargo.nix +++ b/Cargo.nix @@ -123,36 +123,6 @@ rec { # inject test dependencies into the build crates = { - "addr2line" = rec { - crateName = "addr2line"; - version = "0.24.2"; - edition = "2018"; - crateBin = []; - sha256 = "1hd1i57zxgz08j6h5qrhsnm2fi0bcqvsh389fw400xm3arz2ggnz"; - dependencies = [ - { - name = "gimli"; - packageId = "gimli"; - usesDefaultFeatures = false; - features = [ "read" ]; - } - ]; - features = { - "all" = [ "bin" ]; - "alloc" = [ "dep:alloc" ]; - "bin" = [ "loader" "rustc-demangle" "cpp_demangle" "fallible-iterator" "smallvec" "dep:clap" ]; - "compiler_builtins" = [ "dep:compiler_builtins" ]; - "core" = [ "dep:core" ]; - "cpp_demangle" = [ "dep:cpp_demangle" ]; - "default" = [ "rustc-demangle" "cpp_demangle" "loader" "fallible-iterator" "smallvec" ]; - "fallible-iterator" = [ "dep:fallible-iterator" ]; - "loader" = [ "std" "dep:object" "dep:memmap2" "dep:typed-arena" ]; - "rustc-demangle" = [ "dep:rustc-demangle" ]; - "rustc-dep-of-std" = [ "core" "alloc" "compiler_builtins" "gimli/rustc-dep-of-std" ]; - "smallvec" = [ "dep:smallvec" ]; - "std" = [ "gimli/std" ]; - }; - }; "adler2" = rec { crateName = "adler2"; version = "2.0.1"; @@ -183,7 +153,7 @@ rec { } { name = "getrandom"; - packageId = "getrandom 0.3.3"; + packageId = "getrandom 0.3.4"; optional = true; } { @@ -258,17 +228,6 @@ rec { }; resolvedDefaultFeatures = [ "alloc" ]; }; - "android-tzdata" = rec { - crateName = "android-tzdata"; - version = "0.1.1"; - edition = "2018"; - sha256 = "1w7ynjxrfs97xg3qlcdns4kgfpwcdv824g611fq32cag4cdr96g9"; - libName = "android_tzdata"; - authors = [ - "RumovZ" - ]; - - }; "android_system_properties" = rec { crateName = "android_system_properties"; version = "0.1.5"; @@ -328,9 +287,9 @@ rec { }; "anstream" = rec { crateName = "anstream"; - version = "0.6.19"; + version = "0.6.21"; edition = "2021"; - sha256 = "0crr9a207dyn8k66xgvhvmlxm9raiwpss3syfa35c6265s9z26ih"; + sha256 = "0jjgixms4qjj58dzr846h2s29p8w7ynwr9b9x6246m1pwy0v5ma3"; dependencies = [ { name = "anstyle"; @@ -373,9 +332,9 @@ rec { }; "anstyle" = rec { crateName = "anstyle"; - version = "1.0.11"; + version = "1.0.13"; edition = "2021"; - sha256 = "1gbbzi0zbgff405q14v8hhpi1kz2drzl9a75r3qhks47lindjbl6"; + sha256 = "0y2ynjqajpny6q0amvfzzgw0gfw3l47z85km4gvx87vg02lcr4ji"; features = { "default" = [ "std" ]; }; @@ -403,14 +362,14 @@ rec { }; "anstyle-query" = rec { crateName = "anstyle-query"; - version = "1.1.3"; + version = "1.1.4"; edition = "2021"; - sha256 = "1sgs2hq54wayrmpvy784ww2ccv9f8yhhpasv12z872bx0jvdx2vc"; + sha256 = "1qir6d6fl5a4y2gmmw9a5w93ckwx6xn51aryd83p26zn6ihiy8wy"; libName = "anstyle_query"; dependencies = [ { name = "windows-sys"; - packageId = "windows-sys 0.59.0"; + packageId = "windows-sys 0.60.2"; target = { target, features }: (target."windows" or false); features = [ "Win32_System_Console" "Win32_Foundation" ]; } @@ -419,9 +378,9 @@ rec { }; "anstyle-wincon" = rec { crateName = "anstyle-wincon"; - version = "3.0.9"; + version = "3.0.10"; edition = "2021"; - sha256 = "10n8mcgr89risdf35i73zc67aaa392bhggwzqlri1fv79297ags0"; + sha256 = "0ajz9wsf46a2l3pds7v62xbhq2cffj7wrilamkx2z8r28m0k61iy"; libName = "anstyle_wincon"; dependencies = [ { @@ -435,7 +394,7 @@ rec { } { name = "windows-sys"; - packageId = "windows-sys 0.59.0"; + packageId = "windows-sys 0.60.2"; target = { target, features }: (target."windows" or false); features = [ "Win32_System_Console" "Win32_Foundation" ]; } @@ -444,9 +403,9 @@ rec { }; "anyhow" = rec { crateName = "anyhow"; - version = "1.0.98"; + version = "1.0.100"; edition = "2018"; - sha256 = "11ylvjdrcjs0q9jgk1af4r5cx1qppj63plxqkq595vmc24rjsvg1"; + sha256 = "0qbfmw4hhv2ampza1csyvf1jqjs2dgrj29cv3h3sh623c6qvcgm2"; authors = [ "David Tolnay " ]; @@ -458,9 +417,9 @@ rec { }; "arbitrary" = rec { crateName = "arbitrary"; - version = "1.4.1"; + version = "1.4.2"; edition = "2021"; - sha256 = "08zj2yanll5s5gsbmvgwvbq39iqzy3nia3yx3db3zwba08yhpqnx"; + sha256 = "1wcbi4x7i3lzcrkjda4810nqv03lpmvfhb0a85xrq1mbqjikdl63"; authors = [ "The Rust-Fuzz Project Developers" "Nick Fitzgerald " @@ -604,7 +563,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; features = [ "full" "visit-mut" ]; } ]; @@ -612,9 +571,9 @@ rec { }; "async-trait" = rec { crateName = "async-trait"; - version = "0.1.88"; + version = "0.1.89"; edition = "2021"; - sha256 = "1dgxvz7g75cmz6vqqz0mri4xazc6a8xfj1db6r9fxz29lzyd6fg5"; + sha256 = "1fsxxmz3rzx1prn1h3rs7kyjhkap60i7xvi0ldapkvbb14nssdch"; procMacro = true; libName = "async_trait"; authors = [ @@ -631,7 +590,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; usesDefaultFeatures = false; features = [ "clone-impls" "full" "parsing" "printing" "proc-macro" "visit-mut" ]; } @@ -834,15 +793,15 @@ rec { }; resolvedDefaultFeatures = [ "default" "form" "http1" "http2" "json" "matched-path" "original-uri" "query" "tokio" "tower-log" "tracing" ]; }; - "axum 0.8.4" = rec { + "axum 0.8.6" = rec { crateName = "axum"; - version = "0.8.4"; + version = "0.8.6"; edition = "2021"; - sha256 = "1d99kb3vcjnhbgrf6hysllf25hzagw7m1i1nidjpgsaa30n8c7h2"; + sha256 = "0w9qyxcp77gwswc9sz3pf2rzpm4jycpxvd70yh8i60sjccrys64a"; dependencies = [ { name = "axum-core"; - packageId = "axum-core 0.5.2"; + packageId = "axum-core 0.5.5"; } { name = "bytes"; @@ -907,12 +866,8 @@ rec { packageId = "pin-project-lite"; } { - name = "rustversion"; - packageId = "rustversion"; - } - { - name = "serde"; - packageId = "serde"; + name = "serde_core"; + packageId = "serde_core"; } { name = "serde_json"; @@ -968,11 +923,6 @@ rec { packageId = "hyper"; features = [ "client" ]; } - { - name = "serde"; - packageId = "serde"; - features = [ "derive" ]; - } { name = "serde_json"; packageId = "serde_json"; @@ -997,7 +947,7 @@ rec { ]; features = { "__private" = [ "tokio" "http1" "dep:reqwest" ]; - "__private_docs" = [ "axum-core/__private_docs" "tower/full" "dep:tower-http" ]; + "__private_docs" = [ "axum-core/__private_docs" "tower/full" "dep:serde" "dep:tower-http" ]; "default" = [ "form" "http1" "json" "matched-path" "original-uri" "query" "tokio" "tower-log" "tracing" ]; "form" = [ "dep:form_urlencoded" "dep:serde_urlencoded" "dep:serde_path_to_error" ]; "http1" = [ "dep:hyper" "hyper?/http1" "hyper-util?/http1" ]; @@ -1091,11 +1041,11 @@ rec { }; resolvedDefaultFeatures = [ "tracing" ]; }; - "axum-core 0.5.2" = rec { + "axum-core 0.5.5" = rec { crateName = "axum-core"; - version = "0.5.2"; + version = "0.5.5"; edition = "2021"; - sha256 = "19kwzksb4hwr3qfbrhjbqf83z6fjyng14wrkzck6fj1g8784qik8"; + sha256 = "08pa4752h96pai7j5avr2hnq35xh7qgv6vl57y1zhhnikkhnqi2r"; libName = "axum_core"; dependencies = [ { @@ -1126,10 +1076,6 @@ rec { name = "pin-project-lite"; packageId = "pin-project-lite"; } - { - name = "rustversion"; - packageId = "rustversion"; - } { name = "sync_wrapper"; packageId = "sync_wrapper"; @@ -1271,9 +1217,9 @@ rec { }; "backon" = rec { crateName = "backon"; - version = "1.5.1"; + version = "1.5.2"; edition = "2021"; - sha256 = "1rwr3ycl69vycyaxrhwzfjcwyqf7pawfq9zi88n4l9ks6pssybih"; + sha256 = "139s5dfvlxycp8xmb21aack9sc8zg2lafax0m76wxyqlhxhpf8jr"; dependencies = [ { name = "fastrand"; @@ -1322,63 +1268,6 @@ rec { }; resolvedDefaultFeatures = [ "default" "gloo-timers" "gloo-timers-sleep" "std" "std-blocking-sleep" "tokio" "tokio-sleep" ]; }; - "backtrace" = rec { - crateName = "backtrace"; - version = "0.3.75"; - edition = "2021"; - sha256 = "00hhizz29mvd7cdqyz5wrj98vqkihgcxmv2vl7z0d0f53qrac1k8"; - authors = [ - "The Rust Project Developers" - ]; - dependencies = [ - { - name = "addr2line"; - packageId = "addr2line"; - usesDefaultFeatures = false; - target = { target, features }: (!((target."windows" or false) && ("msvc" == target."env" or null) && (!("uwp" == target."vendor" or null)))); - } - { - name = "cfg-if"; - packageId = "cfg-if"; - } - { - name = "libc"; - packageId = "libc"; - usesDefaultFeatures = false; - target = { target, features }: (!((target."windows" or false) && ("msvc" == target."env" or null) && (!("uwp" == target."vendor" or null)))); - } - { - name = "miniz_oxide"; - packageId = "miniz_oxide"; - usesDefaultFeatures = false; - target = { target, features }: (!((target."windows" or false) && ("msvc" == target."env" or null) && (!("uwp" == target."vendor" or null)))); - } - { - name = "object"; - packageId = "object"; - usesDefaultFeatures = false; - target = { target, features }: (!((target."windows" or false) && ("msvc" == target."env" or null) && (!("uwp" == target."vendor" or null)))); - features = [ "read_core" "elf" "macho" "pe" "xcoff" "unaligned" "archive" ]; - } - { - name = "rustc-demangle"; - packageId = "rustc-demangle"; - } - { - name = "windows-targets"; - packageId = "windows-targets 0.52.6"; - target = { target, features }: ((target."windows" or false) || ("cygwin" == target."os" or null)); - } - ]; - features = { - "cpp_demangle" = [ "dep:cpp_demangle" ]; - "default" = [ "std" ]; - "ruzstd" = [ "dep:ruzstd" ]; - "serde" = [ "dep:serde" ]; - "serialize-serde" = [ "serde" ]; - }; - resolvedDefaultFeatures = [ "default" "std" ]; - }; "base64" = rec { crateName = "base64"; version = "0.22.1"; @@ -1507,7 +1396,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; features = [ "full" "extra-traits" "visit-mut" ]; } ]; @@ -1562,18 +1451,15 @@ rec { }; "bitflags" = rec { crateName = "bitflags"; - version = "2.9.1"; + version = "2.9.4"; edition = "2021"; - sha256 = "0rz9rpp5wywwqb3mxfkywh4drmzci2fch780q7lifbf6bsc5d3hv"; + sha256 = "157kkcv8s7vk6d17dar1pa5cqcz4c8pdrn16wm1ld7jnr86d2q92"; authors = [ "The Rust Project Developers" ]; features = { "arbitrary" = [ "dep:arbitrary" ]; "bytemuck" = [ "dep:bytemuck" ]; - "compiler_builtins" = [ "dep:compiler_builtins" ]; - "core" = [ "dep:core" ]; - "rustc-dep-of-std" = [ "core" "compiler_builtins" ]; "serde" = [ "dep:serde" ]; }; resolvedDefaultFeatures = [ "std" ]; @@ -1701,13 +1587,17 @@ rec { }; "cc" = rec { crateName = "cc"; - version = "1.2.29"; + version = "1.2.41"; edition = "2018"; - sha256 = "0qlkaspjmywvjyfqhpv2x4kwrqs6b69zg33wfi2l8fg2im9rj5aw"; + sha256 = "1dvwli6fljqc7kgmihb249rmdfs5irla1h0n6vkavdi4pg6yd7xc"; authors = [ "Alex Crichton " ]; dependencies = [ + { + name = "find-msvc-tools"; + packageId = "find-msvc-tools"; + } { name = "shlex"; packageId = "shlex"; @@ -1737,9 +1627,9 @@ rec { }; "cfg-if" = rec { crateName = "cfg-if"; - version = "1.0.1"; + version = "1.0.4"; edition = "2018"; - sha256 = "0s0jr5j797q1vqjcd41l0v5izlmlqm7lxy512b418xz5r65mfmcm"; + sha256 = "008q28ajc546z5p2hcwdnckmg0hia7rnx52fni04bwqkzyrghc4k"; libName = "cfg_if"; authors = [ "Alex Crichton " @@ -1761,16 +1651,10 @@ rec { }; "chrono" = rec { crateName = "chrono"; - version = "0.4.41"; + version = "0.4.42"; edition = "2021"; - sha256 = "0k8wy2mph0mgipq28vv3wirivhb31pqs7jyid0dzjivz0i9djsf4"; + sha256 = "1lp8iz9js9jwxw0sj8yi59v54lgvwdvm49b9wch77f25sfym4l0l"; dependencies = [ - { - name = "android-tzdata"; - packageId = "android-tzdata"; - optional = true; - target = { target, features }: ("android" == target."os" or null); - } { name = "iana-time-zone"; packageId = "iana-time-zone"; @@ -1791,15 +1675,14 @@ rec { } { name = "windows-link"; - packageId = "windows-link"; + packageId = "windows-link 0.2.1"; optional = true; target = { target, features }: (target."windows" or false); } ]; features = { - "android-tzdata" = [ "dep:android-tzdata" ]; "arbitrary" = [ "dep:arbitrary" ]; - "clock" = [ "winapi" "iana-time-zone" "android-tzdata" "now" ]; + "clock" = [ "winapi" "iana-time-zone" "now" ]; "default" = [ "clock" "std" "oldtime" "wasmbind" ]; "iana-time-zone" = [ "dep:iana-time-zone" ]; "js-sys" = [ "dep:js-sys" ]; @@ -1818,7 +1701,7 @@ rec { "winapi" = [ "windows-link" ]; "windows-link" = [ "dep:windows-link" ]; }; - resolvedDefaultFeatures = [ "alloc" "android-tzdata" "clock" "iana-time-zone" "now" "serde" "std" "winapi" "windows-link" ]; + resolvedDefaultFeatures = [ "alloc" "clock" "iana-time-zone" "now" "serde" "std" "winapi" "windows-link" ]; }; "chrono-tz" = rec { crateName = "chrono-tz"; @@ -1982,10 +1865,10 @@ rec { }; "clap" = rec { crateName = "clap"; - version = "4.5.41"; + version = "4.5.49"; edition = "2021"; crateBin = []; - sha256 = "1ydd3a22bxkn2a7bajnw57cwjhawqciyhz2x3rqm8fi4h0pd74my"; + sha256 = "13sha7m7slskx12nsw6z45chy82xgh0q8lga5j9sklv8za82nlgl"; dependencies = [ { name = "clap_builder"; @@ -2024,9 +1907,9 @@ rec { }; "clap_builder" = rec { crateName = "clap_builder"; - version = "4.5.41"; + version = "4.5.49"; edition = "2021"; - sha256 = "0g8w6da5y13kv93psl8c00c7f4q01753wmwx84wr2bv2x50snzkh"; + sha256 = "0c37pnanfm3jlh0av6jn36x1wyl8b9lz8gx1gg36drqjma5yj980"; dependencies = [ { name = "anstream"; @@ -2063,9 +1946,9 @@ rec { }; "clap_complete" = rec { crateName = "clap_complete"; - version = "4.5.55"; + version = "4.5.59"; edition = "2021"; - sha256 = "16i2qv263ndlmnms4vyzdqiqd7y4cqdqz3wbpv2p1bvd912dxax5"; + sha256 = "0g64s6ws3kkzh74fxwp7r8qlvb1q1nscsk6nrsb1cqylvix4hj13"; dependencies = [ { name = "clap"; @@ -2092,9 +1975,9 @@ rec { }; "clap_complete_nushell" = rec { crateName = "clap_complete_nushell"; - version = "4.5.8"; + version = "4.5.9"; edition = "2021"; - sha256 = "1kixnzc8rjqjhk189s1jjvg24v21d1ymj7a2knzna7k9jhb9a30a"; + sha256 = "0w0yaacpv20xscirw2c1800iglmr8qlxyd6myz6sl6v977rmj4c1"; dependencies = [ { name = "clap"; @@ -2122,9 +2005,9 @@ rec { }; "clap_derive" = rec { crateName = "clap_derive"; - version = "4.5.41"; + version = "4.5.49"; edition = "2021"; - sha256 = "14glxqpfjs7z6m37f3ycrhgdkpyqmgwbr4vk1y34rjjrd8w54kzg"; + sha256 = "0wbngw649138v3jwx8pm5x9sq0qsml3sh0sfzyrdxcpamy3m82ra"; procMacro = true; dependencies = [ { @@ -2141,7 +2024,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; features = [ "full" ]; } ]; @@ -2154,16 +2037,16 @@ rec { }; "clap_lex" = rec { crateName = "clap_lex"; - version = "0.7.5"; + version = "0.7.6"; edition = "2021"; - sha256 = "0xb6pjza43irrl99axbhs12pxq4sr8x7xd36p703j57f5i3n2kxr"; + sha256 = "13cxw9m2rqvplgazgkq2awms0rgf34myc19bz6gywfngi762imx1"; }; "clap_mangen" = rec { crateName = "clap_mangen"; - version = "0.2.28"; + version = "0.2.30"; edition = "2021"; - sha256 = "1c8xq57x588if8i3sz3spjh7hpk5rzkv0a0m74crifsvjcznvyz2"; + sha256 = "0y7pjf92njbw8gh44k1npp3iavlw1v2kc866yclq3jz0m0a84g16"; dependencies = [ { name = "clap"; @@ -2198,9 +2081,9 @@ rec { }; "comfy-table" = rec { crateName = "comfy-table"; - version = "7.1.4"; - edition = "2021"; - sha256 = "16hxb4pa404r5h7570p58h3yx684sqbshi79j1phn6gvqkzfnraa"; + version = "7.2.1"; + edition = "2024"; + sha256 = "0fvsxnnvps35dj2vdhy8wl0c17p96i0n67jmdjnzvcmlw2w7sfxh"; libName = "comfy_table"; authors = [ "Arne Beer " @@ -2213,7 +2096,7 @@ rec { } { name = "console"; - packageId = "console 0.15.11"; + packageId = "console"; optional = true; } { @@ -2237,7 +2120,7 @@ rec { } { name = "unicode-width"; - packageId = "unicode-width 0.2.1"; + packageId = "unicode-width 0.2.2"; } ]; features = { @@ -2273,52 +2156,11 @@ rec { }; resolvedDefaultFeatures = [ "std" ]; }; - "console 0.15.11" = rec { - crateName = "console"; - version = "0.15.11"; - edition = "2021"; - sha256 = "1n5gmsjk6isbnw6qss043377kln20lfwlmdk3vswpwpr21dwnk05"; - authors = [ - "Armin Ronacher " - ]; - dependencies = [ - { - name = "encode_unicode"; - packageId = "encode_unicode"; - target = { target, features }: (target."windows" or false); - } - { - name = "libc"; - packageId = "libc"; - } - { - name = "once_cell"; - packageId = "once_cell"; - } - { - name = "unicode-width"; - packageId = "unicode-width 0.2.1"; - optional = true; - } - { - name = "windows-sys"; - packageId = "windows-sys 0.59.0"; - target = { target, features }: (target."windows" or false); - features = [ "Win32_Foundation" "Win32_System_Console" "Win32_Storage_FileSystem" "Win32_UI_Input_KeyboardAndMouse" ]; - } - ]; - features = { - "default" = [ "unicode-width" "ansi-parsing" ]; - "unicode-width" = [ "dep:unicode-width" ]; - "windows-console-colors" = [ "ansi-parsing" ]; - }; - resolvedDefaultFeatures = [ "ansi-parsing" "default" "unicode-width" ]; - }; - "console 0.16.0" = rec { + "console" = rec { crateName = "console"; - version = "0.16.0"; + version = "0.16.1"; edition = "2021"; - sha256 = "17f6rgdjz29wdgf4sld4bi6fa370y8hxh4slqss67jxwxgbww29f"; + sha256 = "1x4x6vfi1s55nbr4i77b9r87s213h46lq396sij9fkmidqx78c5l"; dependencies = [ { name = "encode_unicode"; @@ -2337,12 +2179,12 @@ rec { } { name = "unicode-width"; - packageId = "unicode-width 0.2.1"; + packageId = "unicode-width 0.2.2"; optional = true; } { name = "windows-sys"; - packageId = "windows-sys 0.60.2"; + packageId = "windows-sys 0.61.2"; target = { target, features }: (target."windows" or false); features = [ "Win32_Foundation" "Win32_System_Console" "Win32_Storage_FileSystem" "Win32_UI_Input_KeyboardAndMouse" ]; } @@ -2353,13 +2195,13 @@ rec { "unicode-width" = [ "dep:unicode-width" ]; "windows-console-colors" = [ "ansi-parsing" ]; }; - resolvedDefaultFeatures = [ "alloc" "ansi-parsing" "std" "unicode-width" ]; + resolvedDefaultFeatures = [ "alloc" "ansi-parsing" "default" "std" "unicode-width" ]; }; "const_format" = rec { crateName = "const_format"; - version = "0.2.34"; + version = "0.2.35"; edition = "2021"; - sha256 = "1pb3vx4k0bl3cy45fmba36hzds1jhkr8y9k3j5nnvm4abjb9fvqj"; + sha256 = "1b9h03z3k76ail1ldqxcqmsc4raa7dwgwwqwrjf6wmism5lp9akz"; authors = [ "rodrimati1992 " ]; @@ -2649,9 +2491,9 @@ rec { }; "crossterm" = rec { crateName = "crossterm"; - version = "0.28.1"; + version = "0.29.0"; edition = "2021"; - sha256 = "1im9vs6fvkql0sr378dfr4wdm1rrkrvr22v4i8byz05k1dd9b7c2"; + sha256 = "0yzqxxd90k7d2ac26xq1awsznsaq0qika2nv1ik3p0vzqvjg5ffq"; authors = [ "T. Post" ]; @@ -2666,13 +2508,17 @@ rec { optional = true; target = { target, features }: (target."windows" or false); } + { + name = "document-features"; + packageId = "document-features"; + } { name = "parking_lot"; packageId = "parking_lot"; } { name = "rustix"; - packageId = "rustix"; + packageId = "rustix 1.1.2"; usesDefaultFeatures = false; target = { target, features }: (target."unix" or false); features = [ "std" "stdio" "termios" ]; @@ -2686,11 +2532,13 @@ rec { } ]; features = { - "default" = [ "bracketed-paste" "windows" "events" ]; + "default" = [ "bracketed-paste" "events" "windows" "derive-more" ]; + "derive-more" = [ "dep:derive_more" ]; "event-stream" = [ "dep:futures-core" "events" ]; "events" = [ "dep:mio" "dep:signal-hook" "dep:signal-hook-mio" ]; "filedescriptor" = [ "dep:filedescriptor" ]; "libc" = [ "dep:libc" ]; + "osc52" = [ "dep:base64" ]; "serde" = [ "dep:serde" "bitflags/serde" ]; "use-dev-tty" = [ "filedescriptor" "rustix/process" ]; "windows" = [ "dep:winapi" "dep:crossterm_winapi" ]; @@ -2798,7 +2646,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; features = [ "full" "extra-traits" ]; } ]; @@ -2828,7 +2676,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; } ]; @@ -2869,7 +2717,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; features = [ "full" "visit-mut" ]; } ]; @@ -2877,9 +2725,9 @@ rec { }; "deranged" = rec { crateName = "deranged"; - version = "0.4.0"; + version = "0.5.4"; edition = "2021"; - sha256 = "13h6skwk411wzhf1l9l7d3yz5y6vg9d7s3dwhhb4a942r88nm7lw"; + sha256 = "0wch36gpg2crz2f72p7c0i5l4bzxjkwxw96sdj57c1cadzw566d4"; authors = [ "Jacob Pratt " ]; @@ -2892,7 +2740,6 @@ rec { } ]; features = { - "default" = [ "std" ]; "macros" = [ "dep:deranged-macros" ]; "num" = [ "dep:num-traits" ]; "powerfmt" = [ "dep:powerfmt" ]; @@ -2900,16 +2747,15 @@ rec { "rand" = [ "rand08" "rand09" ]; "rand08" = [ "dep:rand08" ]; "rand09" = [ "dep:rand09" ]; - "serde" = [ "dep:serde" ]; - "std" = [ "alloc" ]; + "serde" = [ "dep:serde_core" ]; }; - resolvedDefaultFeatures = [ "alloc" "powerfmt" "std" ]; + resolvedDefaultFeatures = [ "default" "powerfmt" ]; }; "derive_arbitrary" = rec { crateName = "derive_arbitrary"; - version = "1.4.1"; + version = "1.4.2"; edition = "2021"; - sha256 = "000839h4mbgs65x1f8540kbjk2ifw68c4d8r5b9f7q0jv4d2qm1h"; + sha256 = "0annkmfwfavd978vwwrxvrpykjfdnc3w6q1ln3j7kyfg5pc7nmhy"; procMacro = true; authors = [ "The Rust-Fuzz Project Developers" @@ -2929,7 +2775,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; features = [ "derive" "parsing" "extra-traits" ]; } ]; @@ -3053,7 +2899,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; } ]; features = { @@ -3109,6 +2955,28 @@ rec { ]; }; + "document-features" = rec { + crateName = "document-features"; + version = "0.2.11"; + edition = "2018"; + sha256 = "0pdhpbz687fk2rkgz45yy3gvbhlxliwb7g1lj3jbx1f1qr89n94m"; + procMacro = true; + libName = "document_features"; + libPath = "lib.rs"; + authors = [ + "Slint Developers " + ]; + dependencies = [ + { + name = "litrs"; + packageId = "litrs"; + usesDefaultFeatures = false; + } + ]; + features = { + }; + resolvedDefaultFeatures = [ "default" ]; + }; "dotenvy" = rec { crateName = "dotenvy"; version = "0.15.7"; @@ -3132,9 +3000,9 @@ rec { }; "dyn-clone" = rec { crateName = "dyn-clone"; - version = "1.0.19"; + version = "1.0.20"; edition = "2018"; - sha256 = "01ahm5abl20480v48nxy4ffyx80cs6263q9zf0gnrxpvm6w8yyhw"; + sha256 = "0m956cxcg8v2n8kmz6xs5zl13k2fak3zkapzfzzp7pxih6hix26h"; libName = "dyn_clone"; authors = [ "David Tolnay " @@ -3167,13 +3035,13 @@ rec { } { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; } ]; devDependencies = [ { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; features = [ "full" ]; } ]; @@ -3290,7 +3158,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; } ]; features = { @@ -3305,9 +3173,9 @@ rec { }; "errno" = rec { crateName = "errno"; - version = "0.3.13"; + version = "0.3.14"; edition = "2018"; - sha256 = "1bd5g3srn66zr3bspac0150bvpg1s7zi6zwhwhlayivciz12m3kp"; + sha256 = "1szgccmh8vgryqyadg8xd58mnwwicf39zmin3bsn63df2wbbgjir"; authors = [ "Chris Wong " "Dan Gohman " @@ -3333,7 +3201,7 @@ rec { } { name = "windows-sys"; - packageId = "windows-sys 0.60.2"; + packageId = "windows-sys 0.61.2"; target = { target, features }: (target."windows" or false); features = [ "Win32_Foundation" "Win32_System_Diagnostics_Debug" ]; } @@ -3346,9 +3214,9 @@ rec { }; "event-listener" = rec { crateName = "event-listener"; - version = "5.4.0"; + version = "5.4.1"; edition = "2021"; - sha256 = "1bii2gn3vaa33s0gr2zph7cagiq0ppcfxcxabs24ri9z9kgar4il"; + sha256 = "1asnp3agbr8shcl001yd935m167ammyi8hnvl0q1ycajryn6cfz1"; libName = "event_listener"; authors = [ "Stjepan Glavina " @@ -3429,13 +3297,13 @@ rec { } { name = "regex-automata"; - packageId = "regex-automata 0.4.9"; + packageId = "regex-automata"; usesDefaultFeatures = false; features = [ "alloc" "syntax" "meta" "nfa" "dfa" "hybrid" ]; } { name = "regex-syntax"; - packageId = "regex-syntax 0.8.5"; + packageId = "regex-syntax"; usesDefaultFeatures = false; } ]; @@ -3463,11 +3331,19 @@ rec { }; resolvedDefaultFeatures = [ "alloc" "default" "std" ]; }; + "find-msvc-tools" = rec { + crateName = "find-msvc-tools"; + version = "0.1.4"; + edition = "2018"; + sha256 = "09x1sfinrz86bkm6i2d85lpsfnxn0w797g5zisv1nwhaz1w1h1aj"; + libName = "find_msvc_tools"; + + }; "flate2" = rec { crateName = "flate2"; - version = "1.1.2"; + version = "1.1.4"; edition = "2018"; - sha256 = "07abz7v50lkdr5fjw8zaw2v8gm2vbppc0f7nqm8x3v3gb6wpsgaa"; + sha256 = "1a8a3pk2r2dxays4ikc47ygydhpd1dcxlgqdi3r9kiiq9rb4wnnw"; authors = [ "Alex Crichton " "Josh Triplett " @@ -3482,14 +3358,14 @@ rec { packageId = "miniz_oxide"; optional = true; usesDefaultFeatures = false; - features = [ "with-alloc" ]; + features = [ "with-alloc" "simd" ]; } { name = "miniz_oxide"; packageId = "miniz_oxide"; usesDefaultFeatures = false; target = { target, features }: (("wasm32" == target."arch" or null) && (!("emscripten" == target."os" or null))); - features = [ "with-alloc" ]; + features = [ "with-alloc" "simd" ]; } ]; features = { @@ -3539,9 +3415,9 @@ rec { }; "form_urlencoded" = rec { crateName = "form_urlencoded"; - version = "1.2.1"; + version = "1.2.2"; edition = "2018"; - sha256 = "0milh8x7nl4f450s3ddhg57a3flcv6yq8hlkyk6fyr3mcb128dp1"; + sha256 = "1kqzb2qn608rxl3dws04zahcklpplkd5r1vpabwga5l50d2v4k6b"; authors = [ "The rust-url developers" ]; @@ -3721,7 +3597,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; features = [ "full" ]; } ]; @@ -3854,9 +3730,9 @@ rec { }; "generic-array" = rec { crateName = "generic-array"; - version = "0.14.7"; + version = "0.14.9"; edition = "2015"; - sha256 = "16lyyrzrljfq424c3n8kfwkqihlimmsg5nhshbbp48np3yjrqr45"; + sha256 = "1wpdn5ngpqkkyyibbg7wa4cfg0y8zjc57spaia2h47jkk0qp9djb"; libName = "generic_array"; authors = [ "Bartłomiej Kamiński " @@ -3907,7 +3783,7 @@ rec { } { name = "wasi"; - packageId = "wasi 0.11.1+wasi-snapshot-preview1"; + packageId = "wasi"; usesDefaultFeatures = false; target = { target, features }: ("wasi" == target."os" or null); } @@ -3929,11 +3805,11 @@ rec { }; resolvedDefaultFeatures = [ "js" "js-sys" "std" "wasm-bindgen" ]; }; - "getrandom 0.3.3" = rec { + "getrandom 0.3.4" = rec { crateName = "getrandom"; - version = "0.3.3"; + version = "0.3.4"; edition = "2021"; - sha256 = "1x6jl875zp6b2b6qp9ghc84b0l76bvng2lvm8zfcmwjl7rb5w516"; + sha256 = "1zbpvpicry9lrbjmkd4msgj3ihff1q92i334chk7pzf46xffz7c9"; authors = [ "The Rand Project Developers" ]; @@ -4004,8 +3880,8 @@ rec { target = { target, features }: (("uefi" == target."os" or null) && ("efi_rng" == target."getrandom_backend" or null)); } { - name = "wasi"; - packageId = "wasi 0.14.2+wasi-0.2.4"; + name = "wasip2"; + packageId = "wasip2"; usesDefaultFeatures = false; target = { target, features }: (("wasm32" == target."arch" or null) && ("wasi" == target."os" or null) && ("p2" == target."env" or null)); } @@ -4018,33 +3894,15 @@ rec { } ]; features = { - "rustc-dep-of-std" = [ "dep:compiler_builtins" "dep:core" ]; "wasm_js" = [ "dep:wasm-bindgen" "dep:js-sys" ]; }; resolvedDefaultFeatures = [ "std" "wasm_js" ]; }; - "gimli" = rec { - crateName = "gimli"; - version = "0.31.1"; - edition = "2018"; - sha256 = "0gvqc0ramx8szv76jhfd4dms0zyamvlg4whhiz11j34hh3dqxqh7"; - features = { - "default" = [ "read-all" "write" ]; - "endian-reader" = [ "read" "dep:stable_deref_trait" ]; - "fallible-iterator" = [ "dep:fallible-iterator" ]; - "read" = [ "read-core" ]; - "read-all" = [ "read" "std" "fallible-iterator" "endian-reader" ]; - "rustc-dep-of-std" = [ "dep:core" "dep:alloc" "dep:compiler_builtins" ]; - "std" = [ "fallible-iterator?/std" "stable_deref_trait?/std" ]; - "write" = [ "dep:indexmap" ]; - }; - resolvedDefaultFeatures = [ "read" "read-core" ]; - }; "glob" = rec { crateName = "glob"; - version = "0.3.2"; + version = "0.3.3"; edition = "2015"; - sha256 = "1cm2w34b5w45fxr522h5b0fv1bxchfswcj560m3pnjbia7asvld8"; + sha256 = "106jpd3syfzjfj2k70mwm0v436qbx96wig98m4q8x071yrq35hhc"; authors = [ "The Rust Project Developers" ]; @@ -4052,9 +3910,9 @@ rec { }; "globset" = rec { crateName = "globset"; - version = "0.4.16"; - edition = "2021"; - sha256 = "1xa9ivqs74imf1q288spxh49g6iw2mn3x9snibdgapazzj6h58al"; + version = "0.4.17"; + edition = "2024"; + sha256 = "0193nqd7xy7625x4ba81yarw78j8i2zi7mygfn01z52dh0q93dpa"; authors = [ "Andrew Gallant " ]; @@ -4076,18 +3934,19 @@ rec { } { name = "regex-automata"; - packageId = "regex-automata 0.4.9"; + packageId = "regex-automata"; usesDefaultFeatures = false; features = [ "std" "perf" "syntax" "meta" "nfa" "hybrid" ]; } { name = "regex-syntax"; - packageId = "regex-syntax 0.8.5"; + packageId = "regex-syntax"; usesDefaultFeatures = false; features = [ "std" ]; } ]; features = { + "arbitrary" = [ "dep:arbitrary" ]; "default" = [ "log" ]; "log" = [ "dep:log" ]; "serde" = [ "dep:serde" ]; @@ -4157,9 +4016,9 @@ rec { }; "h2" = rec { crateName = "h2"; - version = "0.4.11"; + version = "0.4.12"; edition = "2021"; - sha256 = "118771sqbsa6cn48y9waxq24jx80f5xy8af0lq5ixq7ifsi51nhp"; + sha256 = "11hk5mpid8757z6n3v18jwb62ikffrgzjlrgpzqvkqdlzjfbdh7k"; authors = [ "Carl Lerche " "Sean McArthur " @@ -4193,7 +4052,7 @@ rec { } { name = "indexmap"; - packageId = "indexmap 2.10.0"; + packageId = "indexmap 2.11.4"; features = [ "std" ]; } { @@ -4249,11 +4108,11 @@ rec { }; resolvedDefaultFeatures = [ "raw" ]; }; - "hashbrown 0.15.4" = rec { + "hashbrown 0.15.5" = rec { crateName = "hashbrown"; - version = "0.15.4"; + version = "0.15.5"; edition = "2021"; - sha256 = "1mg045sm1nm00cwjm7ndi80hcmmv1v3z7gnapxyhd9qxc62sqwar"; + sha256 = "189qaczmjxnikm9db748xyhiw04kpmhm9xj9k9hg0sgx7pjwyacj"; authors = [ "Amanieu d'Antras " ]; @@ -4292,6 +4151,27 @@ rec { }; resolvedDefaultFeatures = [ "allocator-api2" "default" "default-hasher" "equivalent" "inline-more" "raw-entry" ]; }; + "hashbrown 0.16.0" = rec { + crateName = "hashbrown"; + version = "0.16.0"; + edition = "2021"; + sha256 = "13blh9j2yv77a6ni236ixiwdzbc1sh2bc4bdpaz7y859yv2bs6al"; + authors = [ + "Amanieu d'Antras " + ]; + features = { + "alloc" = [ "dep:alloc" ]; + "allocator-api2" = [ "dep:allocator-api2" ]; + "core" = [ "dep:core" ]; + "default" = [ "default-hasher" "inline-more" "allocator-api2" "equivalent" "raw-entry" ]; + "default-hasher" = [ "dep:foldhash" ]; + "equivalent" = [ "dep:equivalent" ]; + "nightly" = [ "foldhash?/nightly" "bumpalo/allocator_api" ]; + "rayon" = [ "dep:rayon" ]; + "rustc-dep-of-std" = [ "nightly" "core" "alloc" "rustc-internal-api" ]; + "serde" = [ "dep:serde" ]; + }; + }; "headers" = rec { crateName = "headers"; version = "0.4.1"; @@ -4378,7 +4258,7 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.6"; + packageId = "snafu 0.8.9"; features = [ "futures" ]; } ]; @@ -4419,7 +4299,7 @@ rec { } { name = "windows-link"; - packageId = "windows-link"; + packageId = "windows-link 0.1.3"; target = { target, features }: ("windows" == target."os" or null); } ]; @@ -4561,13 +4441,18 @@ rec { }; "hyper" = rec { crateName = "hyper"; - version = "1.6.0"; + version = "1.7.0"; edition = "2021"; - sha256 = "103ggny2k31z0iq2gzwk2vbx601wx6xkpjpxn40hr3p3b0b5fayc"; + sha256 = "07n59pxzlq621z611cbpvh7p4h9h15v0r7m5wgxygpx02d5aafpb"; authors = [ "Sean McArthur " ]; dependencies = [ + { + name = "atomic-waker"; + packageId = "atomic-waker"; + optional = true; + } { name = "bytes"; packageId = "bytes"; @@ -4578,10 +4463,9 @@ rec { optional = true; } { - name = "futures-util"; - packageId = "futures-util"; + name = "futures-core"; + packageId = "futures-core"; optional = true; - usesDefaultFeatures = false; } { name = "h2"; @@ -4616,6 +4500,11 @@ rec { packageId = "pin-project-lite"; optional = true; } + { + name = "pin-utils"; + packageId = "pin-utils"; + optional = true; + } { name = "smallvec"; packageId = "smallvec"; @@ -4639,12 +4528,6 @@ rec { packageId = "futures-channel"; features = [ "sink" ]; } - { - name = "futures-util"; - packageId = "futures-util"; - usesDefaultFeatures = false; - features = [ "alloc" "sink" ]; - } { name = "pin-project-lite"; packageId = "pin-project-lite"; @@ -4657,10 +4540,10 @@ rec { ]; features = { "client" = [ "dep:want" "dep:pin-project-lite" "dep:smallvec" ]; - "ffi" = [ "dep:http-body-util" "futures-util?/alloc" ]; + "ffi" = [ "dep:http-body-util" "dep:futures-util" ]; "full" = [ "client" "http1" "http2" "server" ]; - "http1" = [ "dep:futures-channel" "dep:futures-util" "dep:httparse" "dep:itoa" ]; - "http2" = [ "dep:futures-channel" "dep:futures-util" "dep:h2" ]; + "http1" = [ "dep:atomic-waker" "dep:futures-channel" "dep:futures-core" "dep:httparse" "dep:itoa" "dep:pin-utils" ]; + "http2" = [ "dep:futures-channel" "dep:futures-core" "dep:h2" ]; "server" = [ "dep:httpdate" "dep:pin-project-lite" "dep:smallvec" ]; "tracing" = [ "dep:tracing" ]; }; @@ -4798,7 +4681,7 @@ rec { } { name = "rustls-native-certs"; - packageId = "rustls-native-certs 0.8.1"; + packageId = "rustls-native-certs 0.8.2"; optional = true; } { @@ -4977,9 +4860,9 @@ rec { }; "hyper-util" = rec { crateName = "hyper-util"; - version = "0.1.15"; + version = "0.1.17"; edition = "2021"; - sha256 = "1pyi2h8idwyadljs95gpihjvkfkmcxi5vn7s882vy0kg9jyxarkz"; + sha256 = "1a5fcnz0alrg4lx9xf6ja66ihaab58jnm5msnky804wg39cras9w"; libName = "hyper_util"; authors = [ "Sean McArthur " @@ -5042,7 +4925,7 @@ rec { } { name = "socket2"; - packageId = "socket2"; + packageId = "socket2 0.6.1"; optional = true; features = [ "all" ]; } @@ -5088,7 +4971,7 @@ rec { } ]; features = { - "client" = [ "hyper/client" "dep:tracing" "dep:futures-channel" "dep:tower-service" ]; + "client" = [ "hyper/client" "tokio/net" "dep:tracing" "dep:futures-channel" "dep:tower-service" ]; "client-legacy" = [ "client" "dep:socket2" "tokio/sync" "dep:libc" "dep:futures-util" ]; "client-proxy" = [ "client" "dep:base64" "dep:ipnet" "dep:percent-encoding" ]; "client-proxy-system" = [ "dep:system-configuration" "dep:windows-registry" ]; @@ -5099,16 +4982,16 @@ rec { "server-auto" = [ "server" "http1" "http2" ]; "server-graceful" = [ "server" "tokio/sync" ]; "service" = [ "dep:tower-service" ]; - "tokio" = [ "dep:tokio" "tokio/net" "tokio/rt" "tokio/time" ]; + "tokio" = [ "dep:tokio" "tokio/rt" "tokio/time" ]; "tracing" = [ "dep:tracing" ]; }; resolvedDefaultFeatures = [ "client" "client-legacy" "client-proxy" "default" "http1" "http2" "server" "server-auto" "service" "tokio" ]; }; "iana-time-zone" = rec { crateName = "iana-time-zone"; - version = "0.1.63"; + version = "0.1.64"; edition = "2021"; - sha256 = "1n171f5lbc7bryzmp1h30zw86zbvl5480aq02z92lcdwvvjikjdh"; + sha256 = "1yz980fmhaq9bdkasz35z63az37ci6kzzfhya83kgdqba61pzr9k"; libName = "iana_time_zone"; authors = [ "Andrew Straw " @@ -5492,9 +5375,9 @@ rec { }; "idna" = rec { crateName = "idna"; - version = "1.0.3"; + version = "1.1.0"; edition = "2018"; - sha256 = "0zlajvm2k3wy0ay8plr07w22hxkkmrxkffa6ah57ac6nci984vv8"; + sha256 = "1pp4n7hppm480zcx411dsv9wfibai00wbpgnjj4qj0xa7kr7a21v"; authors = [ "The rust-url developers" ]; @@ -5547,9 +5430,9 @@ rec { }; "ignore" = rec { crateName = "ignore"; - version = "0.4.23"; - edition = "2021"; - sha256 = "0jysggjfmlxbg60vhhiz4pb8jfb7cnq5swdsvxknbs7x18wgv2bd"; + version = "0.4.24"; + edition = "2024"; + sha256 = "00q41xq3wri74kpjmxb60mpkpj81n4pfa0wdqby2lhv4jipnwxw1"; authors = [ "Andrew Gallant " ]; @@ -5572,7 +5455,7 @@ rec { } { name = "regex-automata"; - packageId = "regex-automata 0.4.9"; + packageId = "regex-automata"; usesDefaultFeatures = false; features = [ "std" "perf" "syntax" "meta" "nfa" "hybrid" "dfa-onepass" ]; } @@ -5621,11 +5504,11 @@ rec { "serde-1" = [ "serde" ]; }; }; - "indexmap 2.10.0" = rec { + "indexmap 2.11.4" = rec { crateName = "indexmap"; - version = "2.10.0"; + version = "2.11.4"; edition = "2021"; - sha256 = "0qd6g26gxzl6dbf132w48fa8rr95glly3jhbk90i29726d9xhk7y"; + sha256 = "1rc8bgcjzfcskz1zipjjm7s3m1jskzhnhr9jxmsafhdk1xv863sb"; dependencies = [ { name = "equivalent"; @@ -5634,7 +5517,7 @@ rec { } { name = "hashbrown"; - packageId = "hashbrown 0.15.4"; + packageId = "hashbrown 0.16.0"; usesDefaultFeatures = false; } { @@ -5642,6 +5525,21 @@ rec { packageId = "serde"; optional = true; usesDefaultFeatures = false; + target = { target, features }: false; + } + { + name = "serde_core"; + packageId = "serde_core"; + optional = true; + usesDefaultFeatures = false; + } + ]; + devDependencies = [ + { + name = "serde"; + packageId = "serde"; + usesDefaultFeatures = false; + features = [ "derive" ]; } ]; features = { @@ -5650,7 +5548,8 @@ rec { "default" = [ "std" ]; "quickcheck" = [ "dep:quickcheck" ]; "rayon" = [ "dep:rayon" ]; - "serde" = [ "dep:serde" ]; + "serde" = [ "dep:serde_core" "dep:serde" ]; + "sval" = [ "dep:sval" ]; }; resolvedDefaultFeatures = [ "default" "serde" "std" ]; }; @@ -5662,7 +5561,7 @@ rec { dependencies = [ { name = "console"; - packageId = "console 0.16.0"; + packageId = "console"; usesDefaultFeatures = false; features = [ "ansi-parsing" "std" ]; } @@ -5672,7 +5571,7 @@ rec { } { name = "unicode-width"; - packageId = "unicode-width 0.2.1"; + packageId = "unicode-width 0.2.2"; optional = true; } { @@ -5722,44 +5621,13 @@ rec { "std" = [ "block-padding/std" ]; }; }; - "io-uring" = rec { - crateName = "io-uring"; - version = "0.7.8"; - edition = "2021"; - sha256 = "04whnj5a4pml44jhsmmf4p87bpgr7swkcijx4yjcng8900pj0vmq"; - libName = "io_uring"; + "ipnet" = rec { + crateName = "ipnet"; + version = "2.11.0"; + edition = "2018"; + sha256 = "0c5i9sfi2asai28m8xp48k5gvwkqrg5ffpi767py6mzsrswv17s6"; authors = [ - "quininer " - ]; - dependencies = [ - { - name = "bitflags"; - packageId = "bitflags"; - } - { - name = "cfg-if"; - packageId = "cfg-if"; - } - { - name = "libc"; - packageId = "libc"; - usesDefaultFeatures = false; - } - ]; - features = { - "bindgen" = [ "dep:bindgen" ]; - "direct-syscall" = [ "sc" ]; - "overwrite" = [ "bindgen" ]; - "sc" = [ "dep:sc" ]; - }; - }; - "ipnet" = rec { - crateName = "ipnet"; - version = "2.11.0"; - edition = "2018"; - sha256 = "0c5i9sfi2asai28m8xp48k5gvwkqrg5ffpi767py6mzsrswv17s6"; - authors = [ - "Kris Price " + "Kris Price " ]; features = { "default" = [ "std" ]; @@ -5893,9 +5761,9 @@ rec { }; "js-sys" = rec { crateName = "js-sys"; - version = "0.3.77"; + version = "0.3.81"; edition = "2021"; - sha256 = "13x2qcky5l22z4xgivi59xhjjx4kxir1zg7gcj0f1ijzd4yg7yhw"; + sha256 = "01ckbf16iwh7qj92fax9zh8vf2y9sk60cli6999cn7a1jxx96j7c"; libName = "js_sys"; authors = [ "The wasm-bindgen Developers" @@ -5920,9 +5788,9 @@ rec { }; "json-patch" = rec { crateName = "json-patch"; - version = "4.0.0"; + version = "4.1.0"; edition = "2021"; - sha256 = "1x7sn0j8qxkdm5rrvzhz3kvsl9bb9s24szpa9ijgffd0c7b994hm"; + sha256 = "147yaxmv3i4s0bdna86rgwpmqh2507fn4ighfpplaiqkw8ay807k"; libName = "json_patch"; authors = [ "Ivan Dubrov " @@ -5955,6 +5823,7 @@ rec { ]; features = { "default" = [ "diff" ]; + "schemars" = [ "dep:schemars" ]; "utoipa" = [ "dep:utoipa" ]; }; resolvedDefaultFeatures = [ "default" "diff" ]; @@ -5987,7 +5856,7 @@ rec { } { name = "thiserror"; - packageId = "thiserror 2.0.12"; + packageId = "thiserror 2.0.17"; } ]; @@ -6107,7 +5976,7 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.6"; + packageId = "snafu 0.8.9"; } ]; features = { @@ -6328,7 +6197,7 @@ rec { } { name = "thiserror"; - packageId = "thiserror 2.0.12"; + packageId = "thiserror 2.0.17"; } { name = "tokio"; @@ -6496,7 +6365,7 @@ rec { } { name = "thiserror"; - packageId = "thiserror 2.0.12"; + packageId = "thiserror 2.0.17"; } ]; devDependencies = [ @@ -6553,7 +6422,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; features = [ "extra-traits" ]; } ]; @@ -6612,7 +6481,7 @@ rec { } { name = "hashbrown"; - packageId = "hashbrown 0.15.4"; + packageId = "hashbrown 0.15.5"; } { name = "hostname"; @@ -6651,7 +6520,7 @@ rec { } { name = "thiserror"; - packageId = "thiserror 2.0.12"; + packageId = "thiserror 2.0.17"; } { name = "tokio"; @@ -6704,9 +6573,9 @@ rec { }; "libc" = rec { crateName = "libc"; - version = "0.2.174"; + version = "0.2.177"; edition = "2021"; - sha256 = "0xl7pqvw7g2874dy3kjady2fjr4rhj5lxsnxkkhr5689jcr6jw8i"; + sha256 = "0xjrn69cywaii1iq2lib201bhlvan7czmrm604h5qcm28yps4x18"; authors = [ "The Rust Project Developers" ]; @@ -6720,9 +6589,9 @@ rec { }; "libloading" = rec { crateName = "libloading"; - version = "0.8.8"; + version = "0.8.9"; edition = "2015"; - sha256 = "0rw6q94psj3d6k0bi9nymqhyrz78lbdblryphhaszsw9p9ikj0q7"; + sha256 = "0mfwxwjwi2cf0plxcd685yxzavlslz7xirss3b9cbrzyk4hv1i6p"; authors = [ "Simonas Kazlauskas " ]; @@ -6733,8 +6602,8 @@ rec { target = { target, features }: (target."unix" or false); } { - name = "windows-targets"; - packageId = "windows-targets 0.53.2"; + name = "windows-link"; + packageId = "windows-link 0.2.1"; target = { target, features }: (target."windows" or false); } ]; @@ -6756,9 +6625,9 @@ rec { }; "libredox" = rec { crateName = "libredox"; - version = "0.1.4"; + version = "0.1.10"; edition = "2021"; - sha256 = "0f06ikfym363zrqy9llp4asgcbakz0aiq0ds0rkljdg52088100m"; + sha256 = "1jswil4ai90s4rh91fg8580x8nikni1zl3wnch4h01nvidqpwvs1"; authors = [ "4lDO2 <4lDO2@protonmail.com>" ]; @@ -6785,7 +6654,23 @@ rec { }; resolvedDefaultFeatures = [ "call" "default" "redox_syscall" "std" ]; }; - "linux-raw-sys" = rec { + "linux-raw-sys 0.11.0" = rec { + crateName = "linux-raw-sys"; + version = "0.11.0"; + edition = "2021"; + sha256 = "0fghx0nn8nvbz5yzgizfcwd6ap2pislp68j8c1bwyr6sacxkq7fz"; + libName = "linux_raw_sys"; + authors = [ + "Dan Gohman " + ]; + features = { + "core" = [ "dep:core" ]; + "default" = [ "std" "general" "errno" ]; + "rustc-dep-of-std" = [ "core" "no_std" ]; + }; + resolvedDefaultFeatures = [ "auxvec" "elf" "errno" "general" "ioctl" "no_std" ]; + }; + "linux-raw-sys 0.4.15" = rec { crateName = "linux-raw-sys"; version = "0.4.15"; edition = "2021"; @@ -6819,11 +6704,26 @@ rec { }; resolvedDefaultFeatures = [ "alloc" ]; }; + "litrs" = rec { + crateName = "litrs"; + version = "0.4.2"; + edition = "2018"; + sha256 = "1v8bxsrkm0w2k9nmbp8hsspy9i1lawajywqdw4hx87rjzqv41rgm"; + authors = [ + "Lukas Kalbertodt " + ]; + features = { + "check_suffix" = [ "unicode-xid" ]; + "default" = [ "proc-macro2" ]; + "proc-macro2" = [ "dep:proc-macro2" ]; + "unicode-xid" = [ "dep:unicode-xid" ]; + }; + }; "lock_api" = rec { crateName = "lock_api"; - version = "0.4.13"; + version = "0.4.14"; edition = "2021"; - sha256 = "0rd73p4299mjwl4hhlfj9qr88v3r0kc8s1nszkfmnq2ky43nb4wn"; + sha256 = "0rg9mhx7vdpajfxvdjmgmlyrn20ligzqvn8ifmaz7dc79gkrjhr2"; authors = [ "Amanieu d'Antras " ]; @@ -6834,12 +6734,6 @@ rec { usesDefaultFeatures = false; } ]; - buildDependencies = [ - { - name = "autocfg"; - packageId = "autocfg"; - } - ]; features = { "default" = [ "atomic_usize" ]; "owning_ref" = [ "dep:owning_ref" ]; @@ -6849,9 +6743,9 @@ rec { }; "log" = rec { crateName = "log"; - version = "0.4.27"; + version = "0.4.28"; edition = "2021"; - sha256 = "150x589dqil307rv0rwj0jsgz5bjbwvl83gyl61jf873a7rjvp0k"; + sha256 = "0cklpzrpxafbaq1nyxarhnmcw9z3xcjrad3ch55mmr58xw2ha21l"; authors = [ "The Rust Project Developers" ]; @@ -6883,19 +6777,23 @@ rec { }; "matchers" = rec { crateName = "matchers"; - version = "0.1.0"; + version = "0.2.0"; edition = "2018"; - sha256 = "0n2mbk7lg2vf962c8xwzdq96yrc9i0p8dbmm4wa1nnkcp1dhfqw2"; + sha256 = "1sasssspdj2vwcwmbq3ra18d3qniapkimfcbr47zmx6750m5llni"; authors = [ "Eliza Weisman " ]; dependencies = [ { name = "regex-automata"; - packageId = "regex-automata 0.1.10"; + packageId = "regex-automata"; + usesDefaultFeatures = false; + features = [ "syntax" "dfa-build" "dfa-search" ]; } ]; - + features = { + "unicode" = [ "regex-automata/unicode" ]; + }; }; "matchit 0.7.3" = rec { crateName = "matchit"; @@ -6923,9 +6821,9 @@ rec { }; "memchr" = rec { crateName = "memchr"; - version = "2.7.5"; + version = "2.7.6"; edition = "2021"; - sha256 = "1h2bh2jajkizz04fh047lpid5wgw2cr9igpkdhl3ibzscpd858ij"; + sha256 = "0wy29kf6pb4fbhfksjbs05jy2f32r2f3r1ga6qkmpz31k79h0azm"; authors = [ "Andrew Gallant " "bluss" @@ -7009,6 +6907,12 @@ rec { packageId = "adler2"; usesDefaultFeatures = false; } + { + name = "simd-adler32"; + packageId = "simd-adler32"; + optional = true; + usesDefaultFeatures = false; + } ]; features = { "alloc" = [ "dep:alloc" ]; @@ -7019,13 +6923,13 @@ rec { "simd" = [ "simd-adler32" ]; "simd-adler32" = [ "dep:simd-adler32" ]; }; - resolvedDefaultFeatures = [ "with-alloc" ]; + resolvedDefaultFeatures = [ "simd" "simd-adler32" "with-alloc" ]; }; "mio" = rec { crateName = "mio"; - version = "1.0.4"; + version = "1.1.0"; edition = "2021"; - sha256 = "073n3kam3nz8j8had35fd2nn7j6a33pi3y5w3kq608cari2d9gkq"; + sha256 = "0wr816q3jrjwiajvw807lgi540i9s6r78a5fx4ycz3nwhq03pn39"; authors = [ "Carl Lerche " "Thomas de Zeeuw " @@ -7049,14 +6953,14 @@ rec { } { name = "wasi"; - packageId = "wasi 0.11.1+wasi-snapshot-preview1"; + packageId = "wasi"; target = { target, features }: ("wasi" == target."os" or null); } { name = "windows-sys"; - packageId = "windows-sys 0.59.0"; + packageId = "windows-sys 0.61.2"; target = { target, features }: (target."windows" or false); - features = [ "Wdk_Foundation" "Wdk_Storage_FileSystem" "Wdk_System_IO" "Win32_Foundation" "Win32_Networking_WinSock" "Win32_Storage_FileSystem" "Win32_System_IO" "Win32_System_WindowsProgramming" ]; + features = [ "Wdk_Foundation" "Wdk_Storage_FileSystem" "Wdk_System_IO" "Win32_Foundation" "Win32_Networking_WinSock" "Win32_Storage_FileSystem" "Win32_Security" "Win32_System_IO" "Win32_System_WindowsProgramming" ]; } ]; features = { @@ -7157,9 +7061,9 @@ rec { }; "nu-ansi-term" = rec { crateName = "nu-ansi-term"; - version = "0.46.0"; - edition = "2018"; - sha256 = "115sywxh53p190lyw97alm14nc004qj5jm5lvdj608z84rbida3p"; + version = "0.50.3"; + edition = "2021"; + sha256 = "1ra088d885lbd21q1bxgpqdlk1zlndblmarn948jz2a40xsbjmvr"; libName = "nu_ansi_term"; authors = [ "ogham@bsago.me" @@ -7169,20 +7073,19 @@ rec { ]; dependencies = [ { - name = "overload"; - packageId = "overload"; - } - { - name = "winapi"; - packageId = "winapi"; - target = { target, features }: ("windows" == target."os" or null); - features = [ "consoleapi" "errhandlingapi" "fileapi" "handleapi" "processenv" ]; + name = "windows-sys"; + packageId = "windows-sys 0.61.2"; + rename = "windows"; + target = { target, features }: (target."windows" or false); + features = [ "Win32_Foundation" "Win32_System_Console" "Win32_Storage_FileSystem" "Win32_Security" ]; } ]; features = { + "default" = [ "std" ]; "derive_serde_style" = [ "serde" ]; "serde" = [ "dep:serde" ]; }; + resolvedDefaultFeatures = [ "default" "std" ]; }; "num-conv" = rec { crateName = "num-conv"; @@ -7271,14 +7174,14 @@ rec { } { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; features = [ "parsing" ]; } ]; devDependencies = [ { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; features = [ "extra-traits" "parsing" ]; } ]; @@ -7300,40 +7203,6 @@ rec { ]; }; - "object" = rec { - crateName = "object"; - version = "0.36.7"; - edition = "2018"; - sha256 = "11vv97djn9nc5n6w1gc6bd96d2qk2c8cg1kw5km9bsi3v4a8x532"; - dependencies = [ - { - name = "memchr"; - packageId = "memchr"; - usesDefaultFeatures = false; - } - ]; - features = { - "all" = [ "read" "write" "build" "std" "compression" "wasm" ]; - "alloc" = [ "dep:alloc" ]; - "build" = [ "build_core" "write_std" "elf" ]; - "build_core" = [ "read_core" "write_core" ]; - "compiler_builtins" = [ "dep:compiler_builtins" ]; - "compression" = [ "dep:flate2" "dep:ruzstd" "std" ]; - "core" = [ "dep:core" ]; - "default" = [ "read" "compression" ]; - "doc" = [ "read_core" "write_std" "build_core" "std" "compression" "archive" "coff" "elf" "macho" "pe" "wasm" "xcoff" ]; - "pe" = [ "coff" ]; - "read" = [ "read_core" "archive" "coff" "elf" "macho" "pe" "xcoff" "unaligned" ]; - "rustc-dep-of-std" = [ "core" "compiler_builtins" "alloc" "memchr/rustc-dep-of-std" ]; - "std" = [ "memchr/std" ]; - "unstable-all" = [ "all" "unstable" ]; - "wasm" = [ "dep:wasmparser" ]; - "write" = [ "write_std" "coff" "elf" "macho" "pe" "xcoff" ]; - "write_core" = [ "dep:crc32fast" "dep:indexmap" "dep:hashbrown" ]; - "write_std" = [ "write_core" "std" "indexmap?/std" "crc32fast?/std" ]; - }; - resolvedDefaultFeatures = [ "archive" "coff" "elf" "macho" "pe" "read_core" "unaligned" "xcoff" ]; - }; "once_cell" = rec { crateName = "once_cell"; version = "1.21.3"; @@ -7401,7 +7270,7 @@ rec { } { name = "thiserror"; - packageId = "thiserror 2.0.12"; + packageId = "thiserror 2.0.17"; optional = true; usesDefaultFeatures = false; } @@ -7579,7 +7448,7 @@ rec { } { name = "thiserror"; - packageId = "thiserror 2.0.12"; + packageId = "thiserror 2.0.17"; usesDefaultFeatures = false; } { @@ -7749,7 +7618,7 @@ rec { } { name = "thiserror"; - packageId = "thiserror 2.0.12"; + packageId = "thiserror 2.0.17"; usesDefaultFeatures = false; } { @@ -7845,16 +7714,6 @@ rec { }; resolvedDefaultFeatures = [ "default" "std" ]; }; - "overload" = rec { - crateName = "overload"; - version = "0.1.1"; - edition = "2018"; - sha256 = "0fdgbaqwknillagy1xq7xfgv60qdbk010diwl7s1p0qx7hb16n5i"; - authors = [ - "Daniel Salvadori " - ]; - - }; "parking" = rec { crateName = "parking"; version = "2.2.1"; @@ -7870,9 +7729,9 @@ rec { }; "parking_lot" = rec { crateName = "parking_lot"; - version = "0.12.4"; + version = "0.12.5"; edition = "2021"; - sha256 = "04sab1c7304jg8k0d5b2pxbj1fvgzcf69l3n2mfpkdb96vs8pmbh"; + sha256 = "06jsqh9aqmc94j2rlm8gpccilqm6bskbd67zf6ypfc0f4m9p91ck"; authors = [ "Amanieu d'Antras " ]; @@ -7897,9 +7756,9 @@ rec { }; "parking_lot_core" = rec { crateName = "parking_lot_core"; - version = "0.9.11"; + version = "0.9.12"; edition = "2021"; - sha256 = "19g4d6m5k4ggacinqprnn8xvdaszc3y5smsmbz1adcdmaqm8v0xw"; + sha256 = "1hb4rggy70fwa1w9nb0svbyflzdc69h047482v2z3sx2hmcnh896"; authors = [ "Amanieu d'Antras " ]; @@ -7923,16 +7782,15 @@ rec { packageId = "smallvec"; } { - name = "windows-targets"; - packageId = "windows-targets 0.52.6"; + name = "windows-link"; + packageId = "windows-link 0.2.1"; target = { target, features }: (target."windows" or false); } ]; features = { "backtrace" = [ "dep:backtrace" ]; - "deadlock_detection" = [ "petgraph" "thread-id" "backtrace" ]; + "deadlock_detection" = [ "petgraph" "backtrace" ]; "petgraph" = [ "dep:petgraph" ]; - "thread-id" = [ "dep:thread-id" ]; }; }; "parse-zoneinfo" = rec { @@ -7953,9 +7811,9 @@ rec { }; "pem" = rec { crateName = "pem"; - version = "3.0.5"; + version = "3.0.6"; edition = "2021"; - sha256 = "1wwfk8sbyi9l18fvvn6z9p2gy7v7q7wimbhvrvixxj8a8zl3ibrq"; + sha256 = "1glia9vv51wx79cysqxgdha6g1bwbbr20bfhijlk2nxw4qycac0x"; authors = [ "Jonathan Creekmore " ]; @@ -7967,24 +7825,24 @@ rec { features = [ "alloc" ]; } { - name = "serde"; - packageId = "serde"; + name = "serde_core"; + packageId = "serde_core"; optional = true; usesDefaultFeatures = false; } ]; features = { "default" = [ "std" ]; - "serde" = [ "dep:serde" ]; - "std" = [ "base64/std" "serde?/std" ]; + "serde" = [ "dep:serde_core" ]; + "std" = [ "base64/std" "serde_core?/std" ]; }; resolvedDefaultFeatures = [ "default" "std" ]; }; "percent-encoding" = rec { crateName = "percent-encoding"; - version = "2.3.1"; + version = "2.3.2"; edition = "2018"; - sha256 = "0gi8wgx0dcy8rnv1kywdv98lwcx67hz0a0zwpib5v2i08r88y573"; + sha256 = "083jv1ai930azvawz2khv7w73xh8mnylk7i578cifndjn5y64kwv"; libName = "percent_encoding"; authors = [ "The rust-url developers" @@ -7997,9 +7855,9 @@ rec { }; "pest" = rec { crateName = "pest"; - version = "2.8.1"; + version = "2.8.3"; edition = "2021"; - sha256 = "08s342r6vv6ml5in4jk7pb97wgpf0frcnrvg0sqshn23sdb5zc0x"; + sha256 = "1x3xc1s5vhwswmmr51i60kfbcnp1zgdblsxbqd8dxvs0l0hpb7lq"; authors = [ "Dragoș Tiselice " ]; @@ -8009,11 +7867,6 @@ rec { packageId = "memchr"; optional = true; } - { - name = "thiserror"; - packageId = "thiserror 2.0.12"; - optional = true; - } { name = "ucd-trie"; packageId = "ucd-trie"; @@ -8023,17 +7876,17 @@ rec { features = { "default" = [ "std" "memchr" ]; "memchr" = [ "dep:memchr" ]; - "miette-error" = [ "std" "pretty-print" "dep:miette" "dep:thiserror" ]; + "miette-error" = [ "std" "pretty-print" "dep:miette" ]; "pretty-print" = [ "dep:serde" "dep:serde_json" ]; - "std" = [ "ucd-trie/std" "dep:thiserror" ]; + "std" = [ "ucd-trie/std" ]; }; resolvedDefaultFeatures = [ "default" "memchr" "std" ]; }; "pest_derive" = rec { crateName = "pest_derive"; - version = "2.8.1"; + version = "2.8.3"; edition = "2021"; - sha256 = "1g20ma4y29axbjhi3z64ihhpqzmiix71qjn7bs224yd7isg6s1dv"; + sha256 = "1pp2g39k2vjdyzr89k8zx5y7pp3np4iv635jpyxzmfhd0fisjz8q"; procMacro = true; authors = [ "Dragoș Tiselice " @@ -8060,9 +7913,9 @@ rec { }; "pest_generator" = rec { crateName = "pest_generator"; - version = "2.8.1"; + version = "2.8.3"; edition = "2021"; - sha256 = "0rj9a20g4bjb4sl3zyzpxqg8mbn8c1kxp0nw08rfp0gp73k09r47"; + sha256 = "0hr80m5xzzrhzjvnmbawk72cxvn0ssc5j216gblynmspizch3d29"; authors = [ "Dragoș Tiselice " ]; @@ -8086,7 +7939,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; } ]; features = { @@ -8099,9 +7952,9 @@ rec { }; "pest_meta" = rec { crateName = "pest_meta"; - version = "2.8.1"; + version = "2.8.3"; edition = "2021"; - sha256 = "1mf01iln7shbnyxpdfnpf59gzn83nndqjkwiw3yh6n8g2wgi1lgd"; + sha256 = "0nh6w1mv8hx0p1jli8s12j2w62ia2apsbyl69nf07yg9zqn7mwkj"; authors = [ "Dragoș Tiselice " ]; @@ -8248,7 +8101,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; usesDefaultFeatures = false; features = [ "parsing" "printing" "clone-impls" "proc-macro" "full" "visit-mut" ]; } @@ -8289,9 +8142,9 @@ rec { }; "potential_utf" = rec { crateName = "potential_utf"; - version = "0.1.2"; + version = "0.1.3"; edition = "2021"; - sha256 = "11dm6k3krx3drbvhgjw8z508giiv0m09wzl6ghza37176w4c79z5"; + sha256 = "12mhwvhpvvim6xqp6ifgkh1sniv9j2cmid6axn10fnjvpsnikpw4"; authors = [ "The ICU4X Project Developers" ]; @@ -8349,10 +8202,10 @@ rec { }; "prettyplease" = rec { crateName = "prettyplease"; - version = "0.2.35"; + version = "0.2.37"; edition = "2021"; links = "prettyplease02"; - sha256 = "16jklwmgqfzi6izcs6c4mqbmkzjv4zrbn9cx8wk9n1qycchi4706"; + sha256 = "0azn11i1kh0byabhsgab6kqs74zyrg69xkirzgqyhz6xmjnsi727"; authors = [ "David Tolnay " ]; @@ -8364,7 +8217,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; usesDefaultFeatures = false; features = [ "full" ]; } @@ -8377,7 +8230,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; usesDefaultFeatures = false; features = [ "clone-impls" "extra-traits" "parsing" "printing" "visit-mut" ]; } @@ -8389,9 +8242,9 @@ rec { }; "proc-macro-crate" = rec { crateName = "proc-macro-crate"; - version = "3.3.0"; + version = "3.4.0"; edition = "2021"; - sha256 = "0d9xlymplfi9yv3f5g4bp0d6qh70apnihvqcjllampx4f5lmikpd"; + sha256 = "10v9qi51n4phn1lrj5r94kjq7yhci9jrkqnn6wpan05yjsgb3711"; libName = "proc_macro_crate"; authors = [ "Bastian Köcher " @@ -8478,9 +8331,9 @@ rec { }; "proc-macro2" = rec { crateName = "proc-macro2"; - version = "1.0.95"; + version = "1.0.101"; edition = "2021"; - sha256 = "0y7pwxv6sh4fgg6s715ygk1i7g3w02c0ljgcsfm046isibkfbcq2"; + sha256 = "1pijhychkpl7rcyf1h7mfk6gjfii1ywf5n0snmnqs5g4hvyl7bl9"; libName = "proc_macro2"; authors = [ "David Tolnay " @@ -8543,7 +8396,7 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.6"; + packageId = "snafu 0.8.9"; } { name = "xml-rs"; @@ -8614,7 +8467,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; features = [ "extra-traits" ]; } ]; @@ -8622,9 +8475,9 @@ rec { }; "quinn" = rec { crateName = "quinn"; - version = "0.11.8"; + version = "0.11.9"; edition = "2021"; - sha256 = "1j02h87nfxww5mjcw4vjcnx8b70q0yinnc8xvjv82ryskii18qk2"; + sha256 = "086gzj666dr3slmlynkvxlndy28hahgl361d6bf93hk3i6ahmqmr"; dependencies = [ { name = "bytes"; @@ -8660,12 +8513,12 @@ rec { } { name = "socket2"; - packageId = "socket2"; + packageId = "socket2 0.6.1"; target = { target, features }: (!((builtins.elem "wasm" target."family") && ("unknown" == target."os" or null))); } { name = "thiserror"; - packageId = "thiserror 2.0.12"; + packageId = "thiserror 2.0.17"; } { name = "tokio"; @@ -8707,6 +8560,7 @@ rec { "futures-io" = [ "dep:futures-io" ]; "log" = [ "tracing/log" "proto/log" "udp/log" ]; "platform-verifier" = [ "proto/platform-verifier" ]; + "qlog" = [ "proto/qlog" ]; "ring" = [ "proto/ring" ]; "runtime-async-std" = [ "async-io" "async-std" ]; "runtime-smol" = [ "async-io" "smol" ]; @@ -8722,9 +8576,9 @@ rec { }; "quinn-proto" = rec { crateName = "quinn-proto"; - version = "0.11.12"; + version = "0.11.13"; edition = "2021"; - sha256 = "0bj2yyrf1mrg2bcj19ipsspvrj5sq0di0pz5maw5pj31j4x89ps9"; + sha256 = "0cca3mgja9p4w66f6sl1kfhj8rdf4mwsg1jxzssh9g63n14np47i"; libName = "quinn_proto"; dependencies = [ { @@ -8733,7 +8587,7 @@ rec { } { name = "getrandom"; - packageId = "getrandom 0.3.3"; + packageId = "getrandom 0.3.4"; usesDefaultFeatures = false; target = { target, features }: ((builtins.elem "wasm" target."family") && ("unknown" == target."os" or null)); features = [ "wasm_js" ]; @@ -8744,7 +8598,7 @@ rec { } { name = "rand"; - packageId = "rand 0.9.1"; + packageId = "rand 0.9.2"; } { name = "ring"; @@ -8780,7 +8634,7 @@ rec { } { name = "thiserror"; - packageId = "thiserror 2.0.12"; + packageId = "thiserror 2.0.17"; } { name = "tinyvec"; @@ -8807,6 +8661,7 @@ rec { "default" = [ "rustls-ring" "log" "bloom" ]; "log" = [ "tracing/log" ]; "platform-verifier" = [ "dep:rustls-platform-verifier" ]; + "qlog" = [ "dep:qlog" ]; "ring" = [ "dep:ring" ]; "rustls" = [ "rustls-ring" ]; "rustls-aws-lc-rs" = [ "dep:rustls" "rustls?/aws-lc-rs" "aws-lc-rs" ]; @@ -8818,9 +8673,9 @@ rec { }; "quinn-udp" = rec { crateName = "quinn-udp"; - version = "0.5.13"; + version = "0.5.14"; edition = "2021"; - sha256 = "0w0ri3wv5g419i5dfv4qmjxh4ayc4hp77y2gy4p3axp2kqhb3szw"; + sha256 = "1gacawr17a2zkyri0r3m0lc9spzmxbq1by3ilyb8v2mdvjhcdpmd"; libName = "quinn_udp"; dependencies = [ { @@ -8834,7 +8689,7 @@ rec { } { name = "socket2"; - packageId = "socket2"; + packageId = "socket2 0.6.1"; target = { target, features }: (!((builtins.elem "wasm" target."family") && ("unknown" == target."os" or null))); } { @@ -8846,7 +8701,7 @@ rec { } { name = "windows-sys"; - packageId = "windows-sys 0.59.0"; + packageId = "windows-sys 0.60.2"; target = { target, features }: (target."windows" or false); features = [ "Win32_Foundation" "Win32_System_IO" "Win32_Networking_WinSock" ]; } @@ -8867,9 +8722,9 @@ rec { }; "quote" = rec { crateName = "quote"; - version = "1.0.40"; + version = "1.0.41"; edition = "2018"; - sha256 = "1394cxjg6nwld82pzp2d4fp6pmaz32gai1zh9z5hvh0dawww118q"; + sha256 = "1lg108nb57lwbqlnpsii89cchk6i8pkcvrv88xh1p7a9gdz7c9ff"; authors = [ "David Tolnay " ]; @@ -8942,11 +8797,11 @@ rec { }; resolvedDefaultFeatures = [ "alloc" "default" "getrandom" "libc" "rand_chacha" "small_rng" "std" "std_rng" ]; }; - "rand 0.9.1" = rec { + "rand 0.9.2" = rec { crateName = "rand"; - version = "0.9.1"; + version = "0.9.2"; edition = "2021"; - sha256 = "15yxfcxbgmwba5cv7mjg9bhc1r5c9483dfcdfspg62x4jk8dkgwz"; + sha256 = "1lah73ainvrgl7brcxx0pwhpnqa3sm3qaj672034jz8i0q7pgckd"; authors = [ "The Rand Project Developers" "The Rust Project Developers" @@ -9078,7 +8933,7 @@ rec { dependencies = [ { name = "getrandom"; - packageId = "getrandom 0.3.3"; + packageId = "getrandom 0.3.4"; optional = true; } ]; @@ -9091,9 +8946,9 @@ rec { }; "redox_syscall" = rec { crateName = "redox_syscall"; - version = "0.5.13"; + version = "0.5.18"; edition = "2021"; - sha256 = "1mlzna9bcd7ss1973bmysr3hpjrys82b3bd7l03h4jkbxv8bf10d"; + sha256 = "0b9n38zsxylql36vybw18if68yc9jczxmbyzdwyhb9sifmag4azd"; libName = "syscall"; authors = [ "Jeremy Soller " @@ -9156,9 +9011,9 @@ rec { }; "regex" = rec { crateName = "regex"; - version = "1.11.1"; + version = "1.12.2"; edition = "2021"; - sha256 = "148i41mzbx8bmq32hsj1q4karkzzx5m60qza6gdw4pdc9qdyyi5m"; + sha256 = "1m14zkg6xmkb0q5ah3y39cmggclsjdr1wpxfa4kf5wvm3wcw0fw4"; authors = [ "The Rust Project Developers" "Andrew Gallant " @@ -9178,13 +9033,13 @@ rec { } { name = "regex-automata"; - packageId = "regex-automata 0.4.9"; + packageId = "regex-automata"; usesDefaultFeatures = false; features = [ "alloc" "syntax" "meta" "nfa-pikevm" ]; } { name = "regex-syntax"; - packageId = "regex-syntax 0.8.5"; + packageId = "regex-syntax"; usesDefaultFeatures = false; } ]; @@ -9212,36 +9067,11 @@ rec { }; resolvedDefaultFeatures = [ "default" "perf" "perf-backtrack" "perf-cache" "perf-dfa" "perf-inline" "perf-literal" "perf-onepass" "std" "unicode" "unicode-age" "unicode-bool" "unicode-case" "unicode-gencat" "unicode-perl" "unicode-script" "unicode-segment" ]; }; - "regex-automata 0.1.10" = rec { - crateName = "regex-automata"; - version = "0.1.10"; - edition = "2015"; - sha256 = "0ci1hvbzhrfby5fdpf4ganhf7kla58acad9i1ff1p34dzdrhs8vc"; - libName = "regex_automata"; - authors = [ - "Andrew Gallant " - ]; - dependencies = [ - { - name = "regex-syntax"; - packageId = "regex-syntax 0.6.29"; - optional = true; - } - ]; - features = { - "default" = [ "std" ]; - "fst" = [ "dep:fst" ]; - "regex-syntax" = [ "dep:regex-syntax" ]; - "std" = [ "regex-syntax" ]; - "transducer" = [ "std" "fst" ]; - }; - resolvedDefaultFeatures = [ "default" "regex-syntax" "std" ]; - }; - "regex-automata 0.4.9" = rec { + "regex-automata" = rec { crateName = "regex-automata"; - version = "0.4.9"; + version = "0.4.13"; edition = "2021"; - sha256 = "02092l8zfh3vkmk47yjc8d631zhhcd49ck2zr133prvd3z38v7l0"; + sha256 = "070z0j23pjfidqz0z89id1fca4p572wxpcr20a0qsv68bbrclxjj"; libName = "regex_automata"; authors = [ "The Rust Project Developers" @@ -9262,7 +9092,7 @@ rec { } { name = "regex-syntax"; - packageId = "regex-syntax 0.8.5"; + packageId = "regex-syntax"; optional = true; usesDefaultFeatures = false; } @@ -9283,7 +9113,7 @@ rec { "nfa-thompson" = [ "alloc" ]; "perf" = [ "perf-inline" "perf-literal" ]; "perf-literal" = [ "perf-literal-substring" "perf-literal-multisubstring" ]; - "perf-literal-multisubstring" = [ "std" "dep:aho-corasick" ]; + "perf-literal-multisubstring" = [ "dep:aho-corasick" ]; "perf-literal-substring" = [ "aho-corasick?/perf-literal" "dep:memchr" ]; "std" = [ "regex-syntax?/std" "memchr?/std" "aho-corasick?/std" "alloc" ]; "syntax" = [ "dep:regex-syntax" "alloc" ]; @@ -9298,26 +9128,11 @@ rec { }; resolvedDefaultFeatures = [ "alloc" "dfa" "dfa-build" "dfa-onepass" "dfa-search" "hybrid" "meta" "nfa" "nfa-backtrack" "nfa-pikevm" "nfa-thompson" "perf" "perf-inline" "perf-literal" "perf-literal-multisubstring" "perf-literal-substring" "std" "syntax" "unicode" "unicode-age" "unicode-bool" "unicode-case" "unicode-gencat" "unicode-perl" "unicode-script" "unicode-segment" "unicode-word-boundary" ]; }; - "regex-syntax 0.6.29" = rec { - crateName = "regex-syntax"; - version = "0.6.29"; - edition = "2018"; - sha256 = "1qgj49vm6y3zn1hi09x91jvgkl2b1fiaq402skj83280ggfwcqpi"; - libName = "regex_syntax"; - authors = [ - "The Rust Project Developers" - ]; - features = { - "default" = [ "unicode" ]; - "unicode" = [ "unicode-age" "unicode-bool" "unicode-case" "unicode-gencat" "unicode-perl" "unicode-script" "unicode-segment" ]; - }; - resolvedDefaultFeatures = [ "default" "unicode" "unicode-age" "unicode-bool" "unicode-case" "unicode-gencat" "unicode-perl" "unicode-script" "unicode-segment" ]; - }; - "regex-syntax 0.8.5" = rec { + "regex-syntax" = rec { crateName = "regex-syntax"; - version = "0.8.5"; + version = "0.8.8"; edition = "2021"; - sha256 = "0p41p3hj9ww7blnbwbj9h7rwxzxg0c1hvrdycgys8rxyhqqw859b"; + sha256 = "0n7ggnpk0r32rzgnycy5xrc1yp2kq19m6pz98ch3c6dkaxw9hbbs"; libName = "regex_syntax"; authors = [ "The Rust Project Developers" @@ -9346,9 +9161,9 @@ rec { }; "reqwest" = rec { crateName = "reqwest"; - version = "0.12.22"; + version = "0.12.24"; edition = "2021"; - sha256 = "0cbmfrcrk6wbg93apmji0fln1ca9322af2kc7dpa18vcgs9k3jfb"; + sha256 = "0vx3f2n6hfnv81y66v5wayrqh6jlzz4gakky88m0hywz1d0lc2cx"; authors = [ "Sean McArthur " ]; @@ -9450,7 +9265,7 @@ rec { } { name = "rustls-native-certs"; - packageId = "rustls-native-certs 0.8.1"; + packageId = "rustls-native-certs 0.8.2"; optional = true; target = { target, features }: (!("wasm32" == target."arch" or null)); } @@ -9504,7 +9319,7 @@ rec { packageId = "tower 0.5.2"; usesDefaultFeatures = false; target = { target, features }: (!("wasm32" == target."arch" or null)); - features = [ "timeout" "util" ]; + features = [ "retry" "timeout" "util" ]; } { name = "tower-http"; @@ -9516,6 +9331,7 @@ rec { { name = "tower-service"; packageId = "tower-service"; + target = { target, features }: (!("wasm32" == target."arch" or null)); } { name = "url"; @@ -9535,7 +9351,7 @@ rec { name = "web-sys"; packageId = "web-sys"; target = { target, features }: ("wasm32" == target."arch" or null); - features = [ "AbortController" "AbortSignal" "Headers" "Request" "RequestInit" "RequestMode" "Response" "Window" "FormData" "Blob" "BlobPropertyBag" "ServiceWorkerGlobalScope" "RequestCredentials" "File" "ReadableStream" ]; + features = [ "AbortController" "AbortSignal" "Headers" "Request" "RequestInit" "RequestMode" "Response" "Window" "FormData" "Blob" "BlobPropertyBag" "ServiceWorkerGlobalScope" "RequestCredentials" "File" "ReadableStream" "RequestCache" ]; } { name = "webpki-roots"; @@ -9774,7 +9590,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; features = [ "full" "parsing" "extra-traits" "visit" "visit-mut" ]; } { @@ -9866,7 +9682,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; usesDefaultFeatures = false; features = [ "derive" "parsing" "proc-macro" "printing" ]; } @@ -9908,20 +9724,6 @@ rec { "mime_guess" = [ "dep:mime_guess" ]; }; }; - "rustc-demangle" = rec { - crateName = "rustc-demangle"; - version = "0.1.25"; - edition = "2015"; - sha256 = "0kxq6m0drr40434ch32j31dkg00iaf4zxmqg7sqxajhcz0wng7lq"; - libName = "rustc_demangle"; - authors = [ - "Alex Crichton " - ]; - features = { - "core" = [ "dep:core" ]; - "rustc-dep-of-std" = [ "core" ]; - }; - }; "rustc-hash 1.1.0" = rec { crateName = "rustc-hash"; version = "1.1.0"; @@ -9964,7 +9766,7 @@ rec { ]; }; - "rustix" = rec { + "rustix 0.38.44" = rec { crateName = "rustix"; version = "0.38.44"; edition = "2021"; @@ -10016,14 +9818,14 @@ rec { } { name = "linux-raw-sys"; - packageId = "linux-raw-sys"; + packageId = "linux-raw-sys 0.4.15"; usesDefaultFeatures = false; target = { target, features }: ((("android" == target."os" or null) || ("linux" == target."os" or null)) && ((target."rustix_use_libc" or false) || (target."miri" or false) || (!(("linux" == target."os" or null) && (("little" == target."endian" or null) || ("s390x" == target."arch" or null)) && (("arm" == target."arch" or null) || (("aarch64" == target."arch" or null) && ("64" == target."pointer_width" or null)) || ("riscv64" == target."arch" or null) || ((target."rustix_use_experimental_asm" or false) && ("powerpc64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("s390x" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips32r6" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64r6" == target."arch" or null)) || ("x86" == target."arch" or null) || (("x86_64" == target."arch" or null) && ("64" == target."pointer_width" or null))))))); features = [ "general" "ioctl" "no_std" ]; } { name = "linux-raw-sys"; - packageId = "linux-raw-sys"; + packageId = "linux-raw-sys 0.4.15"; usesDefaultFeatures = false; target = { target, features }: ((!(target."rustix_use_libc" or false)) && (!(target."miri" or false)) && ("linux" == target."os" or null) && (("little" == target."endian" or null) || ("s390x" == target."arch" or null)) && (("arm" == target."arch" or null) || (("aarch64" == target."arch" or null) && ("64" == target."pointer_width" or null)) || ("riscv64" == target."arch" or null) || ((target."rustix_use_experimental_asm" or false) && ("powerpc64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("s390x" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips32r6" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64r6" == target."arch" or null)) || ("x86" == target."arch" or null) || (("x86_64" == target."arch" or null) && ("64" == target."pointer_width" or null)))); features = [ "general" "errno" "ioctl" "no_std" "elf" ]; @@ -10073,13 +9875,120 @@ rec { "thread" = [ "linux-raw-sys/prctl" ]; "use-libc" = [ "libc_errno" "libc" "libc-extra-traits" ]; }; - resolvedDefaultFeatures = [ "alloc" "fs" "libc-extra-traits" "std" "stdio" "termios" ]; + resolvedDefaultFeatures = [ "alloc" "fs" "libc-extra-traits" "std" ]; + }; + "rustix 1.1.2" = rec { + crateName = "rustix"; + version = "1.1.2"; + edition = "2021"; + sha256 = "0gpz343xfzx16x82s1x336n0kr49j02cvhgxdvaq86jmqnigh5fd"; + authors = [ + "Dan Gohman " + "Jakub Konka " + ]; + dependencies = [ + { + name = "bitflags"; + packageId = "bitflags"; + usesDefaultFeatures = false; + } + { + name = "errno"; + packageId = "errno"; + rename = "libc_errno"; + optional = true; + usesDefaultFeatures = false; + target = { target, features }: ((!(target."rustix_use_libc" or false)) && (!(target."miri" or false)) && ("linux" == target."os" or null) && (("little" == target."endian" or null) || (("s390x" == target."arch" or null) || ("powerpc" == target."arch" or null))) && (("arm" == target."arch" or null) || (("aarch64" == target."arch" or null) && ("64" == target."pointer_width" or null)) || ("riscv64" == target."arch" or null) || ((target."rustix_use_experimental_asm" or false) && ("powerpc" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("powerpc64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("s390x" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips32r6" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64r6" == target."arch" or null)) || ("x86" == target."arch" or null) || (("x86_64" == target."arch" or null) && ("64" == target."pointer_width" or null)))); + } + { + name = "errno"; + packageId = "errno"; + rename = "libc_errno"; + usesDefaultFeatures = false; + target = { target, features }: ((!(target."windows" or false)) && ((target."rustix_use_libc" or false) || (target."miri" or false) || (!(("linux" == target."os" or null) && (("little" == target."endian" or null) || (("s390x" == target."arch" or null) || ("powerpc" == target."arch" or null))) && (("arm" == target."arch" or null) || (("aarch64" == target."arch" or null) && ("64" == target."pointer_width" or null)) || ("riscv64" == target."arch" or null) || ((target."rustix_use_experimental_asm" or false) && ("powerpc" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("powerpc64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("s390x" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips32r6" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64r6" == target."arch" or null)) || ("x86" == target."arch" or null) || (("x86_64" == target."arch" or null) && ("64" == target."pointer_width" or null))))))); + } + { + name = "errno"; + packageId = "errno"; + rename = "libc_errno"; + usesDefaultFeatures = false; + target = { target, features }: (target."windows" or false); + } + { + name = "libc"; + packageId = "libc"; + optional = true; + usesDefaultFeatures = false; + target = { target, features }: ((!(target."rustix_use_libc" or false)) && (!(target."miri" or false)) && ("linux" == target."os" or null) && (("little" == target."endian" or null) || (("s390x" == target."arch" or null) || ("powerpc" == target."arch" or null))) && (("arm" == target."arch" or null) || (("aarch64" == target."arch" or null) && ("64" == target."pointer_width" or null)) || ("riscv64" == target."arch" or null) || ((target."rustix_use_experimental_asm" or false) && ("powerpc" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("powerpc64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("s390x" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips32r6" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64r6" == target."arch" or null)) || ("x86" == target."arch" or null) || (("x86_64" == target."arch" or null) && ("64" == target."pointer_width" or null)))); + } + { + name = "libc"; + packageId = "libc"; + usesDefaultFeatures = false; + target = { target, features }: ((!(target."windows" or false)) && ((target."rustix_use_libc" or false) || (target."miri" or false) || (!(("linux" == target."os" or null) && (("little" == target."endian" or null) || (("s390x" == target."arch" or null) || ("powerpc" == target."arch" or null))) && (("arm" == target."arch" or null) || (("aarch64" == target."arch" or null) && ("64" == target."pointer_width" or null)) || ("riscv64" == target."arch" or null) || ((target."rustix_use_experimental_asm" or false) && ("powerpc" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("powerpc64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("s390x" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips32r6" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64r6" == target."arch" or null)) || ("x86" == target."arch" or null) || (("x86_64" == target."arch" or null) && ("64" == target."pointer_width" or null))))))); + } + { + name = "linux-raw-sys"; + packageId = "linux-raw-sys 0.11.0"; + usesDefaultFeatures = false; + target = { target, features }: ((("linux" == target."os" or null)) && ((target."rustix_use_libc" or false) || (target."miri" or false) || (!(("linux" == target."os" or null) && (("little" == target."endian" or null) || (("s390x" == target."arch" or null) || ("powerpc" == target."arch" or null))) && (("arm" == target."arch" or null) || (("aarch64" == target."arch" or null) && ("64" == target."pointer_width" or null)) || ("riscv64" == target."arch" or null) || ((target."rustix_use_experimental_asm" or false) && ("powerpc" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("powerpc64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("s390x" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips32r6" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64r6" == target."arch" or null)) || ("x86" == target."arch" or null) || (("x86_64" == target."arch" or null) && ("64" == target."pointer_width" or null))))))); + features = [ "general" "ioctl" "no_std" ]; + } + { + name = "linux-raw-sys"; + packageId = "linux-raw-sys 0.11.0"; + usesDefaultFeatures = false; + target = { target, features }: ((!(target."rustix_use_libc" or false)) && (!(target."miri" or false)) && ("linux" == target."os" or null) && (("little" == target."endian" or null) || (("s390x" == target."arch" or null) || ("powerpc" == target."arch" or null))) && (("arm" == target."arch" or null) || (("aarch64" == target."arch" or null) && ("64" == target."pointer_width" or null)) || ("riscv64" == target."arch" or null) || ((target."rustix_use_experimental_asm" or false) && ("powerpc" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("powerpc64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("s390x" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips32r6" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64r6" == target."arch" or null)) || ("x86" == target."arch" or null) || (("x86_64" == target."arch" or null) && ("64" == target."pointer_width" or null)))); + features = [ "auxvec" "general" "errno" "ioctl" "no_std" "elf" ]; + } + { + name = "windows-sys"; + packageId = "windows-sys 0.61.2"; + target = { target, features }: (target."windows" or false); + features = [ "Win32_Foundation" "Win32_Networking_WinSock" ]; + } + ]; + devDependencies = [ + { + name = "errno"; + packageId = "errno"; + rename = "libc_errno"; + usesDefaultFeatures = false; + } + { + name = "libc"; + packageId = "libc"; + } + ]; + features = { + "all-apis" = [ "event" "fs" "io_uring" "mm" "mount" "net" "param" "pipe" "process" "pty" "rand" "runtime" "shm" "stdio" "system" "termios" "thread" "time" ]; + "core" = [ "dep:core" ]; + "default" = [ "std" ]; + "io_uring" = [ "event" "fs" "net" "thread" "linux-raw-sys/io_uring" ]; + "libc" = [ "dep:libc" ]; + "libc_errno" = [ "dep:libc_errno" ]; + "linux_5_1" = [ "linux_4_11" ]; + "linux_5_11" = [ "linux_5_1" ]; + "linux_latest" = [ "linux_5_11" ]; + "net" = [ "linux-raw-sys/net" "linux-raw-sys/netlink" "linux-raw-sys/if_ether" "linux-raw-sys/xdp" ]; + "process" = [ "linux-raw-sys/prctl" ]; + "pty" = [ "fs" ]; + "runtime" = [ "linux-raw-sys/prctl" ]; + "rustc-dep-of-std" = [ "core" "rustc-std-workspace-alloc" "linux-raw-sys/rustc-dep-of-std" "bitflags/rustc-dep-of-std" ]; + "rustc-std-workspace-alloc" = [ "dep:rustc-std-workspace-alloc" ]; + "shm" = [ "fs" ]; + "std" = [ "bitflags/std" "alloc" "libc?/std" "libc_errno?/std" ]; + "system" = [ "linux-raw-sys/system" ]; + "thread" = [ "linux-raw-sys/prctl" ]; + "use-libc" = [ "libc_errno" "libc" ]; + }; + resolvedDefaultFeatures = [ "alloc" "std" "stdio" "termios" ]; }; "rustls" = rec { crateName = "rustls"; - version = "0.23.29"; + version = "0.23.33"; edition = "2021"; - sha256 = "1lcvzvzqk8xx8jzg0x5v3mkqgwkwr7v6zdq8zw8rp6xj74h3i494"; + sha256 = "0b7qwspimfxf18mammg1yammlsyn4f6iahz0lnbvn06ajsj087km"; dependencies = [ { name = "log"; @@ -10178,11 +10087,11 @@ rec { ]; }; - "rustls-native-certs 0.8.1" = rec { + "rustls-native-certs 0.8.2" = rec { crateName = "rustls-native-certs"; - version = "0.8.1"; + version = "0.8.2"; edition = "2021"; - sha256 = "1ls7laa3748mkn23fmi3g4mlwk131lx6chq2lyc8v2mmabfz5kvz"; + sha256 = "08vr6gyz78c4zmbi8r307pybyrs7hf81wl5s35hm7h5hxcbxk04r"; libName = "rustls_native_certs"; dependencies = [ { @@ -10203,7 +10112,7 @@ rec { } { name = "security-framework"; - packageId = "security-framework 3.2.0"; + packageId = "security-framework 3.5.1"; target = { target, features }: ("macos" == target."os" or null); } ]; @@ -10258,9 +10167,9 @@ rec { }; "rustls-webpki" = rec { crateName = "rustls-webpki"; - version = "0.103.4"; + version = "0.103.7"; edition = "2021"; - sha256 = "1z4jmmgasjgk9glb160a66bshvgifa64mgfjrkqp7dy1w158h5qa"; + sha256 = "1gqlsd0yqiqch97g0wbsnbmyrp75j6nbzfpf8dmhxa78j50ky2z1"; libName = "webpki"; dependencies = [ { @@ -10293,9 +10202,9 @@ rec { }; "rustversion" = rec { crateName = "rustversion"; - version = "1.0.21"; + version = "1.0.22"; edition = "2018"; - sha256 = "07bb1xx05hhwpnl43sqrhsmxyk5sd5m5baadp19nxp69s9xij3ca"; + sha256 = "0vfl70jhv72scd9rfqgr2n11m5i9l1acnk684m2w83w0zbqdx75k"; procMacro = true; build = "build/build.rs"; authors = [ @@ -10335,9 +10244,9 @@ rec { }; "schannel" = rec { crateName = "schannel"; - version = "0.1.27"; + version = "0.1.28"; edition = "2018"; - sha256 = "0gbbhy28v72kd5iina0z2vcdl3vz63mk5idvkzn5r52z6jmfna8z"; + sha256 = "1qb6s5gyxfz2inz753a4z3mc1d266mwvz0c5w7ppd3h44swq27c9"; authors = [ "Steven Fackler " "Steffen Butzer " @@ -10345,14 +10254,14 @@ rec { dependencies = [ { name = "windows-sys"; - packageId = "windows-sys 0.59.0"; + packageId = "windows-sys 0.61.2"; features = [ "Win32_Foundation" "Win32_Security_Cryptography" "Win32_Security_Authentication_Identity" "Win32_Security_Credentials" "Win32_System_LibraryLoader" "Win32_System_Memory" "Win32_System_SystemInformation" ]; } ]; devDependencies = [ { name = "windows-sys"; - packageId = "windows-sys 0.59.0"; + packageId = "windows-sys 0.61.2"; features = [ "Win32_System_SystemInformation" "Win32_System_Time" ]; } ]; @@ -10448,7 +10357,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; features = [ "extra-traits" ]; } ]; @@ -10533,11 +10442,11 @@ rec { }; resolvedDefaultFeatures = [ "OSX_10_10" "OSX_10_11" "OSX_10_12" "OSX_10_9" "default" ]; }; - "security-framework 3.2.0" = rec { + "security-framework 3.5.1" = rec { crateName = "security-framework"; - version = "3.2.0"; + version = "3.5.1"; edition = "2021"; - sha256 = "05mkrddi9i18h9p098d0iimqv1xxz0wd8mbgpbvh9jj67x0205r7"; + sha256 = "1vz6pf5qjgx8s0hg805hq6qbcqnll6fs63irvrpgcc7qx91p6adk"; libName = "security_framework"; authors = [ "Steven Fackler " @@ -10579,9 +10488,9 @@ rec { }; "security-framework-sys" = rec { crateName = "security-framework-sys"; - version = "2.14.0"; + version = "2.15.0"; edition = "2021"; - sha256 = "0chwn01qrnvs59i5220bymd38iddy4krbnmfnhf4k451aqfj7ns9"; + sha256 = "1h6mijxnfrwvl1y4dzwn3m877j6dqp9qn3g37i954j5czazhq7yc"; libName = "security_framework_sys"; authors = [ "Steven Fackler " @@ -10610,9 +10519,9 @@ rec { }; "semver" = rec { crateName = "semver"; - version = "1.0.26"; + version = "1.0.27"; edition = "2018"; - sha256 = "1l5q2vb8fjkby657kdyfpvv40x2i2xqq9bg57pxqakfj92fgmrjn"; + sha256 = "1qmi3akfrnqc2hfkdgcxhld5bv961wbk8my3ascv5068mc5fnryp"; authors = [ "David Tolnay " ]; @@ -10622,6 +10531,14 @@ rec { packageId = "serde"; optional = true; usesDefaultFeatures = false; + target = { target, features }: false; + } + { + name = "serde_core"; + packageId = "serde_core"; + rename = "serde"; + optional = true; + usesDefaultFeatures = false; } ]; features = { @@ -10632,35 +10549,34 @@ rec { }; "serde" = rec { crateName = "serde"; - version = "1.0.219"; - edition = "2018"; - sha256 = "1dl6nyxnsi82a197sd752128a4avm6mxnscywas1jq30srp2q3jz"; + version = "1.0.228"; + edition = "2021"; + sha256 = "17mf4hhjxv5m90g42wmlbc61hdhlm6j9hwfkpcnd72rpgzm993ls"; authors = [ "Erick Tryzelaar " "David Tolnay " ]; dependencies = [ { - name = "serde_derive"; - packageId = "serde_derive"; - optional = true; + name = "serde_core"; + packageId = "serde_core"; + usesDefaultFeatures = false; + features = [ "result" ]; } { name = "serde_derive"; packageId = "serde_derive"; - target = { target, features }: false; - } - ]; - devDependencies = [ - { - name = "serde_derive"; - packageId = "serde_derive"; + optional = true; } ]; features = { + "alloc" = [ "serde_core/alloc" ]; "default" = [ "std" ]; "derive" = [ "serde_derive" ]; + "rc" = [ "serde_core/rc" ]; "serde_derive" = [ "dep:serde_derive" ]; + "std" = [ "serde_core/std" ]; + "unstable" = [ "serde_core/unstable" ]; }; resolvedDefaultFeatures = [ "alloc" "default" "derive" "serde_derive" "std" ]; }; @@ -10685,11 +10601,38 @@ rec { ]; }; + "serde_core" = rec { + crateName = "serde_core"; + version = "1.0.228"; + edition = "2021"; + sha256 = "1bb7id2xwx8izq50098s5j2sqrrvk31jbbrjqygyan6ask3qbls1"; + authors = [ + "Erick Tryzelaar " + "David Tolnay " + ]; + dependencies = [ + { + name = "serde_derive"; + packageId = "serde_derive"; + target = { target, features }: false; + } + ]; + devDependencies = [ + { + name = "serde_derive"; + packageId = "serde_derive"; + } + ]; + features = { + "default" = [ "std" "result" ]; + }; + resolvedDefaultFeatures = [ "alloc" "default" "result" "std" ]; + }; "serde_derive" = rec { crateName = "serde_derive"; - version = "1.0.219"; - edition = "2015"; - sha256 = "001azhjmj7ya52pmfiw4ppxm16nd44y15j2pf5gkcwrcgz7pc0jv"; + version = "1.0.228"; + edition = "2021"; + sha256 = "0y8xm7fvmr2kjcd029g9fijpndh8csv5m20g4bd76w8qschg4h6m"; procMacro = true; authors = [ "Erick Tryzelaar " @@ -10710,7 +10653,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; usesDefaultFeatures = false; features = [ "clone-impls" "derive" "parsing" "printing" "proc-macro" ]; } @@ -10742,7 +10685,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; usesDefaultFeatures = false; features = [ "clone-impls" "derive" "parsing" "printing" ]; } @@ -10751,9 +10694,9 @@ rec { }; "serde_json" = rec { crateName = "serde_json"; - version = "1.0.140"; + version = "1.0.145"; edition = "2021"; - sha256 = "0wwkp4vc20r87081ihj3vpyz5qf7wqkqipq17v99nv6wjrp8n1i0"; + sha256 = "1767y6kxjf7gwpbv8bkhgwc50nhg46mqwm9gy9n122f7v1k6yaj0"; authors = [ "Erick Tryzelaar " "David Tolnay " @@ -10776,6 +10719,12 @@ rec { name = "serde"; packageId = "serde"; usesDefaultFeatures = false; + target = { target, features }: false; + } + { + name = "serde_core"; + packageId = "serde_core"; + usesDefaultFeatures = false; } ]; devDependencies = [ @@ -10786,19 +10735,19 @@ rec { } ]; features = { - "alloc" = [ "serde/alloc" ]; + "alloc" = [ "serde_core/alloc" ]; "default" = [ "std" ]; "indexmap" = [ "dep:indexmap" ]; "preserve_order" = [ "indexmap" "std" ]; - "std" = [ "memchr/std" "serde/std" ]; + "std" = [ "memchr/std" "serde_core/std" ]; }; resolvedDefaultFeatures = [ "alloc" "default" "raw_value" "std" ]; }; "serde_path_to_error" = rec { crateName = "serde_path_to_error"; - version = "0.1.17"; + version = "0.1.20"; edition = "2021"; - sha256 = "0alb447z25dvczd6ll3vfjbf51pypn23mgs5hv8978vzjczv3yjr"; + sha256 = "0mxls44p2ycmnxh03zpnlxxygq42w61ws7ir7r0ba6rp5s1gza8h"; authors = [ "David Tolnay " ]; @@ -10807,6 +10756,20 @@ rec { name = "itoa"; packageId = "itoa"; } + { + name = "serde"; + packageId = "serde"; + usesDefaultFeatures = false; + target = { target, features }: false; + } + { + name = "serde_core"; + packageId = "serde_core"; + usesDefaultFeatures = false; + features = [ "alloc" ]; + } + ]; + devDependencies = [ { name = "serde"; packageId = "serde"; @@ -10853,7 +10816,7 @@ rec { dependencies = [ { name = "indexmap"; - packageId = "indexmap 2.10.0"; + packageId = "indexmap 2.11.4"; } { name = "itoa"; @@ -10992,9 +10955,9 @@ rec { }; "signal-hook-registry" = rec { crateName = "signal-hook-registry"; - version = "1.4.5"; + version = "1.4.6"; edition = "2015"; - sha256 = "042lkqrpnlrgvrrcirgigxyp1zk70d8v0fsr5w7a18k3bw2vh0wj"; + sha256 = "12y2v1ms5z111fymaw1v8k93m5chnkp21h0jknrydkj8zydp395j"; libName = "signal_hook_registry"; authors = [ "Michal 'vorner' Vaner " @@ -11008,6 +10971,19 @@ rec { ]; }; + "simd-adler32" = rec { + crateName = "simd-adler32"; + version = "0.3.7"; + edition = "2018"; + sha256 = "1zkq40c3iajcnr5936gjp9jjh1lpzhy44p3dq3fiw75iwr1w2vfn"; + libName = "simd_adler32"; + authors = [ + "Marvin Countryman " + ]; + features = { + "default" = [ "std" "const-generics" ]; + }; + }; "siphasher" = rec { crateName = "siphasher"; version = "1.0.1"; @@ -11027,9 +11003,9 @@ rec { }; "slab" = rec { crateName = "slab"; - version = "0.4.10"; + version = "0.4.11"; edition = "2018"; - sha256 = "03f5a9gdp33mngya4qwq2555138pj74pl015scv57wsic5rikp04"; + sha256 = "12bm4s88rblq02jjbi1dw31984w61y2ldn13ifk5gsqgy97f8aks"; authors = [ "Carl Lerche " ]; @@ -11115,11 +11091,11 @@ rec { }; resolvedDefaultFeatures = [ "default" "guide" "std" ]; }; - "snafu 0.8.6" = rec { + "snafu 0.8.9" = rec { crateName = "snafu"; - version = "0.8.6"; + version = "0.8.9"; edition = "2018"; - sha256 = "09znwwss9xi7i28kpj29b29nh28nv5kfjjsa99x5v3dz27h022rj"; + sha256 = "18p1y5qxwjn5j902wqsdr75n17b29lxpdipa0p7a3wybxbsb713f"; authors = [ "Jake Goulding " ]; @@ -11139,7 +11115,7 @@ rec { } { name = "snafu-derive"; - packageId = "snafu-derive 0.8.6"; + packageId = "snafu-derive 0.8.9"; } ]; features = { @@ -11187,11 +11163,11 @@ rec { features = { }; }; - "snafu-derive 0.8.6" = rec { + "snafu-derive 0.8.9" = rec { crateName = "snafu-derive"; - version = "0.8.6"; + version = "0.8.9"; edition = "2018"; - sha256 = "1xs7w5hg9sw45lw34mzza1nnpx9lz5snjp9s9lh2852c8bpy4q8r"; + sha256 = "0lg4s58jzx6w48ig4qp8jasrrs886pifqqd58k5b2jzlvd3pgjf1"; procMacro = true; libName = "snafu_derive"; authors = [ @@ -11213,7 +11189,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; features = [ "full" ]; } ]; @@ -11221,7 +11197,7 @@ rec { }; resolvedDefaultFeatures = [ "rust_1_61" ]; }; - "socket2" = rec { + "socket2 0.5.10" = rec { crateName = "socket2"; version = "0.5.10"; edition = "2021"; @@ -11247,6 +11223,32 @@ rec { }; resolvedDefaultFeatures = [ "all" ]; }; + "socket2 0.6.1" = rec { + crateName = "socket2"; + version = "0.6.1"; + edition = "2021"; + sha256 = "109qn0kjhqi5zds84qyqi5wn72g8azjhmf4b04fkgkrkd48rw4hp"; + authors = [ + "Alex Crichton " + "Thomas de Zeeuw " + ]; + dependencies = [ + { + name = "libc"; + packageId = "libc"; + target = { target, features }: (target."unix" or false); + } + { + name = "windows-sys"; + packageId = "windows-sys 0.60.2"; + target = { target, features }: (target."windows" or false); + features = [ "Win32_Foundation" "Win32_Networking_WinSock" "Win32_System_IO" "Win32_System_Threading" "Win32_System_WindowsProgramming" ]; + } + ]; + features = { + }; + resolvedDefaultFeatures = [ "all" ]; + }; "spin" = rec { crateName = "spin"; version = "0.9.8"; @@ -11274,9 +11276,9 @@ rec { }; "stable_deref_trait" = rec { crateName = "stable_deref_trait"; - version = "1.2.0"; + version = "1.2.1"; edition = "2015"; - sha256 = "1lxjr8q2n534b2lhkxd6l6wcddzjvnksi58zv11f9y0jjmr15wd8"; + sha256 = "15h5h73ppqyhdhx6ywxfj88azmrpml9gl6zp3pwy2malqa6vxqkc"; authors = [ "Robert Grosse " ]; @@ -11310,7 +11312,7 @@ rec { } { name = "indexmap"; - packageId = "indexmap 2.10.0"; + packageId = "indexmap 2.11.4"; features = [ "serde" ]; } { @@ -11363,7 +11365,7 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.6"; + packageId = "snafu 0.8.9"; features = [ "futures" ]; } { @@ -11492,7 +11494,7 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.6"; + packageId = "snafu 0.8.9"; features = [ "futures" ]; } { @@ -11597,7 +11599,7 @@ rec { } { name = "indexmap"; - packageId = "indexmap 2.10.0"; + packageId = "indexmap 2.11.4"; } { name = "json-patch"; @@ -11647,7 +11649,7 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.6"; + packageId = "snafu 0.8.9"; } { name = "stackable-operator-derive"; @@ -11732,7 +11734,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; } ]; @@ -11773,7 +11775,7 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.6"; + packageId = "snafu 0.8.9"; } ]; @@ -11795,7 +11797,7 @@ rec { dependencies = [ { name = "axum"; - packageId = "axum 0.8.4"; + packageId = "axum 0.8.6"; } { name = "clap"; @@ -11832,7 +11834,7 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.6"; + packageId = "snafu 0.8.9"; } { name = "strum"; @@ -11966,7 +11968,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; } ]; devDependencies = [ @@ -12031,7 +12033,7 @@ rec { } { name = "indexmap"; - packageId = "indexmap 2.10.0"; + packageId = "indexmap 2.11.4"; features = [ "serde" ]; } { @@ -12076,7 +12078,7 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.6"; + packageId = "snafu 0.8.9"; features = [ "futures" ]; } { @@ -12134,9 +12136,9 @@ rec { }; "strum" = rec { crateName = "strum"; - version = "0.27.1"; + version = "0.27.2"; edition = "2021"; - sha256 = "0cic9r2sc2h17nnpjm2yfp7rsd35gkbcbqvrhl553jaiih4fykgn"; + sha256 = "1ksb9jssw4bg9kmv9nlgp2jqa4vnsa3y4q9zkppvl952q7vdc8xg"; authors = [ "Peter Glotfelty " ]; @@ -12157,9 +12159,9 @@ rec { }; "strum_macros" = rec { crateName = "strum_macros"; - version = "0.27.1"; + version = "0.27.2"; edition = "2021"; - sha256 = "1s7x07nkrgjfvxrvcdjw6qanad4c55yjnd32bph9q3xgpid8qyn7"; + sha256 = "19xwikxma0yi70fxkcy1yxcv0ica8gf3jnh5gj936jza8lwcx5bn"; procMacro = true; authors = [ "Peter Glotfelty " @@ -12177,13 +12179,9 @@ rec { name = "quote"; packageId = "quote"; } - { - name = "rustversion"; - packageId = "rustversion"; - } { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; features = [ "parsing" ]; } ]; @@ -12236,11 +12234,11 @@ rec { }; resolvedDefaultFeatures = [ "clone-impls" "default" "derive" "full" "parsing" "printing" "proc-macro" "quote" ]; }; - "syn 2.0.104" = rec { + "syn 2.0.106" = rec { crateName = "syn"; - version = "2.0.104"; + version = "2.0.106"; edition = "2021"; - sha256 = "0h2s8cxh5dsh9h41dxnlzpifqqn59cqgm0kljawws61ljq2zgdhp"; + sha256 = "19mddxp1ia00hfdzimygqmr1jqdvyl86k48427bkci4d08wc9rzd"; authors = [ "David Tolnay " ]; @@ -12312,7 +12310,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; usesDefaultFeatures = false; features = [ "derive" "parsing" "printing" "clone-impls" "visit" "extra-traits" ]; } @@ -12464,18 +12462,18 @@ rec { ]; }; - "thiserror 2.0.12" = rec { + "thiserror 2.0.17" = rec { crateName = "thiserror"; - version = "2.0.12"; + version = "2.0.17"; edition = "2021"; - sha256 = "024791nsc0np63g2pq30cjf9acj38z3jwx9apvvi8qsqmqnqlysn"; + sha256 = "1j2gixhm2c3s6g96vd0b01v0i0qz1101vfmw0032mdqj1z58fdgn"; authors = [ "David Tolnay " ]; dependencies = [ { name = "thiserror-impl"; - packageId = "thiserror-impl 2.0.12"; + packageId = "thiserror-impl 2.0.17"; } ]; features = { @@ -12504,16 +12502,16 @@ rec { } { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; } ]; }; - "thiserror-impl 2.0.12" = rec { + "thiserror-impl 2.0.17" = rec { crateName = "thiserror-impl"; - version = "2.0.12"; + version = "2.0.17"; edition = "2021"; - sha256 = "07bsn7shydaidvyyrm7jz29vp78vrxr9cr9044rfmn078lmz8z3z"; + sha256 = "04y92yjwg1a4piwk9nayzjfs07sps8c4vq9jnsfq9qvxrn75rw9z"; procMacro = true; libName = "thiserror_impl"; authors = [ @@ -12530,7 +12528,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; } ]; @@ -12554,9 +12552,9 @@ rec { }; "time" = rec { crateName = "time"; - version = "0.3.41"; + version = "0.3.44"; edition = "2021"; - sha256 = "0h0cpiyya8cjlrh00d2r72bmgg4lsdcncs76qpwy0rn2kghijxla"; + sha256 = "179awlwb36zly3nmz5h9awai1h4pbf1d83g2pmvlw4v1pgixkrwi"; authors = [ "Jacob Pratt " "Time contributors" @@ -12565,7 +12563,6 @@ rec { { name = "deranged"; packageId = "deranged"; - usesDefaultFeatures = false; features = [ "powerfmt" ]; } { @@ -12623,20 +12620,22 @@ rec { "macros" = [ "dep:time-macros" ]; "parsing" = [ "time-macros?/parsing" ]; "quickcheck" = [ "dep:quickcheck" "alloc" "deranged/quickcheck" ]; - "rand" = [ "dep:rand" "deranged/rand" ]; + "rand" = [ "rand08" "rand09" ]; + "rand08" = [ "dep:rand08" "deranged/rand08" ]; + "rand09" = [ "dep:rand09" "deranged/rand09" ]; "serde" = [ "dep:serde" "time-macros?/serde" "deranged/serde" ]; "serde-human-readable" = [ "serde" "formatting" "parsing" ]; "serde-well-known" = [ "serde" "formatting" "parsing" ]; - "std" = [ "alloc" "deranged/std" ]; + "std" = [ "alloc" ]; "wasm-bindgen" = [ "dep:js-sys" ]; }; resolvedDefaultFeatures = [ "alloc" "formatting" "parsing" "std" ]; }; "time-core" = rec { crateName = "time-core"; - version = "0.1.4"; + version = "0.1.6"; edition = "2021"; - sha256 = "0z5h9fknvdvbs2k2s1chpi3ab3jvgkfhdnqwrvixjngm263s7sf9"; + sha256 = "0sqwhg7n47gbffyr0zhipqcnskxgcgzz1ix8wirqs2rg3my8x1j0"; libName = "time_core"; authors = [ "Jacob Pratt " @@ -12646,9 +12645,9 @@ rec { }; "time-macros" = rec { crateName = "time-macros"; - version = "0.2.22"; + version = "0.2.24"; edition = "2021"; - sha256 = "0jcaxpw220han2bzbrdlpqhy1s5k9i8ri3lw6n5zv4zcja9p69im"; + sha256 = "1wzb6hnl35856f58cx259q7ijc4c7yis0qsnydvw5n8jbw9b1krh"; procMacro = true; libName = "time_macros"; authors = [ @@ -12701,9 +12700,9 @@ rec { }; "tinyvec" = rec { crateName = "tinyvec"; - version = "1.9.0"; + version = "1.10.0"; edition = "2018"; - sha256 = "0w9w8qcifns9lzvlbfwa01y0skhr542anwa3rpn28rg82wgndcq9"; + sha256 = "1yhk0qdqyiaa4v2j9h8pzax5gxgwpz4da0lcphfil6g6pk1zv9dz"; authors = [ "Lokathor " ]; @@ -12721,8 +12720,6 @@ rec { "generic-array" = [ "dep:generic-array" ]; "latest_stable_rust" = [ "rustc_1_61" ]; "real_blackbox" = [ "criterion/real_blackbox" ]; - "rustc_1_55" = [ "rustc_1_40" ]; - "rustc_1_57" = [ "rustc_1_55" ]; "rustc_1_61" = [ "rustc_1_57" ]; "serde" = [ "dep:serde" ]; "std" = [ "alloc" ]; @@ -12742,33 +12739,23 @@ rec { }; "tokio" = rec { crateName = "tokio"; - version = "1.46.1"; + version = "1.48.0"; edition = "2021"; - sha256 = "05sxldy7kcgysnxyzz1h1l8j3d9mjyqfh7r48ni27gmg9lsa5hqc"; + sha256 = "0244qva5pksy8gam6llf7bd6wbk2vkab9lx26yyf08dix810wdpz"; authors = [ "Tokio Contributors " ]; dependencies = [ - { - name = "backtrace"; - packageId = "backtrace"; - target = { target, features }: (target."tokio_taskdump" or false); - } { name = "bytes"; packageId = "bytes"; optional = true; } - { - name = "io-uring"; - packageId = "io-uring"; - usesDefaultFeatures = false; - target = { target, features }: ((target."tokio_uring" or false) && ("linux" == target."os" or null)); - } { name = "libc"; packageId = "libc"; - target = { target, features }: ((target."tokio_uring" or false) && ("linux" == target."os" or null)); + optional = true; + target = { target, features }: ((target."tokio_unstable" or false) && ("linux" == target."os" or null)); } { name = "libc"; @@ -12785,8 +12772,9 @@ rec { { name = "mio"; packageId = "mio"; + optional = true; usesDefaultFeatures = false; - target = { target, features }: ((target."tokio_uring" or false) && ("linux" == target."os" or null)); + target = { target, features }: ((target."tokio_unstable" or false) && ("linux" == target."os" or null)); features = [ "os-poll" "os-ext" ]; } { @@ -12799,14 +12787,9 @@ rec { optional = true; target = { target, features }: (target."unix" or false); } - { - name = "slab"; - packageId = "slab"; - target = { target, features }: ((target."tokio_uring" or false) && ("linux" == target."os" or null)); - } { name = "socket2"; - packageId = "socket2"; + packageId = "socket2 0.6.1"; optional = true; target = { target, features }: (!(builtins.elem "wasm" target."family")); features = [ "all" ]; @@ -12818,7 +12801,7 @@ rec { } { name = "windows-sys"; - packageId = "windows-sys 0.52.0"; + packageId = "windows-sys 0.61.2"; optional = true; target = { target, features }: (target."windows" or false); } @@ -12831,12 +12814,12 @@ rec { } { name = "socket2"; - packageId = "socket2"; + packageId = "socket2 0.6.1"; target = {target, features}: (!(builtins.elem "wasm" target."family")); } { name = "windows-sys"; - packageId = "windows-sys 0.52.0"; + packageId = "windows-sys 0.61.2"; target = {target, features}: (target."windows" or false); features = [ "Win32_Foundation" "Win32_Security_Authorization" ]; } @@ -12844,6 +12827,7 @@ rec { features = { "bytes" = [ "dep:bytes" ]; "full" = [ "fs" "io-util" "io-std" "macros" "net" "parking_lot" "process" "rt" "rt-multi-thread" "signal" "sync" "time" ]; + "io-uring" = [ "dep:io-uring" "libc" "mio/os-poll" "mio/os-ext" "dep:slab" ]; "io-util" = [ "bytes" ]; "libc" = [ "dep:libc" ]; "macros" = [ "tokio-macros" ]; @@ -12855,6 +12839,7 @@ rec { "signal" = [ "libc" "mio/os-poll" "mio/net" "mio/os-ext" "signal-hook-registry" "windows-sys/Win32_Foundation" "windows-sys/Win32_System_Console" ]; "signal-hook-registry" = [ "dep:signal-hook-registry" ]; "socket2" = [ "dep:socket2" ]; + "taskdump" = [ "dep:backtrace" ]; "test-util" = [ "rt" "sync" "time" ]; "tokio-macros" = [ "dep:tokio-macros" ]; "tracing" = [ "dep:tracing" ]; @@ -12864,9 +12849,9 @@ rec { }; "tokio-macros" = rec { crateName = "tokio-macros"; - version = "2.5.0"; + version = "2.6.0"; edition = "2021"; - sha256 = "1f6az2xbvqp7am417b78d1za8axbvjvxnmkakz9vr8s52czx81kf"; + sha256 = "19czvgliginbzyhhfbmj77wazqn2y8g27y2nirfajdlm41bphh5g"; procMacro = true; libName = "tokio_macros"; authors = [ @@ -12883,7 +12868,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; features = [ "full" ]; } ]; @@ -12891,9 +12876,9 @@ rec { }; "tokio-rustls" = rec { crateName = "tokio-rustls"; - version = "0.26.2"; + version = "0.26.4"; edition = "2021"; - sha256 = "16wf007q3584j46wc4s0zc4szj6280g23hka6x6bgs50l4v7nwlf"; + sha256 = "0qggwknz9w4bbsv1z158hlnpkm97j3w8v31586jipn99byaala8p"; libName = "tokio_rustls"; dependencies = [ { @@ -12917,11 +12902,13 @@ rec { features = { "aws-lc-rs" = [ "aws_lc_rs" ]; "aws_lc_rs" = [ "rustls/aws_lc_rs" ]; + "brotli" = [ "rustls/brotli" ]; "default" = [ "logging" "tls12" "aws_lc_rs" ]; "fips" = [ "rustls/fips" ]; "logging" = [ "rustls/logging" ]; "ring" = [ "rustls/ring" ]; "tls12" = [ "rustls/tls12" ]; + "zlib" = [ "rustls/zlib" ]; }; resolvedDefaultFeatures = [ "logging" "ring" "tls12" ]; }; @@ -13032,9 +13019,9 @@ rec { }; "tokio-util" = rec { crateName = "tokio-util"; - version = "0.7.15"; + version = "0.7.16"; edition = "2021"; - sha256 = "1pypd9lm1fdnpw0779pqvc16qqrxjy63dgfm20ajhpbdmnlkk9b6"; + sha256 = "1r9wdrg1k5hna3m0kc8kcb8jdb6n52g7vnw93kw2xxw4cyc7qc0l"; libName = "tokio_util"; authors = [ "Tokio Contributors " @@ -13077,13 +13064,14 @@ rec { features = { "__docs_rs" = [ "futures-util" ]; "compat" = [ "futures-io" ]; - "full" = [ "codec" "compat" "io-util" "time" "net" "rt" ]; + "full" = [ "codec" "compat" "io-util" "time" "net" "rt" "join-map" ]; "futures-io" = [ "dep:futures-io" ]; "futures-util" = [ "dep:futures-util" ]; "hashbrown" = [ "dep:hashbrown" ]; "io-util" = [ "io" "tokio/rt" "tokio/io-util" ]; + "join-map" = [ "rt" "hashbrown" ]; "net" = [ "tokio/net" ]; - "rt" = [ "tokio/rt" "tokio/sync" "futures-util" "hashbrown" ]; + "rt" = [ "tokio/rt" "tokio/sync" "futures-util" ]; "slab" = [ "dep:slab" ]; "time" = [ "tokio/time" "slab" ]; "tracing" = [ "dep:tracing" ]; @@ -13092,28 +13080,45 @@ rec { }; "toml_datetime" = rec { crateName = "toml_datetime"; - version = "0.6.11"; + version = "0.7.3"; edition = "2021"; - sha256 = "077ix2hb1dcya49hmi1avalwbixmrs75zgzb3b2i7g2gizwdmk92"; + sha256 = "0cs5f8y4rdsmmwipjclmq97lrwppjy2qa3vja4f9d5xwxcwvdkgj"; + dependencies = [ + { + name = "serde_core"; + packageId = "serde_core"; + optional = true; + usesDefaultFeatures = false; + } + ]; features = { - "serde" = [ "dep:serde" ]; + "alloc" = [ "serde_core?/alloc" ]; + "default" = [ "std" ]; + "serde" = [ "dep:serde_core" ]; + "std" = [ "alloc" "serde_core?/std" ]; }; + resolvedDefaultFeatures = [ "alloc" "default" "std" ]; }; "toml_edit" = rec { crateName = "toml_edit"; - version = "0.22.27"; + version = "0.23.7"; edition = "2021"; - sha256 = "16l15xm40404asih8vyjvnka9g0xs9i4hfb6ry3ph9g419k8rzj1"; + sha256 = "13cgp4y6prad1lh18bbg64zkq48hafq7xzs4fb0hwpcv1mnyz1b4"; dependencies = [ { name = "indexmap"; - packageId = "indexmap 2.10.0"; + packageId = "indexmap 2.11.4"; features = [ "std" ]; } { name = "toml_datetime"; packageId = "toml_datetime"; } + { + name = "toml_parser"; + packageId = "toml_parser"; + optional = true; + } { name = "winnow"; packageId = "winnow"; @@ -13121,15 +13126,34 @@ rec { } ]; features = { + "debug" = [ "toml_parser?/debug" "dep:anstream" "dep:anstyle" "display" ]; "default" = [ "parse" "display" ]; - "display" = [ "dep:toml_write" ]; - "parse" = [ "dep:winnow" ]; - "perf" = [ "dep:kstring" ]; - "serde" = [ "dep:serde" "toml_datetime/serde" "dep:serde_spanned" ]; - "unstable-debug" = [ "winnow?/debug" ]; + "display" = [ "dep:toml_writer" ]; + "parse" = [ "dep:toml_parser" "dep:winnow" ]; + "serde" = [ "dep:serde_core" "toml_datetime/serde" "dep:serde_spanned" ]; }; resolvedDefaultFeatures = [ "parse" ]; }; + "toml_parser" = rec { + crateName = "toml_parser"; + version = "1.0.4"; + edition = "2021"; + sha256 = "03l0750d1cyliij9vac4afpp1syh1a6yhbbalnslpnsvsdlf5jy0"; + dependencies = [ + { + name = "winnow"; + packageId = "winnow"; + usesDefaultFeatures = false; + } + ]; + features = { + "debug" = [ "std" "dep:anstream" "dep:anstyle" ]; + "default" = [ "std" ]; + "simd" = [ "winnow/simd" ]; + "std" = [ "alloc" ]; + }; + resolvedDefaultFeatures = [ "alloc" "default" "std" ]; + }; "tonic" = rec { crateName = "tonic"; version = "0.12.3"; @@ -13219,7 +13243,7 @@ rec { } { name = "socket2"; - packageId = "socket2"; + packageId = "socket2 0.5.10"; optional = true; features = [ "all" ]; } @@ -13510,7 +13534,7 @@ rec { "tracing" = [ "dep:tracing" ]; "util" = [ "__common" "futures-util" "pin-project-lite" "sync_wrapper" ]; }; - resolvedDefaultFeatures = [ "__common" "buffer" "filter" "futures-core" "futures-util" "log" "make" "pin-project-lite" "sync_wrapper" "timeout" "tokio" "tokio-util" "tracing" "util" ]; + resolvedDefaultFeatures = [ "__common" "buffer" "filter" "futures-core" "futures-util" "log" "make" "pin-project-lite" "retry" "sync_wrapper" "timeout" "tokio" "tokio-util" "tracing" "util" ]; }; "tower-http 0.5.2" = rec { crateName = "tower-http"; @@ -13866,7 +13890,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; usesDefaultFeatures = false; features = [ "full" "parsing" "printing" "visit-mut" "clone-impls" "extra-traits" "proc-macro" ]; } @@ -13907,9 +13931,9 @@ rec { }; "tracing-indicatif" = rec { crateName = "tracing-indicatif"; - version = "0.3.11"; + version = "0.3.13"; edition = "2024"; - sha256 = "007jcv7c72bfgi79hmai8cdvpgjrxz379lnvzpy09ns6zk44qwcc"; + sha256 = "0gc2s800fnz7j2ya4zw6i32cvzjmad1yj9vzlhjyzb171qgf3m04"; libName = "tracing_indicatif"; dependencies = [ { @@ -14090,9 +14114,9 @@ rec { }; "tracing-subscriber" = rec { crateName = "tracing-subscriber"; - version = "0.3.19"; + version = "0.3.20"; edition = "2018"; - sha256 = "0220rignck8072i89jjsh140vmh14ydwpdwnifyaf3xcnpn9s678"; + sha256 = "1m9447bxq7236avgl6n5yb2aqwplrghm61dgipw03mh7ad7s2m10"; libName = "tracing_subscriber"; authors = [ "Eliza Weisman " @@ -14116,11 +14140,11 @@ rec { optional = true; } { - name = "regex"; - packageId = "regex"; + name = "regex-automata"; + packageId = "regex-automata"; optional = true; usesDefaultFeatures = false; - features = [ "std" "unicode-case" "unicode-perl" ]; + features = [ "std" ]; } { name = "serde"; @@ -14172,12 +14196,6 @@ rec { } ]; devDependencies = [ - { - name = "regex"; - packageId = "regex"; - usesDefaultFeatures = false; - features = [ "std" ]; - } { name = "tracing"; packageId = "tracing"; @@ -14191,7 +14209,7 @@ rec { "ansi" = [ "fmt" "nu-ansi-term" ]; "chrono" = [ "dep:chrono" ]; "default" = [ "smallvec" "fmt" "ansi" "tracing-log" "std" ]; - "env-filter" = [ "matchers" "regex" "once_cell" "tracing" "std" "thread_local" ]; + "env-filter" = [ "matchers" "once_cell" "tracing" "std" "thread_local" "dep:regex-automata" ]; "fmt" = [ "registry" "std" ]; "json" = [ "tracing-serde" "serde" "serde_json" ]; "local-time" = [ "time/local-offset" ]; @@ -14199,7 +14217,6 @@ rec { "nu-ansi-term" = [ "dep:nu-ansi-term" ]; "once_cell" = [ "dep:once_cell" ]; "parking_lot" = [ "dep:parking_lot" ]; - "regex" = [ "dep:regex" ]; "registry" = [ "sharded-slab" "thread_local" "std" ]; "serde" = [ "dep:serde" ]; "serde_json" = [ "dep:serde_json" ]; @@ -14215,7 +14232,7 @@ rec { "valuable-serde" = [ "dep:valuable-serde" ]; "valuable_crate" = [ "dep:valuable_crate" ]; }; - resolvedDefaultFeatures = [ "alloc" "ansi" "default" "env-filter" "fmt" "json" "matchers" "nu-ansi-term" "once_cell" "regex" "registry" "serde" "serde_json" "sharded-slab" "smallvec" "std" "thread_local" "tracing" "tracing-log" "tracing-serde" ]; + resolvedDefaultFeatures = [ "alloc" "ansi" "default" "env-filter" "fmt" "json" "matchers" "nu-ansi-term" "once_cell" "registry" "serde" "serde_json" "sharded-slab" "smallvec" "std" "thread_local" "tracing" "tracing-log" "tracing-serde" ]; }; "try-lock" = rec { crateName = "try-lock"; @@ -14263,7 +14280,7 @@ rec { } { name = "rand"; - packageId = "rand 0.9.1"; + packageId = "rand 0.9.2"; } { name = "sha1"; @@ -14272,7 +14289,7 @@ rec { } { name = "thiserror"; - packageId = "thiserror 2.0.12"; + packageId = "thiserror 2.0.17"; } { name = "utf-8"; @@ -14282,7 +14299,7 @@ rec { devDependencies = [ { name = "rand"; - packageId = "rand 0.9.1"; + packageId = "rand 0.9.2"; } ]; features = { @@ -14308,9 +14325,9 @@ rec { }; "typenum" = rec { crateName = "typenum"; - version = "1.18.0"; + version = "1.19.0"; edition = "2018"; - sha256 = "0gwgz8n91pv40gabrr1lzji0b0hsmg0817njpy397bq7rvizzk0x"; + sha256 = "1fw2mpbn2vmqan56j1b3fbpcdg80mz26fm53fs16bq5xcq84hban"; authors = [ "Paho Lurie-Gregg " "Andre Bogus " @@ -14451,9 +14468,9 @@ rec { }; "unicode-ident" = rec { crateName = "unicode-ident"; - version = "1.0.18"; + version = "1.0.19"; edition = "2018"; - sha256 = "04k5r6sijkafzljykdq26mhjpmhdx4jwzvn1lh90g9ax9903jpss"; + sha256 = "17bx1j1zf6b9j3kpyf74mraary7ava3984km0n8kh499h5a58fpn"; libName = "unicode_ident"; authors = [ "David Tolnay " @@ -14492,11 +14509,11 @@ rec { }; resolvedDefaultFeatures = [ "cjk" "default" ]; }; - "unicode-width 0.2.1" = rec { + "unicode-width 0.2.2" = rec { crateName = "unicode-width"; - version = "0.2.1"; + version = "0.2.2"; edition = "2021"; - sha256 = "0k0mlq7xy1y1kq6cgv1r2rs2knn6rln3g3af50rhi0dkgp60f6ja"; + sha256 = "0m7jjzlcccw716dy9423xxh0clys8pfpllc5smvfxrzdf66h9b5l"; libName = "unicode_width"; authors = [ "kwantam " @@ -14564,9 +14581,9 @@ rec { }; "url" = rec { crateName = "url"; - version = "2.5.4"; + version = "2.5.7"; edition = "2018"; - sha256 = "0q6sgznyy2n4l5lm16zahkisvc9nip9aa5q1pps7656xra3bdy1j"; + sha256 = "0nzghdv0kcksyvri0npxbjzyx2ihprks5k590y77bld355m17g08"; authors = [ "The rust-url developers" ]; @@ -14593,6 +14610,7 @@ rec { name = "serde"; packageId = "serde"; optional = true; + usesDefaultFeatures = false; features = [ "derive" ]; } ]; @@ -14606,7 +14624,7 @@ rec { features = { "default" = [ "std" ]; "serde" = [ "dep:serde" ]; - "std" = [ "idna/std" "percent-encoding/std" "form_urlencoded/std" ]; + "std" = [ "idna/std" "percent-encoding/std" "form_urlencoded/std" "serde/std" ]; }; resolvedDefaultFeatures = [ "default" "serde" "std" ]; }; @@ -14666,7 +14684,7 @@ rec { dependencies = [ { name = "indexmap"; - packageId = "indexmap 2.10.0"; + packageId = "indexmap 2.11.4"; features = [ "serde" ]; } { @@ -14731,7 +14749,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; features = [ "full" "extra-traits" ]; } ]; @@ -14831,9 +14849,9 @@ rec { }; "uuid" = rec { crateName = "uuid"; - version = "1.17.0"; + version = "1.18.1"; edition = "2018"; - sha256 = "07ckq4fdiygy02gmislzfp727hx9zw6lskk9dbcds5ax3sfikx1w"; + sha256 = "18kh01qmfayn4psap52x8xdjkzw2q8bcbpnhhxjs05dr22mbi1rg"; authors = [ "Ashley Mannix" "Dylan DPC" @@ -14842,7 +14860,7 @@ rec { dependencies = [ { name = "getrandom"; - packageId = "getrandom 0.3.3"; + packageId = "getrandom 0.3.4"; optional = true; target = { target, features }: (!(("wasm32" == target."arch" or null) && (("unknown" == target."os" or null) || ("none" == target."os" or null)))); } @@ -15081,7 +15099,7 @@ rec { ]; }; - "wasi 0.11.1+wasi-snapshot-preview1" = rec { + "wasi" = rec { crateName = "wasi"; version = "0.11.1+wasi-snapshot-preview1"; edition = "2018"; @@ -15097,34 +15115,31 @@ rec { }; resolvedDefaultFeatures = [ "default" "std" ]; }; - "wasi 0.14.2+wasi-0.2.4" = rec { - crateName = "wasi"; - version = "0.14.2+wasi-0.2.4"; + "wasip2" = rec { + crateName = "wasip2"; + version = "1.0.1+wasi-0.2.4"; edition = "2021"; - sha256 = "1cwcqjr3dgdq8j325awgk8a715h0hg0f7jqzsb077n4qm6jzk0wn"; - authors = [ - "The Cranelift Project Developers" - ]; + sha256 = "1rsqmpspwy0zja82xx7kbkbg9fv34a4a2if3sbd76dy64a244qh5"; dependencies = [ { - name = "wit-bindgen-rt"; - packageId = "wit-bindgen-rt"; - features = [ "bitflags" ]; + name = "wit-bindgen"; + packageId = "wit-bindgen"; + usesDefaultFeatures = false; } ]; features = { - "compiler_builtins" = [ "dep:compiler_builtins" ]; + "alloc" = [ "dep:alloc" ]; + "bitflags" = [ "wit-bindgen/bitflags" ]; "core" = [ "dep:core" ]; - "default" = [ "std" ]; - "rustc-dep-of-std" = [ "compiler_builtins" "core" "rustc-std-workspace-alloc" ]; - "rustc-std-workspace-alloc" = [ "dep:rustc-std-workspace-alloc" ]; + "default" = [ "std" "bitflags" ]; + "rustc-dep-of-std" = [ "core" "alloc" "wit-bindgen/rustc-dep-of-std" ]; }; }; "wasm-bindgen" = rec { crateName = "wasm-bindgen"; - version = "0.2.100"; + version = "0.2.104"; edition = "2021"; - sha256 = "1x8ymcm6yi3i1rwj78myl1agqv2m86i648myy3lc97s9swlqkp0y"; + sha256 = "0b8f4l6pqm0bz0lj5xgwmchb6977n71vmh7srd0axwg93b011nn1"; libName = "wasm_bindgen"; authors = [ "The wasm-bindgen Developers" @@ -15139,15 +15154,21 @@ rec { packageId = "once_cell"; usesDefaultFeatures = false; } - { - name = "rustversion"; - packageId = "rustversion"; - optional = true; - } { name = "wasm-bindgen-macro"; packageId = "wasm-bindgen-macro"; } + { + name = "wasm-bindgen-shared"; + packageId = "wasm-bindgen-shared"; + } + ]; + buildDependencies = [ + { + name = "rustversion"; + packageId = "rustversion"; + rename = "rustversion-compat"; + } ]; devDependencies = [ { @@ -15156,23 +15177,20 @@ rec { } ]; features = { - "default" = [ "std" "msrv" ]; + "default" = [ "std" ]; "enable-interning" = [ "std" ]; - "msrv" = [ "rustversion" ]; - "rustversion" = [ "dep:rustversion" ]; "serde" = [ "dep:serde" ]; "serde-serialize" = [ "serde" "serde_json" "std" ]; "serde_json" = [ "dep:serde_json" ]; "strict-macro" = [ "wasm-bindgen-macro/strict-macro" ]; - "xxx_debug_only_print_generated_code" = [ "wasm-bindgen-macro/xxx_debug_only_print_generated_code" ]; }; - resolvedDefaultFeatures = [ "default" "msrv" "rustversion" "std" ]; + resolvedDefaultFeatures = [ "default" "msrv" "std" ]; }; "wasm-bindgen-backend" = rec { crateName = "wasm-bindgen-backend"; - version = "0.2.100"; + version = "0.2.104"; edition = "2021"; - sha256 = "1ihbf1hq3y81c4md9lyh6lcwbx6a5j0fw4fygd423g62lm8hc2ig"; + sha256 = "069vnhhn2j4w2gwd8rch6g8d3iwkrgi45fas6i3qm7glcrd9l737"; libName = "wasm_bindgen_backend"; authors = [ "The wasm-bindgen Developers" @@ -15196,7 +15214,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; features = [ "full" ]; } { @@ -15210,9 +15228,9 @@ rec { }; "wasm-bindgen-futures" = rec { crateName = "wasm-bindgen-futures"; - version = "0.4.50"; + version = "0.4.54"; edition = "2021"; - sha256 = "0q8ymi6i9r3vxly551dhxcyai7nc491mspj0j1wbafxwq074fpam"; + sha256 = "0p5c10vfd7p7c607x3cgyfw9h77z1k33d6zzw2x77k3qwi0qs0vy"; libName = "wasm_bindgen_futures"; authors = [ "The wasm-bindgen Developers" @@ -15255,9 +15273,9 @@ rec { }; "wasm-bindgen-macro" = rec { crateName = "wasm-bindgen-macro"; - version = "0.2.100"; + version = "0.2.104"; edition = "2021"; - sha256 = "01xls2dvzh38yj17jgrbiib1d3nyad7k2yw9s0mpklwys333zrkz"; + sha256 = "06d1m5bg272h6jabq0snm7c50fifjz6r20f5hqlmz7y5wivh99kw"; procMacro = true; libName = "wasm_bindgen_macro"; authors = [ @@ -15279,9 +15297,9 @@ rec { }; "wasm-bindgen-macro-support" = rec { crateName = "wasm-bindgen-macro-support"; - version = "0.2.100"; + version = "0.2.104"; edition = "2021"; - sha256 = "1plm8dh20jg2id0320pbmrlsv6cazfv6b6907z19ys4z1jj7xs4a"; + sha256 = "1mr18kx7ima1pmsqlkk982q4a0vf3r8s1x6901jb59sd1prd41wz"; libName = "wasm_bindgen_macro_support"; authors = [ "The wasm-bindgen Developers" @@ -15297,7 +15315,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; features = [ "visit" "visit-mut" "full" ]; } { @@ -15315,10 +15333,10 @@ rec { }; "wasm-bindgen-shared" = rec { crateName = "wasm-bindgen-shared"; - version = "0.2.100"; + version = "0.2.104"; edition = "2021"; links = "wasm_bindgen"; - sha256 = "0gffxvqgbh9r9xl36gprkfnh3w9gl8wgia6xrin7v11sjcxxf18s"; + sha256 = "1la1xj9v3gmawnlyi7lc3mb3xi447r6frb98hi2fb9m1nb47vmms"; libName = "wasm_bindgen_shared"; authors = [ "The wasm-bindgen Developers" @@ -15333,9 +15351,9 @@ rec { }; "web-sys" = rec { crateName = "web-sys"; - version = "0.3.77"; + version = "0.3.81"; edition = "2021"; - sha256 = "1lnmc1ffbq34qw91nndklqqm75rasaffj2g4f8h1yvqqz4pdvdik"; + sha256 = "0871ifd79ni9813sp5amk7wb3avznkijlsly2ap4r9r4m4bw8rwk"; libName = "web_sys"; authors = [ "The wasm-bindgen Developers" @@ -15450,6 +15468,7 @@ rec { "FontFaceSetLoadEvent" = [ "Event" ]; "GainNode" = [ "AudioNode" "EventTarget" ]; "GamepadEvent" = [ "Event" ]; + "GestureEvent" = [ "Event" "UiEvent" ]; "GpuDevice" = [ "EventTarget" ]; "GpuInternalError" = [ "GpuError" ]; "GpuOutOfMemoryError" = [ "GpuError" ]; @@ -15604,6 +15623,8 @@ rec { "PerformanceNavigationTiming" = [ "PerformanceEntry" "PerformanceResourceTiming" ]; "PerformanceResourceTiming" = [ "PerformanceEntry" ]; "PermissionStatus" = [ "EventTarget" ]; + "PictureInPictureEvent" = [ "Event" ]; + "PictureInPictureWindow" = [ "EventTarget" ]; "PointerEvent" = [ "Event" "MouseEvent" "UiEvent" ]; "PopStateEvent" = [ "Event" ]; "PopupBlockedEvent" = [ "Event" ]; @@ -15811,7 +15832,7 @@ rec { "default" = [ "std" ]; "std" = [ "wasm-bindgen/std" "js-sys/std" ]; }; - resolvedDefaultFeatures = [ "AbortController" "AbortSignal" "Blob" "BlobPropertyBag" "Event" "EventTarget" "File" "FormData" "Headers" "MessageEvent" "ReadableStream" "Request" "RequestCredentials" "RequestInit" "RequestMode" "Response" "ServiceWorkerGlobalScope" "Window" "Worker" "WorkerGlobalScope" "default" "std" ]; + resolvedDefaultFeatures = [ "AbortController" "AbortSignal" "Blob" "BlobPropertyBag" "Event" "EventTarget" "File" "FormData" "Headers" "MessageEvent" "ReadableStream" "Request" "RequestCache" "RequestCredentials" "RequestInit" "RequestMode" "Response" "ServiceWorkerGlobalScope" "Window" "Worker" "WorkerGlobalScope" "default" "std" ]; }; "web-time" = rec { crateName = "web-time"; @@ -15838,9 +15859,9 @@ rec { }; "webpki-roots" = rec { crateName = "webpki-roots"; - version = "1.0.1"; + version = "1.0.3"; edition = "2021"; - sha256 = "00mm4bhkvis59pm2a7yz3ak6q8rykcj0ddj09wxfskm285ddv0l7"; + sha256 = "1f49w0s7f3fgczvjri179wh2a9g8jpkmdi5bi5l8p7ylsb031c9j"; libName = "webpki_roots"; dependencies = [ { @@ -15872,7 +15893,7 @@ rec { } { name = "rustix"; - packageId = "rustix"; + packageId = "rustix 0.38.44"; usesDefaultFeatures = false; target = { target, features }: ((target."unix" or false) || ("wasi" == target."os" or null) || ("redox" == target."os" or null)); features = [ "fs" "std" ]; @@ -15912,7 +15933,7 @@ rec { features = { "debug" = [ "impl-debug" ]; }; - resolvedDefaultFeatures = [ "consoleapi" "errhandlingapi" "fileapi" "handleapi" "impl-default" "processenv" "synchapi" "winbase" "winerror" "winuser" ]; + resolvedDefaultFeatures = [ "consoleapi" "handleapi" "impl-default" "processenv" "synchapi" "winbase" "winerror" "winuser" ]; }; "winapi-i686-pc-windows-gnu" = rec { crateName = "winapi-i686-pc-windows-gnu"; @@ -15927,9 +15948,9 @@ rec { }; "winapi-util" = rec { crateName = "winapi-util"; - version = "0.1.9"; + version = "0.1.11"; edition = "2021"; - sha256 = "1fqhkcl9scd230cnfj8apfficpf5c9vhwnk4yy9xfc1sw69iq8ng"; + sha256 = "08hdl7mkll7pz8whg869h58c1r9y7in0w0pk8fm24qc77k0b39y2"; libName = "winapi_util"; authors = [ "Andrew Gallant " @@ -15937,7 +15958,7 @@ rec { dependencies = [ { name = "windows-sys"; - packageId = "windows-sys 0.59.0"; + packageId = "windows-sys 0.61.2"; target = { target, features }: (target."windows" or false); features = [ "Win32_Foundation" "Win32_Storage_FileSystem" "Win32_System_Console" "Win32_System_SystemInformation" ]; } @@ -15957,13 +15978,10 @@ rec { }; "windows-core" = rec { crateName = "windows-core"; - version = "0.61.2"; + version = "0.62.2"; edition = "2021"; - sha256 = "1qsa3iw14wk4ngfl7ipcvdf9xyq456ms7cx2i9iwf406p7fx7zf0"; + sha256 = "1swxpv1a8qvn3bkxv8cn663238h2jccq35ff3nsj61jdsca3ms5q"; libName = "windows_core"; - authors = [ - "Microsoft" - ]; dependencies = [ { name = "windows-implement"; @@ -15977,7 +15995,7 @@ rec { } { name = "windows-link"; - packageId = "windows-link"; + packageId = "windows-link 0.2.1"; usesDefaultFeatures = false; } { @@ -15999,14 +16017,11 @@ rec { }; "windows-implement" = rec { crateName = "windows-implement"; - version = "0.60.0"; + version = "0.60.2"; edition = "2021"; - sha256 = "0dm88k3hlaax85xkls4gf597ar4z8m5vzjjagzk910ph7b8xszx4"; + sha256 = "1psxhmklzcf3wjs4b8qb42qb6znvc142cb5pa74rsyxm1822wgh5"; procMacro = true; libName = "windows_implement"; - authors = [ - "Microsoft" - ]; dependencies = [ { name = "proc-macro2"; @@ -16020,7 +16035,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; usesDefaultFeatures = false; features = [ "parsing" "proc-macro" "printing" "full" "clone-impls" ]; } @@ -16029,14 +16044,11 @@ rec { }; "windows-interface" = rec { crateName = "windows-interface"; - version = "0.59.1"; + version = "0.59.3"; edition = "2021"; - sha256 = "1a4zr8740gyzzhq02xgl6vx8l669jwfby57xgf0zmkcdkyv134mx"; + sha256 = "0n73cwrn4247d0axrk7gjp08p34x1723483jxjxjdfkh4m56qc9z"; procMacro = true; libName = "windows_interface"; - authors = [ - "Microsoft" - ]; dependencies = [ { name = "proc-macro2"; @@ -16050,14 +16062,14 @@ rec { } { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; usesDefaultFeatures = false; features = [ "parsing" "proc-macro" "printing" "full" "clone-impls" ]; } ]; }; - "windows-link" = rec { + "windows-link 0.1.3" = rec { crateName = "windows-link"; version = "0.1.3"; edition = "2021"; @@ -16067,20 +16079,25 @@ rec { "Microsoft" ]; + }; + "windows-link 0.2.1" = rec { + crateName = "windows-link"; + version = "0.2.1"; + edition = "2021"; + sha256 = "1rag186yfr3xx7piv5rg8b6im2dwcf8zldiflvb22xbzwli5507h"; + libName = "windows_link"; + }; "windows-result" = rec { crateName = "windows-result"; - version = "0.3.4"; + version = "0.4.1"; edition = "2021"; - sha256 = "1il60l6idrc6hqsij0cal0mgva6n3w6gq4ziban8wv6c6b9jpx2n"; + sha256 = "1d9yhmrmmfqh56zlj751s5wfm9a2aa7az9rd7nn5027nxa4zm0bp"; libName = "windows_result"; - authors = [ - "Microsoft" - ]; dependencies = [ { name = "windows-link"; - packageId = "windows-link"; + packageId = "windows-link 0.2.1"; usesDefaultFeatures = false; } ]; @@ -16091,17 +16108,14 @@ rec { }; "windows-strings" = rec { crateName = "windows-strings"; - version = "0.4.2"; + version = "0.5.1"; edition = "2021"; - sha256 = "0mrv3plibkla4v5kaakc2rfksdd0b14plcmidhbkcfqc78zwkrjn"; + sha256 = "14bhng9jqv4fyl7lqjz3az7vzh8pw0w4am49fsqgcz67d67x0dvq"; libName = "windows_strings"; - authors = [ - "Microsoft" - ]; dependencies = [ { name = "windows-link"; - packageId = "windows-link"; + packageId = "windows-link 0.2.1"; usesDefaultFeatures = false; } ]; @@ -16650,7 +16664,7 @@ rec { "Win32_Web" = [ "Win32" ]; "Win32_Web_InternetExplorer" = [ "Win32_Web" ]; }; - resolvedDefaultFeatures = [ "Win32" "Win32_Foundation" "Win32_Networking" "Win32_Networking_WinSock" "Win32_Security" "Win32_Storage" "Win32_Storage_FileSystem" "Win32_System" "Win32_System_Console" "Win32_System_IO" "Win32_System_Pipes" "Win32_System_SystemServices" "Win32_System_Threading" "Win32_System_WindowsProgramming" "default" ]; + resolvedDefaultFeatures = [ "Win32" "Win32_Foundation" "Win32_Networking" "Win32_Networking_WinSock" "Win32_System" "Win32_System_IO" "Win32_System_Threading" "Win32_System_WindowsProgramming" "default" ]; }; "windows-sys 0.59.0" = rec { crateName = "windows-sys"; @@ -16909,7 +16923,7 @@ rec { "Win32_Web" = [ "Win32" ]; "Win32_Web_InternetExplorer" = [ "Win32_Web" ]; }; - resolvedDefaultFeatures = [ "Wdk" "Wdk_Foundation" "Wdk_Storage" "Wdk_Storage_FileSystem" "Wdk_System" "Wdk_System_IO" "Win32" "Win32_Foundation" "Win32_NetworkManagement" "Win32_NetworkManagement_IpHelper" "Win32_Networking" "Win32_Networking_WinSock" "Win32_Security" "Win32_Security_Authentication" "Win32_Security_Authentication_Identity" "Win32_Security_Credentials" "Win32_Security_Cryptography" "Win32_Storage" "Win32_Storage_FileSystem" "Win32_System" "Win32_System_Com" "Win32_System_Console" "Win32_System_IO" "Win32_System_LibraryLoader" "Win32_System_Memory" "Win32_System_Pipes" "Win32_System_SystemInformation" "Win32_System_Threading" "Win32_System_WindowsProgramming" "Win32_UI" "Win32_UI_Input" "Win32_UI_Input_KeyboardAndMouse" "Win32_UI_Shell" "default" ]; + resolvedDefaultFeatures = [ "Win32" "Win32_Foundation" "Win32_NetworkManagement" "Win32_NetworkManagement_IpHelper" "Win32_Networking" "Win32_Networking_WinSock" "Win32_System" "Win32_System_Com" "Win32_System_Threading" "Win32_UI" "Win32_UI_Shell" "default" ]; }; "windows-sys 0.60.2" = rec { crateName = "windows-sys"; @@ -16923,7 +16937,7 @@ rec { dependencies = [ { name = "windows-targets"; - packageId = "windows-targets 0.53.2"; + packageId = "windows-targets 0.53.5"; usesDefaultFeatures = false; } ]; @@ -17174,7 +17188,269 @@ rec { "Win32_Web" = [ "Win32" ]; "Win32_Web_InternetExplorer" = [ "Win32_Web" ]; }; - resolvedDefaultFeatures = [ "Win32" "Win32_Foundation" "Win32_Storage" "Win32_Storage_FileSystem" "Win32_System" "Win32_System_Console" "Win32_System_Diagnostics" "Win32_System_Diagnostics_Debug" "Win32_UI" "Win32_UI_Input" "Win32_UI_Input_KeyboardAndMouse" "default" ]; + resolvedDefaultFeatures = [ "Win32" "Win32_Foundation" "Win32_Networking" "Win32_Networking_WinSock" "Win32_System" "Win32_System_Console" "Win32_System_IO" "Win32_System_Threading" "Win32_System_WindowsProgramming" "default" ]; + }; + "windows-sys 0.61.2" = rec { + crateName = "windows-sys"; + version = "0.61.2"; + edition = "2021"; + sha256 = "1z7k3y9b6b5h52kid57lvmvm05362zv1v8w0gc7xyv5xphlp44xf"; + libName = "windows_sys"; + dependencies = [ + { + name = "windows-link"; + packageId = "windows-link 0.2.1"; + usesDefaultFeatures = false; + } + ]; + features = { + "Wdk" = [ "Win32_Foundation" ]; + "Wdk_Devices" = [ "Wdk" ]; + "Wdk_Devices_Bluetooth" = [ "Wdk_Devices" ]; + "Wdk_Devices_HumanInterfaceDevice" = [ "Wdk_Devices" ]; + "Wdk_Foundation" = [ "Wdk" ]; + "Wdk_Graphics" = [ "Wdk" ]; + "Wdk_Graphics_Direct3D" = [ "Wdk_Graphics" ]; + "Wdk_NetworkManagement" = [ "Wdk" ]; + "Wdk_NetworkManagement_Ndis" = [ "Wdk_NetworkManagement" ]; + "Wdk_NetworkManagement_WindowsFilteringPlatform" = [ "Wdk_NetworkManagement" ]; + "Wdk_Storage" = [ "Wdk" ]; + "Wdk_Storage_FileSystem" = [ "Wdk_Storage" ]; + "Wdk_Storage_FileSystem_Minifilters" = [ "Wdk_Storage_FileSystem" ]; + "Wdk_System" = [ "Wdk" ]; + "Wdk_System_IO" = [ "Wdk_System" ]; + "Wdk_System_Memory" = [ "Wdk_System" ]; + "Wdk_System_OfflineRegistry" = [ "Wdk_System" ]; + "Wdk_System_Registry" = [ "Wdk_System" ]; + "Wdk_System_SystemInformation" = [ "Wdk_System" ]; + "Wdk_System_SystemServices" = [ "Wdk_System" ]; + "Wdk_System_Threading" = [ "Wdk_System" ]; + "Win32" = [ "Win32_Foundation" ]; + "Win32_Data" = [ "Win32" ]; + "Win32_Data_HtmlHelp" = [ "Win32_Data" ]; + "Win32_Data_RightsManagement" = [ "Win32_Data" ]; + "Win32_Devices" = [ "Win32" ]; + "Win32_Devices_AllJoyn" = [ "Win32_Devices" ]; + "Win32_Devices_Beep" = [ "Win32_Devices" ]; + "Win32_Devices_BiometricFramework" = [ "Win32_Devices" ]; + "Win32_Devices_Bluetooth" = [ "Win32_Devices" ]; + "Win32_Devices_Cdrom" = [ "Win32_Devices" ]; + "Win32_Devices_Communication" = [ "Win32_Devices" ]; + "Win32_Devices_DeviceAndDriverInstallation" = [ "Win32_Devices" ]; + "Win32_Devices_DeviceQuery" = [ "Win32_Devices" ]; + "Win32_Devices_Display" = [ "Win32_Devices" ]; + "Win32_Devices_Dvd" = [ "Win32_Devices" ]; + "Win32_Devices_Enumeration" = [ "Win32_Devices" ]; + "Win32_Devices_Enumeration_Pnp" = [ "Win32_Devices_Enumeration" ]; + "Win32_Devices_Fax" = [ "Win32_Devices" ]; + "Win32_Devices_HumanInterfaceDevice" = [ "Win32_Devices" ]; + "Win32_Devices_Nfc" = [ "Win32_Devices" ]; + "Win32_Devices_Nfp" = [ "Win32_Devices" ]; + "Win32_Devices_PortableDevices" = [ "Win32_Devices" ]; + "Win32_Devices_Properties" = [ "Win32_Devices" ]; + "Win32_Devices_Pwm" = [ "Win32_Devices" ]; + "Win32_Devices_Sensors" = [ "Win32_Devices" ]; + "Win32_Devices_SerialCommunication" = [ "Win32_Devices" ]; + "Win32_Devices_Tapi" = [ "Win32_Devices" ]; + "Win32_Devices_Usb" = [ "Win32_Devices" ]; + "Win32_Devices_WebServicesOnDevices" = [ "Win32_Devices" ]; + "Win32_Foundation" = [ "Win32" ]; + "Win32_Gaming" = [ "Win32" ]; + "Win32_Globalization" = [ "Win32" ]; + "Win32_Graphics" = [ "Win32" ]; + "Win32_Graphics_Dwm" = [ "Win32_Graphics" ]; + "Win32_Graphics_Gdi" = [ "Win32_Graphics" ]; + "Win32_Graphics_GdiPlus" = [ "Win32_Graphics" ]; + "Win32_Graphics_Hlsl" = [ "Win32_Graphics" ]; + "Win32_Graphics_OpenGL" = [ "Win32_Graphics" ]; + "Win32_Graphics_Printing" = [ "Win32_Graphics" ]; + "Win32_Graphics_Printing_PrintTicket" = [ "Win32_Graphics_Printing" ]; + "Win32_Management" = [ "Win32" ]; + "Win32_Management_MobileDeviceManagementRegistration" = [ "Win32_Management" ]; + "Win32_Media" = [ "Win32" ]; + "Win32_Media_Audio" = [ "Win32_Media" ]; + "Win32_Media_DxMediaObjects" = [ "Win32_Media" ]; + "Win32_Media_KernelStreaming" = [ "Win32_Media" ]; + "Win32_Media_Multimedia" = [ "Win32_Media" ]; + "Win32_Media_Streaming" = [ "Win32_Media" ]; + "Win32_Media_WindowsMediaFormat" = [ "Win32_Media" ]; + "Win32_NetworkManagement" = [ "Win32" ]; + "Win32_NetworkManagement_Dhcp" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_Dns" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_InternetConnectionWizard" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_IpHelper" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_Multicast" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_Ndis" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_NetBios" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_NetManagement" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_NetShell" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_NetworkDiagnosticsFramework" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_P2P" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_QoS" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_Rras" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_Snmp" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_WNet" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_WebDav" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_WiFi" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_WindowsConnectionManager" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_WindowsFilteringPlatform" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_WindowsFirewall" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_WindowsNetworkVirtualization" = [ "Win32_NetworkManagement" ]; + "Win32_Networking" = [ "Win32" ]; + "Win32_Networking_ActiveDirectory" = [ "Win32_Networking" ]; + "Win32_Networking_Clustering" = [ "Win32_Networking" ]; + "Win32_Networking_HttpServer" = [ "Win32_Networking" ]; + "Win32_Networking_Ldap" = [ "Win32_Networking" ]; + "Win32_Networking_WebSocket" = [ "Win32_Networking" ]; + "Win32_Networking_WinHttp" = [ "Win32_Networking" ]; + "Win32_Networking_WinInet" = [ "Win32_Networking" ]; + "Win32_Networking_WinSock" = [ "Win32_Networking" ]; + "Win32_Networking_WindowsWebServices" = [ "Win32_Networking" ]; + "Win32_Security" = [ "Win32" ]; + "Win32_Security_AppLocker" = [ "Win32_Security" ]; + "Win32_Security_Authentication" = [ "Win32_Security" ]; + "Win32_Security_Authentication_Identity" = [ "Win32_Security_Authentication" ]; + "Win32_Security_Authorization" = [ "Win32_Security" ]; + "Win32_Security_Credentials" = [ "Win32_Security" ]; + "Win32_Security_Cryptography" = [ "Win32_Security" ]; + "Win32_Security_Cryptography_Catalog" = [ "Win32_Security_Cryptography" ]; + "Win32_Security_Cryptography_Certificates" = [ "Win32_Security_Cryptography" ]; + "Win32_Security_Cryptography_Sip" = [ "Win32_Security_Cryptography" ]; + "Win32_Security_Cryptography_UI" = [ "Win32_Security_Cryptography" ]; + "Win32_Security_DiagnosticDataQuery" = [ "Win32_Security" ]; + "Win32_Security_DirectoryServices" = [ "Win32_Security" ]; + "Win32_Security_EnterpriseData" = [ "Win32_Security" ]; + "Win32_Security_ExtensibleAuthenticationProtocol" = [ "Win32_Security" ]; + "Win32_Security_Isolation" = [ "Win32_Security" ]; + "Win32_Security_LicenseProtection" = [ "Win32_Security" ]; + "Win32_Security_NetworkAccessProtection" = [ "Win32_Security" ]; + "Win32_Security_WinTrust" = [ "Win32_Security" ]; + "Win32_Security_WinWlx" = [ "Win32_Security" ]; + "Win32_Storage" = [ "Win32" ]; + "Win32_Storage_Cabinets" = [ "Win32_Storage" ]; + "Win32_Storage_CloudFilters" = [ "Win32_Storage" ]; + "Win32_Storage_Compression" = [ "Win32_Storage" ]; + "Win32_Storage_DistributedFileSystem" = [ "Win32_Storage" ]; + "Win32_Storage_FileHistory" = [ "Win32_Storage" ]; + "Win32_Storage_FileSystem" = [ "Win32_Storage" ]; + "Win32_Storage_Imapi" = [ "Win32_Storage" ]; + "Win32_Storage_IndexServer" = [ "Win32_Storage" ]; + "Win32_Storage_InstallableFileSystems" = [ "Win32_Storage" ]; + "Win32_Storage_IscsiDisc" = [ "Win32_Storage" ]; + "Win32_Storage_Jet" = [ "Win32_Storage" ]; + "Win32_Storage_Nvme" = [ "Win32_Storage" ]; + "Win32_Storage_OfflineFiles" = [ "Win32_Storage" ]; + "Win32_Storage_OperationRecorder" = [ "Win32_Storage" ]; + "Win32_Storage_Packaging" = [ "Win32_Storage" ]; + "Win32_Storage_Packaging_Appx" = [ "Win32_Storage_Packaging" ]; + "Win32_Storage_ProjectedFileSystem" = [ "Win32_Storage" ]; + "Win32_Storage_StructuredStorage" = [ "Win32_Storage" ]; + "Win32_Storage_Vhd" = [ "Win32_Storage" ]; + "Win32_Storage_Xps" = [ "Win32_Storage" ]; + "Win32_System" = [ "Win32" ]; + "Win32_System_AddressBook" = [ "Win32_System" ]; + "Win32_System_Antimalware" = [ "Win32_System" ]; + "Win32_System_ApplicationInstallationAndServicing" = [ "Win32_System" ]; + "Win32_System_ApplicationVerifier" = [ "Win32_System" ]; + "Win32_System_ClrHosting" = [ "Win32_System" ]; + "Win32_System_Com" = [ "Win32_System" ]; + "Win32_System_Com_Marshal" = [ "Win32_System_Com" ]; + "Win32_System_Com_StructuredStorage" = [ "Win32_System_Com" ]; + "Win32_System_Com_Urlmon" = [ "Win32_System_Com" ]; + "Win32_System_ComponentServices" = [ "Win32_System" ]; + "Win32_System_Console" = [ "Win32_System" ]; + "Win32_System_CorrelationVector" = [ "Win32_System" ]; + "Win32_System_DataExchange" = [ "Win32_System" ]; + "Win32_System_DeploymentServices" = [ "Win32_System" ]; + "Win32_System_DeveloperLicensing" = [ "Win32_System" ]; + "Win32_System_Diagnostics" = [ "Win32_System" ]; + "Win32_System_Diagnostics_Ceip" = [ "Win32_System_Diagnostics" ]; + "Win32_System_Diagnostics_Debug" = [ "Win32_System_Diagnostics" ]; + "Win32_System_Diagnostics_Debug_Extensions" = [ "Win32_System_Diagnostics_Debug" ]; + "Win32_System_Diagnostics_Etw" = [ "Win32_System_Diagnostics" ]; + "Win32_System_Diagnostics_ProcessSnapshotting" = [ "Win32_System_Diagnostics" ]; + "Win32_System_Diagnostics_ToolHelp" = [ "Win32_System_Diagnostics" ]; + "Win32_System_Diagnostics_TraceLogging" = [ "Win32_System_Diagnostics" ]; + "Win32_System_DistributedTransactionCoordinator" = [ "Win32_System" ]; + "Win32_System_Environment" = [ "Win32_System" ]; + "Win32_System_ErrorReporting" = [ "Win32_System" ]; + "Win32_System_EventCollector" = [ "Win32_System" ]; + "Win32_System_EventLog" = [ "Win32_System" ]; + "Win32_System_EventNotificationService" = [ "Win32_System" ]; + "Win32_System_GroupPolicy" = [ "Win32_System" ]; + "Win32_System_HostCompute" = [ "Win32_System" ]; + "Win32_System_HostComputeNetwork" = [ "Win32_System" ]; + "Win32_System_HostComputeSystem" = [ "Win32_System" ]; + "Win32_System_Hypervisor" = [ "Win32_System" ]; + "Win32_System_IO" = [ "Win32_System" ]; + "Win32_System_Iis" = [ "Win32_System" ]; + "Win32_System_Ioctl" = [ "Win32_System" ]; + "Win32_System_JobObjects" = [ "Win32_System" ]; + "Win32_System_Js" = [ "Win32_System" ]; + "Win32_System_Kernel" = [ "Win32_System" ]; + "Win32_System_LibraryLoader" = [ "Win32_System" ]; + "Win32_System_Mailslots" = [ "Win32_System" ]; + "Win32_System_Mapi" = [ "Win32_System" ]; + "Win32_System_Memory" = [ "Win32_System" ]; + "Win32_System_Memory_NonVolatile" = [ "Win32_System_Memory" ]; + "Win32_System_MessageQueuing" = [ "Win32_System" ]; + "Win32_System_MixedReality" = [ "Win32_System" ]; + "Win32_System_Ole" = [ "Win32_System" ]; + "Win32_System_PasswordManagement" = [ "Win32_System" ]; + "Win32_System_Performance" = [ "Win32_System" ]; + "Win32_System_Performance_HardwareCounterProfiling" = [ "Win32_System_Performance" ]; + "Win32_System_Pipes" = [ "Win32_System" ]; + "Win32_System_Power" = [ "Win32_System" ]; + "Win32_System_ProcessStatus" = [ "Win32_System" ]; + "Win32_System_Recovery" = [ "Win32_System" ]; + "Win32_System_Registry" = [ "Win32_System" ]; + "Win32_System_RemoteDesktop" = [ "Win32_System" ]; + "Win32_System_RemoteManagement" = [ "Win32_System" ]; + "Win32_System_RestartManager" = [ "Win32_System" ]; + "Win32_System_Restore" = [ "Win32_System" ]; + "Win32_System_Rpc" = [ "Win32_System" ]; + "Win32_System_Search" = [ "Win32_System" ]; + "Win32_System_Search_Common" = [ "Win32_System_Search" ]; + "Win32_System_SecurityCenter" = [ "Win32_System" ]; + "Win32_System_Services" = [ "Win32_System" ]; + "Win32_System_SetupAndMigration" = [ "Win32_System" ]; + "Win32_System_Shutdown" = [ "Win32_System" ]; + "Win32_System_StationsAndDesktops" = [ "Win32_System" ]; + "Win32_System_SubsystemForLinux" = [ "Win32_System" ]; + "Win32_System_SystemInformation" = [ "Win32_System" ]; + "Win32_System_SystemServices" = [ "Win32_System" ]; + "Win32_System_Threading" = [ "Win32_System" ]; + "Win32_System_Time" = [ "Win32_System" ]; + "Win32_System_TpmBaseServices" = [ "Win32_System" ]; + "Win32_System_UserAccessLogging" = [ "Win32_System" ]; + "Win32_System_Variant" = [ "Win32_System" ]; + "Win32_System_VirtualDosMachines" = [ "Win32_System" ]; + "Win32_System_WindowsProgramming" = [ "Win32_System" ]; + "Win32_System_Wmi" = [ "Win32_System" ]; + "Win32_UI" = [ "Win32" ]; + "Win32_UI_Accessibility" = [ "Win32_UI" ]; + "Win32_UI_ColorSystem" = [ "Win32_UI" ]; + "Win32_UI_Controls" = [ "Win32_UI" ]; + "Win32_UI_Controls_Dialogs" = [ "Win32_UI_Controls" ]; + "Win32_UI_HiDpi" = [ "Win32_UI" ]; + "Win32_UI_Input" = [ "Win32_UI" ]; + "Win32_UI_Input_Ime" = [ "Win32_UI_Input" ]; + "Win32_UI_Input_KeyboardAndMouse" = [ "Win32_UI_Input" ]; + "Win32_UI_Input_Pointer" = [ "Win32_UI_Input" ]; + "Win32_UI_Input_Touch" = [ "Win32_UI_Input" ]; + "Win32_UI_Input_XboxController" = [ "Win32_UI_Input" ]; + "Win32_UI_InteractionContext" = [ "Win32_UI" ]; + "Win32_UI_Magnification" = [ "Win32_UI" ]; + "Win32_UI_Shell" = [ "Win32_UI" ]; + "Win32_UI_Shell_Common" = [ "Win32_UI_Shell" ]; + "Win32_UI_Shell_PropertiesSystem" = [ "Win32_UI_Shell" ]; + "Win32_UI_TabletPC" = [ "Win32_UI" ]; + "Win32_UI_TextServices" = [ "Win32_UI" ]; + "Win32_UI_WindowsAndMessaging" = [ "Win32_UI" ]; + "Win32_Web" = [ "Win32" ]; + "Win32_Web_InternetExplorer" = [ "Win32_Web" ]; + }; + resolvedDefaultFeatures = [ "Wdk" "Wdk_Foundation" "Wdk_Storage" "Wdk_Storage_FileSystem" "Wdk_System" "Wdk_System_IO" "Win32" "Win32_Foundation" "Win32_Networking" "Win32_Networking_WinSock" "Win32_Security" "Win32_Security_Authentication" "Win32_Security_Authentication_Identity" "Win32_Security_Credentials" "Win32_Security_Cryptography" "Win32_Storage" "Win32_Storage_FileSystem" "Win32_System" "Win32_System_Console" "Win32_System_Diagnostics" "Win32_System_Diagnostics_Debug" "Win32_System_IO" "Win32_System_LibraryLoader" "Win32_System_Memory" "Win32_System_Pipes" "Win32_System_SystemInformation" "Win32_System_SystemServices" "Win32_System_Threading" "Win32_System_WindowsProgramming" "Win32_UI" "Win32_UI_Input" "Win32_UI_Input_KeyboardAndMouse" "default" ]; }; "windows-targets 0.48.5" = rec { crateName = "windows-targets"; @@ -17277,54 +17553,57 @@ rec { ]; }; - "windows-targets 0.53.2" = rec { + "windows-targets 0.53.5" = rec { crateName = "windows-targets"; - version = "0.53.2"; + version = "0.53.5"; edition = "2021"; - sha256 = "1vwanhx2br7dh8mmrszdbcf01bccjr01mcyxcscxl4ffr7y6jvy6"; + sha256 = "1wv9j2gv3l6wj3gkw5j1kr6ymb5q6dfc42yvydjhv3mqa7szjia9"; libName = "windows_targets"; - authors = [ - "Microsoft" - ]; dependencies = [ + { + name = "windows-link"; + packageId = "windows-link 0.2.1"; + usesDefaultFeatures = false; + target = { target, features }: (target."windows_raw_dylib" or false); + } { name = "windows_aarch64_gnullvm"; - packageId = "windows_aarch64_gnullvm 0.53.0"; + packageId = "windows_aarch64_gnullvm 0.53.1"; target = { target, features }: (stdenv.hostPlatform.rust.rustcTarget == "aarch64-pc-windows-gnullvm"); } { name = "windows_aarch64_msvc"; - packageId = "windows_aarch64_msvc 0.53.0"; + packageId = "windows_aarch64_msvc 0.53.1"; target = { target, features }: (("aarch64" == target."arch" or null) && ("msvc" == target."env" or null) && (!(target."windows_raw_dylib" or false))); } { name = "windows_i686_gnu"; - packageId = "windows_i686_gnu 0.53.0"; + packageId = "windows_i686_gnu 0.53.1"; target = { target, features }: (("x86" == target."arch" or null) && ("gnu" == target."env" or null) && (!("llvm" == target."abi" or null)) && (!(target."windows_raw_dylib" or false))); } { name = "windows_i686_gnullvm"; - packageId = "windows_i686_gnullvm 0.53.0"; + packageId = "windows_i686_gnullvm 0.53.1"; target = { target, features }: (stdenv.hostPlatform.rust.rustcTarget == "i686-pc-windows-gnullvm"); } { name = "windows_i686_msvc"; - packageId = "windows_i686_msvc 0.53.0"; + packageId = "windows_i686_msvc 0.53.1"; target = { target, features }: (("x86" == target."arch" or null) && ("msvc" == target."env" or null) && (!(target."windows_raw_dylib" or false))); } { name = "windows_x86_64_gnu"; - packageId = "windows_x86_64_gnu 0.53.0"; + packageId = "windows_x86_64_gnu 0.53.1"; target = { target, features }: (("x86_64" == target."arch" or null) && ("gnu" == target."env" or null) && (!("llvm" == target."abi" or null)) && (!(target."windows_raw_dylib" or false))); } { name = "windows_x86_64_gnullvm"; - packageId = "windows_x86_64_gnullvm 0.53.0"; + packageId = "windows_x86_64_gnullvm 0.53.1"; target = { target, features }: (stdenv.hostPlatform.rust.rustcTarget == "x86_64-pc-windows-gnullvm"); } { name = "windows_x86_64_msvc"; - packageId = "windows_x86_64_msvc 0.53.0"; + packageId = "windows_x86_64_msvc 0.53.1"; target = { target, features }: ((("x86_64" == target."arch" or null) || ("arm64ec" == target."arch" or null)) && ("msvc" == target."env" or null) && (!(target."windows_raw_dylib" or false))); } ]; @@ -17350,14 +17629,11 @@ rec { ]; }; - "windows_aarch64_gnullvm 0.53.0" = rec { + "windows_aarch64_gnullvm 0.53.1" = rec { crateName = "windows_aarch64_gnullvm"; - version = "0.53.0"; + version = "0.53.1"; edition = "2021"; - sha256 = "0r77pbpbcf8bq4yfwpz2hpq3vns8m0yacpvs2i5cn6fx1pwxbf46"; - authors = [ - "Microsoft" - ]; + sha256 = "0lqvdm510mka9w26vmga7hbkmrw9glzc90l4gya5qbxlm1pl3n59"; }; "windows_aarch64_msvc 0.48.5" = rec { @@ -17380,14 +17656,11 @@ rec { ]; }; - "windows_aarch64_msvc 0.53.0" = rec { + "windows_aarch64_msvc 0.53.1" = rec { crateName = "windows_aarch64_msvc"; - version = "0.53.0"; + version = "0.53.1"; edition = "2021"; - sha256 = "0v766yqw51pzxxwp203yqy39ijgjamp54hhdbsyqq6x1c8gilrf7"; - authors = [ - "Microsoft" - ]; + sha256 = "01jh2adlwx043rji888b22whx4bm8alrk3khjpik5xn20kl85mxr"; }; "windows_i686_gnu 0.48.5" = rec { @@ -17410,14 +17683,11 @@ rec { ]; }; - "windows_i686_gnu 0.53.0" = rec { + "windows_i686_gnu 0.53.1" = rec { crateName = "windows_i686_gnu"; - version = "0.53.0"; + version = "0.53.1"; edition = "2021"; - sha256 = "1hvjc8nv95sx5vdd79fivn8bpm7i517dqyf4yvsqgwrmkmjngp61"; - authors = [ - "Microsoft" - ]; + sha256 = "18wkcm82ldyg4figcsidzwbg1pqd49jpm98crfz0j7nqd6h6s3ln"; }; "windows_i686_gnullvm 0.52.6" = rec { @@ -17430,14 +17700,11 @@ rec { ]; }; - "windows_i686_gnullvm 0.53.0" = rec { + "windows_i686_gnullvm 0.53.1" = rec { crateName = "windows_i686_gnullvm"; - version = "0.53.0"; + version = "0.53.1"; edition = "2021"; - sha256 = "04df1in2k91qyf1wzizvh560bvyzq20yf68k8xa66vdzxnywrrlw"; - authors = [ - "Microsoft" - ]; + sha256 = "030qaxqc4salz6l4immfb6sykc6gmhyir9wzn2w8mxj8038mjwzs"; }; "windows_i686_msvc 0.48.5" = rec { @@ -17460,14 +17727,11 @@ rec { ]; }; - "windows_i686_msvc 0.53.0" = rec { + "windows_i686_msvc 0.53.1" = rec { crateName = "windows_i686_msvc"; - version = "0.53.0"; + version = "0.53.1"; edition = "2021"; - sha256 = "0pcvb25fkvqnp91z25qr5x61wyya12lx8p7nsa137cbb82ayw7sq"; - authors = [ - "Microsoft" - ]; + sha256 = "1hi6scw3mn2pbdl30ji5i4y8vvspb9b66l98kkz350pig58wfyhy"; }; "windows_x86_64_gnu 0.48.5" = rec { @@ -17490,14 +17754,11 @@ rec { ]; }; - "windows_x86_64_gnu 0.53.0" = rec { + "windows_x86_64_gnu 0.53.1" = rec { crateName = "windows_x86_64_gnu"; - version = "0.53.0"; + version = "0.53.1"; edition = "2021"; - sha256 = "1flh84xkssn1n6m1riddipydcksp2pdl45vdf70jygx3ksnbam9f"; - authors = [ - "Microsoft" - ]; + sha256 = "16d4yiysmfdlsrghndr97y57gh3kljkwhfdbcs05m1jasz6l4f4w"; }; "windows_x86_64_gnullvm 0.48.5" = rec { @@ -17520,14 +17781,11 @@ rec { ]; }; - "windows_x86_64_gnullvm 0.53.0" = rec { + "windows_x86_64_gnullvm 0.53.1" = rec { crateName = "windows_x86_64_gnullvm"; - version = "0.53.0"; + version = "0.53.1"; edition = "2021"; - sha256 = "0mvc8119xpbi3q2m6mrjcdzl6afx4wffacp13v76g4jrs1fh6vha"; - authors = [ - "Microsoft" - ]; + sha256 = "1qbspgv4g3q0vygkg8rnql5c6z3caqv38japiynyivh75ng1gyhg"; }; "windows_x86_64_msvc 0.48.5" = rec { @@ -17550,21 +17808,18 @@ rec { ]; }; - "windows_x86_64_msvc 0.53.0" = rec { + "windows_x86_64_msvc 0.53.1" = rec { crateName = "windows_x86_64_msvc"; - version = "0.53.0"; + version = "0.53.1"; edition = "2021"; - sha256 = "11h4i28hq0zlnjcaqi2xdxr7ibnpa8djfggch9rki1zzb8qi8517"; - authors = [ - "Microsoft" - ]; + sha256 = "0l6npq76vlq4ksn4bwsncpr8508mk0gmznm6wnhjg95d19gzzfyn"; }; "winnow" = rec { crateName = "winnow"; - version = "0.7.12"; + version = "0.7.13"; edition = "2021"; - sha256 = "159y8inpy86xswmr4yig9hxss0v2fssyqy1kk12504n8jbsfpvgk"; + sha256 = "1krrjc1wj2vx0r57m9nwnlc1zrhga3fq41d8w9hysvvqb5mj7811"; dependencies = [ { name = "memchr"; @@ -17608,24 +17863,22 @@ rec { }; resolvedDefaultFeatures = [ "kernel" ]; }; - "wit-bindgen-rt" = rec { - crateName = "wit-bindgen-rt"; - version = "0.39.0"; + "wit-bindgen" = rec { + crateName = "wit-bindgen"; + version = "0.46.0"; edition = "2021"; - sha256 = "1hd65pa5hp0nl664m94bg554h4zlhrzmkjsf6lsgsb7yc4734hkg"; - libName = "wit_bindgen_rt"; - dependencies = [ - { - name = "bitflags"; - packageId = "bitflags"; - optional = true; - } + sha256 = "0ngysw50gp2wrrfxbwgp6dhw1g6sckknsn3wm7l00vaf7n48aypi"; + libName = "wit_bindgen"; + authors = [ + "Alex Crichton " ]; features = { - "async" = [ "dep:futures" "dep:once_cell" ]; + "async" = [ "macros" "std" "dep:futures" "dep:once_cell" "wit-bindgen-rust-macro/async" ]; "bitflags" = [ "dep:bitflags" ]; + "default" = [ "macros" "realloc" "async" "std" "bitflags" ]; + "macros" = [ "dep:wit-bindgen-rust-macro" ]; + "rustc-dep-of-std" = [ "dep:core" "dep:alloc" ]; }; - resolvedDefaultFeatures = [ "bitflags" ]; }; "writeable" = rec { crateName = "writeable"; @@ -17695,7 +17948,7 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.6"; + packageId = "snafu 0.8.9"; features = [ "futures" ]; } { @@ -17783,7 +18036,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; features = [ "fold" ]; } { @@ -17795,9 +18048,9 @@ rec { }; "zerocopy" = rec { crateName = "zerocopy"; - version = "0.8.26"; + version = "0.8.27"; edition = "2021"; - sha256 = "0bvsj0qzq26zc6nlrm3z10ihvjspyngs7n0jw1fz031i7h6xsf8h"; + sha256 = "0b1870gf2zzlckca69v2k4mqwmf8yh2li37qldnzvvd3by58g508"; authors = [ "Joshua Liebow-Feeser " "Jack Wrenn " @@ -17831,9 +18084,9 @@ rec { }; "zerocopy-derive" = rec { crateName = "zerocopy-derive"; - version = "0.8.26"; + version = "0.8.27"; edition = "2021"; - sha256 = "10aiywi5qkha0mpsnb1zjwi44wl2rhdncaf3ykbp4i9nqm65pkwy"; + sha256 = "0c9qrylm2p55dvaplxsl24ma48add9qk4y0d6kjbkllaqvcvill8"; procMacro = true; libName = "zerocopy_derive"; authors = [ @@ -17851,7 +18104,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; features = [ "full" ]; } ]; @@ -17900,7 +18153,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; features = [ "fold" ]; } { @@ -17912,9 +18165,9 @@ rec { }; "zeroize" = rec { crateName = "zeroize"; - version = "1.8.1"; + version = "1.8.2"; edition = "2021"; - sha256 = "1pjdrmjwmszpxfd7r860jx54cyk94qk59x13sc307cvr5256glyf"; + sha256 = "1l48zxgcv34d7kjskr610zqsm6j2b4fcr2vfh9jm9j1jgvk58wdr"; authors = [ "The RustCrypto Project Developers" ]; @@ -17967,9 +18220,9 @@ rec { }; "zerovec" = rec { crateName = "zerovec"; - version = "0.11.2"; + version = "0.11.4"; edition = "2021"; - sha256 = "0a2457fmz39k9vrrj3rm82q5ykdhgxgbwfz2r6fa6nq11q4fn1aa"; + sha256 = "0fz7j1ns8d86m2fqg2a4bzi5gnh5892bxv4kcr9apwc6a3ajpap7"; authors = [ "The ICU4X Project Developers" ]; @@ -18030,7 +18283,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.104"; + packageId = "syn 2.0.106"; features = [ "extra-traits" ]; } ]; @@ -18077,7 +18330,7 @@ rec { } { name = "indexmap"; - packageId = "indexmap 2.10.0"; + packageId = "indexmap 2.11.4"; } { name = "num_enum"; From e58f92150afa5e3a514c13ede2f3357a7db8e482 Mon Sep 17 00:00:00 2001 From: Sebastian Bernauer Date: Tue, 28 Oct 2025 14:26:25 +0100 Subject: [PATCH 37/63] feat: Support configuring ListenerClass preset (with sensible defaults) (#414) * feat: Support configuring listner-operator preset (with sensible defaults) * Update rustdoc * changelog * --listener-operator-preset -> --listener-class-presets * Update rust/stackable-cockpit/src/platform/operator/listener_operator.rs Co-authored-by: Nick <10092581+NickLarsenNZ@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Nick <10092581+NickLarsenNZ@users.noreply.github.com> * Fix compilation * Make CLI flag --listener-class-preset singular * Update CLI docs * change link title in changelog * Update rust/stackablectl/src/args/operator_configs.rs Co-authored-by: Nick <10092581+NickLarsenNZ@users.noreply.github.com> * Remove docs on temporary * Update rust/stackable-cockpit/src/platform/operator/mod.rs Co-authored-by: Nick <10092581+NickLarsenNZ@users.noreply.github.com> * Update rust/stackablectl/CHANGELOG.md Co-authored-by: Nick <10092581+NickLarsenNZ@users.noreply.github.com> --------- Co-authored-by: Nick <10092581+NickLarsenNZ@users.noreply.github.com> --- Cargo.lock | 1 + rust/stackable-cockpit/Cargo.toml | 1 + .../platform/operator/listener_operator.rs | 105 ++++++++++++++++++ .../src/platform/operator/mod.rs | 21 +++- rust/stackablectl/CHANGELOG.md | 8 ++ rust/stackablectl/src/args/mod.rs | 2 + .../stackablectl/src/args/operator_configs.rs | 14 +++ rust/stackablectl/src/cli/mod.rs | 14 ++- 8 files changed, 159 insertions(+), 7 deletions(-) create mode 100644 rust/stackable-cockpit/src/platform/operator/listener_operator.rs create mode 100644 rust/stackablectl/src/args/operator_configs.rs diff --git a/Cargo.lock b/Cargo.lock index 8bc558c3..b991f326 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3438,6 +3438,7 @@ name = "stackable-cockpit" version = "0.0.0-dev" dependencies = [ "bcrypt", + "clap", "futures", "helm-sys", "indexmap 2.11.4", diff --git a/rust/stackable-cockpit/Cargo.toml b/rust/stackable-cockpit/Cargo.toml index 1decc06f..dcd0c3eb 100644 --- a/rust/stackable-cockpit/Cargo.toml +++ b/rust/stackable-cockpit/Cargo.toml @@ -16,6 +16,7 @@ openapi = ["dep:utoipa"] helm-sys = { path = "../helm-sys" } bcrypt.workspace = true +clap.workspace = true indexmap.workspace = true k8s-openapi.workspace = true kube.workspace = true diff --git a/rust/stackable-cockpit/src/platform/operator/listener_operator.rs b/rust/stackable-cockpit/src/platform/operator/listener_operator.rs new file mode 100644 index 00000000..81cec862 --- /dev/null +++ b/rust/stackable-cockpit/src/platform/operator/listener_operator.rs @@ -0,0 +1,105 @@ +use clap::ValueEnum; +use snafu::ResultExt; +use stackable_operator::{ + k8s_openapi::api::core::v1::Node, + kube::{Api, Client, api::ListParams}, +}; +use tokio::sync::OnceCell; +use tracing::{debug, info, instrument}; + +pub static LISTENER_CLASS_PRESET: OnceCell = OnceCell::const_new(); + +/// Represents the `preset` value in the Listener Operator Helm Chart +#[derive(Copy, Clone, Debug, ValueEnum)] +pub enum ListenerClassPreset { + None, + StableNodes, + EphemeralNodes, +} + +impl ListenerClassPreset { + pub fn as_helm_values(&self) -> String { + let preset_value = match self { + Self::None => "none", + Self::StableNodes => "stable-nodes", + Self::EphemeralNodes => "ephemeral-nodes", + }; + format!("preset: {preset_value}") + } +} + +#[instrument] +pub async fn determine_and_store_listener_class_preset(from_cli: Option<&ListenerClassPreset>) { + if let Some(from_cli) = from_cli { + LISTENER_CLASS_PRESET + .set(*from_cli) + .expect("LISTENER_CLASS_PRESET should be unset"); + return; + } + + let kubernetes_environment = guess_kubernetes_environment().await.unwrap_or_else(|err| { + info!("failed to determine Kubernetes environment, using defaults: {err:#?}"); + KubernetesEnvironment::Unknown + }); + let listener_class_preset = match kubernetes_environment { + // Kind does not support LoadBalancers out of the box, so avoid that + KubernetesEnvironment::Kind => ListenerClassPreset::StableNodes, + // LoadBalancer support in k3s is optional, so let's be better safe than sorry and not use + // them + KubernetesEnvironment::K3s => ListenerClassPreset::StableNodes, + // Weekly node rotations and LoadBalancer support + KubernetesEnvironment::Ionos => ListenerClassPreset::EphemeralNodes, + // Don't pin nodes and assume we have LoadBalancer support + KubernetesEnvironment::Unknown => ListenerClassPreset::EphemeralNodes, + }; + debug!( + preset = ?listener_class_preset, + kubernetes.environment = ?kubernetes_environment, + "Using ListenerClass preset" + ); + + LISTENER_CLASS_PRESET + .set(listener_class_preset) + .expect("LISTENER_CLASS_PRESET should be unset"); +} + +#[derive(Debug)] +enum KubernetesEnvironment { + Kind, + K3s, + Ionos, + Unknown, +} + +/// Tries to guess what Kubernetes environment stackablectl is connecting to. +/// +/// Returns an error in case anything goes wrong. This could e.g. be the case in case no +/// Kubernetes context is configured, stackablectl is missing RBAC permission to retrieve nodes or +/// simply a network error. +#[instrument] +async fn guess_kubernetes_environment() -> Result { + let client = Client::try_default() + .await + .whatever_context("failed to construct Kubernetes client")?; + let node_api: Api = Api::all(client); + let nodes = node_api + .list(&ListParams::default()) + .await + .whatever_context("failed to list Kubernetes nodes")?; + + for node in nodes { + if let Some(spec) = node.spec { + if let Some(provider_id) = spec.provider_id { + if provider_id.starts_with("kind://") { + return Ok(KubernetesEnvironment::Kind); + } else if provider_id.starts_with("k3s://") { + return Ok(KubernetesEnvironment::K3s); + } else if provider_id.starts_with("ionos://") { + return Ok(KubernetesEnvironment::Ionos); + } + } + } + } + + Ok(KubernetesEnvironment::Unknown) +} diff --git a/rust/stackable-cockpit/src/platform/operator/mod.rs b/rust/stackable-cockpit/src/platform/operator/mod.rs index 540616ed..1e7dc64b 100644 --- a/rust/stackable-cockpit/src/platform/operator/mod.rs +++ b/rust/stackable-cockpit/src/platform/operator/mod.rs @@ -1,5 +1,6 @@ use std::{fmt::Display, str::FromStr}; +use listener_operator::LISTENER_CLASS_PRESET; use semver::Version; use serde::Serialize; use snafu::{ResultExt, Snafu, ensure}; @@ -14,6 +15,8 @@ use crate::{ utils::operator_chart_name, }; +pub mod listener_operator; + pub const VALID_OPERATORS: &[&str] = &[ "airflow", "commons", @@ -93,10 +96,9 @@ impl FromStr for OperatorSpec { ensure!(len <= 2, InvalidEqualSignCountSnafu); // Check if the provided operator name is in the list of valid operators - ensure!( - VALID_OPERATORS.contains(&parts[0]), - InvalidNameSnafu { name: parts[0] } - ); + ensure!(VALID_OPERATORS.contains(&parts[0]), InvalidNameSnafu { + name: parts[0] + }); // If there is only one part, the input didn't include // the optional version identifier @@ -208,6 +210,15 @@ impl OperatorSpec { ChartSourceType::Repo => self.helm_repo_name(), }; + let mut helm_values = None; + if self.name == "listener" { + helm_values = Some( + LISTENER_CLASS_PRESET.get() + .expect("At this point LISTENER_CLASS_PRESET must be set by determine_and_store_listener_class_preset") + .as_helm_values() + ); + }; + // Install using Helm helm::install_release_from_repo_or_registry( &helm_name, @@ -216,7 +227,7 @@ impl OperatorSpec { chart_name: &helm_name, chart_source: &chart_source, }, - None, + helm_values.as_deref(), namespace, true, )?; diff --git a/rust/stackablectl/CHANGELOG.md b/rust/stackablectl/CHANGELOG.md index 356d88a8..d095589c 100644 --- a/rust/stackablectl/CHANGELOG.md +++ b/rust/stackablectl/CHANGELOG.md @@ -4,6 +4,14 @@ All notable changes to this project will be documented in this file. ## [Unreleased] +### Added + +- Automatically detect Kubernetes environment (e.g. kind, k3s or IONOS) and choose a sensible [ListenerClass preset] by default ([#414]). +- Support configuring the [ListenerClass preset] using `--listener-class-preset` ([#414]). + +[#414]: https://github.com/stackabletech/stackable-cockpit/pull/414 +[ListenerClass preset]: https://docs.stackable.tech/home/nightly/listener-operator/listenerclass/#presets + ## [1.1.0] - 2025-07-16 ### Added diff --git a/rust/stackablectl/src/args/mod.rs b/rust/stackablectl/src/args/mod.rs index e6467ff8..cb31577f 100644 --- a/rust/stackablectl/src/args/mod.rs +++ b/rust/stackablectl/src/args/mod.rs @@ -1,9 +1,11 @@ mod cluster; mod file; mod namespace; +mod operator_configs; mod repo; pub use cluster::*; pub use file::*; pub use namespace::*; +pub use operator_configs::*; pub use repo::*; diff --git a/rust/stackablectl/src/args/operator_configs.rs b/rust/stackablectl/src/args/operator_configs.rs new file mode 100644 index 00000000..f0bbbef4 --- /dev/null +++ b/rust/stackablectl/src/args/operator_configs.rs @@ -0,0 +1,14 @@ +use clap::Args; +use stackable_cockpit::platform::operator::listener_operator::ListenerClassPreset; + +#[derive(Debug, Args)] +#[command(next_help_heading = "Operator specific configurations")] +pub struct CommonOperatorConfigsArgs { + /// Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`). + /// + /// This maps to the listener-operator Helm Chart preset value, see + /// [the listener-operator documentation](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass/#presets) + /// for details. + #[arg(long, global = true)] + pub listener_class_preset: Option, +} diff --git a/rust/stackablectl/src/cli/mod.rs b/rust/stackablectl/src/cli/mod.rs index a5a3d53f..bad3bdd8 100644 --- a/rust/stackablectl/src/cli/mod.rs +++ b/rust/stackablectl/src/cli/mod.rs @@ -6,7 +6,9 @@ use snafu::{ResultExt, Snafu}; use stackable_cockpit::{ constants::{HELM_REPO_NAME_DEV, HELM_REPO_NAME_STABLE, HELM_REPO_NAME_TEST}, helm, - platform::operator::ChartSourceType, + platform::operator::{ + ChartSourceType, listener_operator::determine_and_store_listener_class_preset, + }, utils::path::{ IntoPathOrUrl, IntoPathsOrUrls, ParsePathsOrUrls, PathOrUrl, PathOrUrlParseError, }, @@ -15,7 +17,7 @@ use stackable_cockpit::{ use tracing::{Level, instrument}; use crate::{ - args::{CommonFileArgs, CommonRepoArgs}, + args::{CommonFileArgs, CommonOperatorConfigsArgs, CommonRepoArgs}, cmds::{cache, completions, debug, demo, operator, release, stack, stacklet}, constants::{ DEMOS_REPOSITORY_DEMOS_SUBPATH, DEMOS_REPOSITORY_STACKS_SUBPATH, DEMOS_REPOSITORY_URL_BASE, @@ -79,6 +81,9 @@ Cached files are saved at '$XDG_CACHE_HOME/stackablectl', which is usually #[command(flatten)] pub repos: CommonRepoArgs, + #[command(flatten)] + pub operator_configs: CommonOperatorConfigsArgs, + #[command(subcommand)] pub subcommand: Commands, } @@ -186,6 +191,11 @@ impl Cli { // TODO (Techassi): Do we still want to auto purge when running cache commands? cache.auto_purge().await.unwrap(); + determine_and_store_listener_class_preset( + self.operator_configs.listener_class_preset.as_ref(), + ) + .await; + match &self.subcommand { Commands::Operator(args) => args.run(self).await.context(OperatorSnafu), Commands::Release(args) => args.run(self, cache).await.context(ReleaseSnafu), From 88512a3a8bb232592b24220c36386a39ca4836ad Mon Sep 17 00:00:00 2001 From: Sebastian Bernauer Date: Wed, 29 Oct 2025 16:32:15 +0100 Subject: [PATCH 38/63] chore: Release stackablectl 1.2.0 (#415) * chore: Release stackablectl 1.2.0 * make regenerate-nix * ci: use --locked for cargo install * cargo fmt * Update installation guide * Update docs/modules/stackablectl/partials/release-notes/release-1.2.0.adoc Co-authored-by: Techassi --------- Co-authored-by: Techassi --- .github/workflows/pr_cockpit.yml | 2 +- Cargo.lock | 2 +- Cargo.nix | 7 +- docker/Dockerfile | 2 +- .../stackablectl/pages/installation.adoc | 10 +- .../stackablectl/pages/release-notes.adoc | 2 + .../stackablectl/partials/commands/cache.adoc | 12 +- .../partials/commands/completions.adoc | 12 +- .../stackablectl/partials/commands/demo.adoc | 12 +- .../partials/commands/experimental-debug.adoc | 12 +- .../stackablectl/partials/commands/index.adoc | 12 +- .../partials/commands/operator.adoc | 12 +- .../partials/commands/release.adoc | 12 +- .../stackablectl/partials/commands/stack.adoc | 12 +- .../partials/commands/stacklet.adoc | 12 +- .../partials/release-notes/release-1.2.0.adoc | 6 + extra/completions/_stackablectl | 34 +++ extra/completions/stackablectl.bash | 204 +++++++++++++++--- extra/completions/stackablectl.elv | 34 +++ extra/completions/stackablectl.fish | 104 ++++++++- extra/completions/stackablectl.nu | 170 +++++++++++++++ extra/man/stackablectl.1 | 32 ++- .../src/platform/operator/mod.rs | 7 +- rust/stackablectl/CHANGELOG.md | 2 + rust/stackablectl/Cargo.toml | 2 +- rust/stackablectl/README.md | 12 +- 26 files changed, 661 insertions(+), 79 deletions(-) create mode 100644 docs/modules/stackablectl/partials/release-notes/release-1.2.0.adoc diff --git a/.github/workflows/pr_cockpit.yml b/.github/workflows/pr_cockpit.yml index d4a4eb7b..7092a6d2 100644 --- a/.github/workflows/pr_cockpit.yml +++ b/.github/workflows/pr_cockpit.yml @@ -118,7 +118,7 @@ jobs: - name: Update Version run: | - cargo install cargo-edit --version 0.11.11 + cargo install --locked cargo-edit --version 0.11.11 cargo set-version --offline --package stackable-cockpit 0.0.0-pr${{ github.event.pull_request.number }} # Recreate charts and publish charts and docker image. The "-e" is needed as we want to override the diff --git a/Cargo.lock b/Cargo.lock index b991f326..be70db85 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3605,7 +3605,7 @@ dependencies = [ [[package]] name = "stackablectl" -version = "1.1.0" +version = "1.2.0" dependencies = [ "clap", "clap_complete", diff --git a/Cargo.nix b/Cargo.nix index e7fcf399..c85e0d0e 100644 --- a/Cargo.nix +++ b/Cargo.nix @@ -11302,6 +11302,11 @@ rec { name = "bcrypt"; packageId = "bcrypt"; } + { + name = "clap"; + packageId = "clap"; + features = [ "derive" "env" ]; + } { name = "futures"; packageId = "futures"; @@ -11987,7 +11992,7 @@ rec { }; "stackablectl" = rec { crateName = "stackablectl"; - version = "1.1.0"; + version = "1.2.0"; edition = "2021"; crateBin = [ { diff --git a/docker/Dockerfile b/docker/Dockerfile index 197e2007..6413f2c0 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -47,7 +47,7 @@ WORKDIR / RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain 1.68.2 ## PATCH: cargo-cyclonedx@0.3.7 uses libcargo 0.64 (Cargo 1.63), while our build uses features from Cargo 1.64 ## See https://github.com/CycloneDX/cyclonedx-rust-cargo/discussions/416 -# && . "$HOME/.cargo/env" && cargo install cargo-cyclonedx@0.3.7 cargo-auditable@0.6.1 +# && . "$HOME/.cargo/env" && cargo install --locked cargo-cyclonedx@0.3.7 cargo-auditable@0.6.1 # Build artifacts will be available in /app. RUN mkdir /app diff --git a/docs/modules/stackablectl/pages/installation.adoc b/docs/modules/stackablectl/pages/installation.adoc index e276386d..08b39aa9 100644 --- a/docs/modules/stackablectl/pages/installation.adoc +++ b/docs/modules/stackablectl/pages/installation.adoc @@ -1,7 +1,7 @@ = Installation :page-aliases: stable@stackablectl::installation.adoc -:latest-release: https://github.com/stackabletech/stackable-cockpit/releases/tag/stackablectl-1.1.0 +:latest-release: https://github.com/stackabletech/stackable-cockpit/releases/tag/stackablectl-1.2.0 :fish-comp-loations: https://fishshell.com/docs/current/completions.html#where-to-put-completions :nushell-comp-locations: https://www.nushell.sh/book/custom_commands.html#persisting @@ -23,14 +23,14 @@ You can also use the following command: [source,console] ---- -$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-1.1.0/stackablectl-x86_64-unknown-linux-gnu +$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-1.2.0/stackablectl-x86_64-unknown-linux-gnu ---- **aarch64** (arm64): [source,console] ---- -$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-1.1.0/stackablectl-aarch64-unknown-linux-gnu +$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-1.2.0/stackablectl-aarch64-unknown-linux-gnu ---- Install the binary into a directory in the `$PATH`, and make it executable: @@ -60,14 +60,14 @@ You can also use the following command: [source,console] ---- -$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-1.1.0/stackablectl-x86_64-apple-darwin +$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-1.2.0/stackablectl-x86_64-apple-darwin ---- **aarch64** (arm64): [source,console] ---- -$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-1.1.0/stackablectl-aarch64-apple-darwin +$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-1.2.0/stackablectl-aarch64-apple-darwin ---- Install the binary into a directory in the `$PATH`, and make it executable: diff --git a/docs/modules/stackablectl/pages/release-notes.adoc b/docs/modules/stackablectl/pages/release-notes.adoc index 1d09486c..1dc06dc5 100644 --- a/docs/modules/stackablectl/pages/release-notes.adoc +++ b/docs/modules/stackablectl/pages/release-notes.adoc @@ -5,6 +5,8 @@ A full list of changes is available directly in https://github.com/stackabletech/stackable-cockpit/blob/main/rust/stackablectl/CHANGELOG.md[stackablectl's changelog]. // WARNING: Please keep the empty newlines, otherwise headings are broken. +include::partial$release-notes/release-1.2.0.adoc[] + include::partial$release-notes/release-1.1.0.adoc[] include::partial$release-notes/release-1.0.0.adoc[] diff --git a/docs/modules/stackablectl/partials/commands/cache.adoc b/docs/modules/stackablectl/partials/commands/cache.adoc index 511c26f0..8f552870 100644 --- a/docs/modules/stackablectl/partials/commands/cache.adoc +++ b/docs/modules/stackablectl/partials/commands/cache.adoc @@ -80,9 +80,17 @@ Helm repository options: --chart-source Source the charts from either a OCI registry or from index.yaml-based repositories. - [default: oci] - Possible values: - oci: OCI registry - repo: index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific + + [default: oci] + +Operator specific configurations: + --listener-class-preset + Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`). + + This maps to the listener-operator Helm Chart preset value, see [the listener-operator documentation](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass/#presets) for details. + + [possible values: none, stable-nodes, ephemeral-nodes] ---- diff --git a/docs/modules/stackablectl/partials/commands/completions.adoc b/docs/modules/stackablectl/partials/commands/completions.adoc index e9213ef0..8852acb6 100644 --- a/docs/modules/stackablectl/partials/commands/completions.adoc +++ b/docs/modules/stackablectl/partials/commands/completions.adoc @@ -83,9 +83,17 @@ Helm repository options: --chart-source Source the charts from either a OCI registry or from index.yaml-based repositories. - [default: oci] - Possible values: - oci: OCI registry - repo: index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific + + [default: oci] + +Operator specific configurations: + --listener-class-preset + Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`). + + This maps to the listener-operator Helm Chart preset value, see [the listener-operator documentation](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass/#presets) for details. + + [possible values: none, stable-nodes, ephemeral-nodes] ---- diff --git a/docs/modules/stackablectl/partials/commands/demo.adoc b/docs/modules/stackablectl/partials/commands/demo.adoc index f796f3e6..a7f470ed 100644 --- a/docs/modules/stackablectl/partials/commands/demo.adoc +++ b/docs/modules/stackablectl/partials/commands/demo.adoc @@ -84,9 +84,17 @@ Helm repository options: --chart-source Source the charts from either a OCI registry or from index.yaml-based repositories. - [default: oci] - Possible values: - oci: OCI registry - repo: index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific + + [default: oci] + +Operator specific configurations: + --listener-class-preset + Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`). + + This maps to the listener-operator Helm Chart preset value, see [the listener-operator documentation](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass/#presets) for details. + + [possible values: none, stable-nodes, ephemeral-nodes] ---- diff --git a/docs/modules/stackablectl/partials/commands/experimental-debug.adoc b/docs/modules/stackablectl/partials/commands/experimental-debug.adoc index 69beb787..a46a2f31 100644 --- a/docs/modules/stackablectl/partials/commands/experimental-debug.adoc +++ b/docs/modules/stackablectl/partials/commands/experimental-debug.adoc @@ -97,9 +97,17 @@ Helm repository options: --chart-source Source the charts from either a OCI registry or from index.yaml-based repositories. - [default: oci] - Possible values: - oci: OCI registry - repo: index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific + + [default: oci] + +Operator specific configurations: + --listener-class-preset + Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`). + + This maps to the listener-operator Helm Chart preset value, see [the listener-operator documentation](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass/#presets) for details. + + [possible values: none, stable-nodes, ephemeral-nodes] ---- diff --git a/docs/modules/stackablectl/partials/commands/index.adoc b/docs/modules/stackablectl/partials/commands/index.adoc index a83def02..b2f8ca3e 100644 --- a/docs/modules/stackablectl/partials/commands/index.adoc +++ b/docs/modules/stackablectl/partials/commands/index.adoc @@ -86,9 +86,17 @@ Helm repository options: --chart-source Source the charts from either a OCI registry or from index.yaml-based repositories. - [default: oci] - Possible values: - oci: OCI registry - repo: index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific + + [default: oci] + +Operator specific configurations: + --listener-class-preset + Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`). + + This maps to the listener-operator Helm Chart preset value, see [the listener-operator documentation](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass/#presets) for details. + + [possible values: none, stable-nodes, ephemeral-nodes] ---- diff --git a/docs/modules/stackablectl/partials/commands/operator.adoc b/docs/modules/stackablectl/partials/commands/operator.adoc index 0d97ae6d..c85cf589 100644 --- a/docs/modules/stackablectl/partials/commands/operator.adoc +++ b/docs/modules/stackablectl/partials/commands/operator.adoc @@ -83,9 +83,17 @@ Helm repository options: --chart-source Source the charts from either a OCI registry or from index.yaml-based repositories. - [default: oci] - Possible values: - oci: OCI registry - repo: index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific + + [default: oci] + +Operator specific configurations: + --listener-class-preset + Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`). + + This maps to the listener-operator Helm Chart preset value, see [the listener-operator documentation](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass/#presets) for details. + + [possible values: none, stable-nodes, ephemeral-nodes] ---- diff --git a/docs/modules/stackablectl/partials/commands/release.adoc b/docs/modules/stackablectl/partials/commands/release.adoc index ed089158..58e4d29b 100644 --- a/docs/modules/stackablectl/partials/commands/release.adoc +++ b/docs/modules/stackablectl/partials/commands/release.adoc @@ -83,9 +83,17 @@ Helm repository options: --chart-source Source the charts from either a OCI registry or from index.yaml-based repositories. - [default: oci] - Possible values: - oci: OCI registry - repo: index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific + + [default: oci] + +Operator specific configurations: + --listener-class-preset + Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`). + + This maps to the listener-operator Helm Chart preset value, see [the listener-operator documentation](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass/#presets) for details. + + [possible values: none, stable-nodes, ephemeral-nodes] ---- diff --git a/docs/modules/stackablectl/partials/commands/stack.adoc b/docs/modules/stackablectl/partials/commands/stack.adoc index f92156ec..2fd57104 100644 --- a/docs/modules/stackablectl/partials/commands/stack.adoc +++ b/docs/modules/stackablectl/partials/commands/stack.adoc @@ -84,9 +84,17 @@ Helm repository options: --chart-source Source the charts from either a OCI registry or from index.yaml-based repositories. - [default: oci] - Possible values: - oci: OCI registry - repo: index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific + + [default: oci] + +Operator specific configurations: + --listener-class-preset + Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`). + + This maps to the listener-operator Helm Chart preset value, see [the listener-operator documentation](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass/#presets) for details. + + [possible values: none, stable-nodes, ephemeral-nodes] ---- diff --git a/docs/modules/stackablectl/partials/commands/stacklet.adoc b/docs/modules/stackablectl/partials/commands/stacklet.adoc index 9b7f9ad3..58e7345e 100644 --- a/docs/modules/stackablectl/partials/commands/stacklet.adoc +++ b/docs/modules/stackablectl/partials/commands/stacklet.adoc @@ -85,9 +85,17 @@ Helm repository options: --chart-source Source the charts from either a OCI registry or from index.yaml-based repositories. - [default: oci] - Possible values: - oci: OCI registry - repo: index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific + + [default: oci] + +Operator specific configurations: + --listener-class-preset + Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`). + + This maps to the listener-operator Helm Chart preset value, see [the listener-operator documentation](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass/#presets) for details. + + [possible values: none, stable-nodes, ephemeral-nodes] ---- diff --git a/docs/modules/stackablectl/partials/release-notes/release-1.2.0.adoc b/docs/modules/stackablectl/partials/release-notes/release-1.2.0.adoc new file mode 100644 index 00000000..2a2e04e8 --- /dev/null +++ b/docs/modules/stackablectl/partials/release-notes/release-1.2.0.adoc @@ -0,0 +1,6 @@ +== 1.2.0 + +* Automatically detect Kubernetes environment (e.g. kind, k3s or IONOS) and choose a sensible https://docs.stackable.tech/home/nightly/listener-operator/listenerclass/#presets[ListenerClass preset] by default. + See https://github.com/stackabletech/stackable-cockpit/pull/414[stackable-cockpit#414]. +* Support configuring the https://docs.stackable.tech/home/nightly/listener-operator/listenerclass/#presets[ListenerClass preset] using `--listener-class-preset`. + See https://github.com/stackabletech/stackable-cockpit/pull/414[stackable-cockpit#414]. diff --git a/extra/completions/_stackablectl b/extra/completions/_stackablectl index 7c13569f..bba6e21d 100644 --- a/extra/completions/_stackablectl +++ b/extra/completions/_stackablectl @@ -28,6 +28,7 @@ _stackablectl() { '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ '--chart-source=[Source the charts from either a OCI registry or from index.yaml-based repositories]:CHART_SOURCE:((oci\:"OCI registry" repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based on the version and thus will be operator-specific"))' \ +'--listener-class-preset=[Choose the ListenerClass preset (\`none\`, \`ephemeral-nodes\` or \`stable-nodes\`)]:LISTENER_CLASS_PRESET:(none stable-nodes ephemeral-nodes)' \ '--no-cache[Do not cache the remote (default) demo, stack and release files]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ @@ -57,6 +58,7 @@ _arguments "${_arguments_options[@]}" : \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ '--chart-source=[Source the charts from either a OCI registry or from index.yaml-based repositories]:CHART_SOURCE:((oci\:"OCI registry" repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based on the version and thus will be operator-specific"))' \ +'--listener-class-preset=[Choose the ListenerClass preset (\`none\`, \`ephemeral-nodes\` or \`stable-nodes\`)]:LISTENER_CLASS_PRESET:(none stable-nodes ephemeral-nodes)' \ '--no-cache[Do not cache the remote (default) demo, stack and release files]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ @@ -95,6 +97,7 @@ yaml\:"Print output formatted as YAML"))' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ '--chart-source=[Source the charts from either a OCI registry or from index.yaml-based repositories]:CHART_SOURCE:((oci\:"OCI registry" repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based on the version and thus will be operator-specific"))' \ +'--listener-class-preset=[Choose the ListenerClass preset (\`none\`, \`ephemeral-nodes\` or \`stable-nodes\`)]:LISTENER_CLASS_PRESET:(none stable-nodes ephemeral-nodes)' \ '--no-cache[Do not cache the remote (default) demo, stack and release files]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ @@ -125,6 +128,7 @@ yaml\:"Print output formatted as YAML"))' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ '--chart-source=[Source the charts from either a OCI registry or from index.yaml-based repositories]:CHART_SOURCE:((oci\:"OCI registry" repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based on the version and thus will be operator-specific"))' \ +'--listener-class-preset=[Choose the ListenerClass preset (\`none\`, \`ephemeral-nodes\` or \`stable-nodes\`)]:LISTENER_CLASS_PRESET:(none stable-nodes ephemeral-nodes)' \ '--no-cache[Do not cache the remote (default) demo, stack and release files]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ @@ -157,6 +161,7 @@ minikube\:"Use a minikube cluster"))' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ '--chart-source=[Source the charts from either a OCI registry or from index.yaml-based repositories]:CHART_SOURCE:((oci\:"OCI registry" repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based on the version and thus will be operator-specific"))' \ +'--listener-class-preset=[Choose the ListenerClass preset (\`none\`, \`ephemeral-nodes\` or \`stable-nodes\`)]:LISTENER_CLASS_PRESET:(none stable-nodes ephemeral-nodes)' \ '--no-cache[Do not cache the remote (default) demo, stack and release files]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ @@ -182,6 +187,7 @@ _arguments "${_arguments_options[@]}" : \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ '--chart-source=[Source the charts from either a OCI registry or from index.yaml-based repositories]:CHART_SOURCE:((oci\:"OCI registry" repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based on the version and thus will be operator-specific"))' \ +'--listener-class-preset=[Choose the ListenerClass preset (\`none\`, \`ephemeral-nodes\` or \`stable-nodes\`)]:LISTENER_CLASS_PRESET:(none stable-nodes ephemeral-nodes)' \ '--no-cache[Do not cache the remote (default) demo, stack and release files]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ @@ -215,6 +221,7 @@ yaml\:"Print output formatted as YAML"))' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ '--chart-source=[Source the charts from either a OCI registry or from index.yaml-based repositories]:CHART_SOURCE:((oci\:"OCI registry" repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based on the version and thus will be operator-specific"))' \ +'--listener-class-preset=[Choose the ListenerClass preset (\`none\`, \`ephemeral-nodes\` or \`stable-nodes\`)]:LISTENER_CLASS_PRESET:(none stable-nodes ephemeral-nodes)' \ '--no-cache[Do not cache the remote (default) demo, stack and release files]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ @@ -281,6 +288,7 @@ _arguments "${_arguments_options[@]}" : \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ '--chart-source=[Source the charts from either a OCI registry or from index.yaml-based repositories]:CHART_SOURCE:((oci\:"OCI registry" repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based on the version and thus will be operator-specific"))' \ +'--listener-class-preset=[Choose the ListenerClass preset (\`none\`, \`ephemeral-nodes\` or \`stable-nodes\`)]:LISTENER_CLASS_PRESET:(none stable-nodes ephemeral-nodes)' \ '--no-cache[Do not cache the remote (default) demo, stack and release files]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ @@ -319,6 +327,7 @@ yaml\:"Print output formatted as YAML"))' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ '--chart-source=[Source the charts from either a OCI registry or from index.yaml-based repositories]:CHART_SOURCE:((oci\:"OCI registry" repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based on the version and thus will be operator-specific"))' \ +'--listener-class-preset=[Choose the ListenerClass preset (\`none\`, \`ephemeral-nodes\` or \`stable-nodes\`)]:LISTENER_CLASS_PRESET:(none stable-nodes ephemeral-nodes)' \ '--no-cache[Do not cache the remote (default) demo, stack and release files]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ @@ -349,6 +358,7 @@ yaml\:"Print output formatted as YAML"))' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ '--chart-source=[Source the charts from either a OCI registry or from index.yaml-based repositories]:CHART_SOURCE:((oci\:"OCI registry" repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based on the version and thus will be operator-specific"))' \ +'--listener-class-preset=[Choose the ListenerClass preset (\`none\`, \`ephemeral-nodes\` or \`stable-nodes\`)]:LISTENER_CLASS_PRESET:(none stable-nodes ephemeral-nodes)' \ '--no-cache[Do not cache the remote (default) demo, stack and release files]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ @@ -385,6 +395,7 @@ minikube\:"Use a minikube cluster"))' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ '--chart-source=[Source the charts from either a OCI registry or from index.yaml-based repositories]:CHART_SOURCE:((oci\:"OCI registry" repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based on the version and thus will be operator-specific"))' \ +'--listener-class-preset=[Choose the ListenerClass preset (\`none\`, \`ephemeral-nodes\` or \`stable-nodes\`)]:LISTENER_CLASS_PRESET:(none stable-nodes ephemeral-nodes)' \ '--no-cache[Do not cache the remote (default) demo, stack and release files]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ @@ -410,6 +421,7 @@ _arguments "${_arguments_options[@]}" : \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ '--chart-source=[Source the charts from either a OCI registry or from index.yaml-based repositories]:CHART_SOURCE:((oci\:"OCI registry" repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based on the version and thus will be operator-specific"))' \ +'--listener-class-preset=[Choose the ListenerClass preset (\`none\`, \`ephemeral-nodes\` or \`stable-nodes\`)]:LISTENER_CLASS_PRESET:(none stable-nodes ephemeral-nodes)' \ '--no-cache[Do not cache the remote (default) demo, stack and release files]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ @@ -439,6 +451,7 @@ _arguments "${_arguments_options[@]}" : \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ '--chart-source=[Source the charts from either a OCI registry or from index.yaml-based repositories]:CHART_SOURCE:((oci\:"OCI registry" repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based on the version and thus will be operator-specific"))' \ +'--listener-class-preset=[Choose the ListenerClass preset (\`none\`, \`ephemeral-nodes\` or \`stable-nodes\`)]:LISTENER_CLASS_PRESET:(none stable-nodes ephemeral-nodes)' \ '--no-cache[Do not cache the remote (default) demo, stack and release files]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ @@ -507,6 +520,7 @@ _arguments "${_arguments_options[@]}" : \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ '--chart-source=[Source the charts from either a OCI registry or from index.yaml-based repositories]:CHART_SOURCE:((oci\:"OCI registry" repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based on the version and thus will be operator-specific"))' \ +'--listener-class-preset=[Choose the ListenerClass preset (\`none\`, \`ephemeral-nodes\` or \`stable-nodes\`)]:LISTENER_CLASS_PRESET:(none stable-nodes ephemeral-nodes)' \ '--no-cache[Do not cache the remote (default) demo, stack and release files]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ @@ -546,6 +560,7 @@ yaml\:"Print output formatted as YAML"))' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ '--chart-source=[Source the charts from either a OCI registry or from index.yaml-based repositories]:CHART_SOURCE:((oci\:"OCI registry" repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based on the version and thus will be operator-specific"))' \ +'--listener-class-preset=[Choose the ListenerClass preset (\`none\`, \`ephemeral-nodes\` or \`stable-nodes\`)]:LISTENER_CLASS_PRESET:(none stable-nodes ephemeral-nodes)' \ '--no-cache[Do not cache the remote (default) demo, stack and release files]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ @@ -577,6 +592,7 @@ yaml\:"Print output formatted as YAML"))' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ '--chart-source=[Source the charts from either a OCI registry or from index.yaml-based repositories]:CHART_SOURCE:((oci\:"OCI registry" repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based on the version and thus will be operator-specific"))' \ +'--listener-class-preset=[Choose the ListenerClass preset (\`none\`, \`ephemeral-nodes\` or \`stable-nodes\`)]:LISTENER_CLASS_PRESET:(none stable-nodes ephemeral-nodes)' \ '--no-cache[Do not cache the remote (default) demo, stack and release files]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ @@ -615,6 +631,7 @@ minikube\:"Use a minikube cluster"))' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ '--chart-source=[Source the charts from either a OCI registry or from index.yaml-based repositories]:CHART_SOURCE:((oci\:"OCI registry" repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based on the version and thus will be operator-specific"))' \ +'--listener-class-preset=[Choose the ListenerClass preset (\`none\`, \`ephemeral-nodes\` or \`stable-nodes\`)]:LISTENER_CLASS_PRESET:(none stable-nodes ephemeral-nodes)' \ '--skip-release[Skip the installation of the release during the stack install process]' \ '--no-cache[Do not cache the remote (default) demo, stack and release files]' \ '-h[Print help (see more with '\''--help'\'')]' \ @@ -675,6 +692,7 @@ _arguments "${_arguments_options[@]}" : \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ '--chart-source=[Source the charts from either a OCI registry or from index.yaml-based repositories]:CHART_SOURCE:((oci\:"OCI registry" repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based on the version and thus will be operator-specific"))' \ +'--listener-class-preset=[Choose the ListenerClass preset (\`none\`, \`ephemeral-nodes\` or \`stable-nodes\`)]:LISTENER_CLASS_PRESET:(none stable-nodes ephemeral-nodes)' \ '--no-cache[Do not cache the remote (default) demo, stack and release files]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ @@ -707,6 +725,7 @@ _arguments "${_arguments_options[@]}" : \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ '--chart-source=[Source the charts from either a OCI registry or from index.yaml-based repositories]:CHART_SOURCE:((oci\:"OCI registry" repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based on the version and thus will be operator-specific"))' \ +'--listener-class-preset=[Choose the ListenerClass preset (\`none\`, \`ephemeral-nodes\` or \`stable-nodes\`)]:LISTENER_CLASS_PRESET:(none stable-nodes ephemeral-nodes)' \ '--no-cache[Do not cache the remote (default) demo, stack and release files]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ @@ -744,6 +763,7 @@ yaml\:"Print output formatted as YAML"))' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ '--chart-source=[Source the charts from either a OCI registry or from index.yaml-based repositories]:CHART_SOURCE:((oci\:"OCI registry" repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based on the version and thus will be operator-specific"))' \ +'--listener-class-preset=[Choose the ListenerClass preset (\`none\`, \`ephemeral-nodes\` or \`stable-nodes\`)]:LISTENER_CLASS_PRESET:(none stable-nodes ephemeral-nodes)' \ '--no-cache[Do not cache the remote (default) demo, stack and release files]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ @@ -799,6 +819,7 @@ _arguments "${_arguments_options[@]}" : \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ '--chart-source=[Source the charts from either a OCI registry or from index.yaml-based repositories]:CHART_SOURCE:((oci\:"OCI registry" repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based on the version and thus will be operator-specific"))' \ +'--listener-class-preset=[Choose the ListenerClass preset (\`none\`, \`ephemeral-nodes\` or \`stable-nodes\`)]:LISTENER_CLASS_PRESET:(none stable-nodes ephemeral-nodes)' \ '--no-cache[Do not cache the remote (default) demo, stack and release files]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ @@ -838,6 +859,7 @@ yaml\:"Print output formatted as YAML"))' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ '--chart-source=[Source the charts from either a OCI registry or from index.yaml-based repositories]:CHART_SOURCE:((oci\:"OCI registry" repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based on the version and thus will be operator-specific"))' \ +'--listener-class-preset=[Choose the ListenerClass preset (\`none\`, \`ephemeral-nodes\` or \`stable-nodes\`)]:LISTENER_CLASS_PRESET:(none stable-nodes ephemeral-nodes)' \ '--no-cache[Do not cache the remote (default) demo, stack and release files]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ @@ -869,6 +891,7 @@ yaml\:"Print output formatted as YAML"))' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ '--chart-source=[Source the charts from either a OCI registry or from index.yaml-based repositories]:CHART_SOURCE:((oci\:"OCI registry" repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based on the version and thus will be operator-specific"))' \ +'--listener-class-preset=[Choose the ListenerClass preset (\`none\`, \`ephemeral-nodes\` or \`stable-nodes\`)]:LISTENER_CLASS_PRESET:(none stable-nodes ephemeral-nodes)' \ '--no-cache[Do not cache the remote (default) demo, stack and release files]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ @@ -907,6 +930,7 @@ minikube\:"Use a minikube cluster"))' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ '--chart-source=[Source the charts from either a OCI registry or from index.yaml-based repositories]:CHART_SOURCE:((oci\:"OCI registry" repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based on the version and thus will be operator-specific"))' \ +'--listener-class-preset=[Choose the ListenerClass preset (\`none\`, \`ephemeral-nodes\` or \`stable-nodes\`)]:LISTENER_CLASS_PRESET:(none stable-nodes ephemeral-nodes)' \ '--skip-release[Skip the installation of the release during the stack install process]' \ '--no-cache[Do not cache the remote (default) demo, stack and release files]' \ '-h[Print help (see more with '\''--help'\'')]' \ @@ -967,6 +991,7 @@ _arguments "${_arguments_options[@]}" : \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ '--chart-source=[Source the charts from either a OCI registry or from index.yaml-based repositories]:CHART_SOURCE:((oci\:"OCI registry" repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based on the version and thus will be operator-specific"))' \ +'--listener-class-preset=[Choose the ListenerClass preset (\`none\`, \`ephemeral-nodes\` or \`stable-nodes\`)]:LISTENER_CLASS_PRESET:(none stable-nodes ephemeral-nodes)' \ '--no-cache[Do not cache the remote (default) demo, stack and release files]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ @@ -997,6 +1022,7 @@ _arguments "${_arguments_options[@]}" : \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ '--chart-source=[Source the charts from either a OCI registry or from index.yaml-based repositories]:CHART_SOURCE:((oci\:"OCI registry" repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based on the version and thus will be operator-specific"))' \ +'--listener-class-preset=[Choose the ListenerClass preset (\`none\`, \`ephemeral-nodes\` or \`stable-nodes\`)]:LISTENER_CLASS_PRESET:(none stable-nodes ephemeral-nodes)' \ '--no-cache[Do not cache the remote (default) demo, stack and release files]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ @@ -1019,6 +1045,7 @@ _arguments "${_arguments_options[@]}" : \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ '--chart-source=[Source the charts from either a OCI registry or from index.yaml-based repositories]:CHART_SOURCE:((oci\:"OCI registry" repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based on the version and thus will be operator-specific"))' \ +'--listener-class-preset=[Choose the ListenerClass preset (\`none\`, \`ephemeral-nodes\` or \`stable-nodes\`)]:LISTENER_CLASS_PRESET:(none stable-nodes ephemeral-nodes)' \ '--no-cache[Do not cache the remote (default) demo, stack and release files]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ @@ -1041,6 +1068,7 @@ _arguments "${_arguments_options[@]}" : \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ '--chart-source=[Source the charts from either a OCI registry or from index.yaml-based repositories]:CHART_SOURCE:((oci\:"OCI registry" repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based on the version and thus will be operator-specific"))' \ +'--listener-class-preset=[Choose the ListenerClass preset (\`none\`, \`ephemeral-nodes\` or \`stable-nodes\`)]:LISTENER_CLASS_PRESET:(none stable-nodes ephemeral-nodes)' \ '--no-cache[Do not cache the remote (default) demo, stack and release files]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ @@ -1063,6 +1091,7 @@ _arguments "${_arguments_options[@]}" : \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ '--chart-source=[Source the charts from either a OCI registry or from index.yaml-based repositories]:CHART_SOURCE:((oci\:"OCI registry" repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based on the version and thus will be operator-specific"))' \ +'--listener-class-preset=[Choose the ListenerClass preset (\`none\`, \`ephemeral-nodes\` or \`stable-nodes\`)]:LISTENER_CLASS_PRESET:(none stable-nodes ephemeral-nodes)' \ '--no-cache[Do not cache the remote (default) demo, stack and release files]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ @@ -1085,6 +1114,7 @@ _arguments "${_arguments_options[@]}" : \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ '--chart-source=[Source the charts from either a OCI registry or from index.yaml-based repositories]:CHART_SOURCE:((oci\:"OCI registry" repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based on the version and thus will be operator-specific"))' \ +'--listener-class-preset=[Choose the ListenerClass preset (\`none\`, \`ephemeral-nodes\` or \`stable-nodes\`)]:LISTENER_CLASS_PRESET:(none stable-nodes ephemeral-nodes)' \ '--no-cache[Do not cache the remote (default) demo, stack and release files]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ @@ -1151,6 +1181,7 @@ _arguments "${_arguments_options[@]}" : \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ '--chart-source=[Source the charts from either a OCI registry or from index.yaml-based repositories]:CHART_SOURCE:((oci\:"OCI registry" repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based on the version and thus will be operator-specific"))' \ +'--listener-class-preset=[Choose the ListenerClass preset (\`none\`, \`ephemeral-nodes\` or \`stable-nodes\`)]:LISTENER_CLASS_PRESET:(none stable-nodes ephemeral-nodes)' \ '--no-cache[Do not cache the remote (default) demo, stack and release files]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ @@ -1181,6 +1212,7 @@ _arguments "${_arguments_options[@]}" : \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ '--chart-source=[Source the charts from either a OCI registry or from index.yaml-based repositories]:CHART_SOURCE:((oci\:"OCI registry" repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based on the version and thus will be operator-specific"))' \ +'--listener-class-preset=[Choose the ListenerClass preset (\`none\`, \`ephemeral-nodes\` or \`stable-nodes\`)]:LISTENER_CLASS_PRESET:(none stable-nodes ephemeral-nodes)' \ '--no-cache[Do not cache the remote (default) demo, stack and release files]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ @@ -1203,6 +1235,7 @@ _arguments "${_arguments_options[@]}" : \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ '--chart-source=[Source the charts from either a OCI registry or from index.yaml-based repositories]:CHART_SOURCE:((oci\:"OCI registry" repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based on the version and thus will be operator-specific"))' \ +'--listener-class-preset=[Choose the ListenerClass preset (\`none\`, \`ephemeral-nodes\` or \`stable-nodes\`)]:LISTENER_CLASS_PRESET:(none stable-nodes ephemeral-nodes)' \ '--old[Only remove outdated files in the cache]' \ '--outdated[Only remove outdated files in the cache]' \ '--no-cache[Do not cache the remote (default) demo, stack and release files]' \ @@ -1264,6 +1297,7 @@ _arguments "${_arguments_options[@]}" : \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ '--chart-source=[Source the charts from either a OCI registry or from index.yaml-based repositories]:CHART_SOURCE:((oci\:"OCI registry" repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based on the version and thus will be operator-specific"))' \ +'--listener-class-preset=[Choose the ListenerClass preset (\`none\`, \`ephemeral-nodes\` or \`stable-nodes\`)]:LISTENER_CLASS_PRESET:(none stable-nodes ephemeral-nodes)' \ '--no-cache[Do not cache the remote (default) demo, stack and release files]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ diff --git a/extra/completions/stackablectl.bash b/extra/completions/stackablectl.bash index 6bc70973..3348a0ca 100644 --- a/extra/completions/stackablectl.bash +++ b/extra/completions/stackablectl.bash @@ -344,7 +344,7 @@ _stackablectl() { case "${cmd}" in stackablectl) - opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version operator release stack stacklet demo completions cache experimental-debug help" + opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version operator release stack stacklet demo completions cache experimental-debug help" if [[ ${cur} == -* || ${COMP_CWORD} -eq 1 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -464,6 +464,10 @@ _stackablectl() { COMPREPLY=($(compgen -W "oci repo" -- "${cur}")) return 0 ;; + --listener-class-preset) + COMPREPLY=($(compgen -W "none stable-nodes ephemeral-nodes" -- "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -472,7 +476,7 @@ _stackablectl() { return 0 ;; stackablectl__cache) - opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version list clean help" + opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version list clean help" if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -592,6 +596,10 @@ _stackablectl() { COMPREPLY=($(compgen -W "oci repo" -- "${cur}")) return 0 ;; + --listener-class-preset) + COMPREPLY=($(compgen -W "none stable-nodes ephemeral-nodes" -- "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -600,7 +608,7 @@ _stackablectl() { return 0 ;; stackablectl__cache__clean) - opts="-l -d -s -r -h -V --outdated --old --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version" + opts="-l -d -s -r -h -V --outdated --old --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -720,6 +728,10 @@ _stackablectl() { COMPREPLY=($(compgen -W "oci repo" -- "${cur}")) return 0 ;; + --listener-class-preset) + COMPREPLY=($(compgen -W "none stable-nodes ephemeral-nodes" -- "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -784,7 +796,7 @@ _stackablectl() { return 0 ;; stackablectl__cache__list) - opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version" + opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -904,6 +916,10 @@ _stackablectl() { COMPREPLY=($(compgen -W "oci repo" -- "${cur}")) return 0 ;; + --listener-class-preset) + COMPREPLY=($(compgen -W "none stable-nodes ephemeral-nodes" -- "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -912,7 +928,7 @@ _stackablectl() { return 0 ;; stackablectl__completions) - opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version bash elvish fish nushell zsh help" + opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version bash elvish fish nushell zsh help" if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -1032,6 +1048,10 @@ _stackablectl() { COMPREPLY=($(compgen -W "oci repo" -- "${cur}")) return 0 ;; + --listener-class-preset) + COMPREPLY=($(compgen -W "none stable-nodes ephemeral-nodes" -- "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -1040,7 +1060,7 @@ _stackablectl() { return 0 ;; stackablectl__completions__bash) - opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version" + opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -1160,6 +1180,10 @@ _stackablectl() { COMPREPLY=($(compgen -W "oci repo" -- "${cur}")) return 0 ;; + --listener-class-preset) + COMPREPLY=($(compgen -W "none stable-nodes ephemeral-nodes" -- "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -1168,7 +1192,7 @@ _stackablectl() { return 0 ;; stackablectl__completions__elvish) - opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version" + opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -1288,6 +1312,10 @@ _stackablectl() { COMPREPLY=($(compgen -W "oci repo" -- "${cur}")) return 0 ;; + --listener-class-preset) + COMPREPLY=($(compgen -W "none stable-nodes ephemeral-nodes" -- "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -1296,7 +1324,7 @@ _stackablectl() { return 0 ;; stackablectl__completions__fish) - opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version" + opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -1416,6 +1444,10 @@ _stackablectl() { COMPREPLY=($(compgen -W "oci repo" -- "${cur}")) return 0 ;; + --listener-class-preset) + COMPREPLY=($(compgen -W "none stable-nodes ephemeral-nodes" -- "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -1522,7 +1554,7 @@ _stackablectl() { return 0 ;; stackablectl__completions__nushell) - opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version" + opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -1642,6 +1674,10 @@ _stackablectl() { COMPREPLY=($(compgen -W "oci repo" -- "${cur}")) return 0 ;; + --listener-class-preset) + COMPREPLY=($(compgen -W "none stable-nodes ephemeral-nodes" -- "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -1650,7 +1686,7 @@ _stackablectl() { return 0 ;; stackablectl__completions__zsh) - opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version" + opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -1770,6 +1806,10 @@ _stackablectl() { COMPREPLY=($(compgen -W "oci repo" -- "${cur}")) return 0 ;; + --listener-class-preset) + COMPREPLY=($(compgen -W "none stable-nodes ephemeral-nodes" -- "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -1778,7 +1818,7 @@ _stackablectl() { return 0 ;; stackablectl__demo) - opts="-l -d -s -r -h -V --release --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version list describe install help" + opts="-l -d -s -r -h -V --release --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version list describe install help" if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -1902,6 +1942,10 @@ _stackablectl() { COMPREPLY=($(compgen -W "oci repo" -- "${cur}")) return 0 ;; + --listener-class-preset) + COMPREPLY=($(compgen -W "none stable-nodes ephemeral-nodes" -- "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -1910,7 +1954,7 @@ _stackablectl() { return 0 ;; stackablectl__demo__describe) - opts="-o -l -d -s -r -h -V --output --release --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version " + opts="-o -l -d -s -r -h -V --output --release --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version " if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -2042,6 +2086,10 @@ _stackablectl() { COMPREPLY=($(compgen -W "oci repo" -- "${cur}")) return 0 ;; + --listener-class-preset) + COMPREPLY=($(compgen -W "none stable-nodes ephemeral-nodes" -- "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -2120,7 +2168,7 @@ _stackablectl() { return 0 ;; stackablectl__demo__install) - opts="-c -n -l -d -s -r -h -V --skip-release --stack-parameters --parameters --cluster --cluster-name --cluster-nodes --cluster-cp-nodes --operator-ns --operator-namespace --product-ns --namespace --release --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version " + opts="-c -n -l -d -s -r -h -V --skip-release --stack-parameters --parameters --cluster --cluster-name --cluster-nodes --cluster-cp-nodes --operator-ns --operator-namespace --product-ns --namespace --release --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version " if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -2292,6 +2340,10 @@ _stackablectl() { COMPREPLY=($(compgen -W "oci repo" -- "${cur}")) return 0 ;; + --listener-class-preset) + COMPREPLY=($(compgen -W "none stable-nodes ephemeral-nodes" -- "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -2300,7 +2352,7 @@ _stackablectl() { return 0 ;; stackablectl__demo__list) - opts="-o -l -d -s -r -h -V --output --release --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version" + opts="-o -l -d -s -r -h -V --output --release --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -2432,6 +2484,10 @@ _stackablectl() { COMPREPLY=($(compgen -W "oci repo" -- "${cur}")) return 0 ;; + --listener-class-preset) + COMPREPLY=($(compgen -W "none stable-nodes ephemeral-nodes" -- "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -2440,7 +2496,7 @@ _stackablectl() { return 0 ;; stackablectl__experimental__debug) - opts="-n -c -l -d -s -r -h -V --namespace --container --image --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version [CMD]..." + opts="-n -c -l -d -s -r -h -V --namespace --container --image --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version [CMD]..." if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -2580,6 +2636,10 @@ _stackablectl() { COMPREPLY=($(compgen -W "oci repo" -- "${cur}")) return 0 ;; + --listener-class-preset) + COMPREPLY=($(compgen -W "none stable-nodes ephemeral-nodes" -- "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -3078,7 +3138,7 @@ _stackablectl() { return 0 ;; stackablectl__operator) - opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version list describe install uninstall installed help" + opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version list describe install uninstall installed help" if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -3198,6 +3258,10 @@ _stackablectl() { COMPREPLY=($(compgen -W "oci repo" -- "${cur}")) return 0 ;; + --listener-class-preset) + COMPREPLY=($(compgen -W "none stable-nodes ephemeral-nodes" -- "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -3206,7 +3270,7 @@ _stackablectl() { return 0 ;; stackablectl__operator__describe) - opts="-o -l -d -s -r -h -V --output --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version " + opts="-o -l -d -s -r -h -V --output --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version " if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -3334,6 +3398,10 @@ _stackablectl() { COMPREPLY=($(compgen -W "oci repo" -- "${cur}")) return 0 ;; + --listener-class-preset) + COMPREPLY=($(compgen -W "none stable-nodes ephemeral-nodes" -- "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -3440,7 +3508,7 @@ _stackablectl() { return 0 ;; stackablectl__operator__install) - opts="-c -l -d -s -r -h -V --operator-ns --operator-namespace --cluster --cluster-name --cluster-nodes --cluster-cp-nodes --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version ..." + opts="-c -l -d -s -r -h -V --operator-ns --operator-namespace --cluster --cluster-name --cluster-nodes --cluster-cp-nodes --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version ..." if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -3588,6 +3656,10 @@ _stackablectl() { COMPREPLY=($(compgen -W "oci repo" -- "${cur}")) return 0 ;; + --listener-class-preset) + COMPREPLY=($(compgen -W "none stable-nodes ephemeral-nodes" -- "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -3596,7 +3668,7 @@ _stackablectl() { return 0 ;; stackablectl__operator__installed) - opts="-o -l -d -s -r -h -V --output --operator-ns --operator-namespace --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version" + opts="-o -l -d -s -r -h -V --output --operator-ns --operator-namespace --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -3732,6 +3804,10 @@ _stackablectl() { COMPREPLY=($(compgen -W "oci repo" -- "${cur}")) return 0 ;; + --listener-class-preset) + COMPREPLY=($(compgen -W "none stable-nodes ephemeral-nodes" -- "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -3740,7 +3816,7 @@ _stackablectl() { return 0 ;; stackablectl__operator__list) - opts="-o -l -d -s -r -h -V --output --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version" + opts="-o -l -d -s -r -h -V --output --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -3868,6 +3944,10 @@ _stackablectl() { COMPREPLY=($(compgen -W "oci repo" -- "${cur}")) return 0 ;; + --listener-class-preset) + COMPREPLY=($(compgen -W "none stable-nodes ephemeral-nodes" -- "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -3876,7 +3956,7 @@ _stackablectl() { return 0 ;; stackablectl__operator__uninstall) - opts="-l -d -s -r -h -V --operator-ns --operator-namespace --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version ..." + opts="-l -d -s -r -h -V --operator-ns --operator-namespace --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version ..." if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -4004,6 +4084,10 @@ _stackablectl() { COMPREPLY=($(compgen -W "oci repo" -- "${cur}")) return 0 ;; + --listener-class-preset) + COMPREPLY=($(compgen -W "none stable-nodes ephemeral-nodes" -- "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -4012,7 +4096,7 @@ _stackablectl() { return 0 ;; stackablectl__release) - opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version list describe install uninstall upgrade help" + opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version list describe install uninstall upgrade help" if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -4132,6 +4216,10 @@ _stackablectl() { COMPREPLY=($(compgen -W "oci repo" -- "${cur}")) return 0 ;; + --listener-class-preset) + COMPREPLY=($(compgen -W "none stable-nodes ephemeral-nodes" -- "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -4140,7 +4228,7 @@ _stackablectl() { return 0 ;; stackablectl__release__describe) - opts="-o -l -d -s -r -h -V --output --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version " + opts="-o -l -d -s -r -h -V --output --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version " if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -4268,6 +4356,10 @@ _stackablectl() { COMPREPLY=($(compgen -W "oci repo" -- "${cur}")) return 0 ;; + --listener-class-preset) + COMPREPLY=($(compgen -W "none stable-nodes ephemeral-nodes" -- "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -4374,7 +4466,7 @@ _stackablectl() { return 0 ;; stackablectl__release__install) - opts="-i -e -c -l -d -s -r -h -V --include --exclude --operator-ns --operator-namespace --cluster --cluster-name --cluster-nodes --cluster-cp-nodes --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version " + opts="-i -e -c -l -d -s -r -h -V --include --exclude --operator-ns --operator-namespace --cluster --cluster-name --cluster-nodes --cluster-cp-nodes --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version " if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -4538,6 +4630,10 @@ _stackablectl() { COMPREPLY=($(compgen -W "oci repo" -- "${cur}")) return 0 ;; + --listener-class-preset) + COMPREPLY=($(compgen -W "none stable-nodes ephemeral-nodes" -- "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -4546,7 +4642,7 @@ _stackablectl() { return 0 ;; stackablectl__release__list) - opts="-o -l -d -s -r -h -V --output --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version" + opts="-o -l -d -s -r -h -V --output --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -4674,6 +4770,10 @@ _stackablectl() { COMPREPLY=($(compgen -W "oci repo" -- "${cur}")) return 0 ;; + --listener-class-preset) + COMPREPLY=($(compgen -W "none stable-nodes ephemeral-nodes" -- "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -4682,7 +4782,7 @@ _stackablectl() { return 0 ;; stackablectl__release__uninstall) - opts="-l -d -s -r -h -V --operator-ns --operator-namespace --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version " + opts="-l -d -s -r -h -V --operator-ns --operator-namespace --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version " if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -4810,6 +4910,10 @@ _stackablectl() { COMPREPLY=($(compgen -W "oci repo" -- "${cur}")) return 0 ;; + --listener-class-preset) + COMPREPLY=($(compgen -W "none stable-nodes ephemeral-nodes" -- "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -4818,7 +4922,7 @@ _stackablectl() { return 0 ;; stackablectl__release__upgrade) - opts="-i -e -l -d -s -r -h -V --include --exclude --operator-ns --operator-namespace --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version " + opts="-i -e -l -d -s -r -h -V --include --exclude --operator-ns --operator-namespace --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version " if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -4962,6 +5066,10 @@ _stackablectl() { COMPREPLY=($(compgen -W "oci repo" -- "${cur}")) return 0 ;; + --listener-class-preset) + COMPREPLY=($(compgen -W "none stable-nodes ephemeral-nodes" -- "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -4970,7 +5078,7 @@ _stackablectl() { return 0 ;; stackablectl__stack) - opts="-l -d -s -r -h -V --release --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version list describe install help" + opts="-l -d -s -r -h -V --release --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version list describe install help" if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -5094,6 +5202,10 @@ _stackablectl() { COMPREPLY=($(compgen -W "oci repo" -- "${cur}")) return 0 ;; + --listener-class-preset) + COMPREPLY=($(compgen -W "none stable-nodes ephemeral-nodes" -- "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -5102,7 +5214,7 @@ _stackablectl() { return 0 ;; stackablectl__stack__describe) - opts="-o -l -d -s -r -h -V --output --release --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version " + opts="-o -l -d -s -r -h -V --output --release --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version " if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -5234,6 +5346,10 @@ _stackablectl() { COMPREPLY=($(compgen -W "oci repo" -- "${cur}")) return 0 ;; + --listener-class-preset) + COMPREPLY=($(compgen -W "none stable-nodes ephemeral-nodes" -- "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -5312,7 +5428,7 @@ _stackablectl() { return 0 ;; stackablectl__stack__install) - opts="-c -n -l -d -s -r -h -V --skip-release --stack-parameters --parameters --cluster --cluster-name --cluster-nodes --cluster-cp-nodes --operator-ns --operator-namespace --product-ns --namespace --release --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version " + opts="-c -n -l -d -s -r -h -V --skip-release --stack-parameters --parameters --cluster --cluster-name --cluster-nodes --cluster-cp-nodes --operator-ns --operator-namespace --product-ns --namespace --release --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version " if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -5484,6 +5600,10 @@ _stackablectl() { COMPREPLY=($(compgen -W "oci repo" -- "${cur}")) return 0 ;; + --listener-class-preset) + COMPREPLY=($(compgen -W "none stable-nodes ephemeral-nodes" -- "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -5492,7 +5612,7 @@ _stackablectl() { return 0 ;; stackablectl__stack__list) - opts="-o -l -d -s -r -h -V --output --release --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version" + opts="-o -l -d -s -r -h -V --output --release --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -5624,6 +5744,10 @@ _stackablectl() { COMPREPLY=($(compgen -W "oci repo" -- "${cur}")) return 0 ;; + --listener-class-preset) + COMPREPLY=($(compgen -W "none stable-nodes ephemeral-nodes" -- "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -5632,7 +5756,7 @@ _stackablectl() { return 0 ;; stackablectl__stacklet) - opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version credentials list help" + opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version credentials list help" if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -5752,6 +5876,10 @@ _stackablectl() { COMPREPLY=($(compgen -W "oci repo" -- "${cur}")) return 0 ;; + --listener-class-preset) + COMPREPLY=($(compgen -W "none stable-nodes ephemeral-nodes" -- "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -5760,7 +5888,7 @@ _stackablectl() { return 0 ;; stackablectl__stacklet__credentials) - opts="-n -l -d -s -r -h -V --namespace --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version " + opts="-n -l -d -s -r -h -V --namespace --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version " if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -5888,6 +6016,10 @@ _stackablectl() { COMPREPLY=($(compgen -W "oci repo" -- "${cur}")) return 0 ;; + --listener-class-preset) + COMPREPLY=($(compgen -W "none stable-nodes ephemeral-nodes" -- "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -5952,7 +6084,7 @@ _stackablectl() { return 0 ;; stackablectl__stacklet__list) - opts="-o -n -l -d -s -r -h -V --output --operator-ns --operator-namespace --product-ns --namespace --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --help --version" + opts="-o -n -l -d -s -r -h -V --output --operator-ns --operator-namespace --product-ns --namespace --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -6100,6 +6232,10 @@ _stackablectl() { COMPREPLY=($(compgen -W "oci repo" -- "${cur}")) return 0 ;; + --listener-class-preset) + COMPREPLY=($(compgen -W "none stable-nodes ephemeral-nodes" -- "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; diff --git a/extra/completions/stackablectl.elv b/extra/completions/stackablectl.elv index 2e55ca7d..07e64733 100644 --- a/extra/completions/stackablectl.elv +++ b/extra/completions/stackablectl.elv @@ -30,6 +30,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' cand --chart-source 'Source the charts from either a OCI registry or from index.yaml-based repositories' + cand --listener-class-preset 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' cand --no-cache 'Do not cache the remote (default) demo, stack and release files' cand -h 'Print help (see more with ''--help'')' cand --help 'Print help (see more with ''--help'')' @@ -58,6 +59,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' cand --chart-source 'Source the charts from either a OCI registry or from index.yaml-based repositories' + cand --listener-class-preset 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' cand --no-cache 'Do not cache the remote (default) demo, stack and release files' cand -h 'Print help (see more with ''--help'')' cand --help 'Print help (see more with ''--help'')' @@ -85,6 +87,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' cand --chart-source 'Source the charts from either a OCI registry or from index.yaml-based repositories' + cand --listener-class-preset 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' cand --no-cache 'Do not cache the remote (default) demo, stack and release files' cand -h 'Print help (see more with ''--help'')' cand --help 'Print help (see more with ''--help'')' @@ -106,6 +109,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' cand --chart-source 'Source the charts from either a OCI registry or from index.yaml-based repositories' + cand --listener-class-preset 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' cand --no-cache 'Do not cache the remote (default) demo, stack and release files' cand -h 'Print help (see more with ''--help'')' cand --help 'Print help (see more with ''--help'')' @@ -132,6 +136,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' cand --chart-source 'Source the charts from either a OCI registry or from index.yaml-based repositories' + cand --listener-class-preset 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' cand --no-cache 'Do not cache the remote (default) demo, stack and release files' cand -h 'Print help (see more with ''--help'')' cand --help 'Print help (see more with ''--help'')' @@ -153,6 +158,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' cand --chart-source 'Source the charts from either a OCI registry or from index.yaml-based repositories' + cand --listener-class-preset 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' cand --no-cache 'Do not cache the remote (default) demo, stack and release files' cand -h 'Print help (see more with ''--help'')' cand --help 'Print help (see more with ''--help'')' @@ -176,6 +182,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' cand --chart-source 'Source the charts from either a OCI registry or from index.yaml-based repositories' + cand --listener-class-preset 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' cand --no-cache 'Do not cache the remote (default) demo, stack and release files' cand -h 'Print help (see more with ''--help'')' cand --help 'Print help (see more with ''--help'')' @@ -215,6 +222,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' cand --chart-source 'Source the charts from either a OCI registry or from index.yaml-based repositories' + cand --listener-class-preset 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' cand --no-cache 'Do not cache the remote (default) demo, stack and release files' cand -h 'Print help (see more with ''--help'')' cand --help 'Print help (see more with ''--help'')' @@ -242,6 +250,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' cand --chart-source 'Source the charts from either a OCI registry or from index.yaml-based repositories' + cand --listener-class-preset 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' cand --no-cache 'Do not cache the remote (default) demo, stack and release files' cand -h 'Print help (see more with ''--help'')' cand --help 'Print help (see more with ''--help'')' @@ -263,6 +272,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' cand --chart-source 'Source the charts from either a OCI registry or from index.yaml-based repositories' + cand --listener-class-preset 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' cand --no-cache 'Do not cache the remote (default) demo, stack and release files' cand -h 'Print help (see more with ''--help'')' cand --help 'Print help (see more with ''--help'')' @@ -293,6 +303,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' cand --chart-source 'Source the charts from either a OCI registry or from index.yaml-based repositories' + cand --listener-class-preset 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' cand --no-cache 'Do not cache the remote (default) demo, stack and release files' cand -h 'Print help (see more with ''--help'')' cand --help 'Print help (see more with ''--help'')' @@ -314,6 +325,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' cand --chart-source 'Source the charts from either a OCI registry or from index.yaml-based repositories' + cand --listener-class-preset 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' cand --no-cache 'Do not cache the remote (default) demo, stack and release files' cand -h 'Print help (see more with ''--help'')' cand --help 'Print help (see more with ''--help'')' @@ -339,6 +351,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' cand --chart-source 'Source the charts from either a OCI registry or from index.yaml-based repositories' + cand --listener-class-preset 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' cand --no-cache 'Do not cache the remote (default) demo, stack and release files' cand -h 'Print help (see more with ''--help'')' cand --help 'Print help (see more with ''--help'')' @@ -379,6 +392,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' cand --chart-source 'Source the charts from either a OCI registry or from index.yaml-based repositories' + cand --listener-class-preset 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' cand --no-cache 'Do not cache the remote (default) demo, stack and release files' cand -h 'Print help (see more with ''--help'')' cand --help 'Print help (see more with ''--help'')' @@ -405,6 +419,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' cand --chart-source 'Source the charts from either a OCI registry or from index.yaml-based repositories' + cand --listener-class-preset 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' cand --no-cache 'Do not cache the remote (default) demo, stack and release files' cand -h 'Print help (see more with ''--help'')' cand --help 'Print help (see more with ''--help'')' @@ -427,6 +442,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' cand --chart-source 'Source the charts from either a OCI registry or from index.yaml-based repositories' + cand --listener-class-preset 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' cand --no-cache 'Do not cache the remote (default) demo, stack and release files' cand -h 'Print help (see more with ''--help'')' cand --help 'Print help (see more with ''--help'')' @@ -459,6 +475,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' cand --chart-source 'Source the charts from either a OCI registry or from index.yaml-based repositories' + cand --listener-class-preset 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' cand --skip-release 'Skip the installation of the release during the stack install process' cand --no-cache 'Do not cache the remote (default) demo, stack and release files' cand -h 'Print help (see more with ''--help'')' @@ -493,6 +510,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' cand --chart-source 'Source the charts from either a OCI registry or from index.yaml-based repositories' + cand --listener-class-preset 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' cand --no-cache 'Do not cache the remote (default) demo, stack and release files' cand -h 'Print help (see more with ''--help'')' cand --help 'Print help (see more with ''--help'')' @@ -517,6 +535,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' cand --chart-source 'Source the charts from either a OCI registry or from index.yaml-based repositories' + cand --listener-class-preset 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' cand --no-cache 'Do not cache the remote (default) demo, stack and release files' cand -h 'Print help (see more with ''--help'')' cand --help 'Print help (see more with ''--help'')' @@ -543,6 +562,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' cand --chart-source 'Source the charts from either a OCI registry or from index.yaml-based repositories' + cand --listener-class-preset 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' cand --no-cache 'Do not cache the remote (default) demo, stack and release files' cand -h 'Print help (see more with ''--help'')' cand --help 'Print help (see more with ''--help'')' @@ -574,6 +594,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' cand --chart-source 'Source the charts from either a OCI registry or from index.yaml-based repositories' + cand --listener-class-preset 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' cand --no-cache 'Do not cache the remote (default) demo, stack and release files' cand -h 'Print help (see more with ''--help'')' cand --help 'Print help (see more with ''--help'')' @@ -600,6 +621,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' cand --chart-source 'Source the charts from either a OCI registry or from index.yaml-based repositories' + cand --listener-class-preset 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' cand --no-cache 'Do not cache the remote (default) demo, stack and release files' cand -h 'Print help (see more with ''--help'')' cand --help 'Print help (see more with ''--help'')' @@ -622,6 +644,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' cand --chart-source 'Source the charts from either a OCI registry or from index.yaml-based repositories' + cand --listener-class-preset 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' cand --no-cache 'Do not cache the remote (default) demo, stack and release files' cand -h 'Print help (see more with ''--help'')' cand --help 'Print help (see more with ''--help'')' @@ -654,6 +677,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' cand --chart-source 'Source the charts from either a OCI registry or from index.yaml-based repositories' + cand --listener-class-preset 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' cand --skip-release 'Skip the installation of the release during the stack install process' cand --no-cache 'Do not cache the remote (default) demo, stack and release files' cand -h 'Print help (see more with ''--help'')' @@ -688,6 +712,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' cand --chart-source 'Source the charts from either a OCI registry or from index.yaml-based repositories' + cand --listener-class-preset 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' cand --no-cache 'Do not cache the remote (default) demo, stack and release files' cand -h 'Print help (see more with ''--help'')' cand --help 'Print help (see more with ''--help'')' @@ -713,6 +738,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' cand --chart-source 'Source the charts from either a OCI registry or from index.yaml-based repositories' + cand --listener-class-preset 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' cand --no-cache 'Do not cache the remote (default) demo, stack and release files' cand -h 'Print help (see more with ''--help'')' cand --help 'Print help (see more with ''--help'')' @@ -732,6 +758,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' cand --chart-source 'Source the charts from either a OCI registry or from index.yaml-based repositories' + cand --listener-class-preset 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' cand --no-cache 'Do not cache the remote (default) demo, stack and release files' cand -h 'Print help (see more with ''--help'')' cand --help 'Print help (see more with ''--help'')' @@ -751,6 +778,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' cand --chart-source 'Source the charts from either a OCI registry or from index.yaml-based repositories' + cand --listener-class-preset 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' cand --no-cache 'Do not cache the remote (default) demo, stack and release files' cand -h 'Print help (see more with ''--help'')' cand --help 'Print help (see more with ''--help'')' @@ -770,6 +798,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' cand --chart-source 'Source the charts from either a OCI registry or from index.yaml-based repositories' + cand --listener-class-preset 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' cand --no-cache 'Do not cache the remote (default) demo, stack and release files' cand -h 'Print help (see more with ''--help'')' cand --help 'Print help (see more with ''--help'')' @@ -789,6 +818,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' cand --chart-source 'Source the charts from either a OCI registry or from index.yaml-based repositories' + cand --listener-class-preset 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' cand --no-cache 'Do not cache the remote (default) demo, stack and release files' cand -h 'Print help (see more with ''--help'')' cand --help 'Print help (see more with ''--help'')' @@ -828,6 +858,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' cand --chart-source 'Source the charts from either a OCI registry or from index.yaml-based repositories' + cand --listener-class-preset 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' cand --no-cache 'Do not cache the remote (default) demo, stack and release files' cand -h 'Print help (see more with ''--help'')' cand --help 'Print help (see more with ''--help'')' @@ -850,6 +881,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' cand --chart-source 'Source the charts from either a OCI registry or from index.yaml-based repositories' + cand --listener-class-preset 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' cand --no-cache 'Do not cache the remote (default) demo, stack and release files' cand -h 'Print help (see more with ''--help'')' cand --help 'Print help (see more with ''--help'')' @@ -869,6 +901,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' cand --chart-source 'Source the charts from either a OCI registry or from index.yaml-based repositories' + cand --listener-class-preset 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' cand --old 'Only remove outdated files in the cache' cand --outdated 'Only remove outdated files in the cache' cand --no-cache 'Do not cache the remote (default) demo, stack and release files' @@ -906,6 +939,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' cand --chart-source 'Source the charts from either a OCI registry or from index.yaml-based repositories' + cand --listener-class-preset 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' cand --no-cache 'Do not cache the remote (default) demo, stack and release files' cand -h 'Print help (see more with ''--help'')' cand --help 'Print help (see more with ''--help'')' diff --git a/extra/completions/stackablectl.fish b/extra/completions/stackablectl.fish index ef741c3c..935d79c0 100644 --- a/extra/completions/stackablectl.fish +++ b/extra/completions/stackablectl.fish @@ -1,6 +1,6 @@ # Print an optspec for argparse to handle cmd's options that are independent of any subcommand. function __fish_stackablectl_global_optspecs - string join \n l/log-level= no-cache d/demo-file= s/stack-file= r/release-file= helm-repo-stable= helm-repo-test= helm-repo-dev= chart-source= h/help V/version + string join \n l/log-level= no-cache d/demo-file= s/stack-file= r/release-file= helm-repo-stable= helm-repo-test= helm-repo-dev= chart-source= listener-class-preset= h/help V/version end function __fish_stackablectl_needs_command @@ -33,6 +33,9 @@ complete -c stackablectl -n "__fish_stackablectl_needs_command" -l helm-repo-tes complete -c stackablectl -n "__fish_stackablectl_needs_command" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_needs_command" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" +complete -c stackablectl -n "__fish_stackablectl_needs_command" -l listener-class-preset -d 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' -r -f -a "none\t'' +stable-nodes\t'' +ephemeral-nodes\t''" complete -c stackablectl -n "__fish_stackablectl_needs_command" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_needs_command" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_needs_command" -s V -l version -d 'Print version' @@ -54,6 +57,9 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and not __fish_seen_subcommand_from list describe install uninstall installed help" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and not __fish_seen_subcommand_from list describe install uninstall installed help" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and not __fish_seen_subcommand_from list describe install uninstall installed help" -l listener-class-preset -d 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' -r -f -a "none\t'' +stable-nodes\t'' +ephemeral-nodes\t''" complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and not __fish_seen_subcommand_from list describe install uninstall installed help" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and not __fish_seen_subcommand_from list describe install uninstall installed help" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and not __fish_seen_subcommand_from list describe install uninstall installed help" -s V -l version -d 'Print version' @@ -76,6 +82,9 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from list" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from list" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from list" -l listener-class-preset -d 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' -r -f -a "none\t'' +stable-nodes\t'' +ephemeral-nodes\t''" complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from list" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from list" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from list" -s V -l version -d 'Print version' @@ -92,6 +101,9 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from describe" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from describe" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from describe" -l listener-class-preset -d 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' -r -f -a "none\t'' +stable-nodes\t'' +ephemeral-nodes\t''" complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from describe" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from describe" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from describe" -s V -l version -d 'Print version' @@ -110,6 +122,9 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from install" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from install" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from install" -l listener-class-preset -d 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' -r -f -a "none\t'' +stable-nodes\t'' +ephemeral-nodes\t''" complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from install" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from install" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from install" -s V -l version -d 'Print version' @@ -123,6 +138,9 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from uninstall" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from uninstall" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from uninstall" -l listener-class-preset -d 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' -r -f -a "none\t'' +stable-nodes\t'' +ephemeral-nodes\t''" complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from uninstall" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from uninstall" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from uninstall" -s V -l version -d 'Print version' @@ -140,6 +158,9 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from installed" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from installed" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from installed" -l listener-class-preset -d 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' -r -f -a "none\t'' +stable-nodes\t'' +ephemeral-nodes\t''" complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from installed" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from installed" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from installed" -s V -l version -d 'Print version' @@ -158,6 +179,9 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and n complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall upgrade help" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall upgrade help" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall upgrade help" -l listener-class-preset -d 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' -r -f -a "none\t'' +stable-nodes\t'' +ephemeral-nodes\t''" complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall upgrade help" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall upgrade help" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall upgrade help" -s V -l version -d 'Print version' @@ -180,6 +204,9 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and _ complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from list" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from list" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from list" -l listener-class-preset -d 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' -r -f -a "none\t'' +stable-nodes\t'' +ephemeral-nodes\t''" complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from list" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from list" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from list" -s V -l version -d 'Print version' @@ -196,6 +223,9 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and _ complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from describe" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from describe" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from describe" -l listener-class-preset -d 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' -r -f -a "none\t'' +stable-nodes\t'' +ephemeral-nodes\t''" complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from describe" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from describe" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from describe" -s V -l version -d 'Print version' @@ -216,6 +246,9 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and _ complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from install" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from install" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from install" -l listener-class-preset -d 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' -r -f -a "none\t'' +stable-nodes\t'' +ephemeral-nodes\t''" complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from install" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from install" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from install" -s V -l version -d 'Print version' @@ -229,6 +262,9 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and _ complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from uninstall" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from uninstall" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from uninstall" -l listener-class-preset -d 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' -r -f -a "none\t'' +stable-nodes\t'' +ephemeral-nodes\t''" complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from uninstall" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from uninstall" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from uninstall" -s V -l version -d 'Print version' @@ -244,6 +280,9 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and _ complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from upgrade" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from upgrade" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from upgrade" -l listener-class-preset -d 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' -r -f -a "none\t'' +stable-nodes\t'' +ephemeral-nodes\t''" complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from upgrade" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from upgrade" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from upgrade" -s V -l version -d 'Print version' @@ -263,6 +302,9 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -l listener-class-preset -d 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' -r -f -a "none\t'' +stable-nodes\t'' +ephemeral-nodes\t''" complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -s V -l version -d 'Print version' @@ -284,6 +326,9 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from list" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from list" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from list" -l listener-class-preset -d 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' -r -f -a "none\t'' +stable-nodes\t'' +ephemeral-nodes\t''" complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from list" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from list" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from list" -s V -l version -d 'Print version' @@ -301,6 +346,9 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from describe" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from describe" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from describe" -l listener-class-preset -d 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' -r -f -a "none\t'' +stable-nodes\t'' +ephemeral-nodes\t''" complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from describe" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from describe" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from describe" -s V -l version -d 'Print version' @@ -323,6 +371,9 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from install" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from install" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from install" -l listener-class-preset -d 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' -r -f -a "none\t'' +stable-nodes\t'' +ephemeral-nodes\t''" complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from install" -l skip-release -d 'Skip the installation of the release during the stack install process' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from install" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from install" -s h -l help -d 'Print help (see more with \'--help\')' @@ -340,6 +391,9 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and not __fish_seen_subcommand_from credentials list help" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and not __fish_seen_subcommand_from credentials list help" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and not __fish_seen_subcommand_from credentials list help" -l listener-class-preset -d 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' -r -f -a "none\t'' +stable-nodes\t'' +ephemeral-nodes\t''" complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and not __fish_seen_subcommand_from credentials list help" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and not __fish_seen_subcommand_from credentials list help" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and not __fish_seen_subcommand_from credentials list help" -s V -l version -d 'Print version' @@ -356,6 +410,9 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from credentials" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from credentials" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from credentials" -l listener-class-preset -d 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' -r -f -a "none\t'' +stable-nodes\t'' +ephemeral-nodes\t''" complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from credentials" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from credentials" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from credentials" -s V -l version -d 'Print version' @@ -374,6 +431,9 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from list" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from list" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from list" -l listener-class-preset -d 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' -r -f -a "none\t'' +stable-nodes\t'' +ephemeral-nodes\t''" complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from list" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from list" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from list" -s V -l version -d 'Print version' @@ -390,6 +450,9 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install help" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install help" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install help" -l listener-class-preset -d 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' -r -f -a "none\t'' +stable-nodes\t'' +ephemeral-nodes\t''" complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install help" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install help" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install help" -s V -l version -d 'Print version' @@ -411,6 +474,9 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fi complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from list" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from list" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from list" -l listener-class-preset -d 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' -r -f -a "none\t'' +stable-nodes\t'' +ephemeral-nodes\t''" complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from list" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from list" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from list" -s V -l version -d 'Print version' @@ -428,6 +494,9 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fi complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from describe" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from describe" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from describe" -l listener-class-preset -d 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' -r -f -a "none\t'' +stable-nodes\t'' +ephemeral-nodes\t''" complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from describe" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from describe" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from describe" -s V -l version -d 'Print version' @@ -450,6 +519,9 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fi complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from install" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from install" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from install" -l listener-class-preset -d 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' -r -f -a "none\t'' +stable-nodes\t'' +ephemeral-nodes\t''" complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from install" -l skip-release -d 'Skip the installation of the release during the stack install process' complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from install" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from install" -s h -l help -d 'Print help (see more with \'--help\')' @@ -467,6 +539,9 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; a complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and not __fish_seen_subcommand_from bash elvish fish nushell zsh help" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and not __fish_seen_subcommand_from bash elvish fish nushell zsh help" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and not __fish_seen_subcommand_from bash elvish fish nushell zsh help" -l listener-class-preset -d 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' -r -f -a "none\t'' +stable-nodes\t'' +ephemeral-nodes\t''" complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and not __fish_seen_subcommand_from bash elvish fish nushell zsh help" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and not __fish_seen_subcommand_from bash elvish fish nushell zsh help" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and not __fish_seen_subcommand_from bash elvish fish nushell zsh help" -s V -l version -d 'Print version' @@ -485,6 +560,9 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; a complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from bash" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from bash" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from bash" -l listener-class-preset -d 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' -r -f -a "none\t'' +stable-nodes\t'' +ephemeral-nodes\t''" complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from bash" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from bash" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from bash" -s V -l version -d 'Print version' @@ -497,6 +575,9 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; a complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from elvish" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from elvish" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from elvish" -l listener-class-preset -d 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' -r -f -a "none\t'' +stable-nodes\t'' +ephemeral-nodes\t''" complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from elvish" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from elvish" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from elvish" -s V -l version -d 'Print version' @@ -509,6 +590,9 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; a complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from fish" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from fish" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from fish" -l listener-class-preset -d 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' -r -f -a "none\t'' +stable-nodes\t'' +ephemeral-nodes\t''" complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from fish" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from fish" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from fish" -s V -l version -d 'Print version' @@ -521,6 +605,9 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; a complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from nushell" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from nushell" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from nushell" -l listener-class-preset -d 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' -r -f -a "none\t'' +stable-nodes\t'' +ephemeral-nodes\t''" complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from nushell" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from nushell" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from nushell" -s V -l version -d 'Print version' @@ -533,6 +620,9 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; a complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from zsh" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from zsh" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from zsh" -l listener-class-preset -d 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' -r -f -a "none\t'' +stable-nodes\t'' +ephemeral-nodes\t''" complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from zsh" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from zsh" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from zsh" -s V -l version -d 'Print version' @@ -551,6 +641,9 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and not complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and not __fish_seen_subcommand_from list clean help" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and not __fish_seen_subcommand_from list clean help" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and not __fish_seen_subcommand_from list clean help" -l listener-class-preset -d 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' -r -f -a "none\t'' +stable-nodes\t'' +ephemeral-nodes\t''" complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and not __fish_seen_subcommand_from list clean help" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and not __fish_seen_subcommand_from list clean help" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and not __fish_seen_subcommand_from list clean help" -s V -l version -d 'Print version' @@ -566,6 +659,9 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __f complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __fish_seen_subcommand_from list" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __fish_seen_subcommand_from list" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __fish_seen_subcommand_from list" -l listener-class-preset -d 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' -r -f -a "none\t'' +stable-nodes\t'' +ephemeral-nodes\t''" complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __fish_seen_subcommand_from list" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __fish_seen_subcommand_from list" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __fish_seen_subcommand_from list" -s V -l version -d 'Print version' @@ -578,6 +674,9 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __f complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __fish_seen_subcommand_from clean" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __fish_seen_subcommand_from clean" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __fish_seen_subcommand_from clean" -l listener-class-preset -d 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' -r -f -a "none\t'' +stable-nodes\t'' +ephemeral-nodes\t''" complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __fish_seen_subcommand_from clean" -l old -l outdated -d 'Only remove outdated files in the cache' complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __fish_seen_subcommand_from clean" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __fish_seen_subcommand_from clean" -s h -l help -d 'Print help (see more with \'--help\')' @@ -597,6 +696,9 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand experimental-d complete -c stackablectl -n "__fish_stackablectl_using_subcommand experimental-debug" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand experimental-debug" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand experimental-debug" -l listener-class-preset -d 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' -r -f -a "none\t'' +stable-nodes\t'' +ephemeral-nodes\t''" complete -c stackablectl -n "__fish_stackablectl_using_subcommand experimental-debug" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand experimental-debug" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand experimental-debug" -s V -l version -d 'Print version' diff --git a/extra/completions/stackablectl.nu b/extra/completions/stackablectl.nu index f3d53e8a..3d72d82d 100644 --- a/extra/completions/stackablectl.nu +++ b/extra/completions/stackablectl.nu @@ -4,6 +4,10 @@ module completions { [ "oci" "repo" ] } + def "nu-complete stackablectl listener_class_preset" [] { + [ "none" "stable-nodes" "ephemeral-nodes" ] + } + # Command line tool to interact with the Stackable Data Platform export extern stackablectl [ --log-level(-l): string # Log level this application uses @@ -15,6 +19,7 @@ module completions { --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL --chart-source: string@"nu-complete stackablectl chart_source" # Source the charts from either a OCI registry or from index.yaml-based repositories + --listener-class-preset: string@"nu-complete stackablectl listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version ] @@ -23,6 +28,10 @@ module completions { [ "oci" "repo" ] } + def "nu-complete stackablectl operator listener_class_preset" [] { + [ "none" "stable-nodes" "ephemeral-nodes" ] + } + # Interact with single operator instead of the full platform export extern "stackablectl operator" [ --log-level(-l): string # Log level this application uses @@ -34,6 +43,7 @@ module completions { --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL --chart-source: string@"nu-complete stackablectl operator chart_source" # Source the charts from either a OCI registry or from index.yaml-based repositories + --listener-class-preset: string@"nu-complete stackablectl operator listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version ] @@ -46,6 +56,10 @@ module completions { [ "oci" "repo" ] } + def "nu-complete stackablectl operator list listener_class_preset" [] { + [ "none" "stable-nodes" "ephemeral-nodes" ] + } + # List available operators export extern "stackablectl operator list" [ --output(-o): string@"nu-complete stackablectl operator list output_type" @@ -58,6 +72,7 @@ module completions { --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL --chart-source: string@"nu-complete stackablectl operator list chart_source" # Source the charts from either a OCI registry or from index.yaml-based repositories + --listener-class-preset: string@"nu-complete stackablectl operator list listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version ] @@ -70,6 +85,10 @@ module completions { [ "oci" "repo" ] } + def "nu-complete stackablectl operator describe listener_class_preset" [] { + [ "none" "stable-nodes" "ephemeral-nodes" ] + } + # Print out detailed operator information export extern "stackablectl operator describe" [ OPERATOR: string # Operator to describe @@ -83,6 +102,7 @@ module completions { --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL --chart-source: string@"nu-complete stackablectl operator describe chart_source" # Source the charts from either a OCI registry or from index.yaml-based repositories + --listener-class-preset: string@"nu-complete stackablectl operator describe listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version ] @@ -95,6 +115,10 @@ module completions { [ "oci" "repo" ] } + def "nu-complete stackablectl operator install listener_class_preset" [] { + [ "none" "stable-nodes" "ephemeral-nodes" ] + } + # Install one or more operators export extern "stackablectl operator install" [ ...OPERATORS: string # Operator(s) to install @@ -113,6 +137,7 @@ module completions { --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL --chart-source: string@"nu-complete stackablectl operator install chart_source" # Source the charts from either a OCI registry or from index.yaml-based repositories + --listener-class-preset: string@"nu-complete stackablectl operator install listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version ] @@ -121,6 +146,10 @@ module completions { [ "oci" "repo" ] } + def "nu-complete stackablectl operator uninstall listener_class_preset" [] { + [ "none" "stable-nodes" "ephemeral-nodes" ] + } + # Uninstall one or more operators export extern "stackablectl operator uninstall" [ ...operators: string # One or more operators to uninstall @@ -135,6 +164,7 @@ module completions { --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL --chart-source: string@"nu-complete stackablectl operator uninstall chart_source" # Source the charts from either a OCI registry or from index.yaml-based repositories + --listener-class-preset: string@"nu-complete stackablectl operator uninstall listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version ] @@ -147,6 +177,10 @@ module completions { [ "oci" "repo" ] } + def "nu-complete stackablectl operator installed listener_class_preset" [] { + [ "none" "stable-nodes" "ephemeral-nodes" ] + } + # List installed operators export extern "stackablectl operator installed" [ --output(-o): string@"nu-complete stackablectl operator installed output_type" @@ -161,6 +195,7 @@ module completions { --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL --chart-source: string@"nu-complete stackablectl operator installed chart_source" # Source the charts from either a OCI registry or from index.yaml-based repositories + --listener-class-preset: string@"nu-complete stackablectl operator installed listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version ] @@ -197,6 +232,10 @@ module completions { [ "oci" "repo" ] } + def "nu-complete stackablectl release listener_class_preset" [] { + [ "none" "stable-nodes" "ephemeral-nodes" ] + } + # Interact with all operators of the platform which are released together export extern "stackablectl release" [ --log-level(-l): string # Log level this application uses @@ -208,6 +247,7 @@ module completions { --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL --chart-source: string@"nu-complete stackablectl release chart_source" # Source the charts from either a OCI registry or from index.yaml-based repositories + --listener-class-preset: string@"nu-complete stackablectl release listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version ] @@ -220,6 +260,10 @@ module completions { [ "oci" "repo" ] } + def "nu-complete stackablectl release list listener_class_preset" [] { + [ "none" "stable-nodes" "ephemeral-nodes" ] + } + # List available releases export extern "stackablectl release list" [ --output(-o): string@"nu-complete stackablectl release list output_type" @@ -232,6 +276,7 @@ module completions { --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL --chart-source: string@"nu-complete stackablectl release list chart_source" # Source the charts from either a OCI registry or from index.yaml-based repositories + --listener-class-preset: string@"nu-complete stackablectl release list listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version ] @@ -244,6 +289,10 @@ module completions { [ "oci" "repo" ] } + def "nu-complete stackablectl release describe listener_class_preset" [] { + [ "none" "stable-nodes" "ephemeral-nodes" ] + } + # Print out detailed release information export extern "stackablectl release describe" [ RELEASE: string @@ -257,6 +306,7 @@ module completions { --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL --chart-source: string@"nu-complete stackablectl release describe chart_source" # Source the charts from either a OCI registry or from index.yaml-based repositories + --listener-class-preset: string@"nu-complete stackablectl release describe listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version ] @@ -269,6 +319,10 @@ module completions { [ "oci" "repo" ] } + def "nu-complete stackablectl release install listener_class_preset" [] { + [ "none" "stable-nodes" "ephemeral-nodes" ] + } + # Install a specific release export extern "stackablectl release install" [ RELEASE: string # Release to install @@ -289,6 +343,7 @@ module completions { --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL --chart-source: string@"nu-complete stackablectl release install chart_source" # Source the charts from either a OCI registry or from index.yaml-based repositories + --listener-class-preset: string@"nu-complete stackablectl release install listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version ] @@ -297,6 +352,10 @@ module completions { [ "oci" "repo" ] } + def "nu-complete stackablectl release uninstall listener_class_preset" [] { + [ "none" "stable-nodes" "ephemeral-nodes" ] + } + # Uninstall a release export extern "stackablectl release uninstall" [ RELEASE: string # Name of the release to uninstall @@ -311,6 +370,7 @@ module completions { --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL --chart-source: string@"nu-complete stackablectl release uninstall chart_source" # Source the charts from either a OCI registry or from index.yaml-based repositories + --listener-class-preset: string@"nu-complete stackablectl release uninstall listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version ] @@ -319,6 +379,10 @@ module completions { [ "oci" "repo" ] } + def "nu-complete stackablectl release upgrade listener_class_preset" [] { + [ "none" "stable-nodes" "ephemeral-nodes" ] + } + # Upgrade a release export extern "stackablectl release upgrade" [ RELEASE: string # Upgrade to the specified release @@ -335,6 +399,7 @@ module completions { --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL --chart-source: string@"nu-complete stackablectl release upgrade chart_source" # Source the charts from either a OCI registry or from index.yaml-based repositories + --listener-class-preset: string@"nu-complete stackablectl release upgrade listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version ] @@ -371,6 +436,10 @@ module completions { [ "oci" "repo" ] } + def "nu-complete stackablectl stack listener_class_preset" [] { + [ "none" "stable-nodes" "ephemeral-nodes" ] + } + # Interact with stacks, which are ready-to-use product combinations export extern "stackablectl stack" [ --release: string # Target a specific Stackable release @@ -383,6 +452,7 @@ module completions { --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL --chart-source: string@"nu-complete stackablectl stack chart_source" # Source the charts from either a OCI registry or from index.yaml-based repositories + --listener-class-preset: string@"nu-complete stackablectl stack listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version ] @@ -395,6 +465,10 @@ module completions { [ "oci" "repo" ] } + def "nu-complete stackablectl stack list listener_class_preset" [] { + [ "none" "stable-nodes" "ephemeral-nodes" ] + } + # List available stacks export extern "stackablectl stack list" [ --output(-o): string@"nu-complete stackablectl stack list output_type" @@ -408,6 +482,7 @@ module completions { --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL --chart-source: string@"nu-complete stackablectl stack list chart_source" # Source the charts from either a OCI registry or from index.yaml-based repositories + --listener-class-preset: string@"nu-complete stackablectl stack list listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version ] @@ -420,6 +495,10 @@ module completions { [ "oci" "repo" ] } + def "nu-complete stackablectl stack describe listener_class_preset" [] { + [ "none" "stable-nodes" "ephemeral-nodes" ] + } + # Describe a specific stack export extern "stackablectl stack describe" [ stack_name: string # Name of the stack to describe @@ -434,6 +513,7 @@ module completions { --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL --chart-source: string@"nu-complete stackablectl stack describe chart_source" # Source the charts from either a OCI registry or from index.yaml-based repositories + --listener-class-preset: string@"nu-complete stackablectl stack describe listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version ] @@ -446,6 +526,10 @@ module completions { [ "oci" "repo" ] } + def "nu-complete stackablectl stack install listener_class_preset" [] { + [ "none" "stable-nodes" "ephemeral-nodes" ] + } + # Install a specific stack export extern "stackablectl stack install" [ stack_name: string # Name of the stack to describe @@ -470,6 +554,7 @@ module completions { --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL --chart-source: string@"nu-complete stackablectl stack install chart_source" # Source the charts from either a OCI registry or from index.yaml-based repositories + --listener-class-preset: string@"nu-complete stackablectl stack install listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version ] @@ -498,6 +583,10 @@ module completions { [ "oci" "repo" ] } + def "nu-complete stackablectl stacklet listener_class_preset" [] { + [ "none" "stable-nodes" "ephemeral-nodes" ] + } + # Interact with deployed stacklets, which are bundles of resources and containers required to run the product export extern "stackablectl stacklet" [ --log-level(-l): string # Log level this application uses @@ -509,6 +598,7 @@ module completions { --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL --chart-source: string@"nu-complete stackablectl stacklet chart_source" # Source the charts from either a OCI registry or from index.yaml-based repositories + --listener-class-preset: string@"nu-complete stackablectl stacklet listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version ] @@ -517,6 +607,10 @@ module completions { [ "oci" "repo" ] } + def "nu-complete stackablectl stacklet credentials listener_class_preset" [] { + [ "none" "stable-nodes" "ephemeral-nodes" ] + } + # Display credentials for a stacklet export extern "stackablectl stacklet credentials" [ product_name: string # The name of the product, for example 'superset' @@ -531,6 +625,7 @@ module completions { --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL --chart-source: string@"nu-complete stackablectl stacklet credentials chart_source" # Source the charts from either a OCI registry or from index.yaml-based repositories + --listener-class-preset: string@"nu-complete stackablectl stacklet credentials listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version ] @@ -543,6 +638,10 @@ module completions { [ "oci" "repo" ] } + def "nu-complete stackablectl stacklet list listener_class_preset" [] { + [ "none" "stable-nodes" "ephemeral-nodes" ] + } + # List deployed stacklets export extern "stackablectl stacklet list" [ --output(-o): string@"nu-complete stackablectl stacklet list output_type" @@ -559,6 +658,7 @@ module completions { --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL --chart-source: string@"nu-complete stackablectl stacklet list chart_source" # Source the charts from either a OCI registry or from index.yaml-based repositories + --listener-class-preset: string@"nu-complete stackablectl stacklet list listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version ] @@ -583,6 +683,10 @@ module completions { [ "oci" "repo" ] } + def "nu-complete stackablectl demo listener_class_preset" [] { + [ "none" "stable-nodes" "ephemeral-nodes" ] + } + # Interact with demos, which are end-to-end usage demonstrations of the Stackable data platform export extern "stackablectl demo" [ --release: string # Target a specific Stackable release @@ -595,6 +699,7 @@ module completions { --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL --chart-source: string@"nu-complete stackablectl demo chart_source" # Source the charts from either a OCI registry or from index.yaml-based repositories + --listener-class-preset: string@"nu-complete stackablectl demo listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version ] @@ -607,6 +712,10 @@ module completions { [ "oci" "repo" ] } + def "nu-complete stackablectl demo list listener_class_preset" [] { + [ "none" "stable-nodes" "ephemeral-nodes" ] + } + # List available demos export extern "stackablectl demo list" [ --output(-o): string@"nu-complete stackablectl demo list output_type" @@ -620,6 +729,7 @@ module completions { --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL --chart-source: string@"nu-complete stackablectl demo list chart_source" # Source the charts from either a OCI registry or from index.yaml-based repositories + --listener-class-preset: string@"nu-complete stackablectl demo list listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version ] @@ -632,6 +742,10 @@ module completions { [ "oci" "repo" ] } + def "nu-complete stackablectl demo describe listener_class_preset" [] { + [ "none" "stable-nodes" "ephemeral-nodes" ] + } + # Print out detailed demo information export extern "stackablectl demo describe" [ DEMO: string # Demo to describe @@ -646,6 +760,7 @@ module completions { --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL --chart-source: string@"nu-complete stackablectl demo describe chart_source" # Source the charts from either a OCI registry or from index.yaml-based repositories + --listener-class-preset: string@"nu-complete stackablectl demo describe listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version ] @@ -658,6 +773,10 @@ module completions { [ "oci" "repo" ] } + def "nu-complete stackablectl demo install listener_class_preset" [] { + [ "none" "stable-nodes" "ephemeral-nodes" ] + } + # Install a specific demo export extern "stackablectl demo install" [ DEMO: string # Demo to install @@ -682,6 +801,7 @@ module completions { --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL --chart-source: string@"nu-complete stackablectl demo install chart_source" # Source the charts from either a OCI registry or from index.yaml-based repositories + --listener-class-preset: string@"nu-complete stackablectl demo install listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version ] @@ -710,6 +830,10 @@ module completions { [ "oci" "repo" ] } + def "nu-complete stackablectl completions listener_class_preset" [] { + [ "none" "stable-nodes" "ephemeral-nodes" ] + } + # Generate shell completions for this tool export extern "stackablectl completions" [ --log-level(-l): string # Log level this application uses @@ -721,6 +845,7 @@ module completions { --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL --chart-source: string@"nu-complete stackablectl completions chart_source" # Source the charts from either a OCI registry or from index.yaml-based repositories + --listener-class-preset: string@"nu-complete stackablectl completions listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version ] @@ -729,6 +854,10 @@ module completions { [ "oci" "repo" ] } + def "nu-complete stackablectl completions bash listener_class_preset" [] { + [ "none" "stable-nodes" "ephemeral-nodes" ] + } + # Generate shell completions for Bash export extern "stackablectl completions bash" [ --log-level(-l): string # Log level this application uses @@ -740,6 +869,7 @@ module completions { --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL --chart-source: string@"nu-complete stackablectl completions bash chart_source" # Source the charts from either a OCI registry or from index.yaml-based repositories + --listener-class-preset: string@"nu-complete stackablectl completions bash listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version ] @@ -748,6 +878,10 @@ module completions { [ "oci" "repo" ] } + def "nu-complete stackablectl completions elvish listener_class_preset" [] { + [ "none" "stable-nodes" "ephemeral-nodes" ] + } + # Generate shell completions for Elvish export extern "stackablectl completions elvish" [ --log-level(-l): string # Log level this application uses @@ -759,6 +893,7 @@ module completions { --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL --chart-source: string@"nu-complete stackablectl completions elvish chart_source" # Source the charts from either a OCI registry or from index.yaml-based repositories + --listener-class-preset: string@"nu-complete stackablectl completions elvish listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version ] @@ -767,6 +902,10 @@ module completions { [ "oci" "repo" ] } + def "nu-complete stackablectl completions fish listener_class_preset" [] { + [ "none" "stable-nodes" "ephemeral-nodes" ] + } + # Generate shell completions for Fish export extern "stackablectl completions fish" [ --log-level(-l): string # Log level this application uses @@ -778,6 +917,7 @@ module completions { --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL --chart-source: string@"nu-complete stackablectl completions fish chart_source" # Source the charts from either a OCI registry or from index.yaml-based repositories + --listener-class-preset: string@"nu-complete stackablectl completions fish listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version ] @@ -786,6 +926,10 @@ module completions { [ "oci" "repo" ] } + def "nu-complete stackablectl completions nushell listener_class_preset" [] { + [ "none" "stable-nodes" "ephemeral-nodes" ] + } + # Generate shell completions for Nushell export extern "stackablectl completions nushell" [ --log-level(-l): string # Log level this application uses @@ -797,6 +941,7 @@ module completions { --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL --chart-source: string@"nu-complete stackablectl completions nushell chart_source" # Source the charts from either a OCI registry or from index.yaml-based repositories + --listener-class-preset: string@"nu-complete stackablectl completions nushell listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version ] @@ -805,6 +950,10 @@ module completions { [ "oci" "repo" ] } + def "nu-complete stackablectl completions zsh listener_class_preset" [] { + [ "none" "stable-nodes" "ephemeral-nodes" ] + } + # Generate shell completions for ZSH export extern "stackablectl completions zsh" [ --log-level(-l): string # Log level this application uses @@ -816,6 +965,7 @@ module completions { --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL --chart-source: string@"nu-complete stackablectl completions zsh chart_source" # Source the charts from either a OCI registry or from index.yaml-based repositories + --listener-class-preset: string@"nu-complete stackablectl completions zsh listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version ] @@ -852,6 +1002,10 @@ module completions { [ "oci" "repo" ] } + def "nu-complete stackablectl cache listener_class_preset" [] { + [ "none" "stable-nodes" "ephemeral-nodes" ] + } + # Interact with locally cached files export extern "stackablectl cache" [ --log-level(-l): string # Log level this application uses @@ -863,6 +1017,7 @@ module completions { --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL --chart-source: string@"nu-complete stackablectl cache chart_source" # Source the charts from either a OCI registry or from index.yaml-based repositories + --listener-class-preset: string@"nu-complete stackablectl cache listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version ] @@ -871,6 +1026,10 @@ module completions { [ "oci" "repo" ] } + def "nu-complete stackablectl cache list listener_class_preset" [] { + [ "none" "stable-nodes" "ephemeral-nodes" ] + } + # List cached files export extern "stackablectl cache list" [ --log-level(-l): string # Log level this application uses @@ -882,6 +1041,7 @@ module completions { --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL --chart-source: string@"nu-complete stackablectl cache list chart_source" # Source the charts from either a OCI registry or from index.yaml-based repositories + --listener-class-preset: string@"nu-complete stackablectl cache list listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version ] @@ -890,6 +1050,10 @@ module completions { [ "oci" "repo" ] } + def "nu-complete stackablectl cache clean listener_class_preset" [] { + [ "none" "stable-nodes" "ephemeral-nodes" ] + } + # Clean cached files export extern "stackablectl cache clean" [ --old # Only remove outdated files in the cache @@ -903,6 +1067,7 @@ module completions { --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL --chart-source: string@"nu-complete stackablectl cache clean chart_source" # Source the charts from either a OCI registry or from index.yaml-based repositories + --listener-class-preset: string@"nu-complete stackablectl cache clean listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version ] @@ -927,6 +1092,10 @@ module completions { [ "oci" "repo" ] } + def "nu-complete stackablectl experimental-debug listener_class_preset" [] { + [ "none" "stable-nodes" "ephemeral-nodes" ] + } + # EXPERIMENTAL: Launch a debug container for a Pod export extern "stackablectl experimental-debug" [ --namespace(-n): string # The namespace of the Pod being debugged @@ -943,6 +1112,7 @@ module completions { --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL --chart-source: string@"nu-complete stackablectl experimental-debug chart_source" # Source the charts from either a OCI registry or from index.yaml-based repositories + --listener-class-preset: string@"nu-complete stackablectl experimental-debug listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version ] diff --git a/extra/man/stackablectl.1 b/extra/man/stackablectl.1 index da7c8877..643a4340 100644 --- a/extra/man/stackablectl.1 +++ b/extra/man/stackablectl.1 @@ -1,15 +1,15 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' -.TH stackablectl 1 "stackablectl 1.1.0" +.TH stackablectl 1 "stackablectl 1.2.0" .SH NAME stackablectl \- Command line tool to interact with the Stackable Data Platform .SH SYNOPSIS -\fBstackablectl\fR [\fB\-l\fR|\fB\-\-log\-level\fR] [\fB\-\-no\-cache\fR] [\fB\-d\fR|\fB\-\-demo\-file\fR] [\fB\-s\fR|\fB\-\-stack\-file\fR] [\fB\-r\fR|\fB\-\-release\-file\fR] [\fB\-\-helm\-repo\-stable\fR] [\fB\-\-helm\-repo\-test\fR] [\fB\-\-helm\-repo\-dev\fR] [\fB\-\-chart\-source\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fB\-V\fR|\fB\-\-version\fR] <\fIsubcommands\fR> +\fBstackablectl\fR [\fB\-l\fR|\fB\-\-log\-level\fR] [\fB\-\-no\-cache\fR] [\fB\-d\fR|\fB\-\-demo\-file\fR] [\fB\-s\fR|\fB\-\-stack\-file\fR] [\fB\-r\fR|\fB\-\-release\-file\fR] [\fB\-\-helm\-repo\-stable\fR] [\fB\-\-helm\-repo\-test\fR] [\fB\-\-helm\-repo\-dev\fR] [\fB\-\-chart\-source\fR] [\fB\-\-listener\-class\-preset\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fB\-V\fR|\fB\-\-version\fR] <\fIsubcommands\fR> .SH DESCRIPTION Command line tool to interact with the Stackable Data Platform .SH OPTIONS .TP -\fB\-l\fR, \fB\-\-log\-level\fR=\fILOG_LEVEL\fR +\fB\-l\fR, \fB\-\-log\-level\fR \fI\fR Log level this application uses .TP \fB\-\-no\-cache\fR @@ -25,7 +25,7 @@ Print help (see a summary with \*(Aq\-h\*(Aq) Print version .SH "FILE OPTIONS" .TP -\fB\-d\fR, \fB\-\-demo\-file\fR=\fIDEMO_FILE\fR +\fB\-d\fR, \fB\-\-demo\-file\fR \fI\fR Provide one or more additional (custom) demo file(s) Demos are loaded in the following order: Remote (default) demo file, custom @@ -36,7 +36,7 @@ demos with the same name, the last demo definition will be used. Use "stackablectl [OPTIONS] \-d path/to/demos1.yaml \-d path/to/demos2.yaml" to provide multiple additional demo files. .TP -\fB\-s\fR, \fB\-\-stack\-file\fR=\fISTACK_FILE\fR +\fB\-s\fR, \fB\-\-stack\-file\fR \fI\fR Provide one or more additional (custom) stack file(s) Stacks are loaded in the following order: Remote (default) stack file, custom @@ -47,7 +47,7 @@ stacks with the same name, the last stack definition will be used. Use "stackablectl [OPTIONS] \-s path/to/stacks1.yaml \-s path/to/stacks2.yaml" to provide multiple additional stack files. .TP -\fB\-r\fR, \fB\-\-release\-file\fR=\fIRELEASE_FILE\fR +\fB\-r\fR, \fB\-\-release\-file\fR \fI\fR Provide one or more additional (custom) release file(s) Releases are loaded in the following order: Remote (default) release file, @@ -60,16 +60,16 @@ Use "stackablectl [OPTIONS] \-r path/to/releases1.yaml \-r path/to/rel to provide multiple additional release files. .SH "HELM REPOSITORY OPTIONS" .TP -\fB\-\-helm\-repo\-stable\fR=\fIURL\fR [default: https://repo.stackable.tech/repository/helm\-stable/] +\fB\-\-helm\-repo\-stable\fR \fI\fR [default: https://repo.stackable.tech/repository/helm\-stable/] Provide a custom Helm stable repository URL .TP -\fB\-\-helm\-repo\-test\fR=\fIURL\fR [default: https://repo.stackable.tech/repository/helm\-test/] +\fB\-\-helm\-repo\-test\fR \fI\fR [default: https://repo.stackable.tech/repository/helm\-test/] Provide a custom Helm test repository URL .TP -\fB\-\-helm\-repo\-dev\fR=\fIURL\fR [default: https://repo.stackable.tech/repository/helm\-dev/] +\fB\-\-helm\-repo\-dev\fR \fI\fR [default: https://repo.stackable.tech/repository/helm\-dev/] Provide a custom Helm dev repository URL .TP -\fB\-\-chart\-source\fR=\fICHART_SOURCE\fR [default: oci] +\fB\-\-chart\-source\fR \fI\fR [default: oci] Source the charts from either a OCI registry or from index.yaml\-based repositories. .br @@ -81,6 +81,16 @@ oci: OCI registry .IP \(bu 2 repo: index.yaml\-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator\-specific .RE +.SH "OPERATOR SPECIFIC CONFIGURATIONS" +.TP +\fB\-\-listener\-class\-preset\fR \fI\fR +Choose the ListenerClass preset (`none`, `ephemeral\-nodes` or `stable\-nodes`). + +This maps to the listener\-operator Helm Chart preset value, see [the listener\-operator documentation](https://docs.stackable.tech/home/nightly/listener\-operator/listenerclass/#presets) for details. +.br + +.br +[\fIpossible values: \fRnone, stable\-nodes, ephemeral\-nodes] .SH SUBCOMMANDS .TP stackablectl\-operator(1) @@ -110,6 +120,6 @@ EXPERIMENTAL: Launch a debug container for a Pod stackablectl\-help(1) Print this message or the help of the given subcommand(s) .SH VERSION -v1.1.0 +v1.2.0 .SH AUTHORS Stackable GmbH diff --git a/rust/stackable-cockpit/src/platform/operator/mod.rs b/rust/stackable-cockpit/src/platform/operator/mod.rs index 1e7dc64b..c1dbf6f1 100644 --- a/rust/stackable-cockpit/src/platform/operator/mod.rs +++ b/rust/stackable-cockpit/src/platform/operator/mod.rs @@ -96,9 +96,10 @@ impl FromStr for OperatorSpec { ensure!(len <= 2, InvalidEqualSignCountSnafu); // Check if the provided operator name is in the list of valid operators - ensure!(VALID_OPERATORS.contains(&parts[0]), InvalidNameSnafu { - name: parts[0] - }); + ensure!( + VALID_OPERATORS.contains(&parts[0]), + InvalidNameSnafu { name: parts[0] } + ); // If there is only one part, the input didn't include // the optional version identifier diff --git a/rust/stackablectl/CHANGELOG.md b/rust/stackablectl/CHANGELOG.md index d095589c..78c20681 100644 --- a/rust/stackablectl/CHANGELOG.md +++ b/rust/stackablectl/CHANGELOG.md @@ -4,6 +4,8 @@ All notable changes to this project will be documented in this file. ## [Unreleased] +## [1.2.0] - 2025-10-29 + ### Added - Automatically detect Kubernetes environment (e.g. kind, k3s or IONOS) and choose a sensible [ListenerClass preset] by default ([#414]). diff --git a/rust/stackablectl/Cargo.toml b/rust/stackablectl/Cargo.toml index 3cdef988..d13f34bb 100644 --- a/rust/stackablectl/Cargo.toml +++ b/rust/stackablectl/Cargo.toml @@ -2,7 +2,7 @@ name = "stackablectl" description = "Command line tool to interact with the Stackable Data Platform" # See /Cargo.toml -version = "1.1.0" +version = "1.2.0" authors.workspace = true license.workspace = true edition.workspace = true diff --git a/rust/stackablectl/README.md b/rust/stackablectl/README.md index bb4d37d5..406f586d 100644 --- a/rust/stackablectl/README.md +++ b/rust/stackablectl/README.md @@ -95,11 +95,19 @@ Helm repository options: --chart-source Source the charts from either a OCI registry or from index.yaml-based repositories. - [default: oci] - Possible values: - oci: OCI registry - repo: index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific + + [default: oci] + +Operator specific configurations: + --listener-class-preset + Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`). + + This maps to the listener-operator Helm Chart preset value, see [the listener-operator documentation](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass/#presets) for details. + + [possible values: none, stable-nodes, ephemeral-nodes] ``` ## Dev Setup From c0fb5fa2db16772b36a3fc31b6a638566a8b01bf Mon Sep 17 00:00:00 2001 From: Techassi Date: Wed, 29 Oct 2025 16:40:24 +0100 Subject: [PATCH 39/63] ci: Run pre-commit on merge-queue (#416) --- .github/workflows/pr_pre-commit.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/pr_pre-commit.yml b/.github/workflows/pr_pre-commit.yml index abbe3384..0e0a5f86 100644 --- a/.github/workflows/pr_pre-commit.yml +++ b/.github/workflows/pr_pre-commit.yml @@ -3,6 +3,7 @@ name: pre-commit on: pull_request: + merge_group: env: CARGO_TERM_COLOR: always From f5df6045a4f81d8d651714bb690b1a167a652ebe Mon Sep 17 00:00:00 2001 From: Sebastian Bernauer Date: Tue, 4 Nov 2025 12:33:00 +0100 Subject: [PATCH 40/63] fix: Don't crash during `release upgrade` for SDP 25.11 (#418) * fix: Don't crash during `release upgrade` for SDP 25.11 * changelog * Update rust/stackable-cockpit/src/platform/release/spec.rs Co-authored-by: Techassi * Improve docs * Fix typo --------- Co-authored-by: Techassi --- .../src/platform/release/spec.rs | 35 +++++++++++++++---- rust/stackablectl/CHANGELOG.md | 7 ++++ 2 files changed, 35 insertions(+), 7 deletions(-) diff --git a/rust/stackable-cockpit/src/platform/release/spec.rs b/rust/stackable-cockpit/src/platform/release/spec.rs index 7367c29d..21a5ef82 100644 --- a/rust/stackable-cockpit/src/platform/release/spec.rs +++ b/rust/stackable-cockpit/src/platform/release/spec.rs @@ -1,9 +1,10 @@ use futures::{StreamExt as _, TryStreamExt}; use indexmap::IndexMap; +use reqwest::StatusCode; use serde::{Deserialize, Serialize}; use snafu::{ResultExt, Snafu}; use tokio::task::JoinError; -use tracing::{Instrument, Span, info, instrument}; +use tracing::{Instrument, Span, debug, info, instrument}; use tracing_indicatif::span_ext::IndicatifSpanExt as _; #[cfg(feature = "openapi")] use utoipa::ToSchema; @@ -181,18 +182,38 @@ impl ReleaseSpec { } }; - let request_url = &format!( + let request_url_string = &format!( "https://raw.githubusercontent.com/stackabletech/{product_name}-operator/{release_branch}/deploy/helm/{product_name}-operator/crds/crds.yaml" ); - let request_url = request_url.into_path_or_url().context(ParsePathOrUrlSnafu { - path_or_url: request_url.clone(), + let request_url = request_url_string.into_path_or_url().context(ParsePathOrUrlSnafu { + path_or_url: request_url_string, })?; // Get CRD manifests from request_url - let crd_manifests: String = transfer_client + let crd_manifests = transfer_client .get(&request_url, &Text) - .await - .context(FileTransferSnafu)?; + .await; + let crd_manifests = match crd_manifests { + Ok(crd_manifests) => crd_manifests, + Err(crate::xfer::Error::FetchRemoteContent{source: reqwest_error}) + if reqwest_error.status() == Some(StatusCode::NOT_FOUND) => { + // Ignore 404, as CRD versioning is rolled out to operators. + // Starting with secret-operator 25.11.0, the CRD is maintained by the operator, + // making this entire functionality obsolete. + // As only some of the operators are migrated yet, some operator crds.yaml's + // return a 404, others don't. + debug!( + product = product_name, + // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#http-client-span + url.full = request_url_string, + "Skipped updating CRD, as it doesn't exist in the upstream GitHub repo because the operator most likely uses CRD versioning" + ); + return Ok(()); + }, + Err(err) => { + return Err(Error::FileTransfer { source: err }); + }, + }; // Upgrade CRDs k8s_client diff --git a/rust/stackablectl/CHANGELOG.md b/rust/stackablectl/CHANGELOG.md index 78c20681..68908e55 100644 --- a/rust/stackablectl/CHANGELOG.md +++ b/rust/stackablectl/CHANGELOG.md @@ -4,6 +4,13 @@ All notable changes to this project will be documented in this file. ## [Unreleased] +### Fixed + +- Don't crash during `release upgrade` for SDP 25.11. + Previously it errored with `HTTP status client error (404 Not Found) for url (https://raw.githubusercontent.com/stackabletech/secret-operator/main/deploy/helm/secret-operator/crds/crds.yaml)`, as the secret-operator now maintains the CRD itself ([#418]). + +[#418]: https://github.com/stackabletech/stackable-cockpit/pull/418 + ## [1.2.0] - 2025-10-29 ### Added From 545748b6914fafb593231a8993f58d43fddaf122 Mon Sep 17 00:00:00 2001 From: Sebastian Bernauer Date: Tue, 18 Nov 2025 10:04:09 +0100 Subject: [PATCH 41/63] chore: Release stackablectl 1.2.1 (#420) --- Cargo.lock | 2 +- Cargo.nix | 2 +- docs/modules/stackablectl/pages/installation.adoc | 10 +++++----- docs/modules/stackablectl/pages/release-notes.adoc | 3 +++ .../partials/release-notes/release-1.2.1.adoc | 5 +++++ extra/man/stackablectl.1 | 4 ++-- rust/stackablectl/Cargo.toml | 2 +- 7 files changed, 18 insertions(+), 10 deletions(-) create mode 100644 docs/modules/stackablectl/partials/release-notes/release-1.2.1.adoc diff --git a/Cargo.lock b/Cargo.lock index be70db85..6b4fc025 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3605,7 +3605,7 @@ dependencies = [ [[package]] name = "stackablectl" -version = "1.2.0" +version = "1.2.1" dependencies = [ "clap", "clap_complete", diff --git a/Cargo.nix b/Cargo.nix index c85e0d0e..141e2f14 100644 --- a/Cargo.nix +++ b/Cargo.nix @@ -11992,7 +11992,7 @@ rec { }; "stackablectl" = rec { crateName = "stackablectl"; - version = "1.2.0"; + version = "1.2.1"; edition = "2021"; crateBin = [ { diff --git a/docs/modules/stackablectl/pages/installation.adoc b/docs/modules/stackablectl/pages/installation.adoc index 08b39aa9..7166b474 100644 --- a/docs/modules/stackablectl/pages/installation.adoc +++ b/docs/modules/stackablectl/pages/installation.adoc @@ -1,7 +1,7 @@ = Installation :page-aliases: stable@stackablectl::installation.adoc -:latest-release: https://github.com/stackabletech/stackable-cockpit/releases/tag/stackablectl-1.2.0 +:latest-release: https://github.com/stackabletech/stackable-cockpit/releases/tag/stackablectl-1.2.1 :fish-comp-loations: https://fishshell.com/docs/current/completions.html#where-to-put-completions :nushell-comp-locations: https://www.nushell.sh/book/custom_commands.html#persisting @@ -23,14 +23,14 @@ You can also use the following command: [source,console] ---- -$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-1.2.0/stackablectl-x86_64-unknown-linux-gnu +$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-1.2.1/stackablectl-x86_64-unknown-linux-gnu ---- **aarch64** (arm64): [source,console] ---- -$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-1.2.0/stackablectl-aarch64-unknown-linux-gnu +$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-1.2.1/stackablectl-aarch64-unknown-linux-gnu ---- Install the binary into a directory in the `$PATH`, and make it executable: @@ -60,14 +60,14 @@ You can also use the following command: [source,console] ---- -$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-1.2.0/stackablectl-x86_64-apple-darwin +$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-1.2.1/stackablectl-x86_64-apple-darwin ---- **aarch64** (arm64): [source,console] ---- -$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-1.2.0/stackablectl-aarch64-apple-darwin +$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-1.2.1/stackablectl-aarch64-apple-darwin ---- Install the binary into a directory in the `$PATH`, and make it executable: diff --git a/docs/modules/stackablectl/pages/release-notes.adoc b/docs/modules/stackablectl/pages/release-notes.adoc index 1dc06dc5..069cfd86 100644 --- a/docs/modules/stackablectl/pages/release-notes.adoc +++ b/docs/modules/stackablectl/pages/release-notes.adoc @@ -5,6 +5,9 @@ A full list of changes is available directly in https://github.com/stackabletech/stackable-cockpit/blob/main/rust/stackablectl/CHANGELOG.md[stackablectl's changelog]. // WARNING: Please keep the empty newlines, otherwise headings are broken. + +include::partial$release-notes/release-1.2.1.adoc[] + include::partial$release-notes/release-1.2.0.adoc[] include::partial$release-notes/release-1.1.0.adoc[] diff --git a/docs/modules/stackablectl/partials/release-notes/release-1.2.1.adoc b/docs/modules/stackablectl/partials/release-notes/release-1.2.1.adoc new file mode 100644 index 00000000..5deb31dc --- /dev/null +++ b/docs/modules/stackablectl/partials/release-notes/release-1.2.1.adoc @@ -0,0 +1,5 @@ +== 1.2.1 + +* Don't crash during `release upgrade` for SDP 25.11. + Previously it errored with `HTTP status client error (404 Not Found) for url (https://raw.githubusercontent.com/stackabletech/secret-operator/main/deploy/helm/secret-operator/crds/crds.yaml)`, as the secret-operator now maintains the CRD itself ([#418]). + See https://github.com/stackabletech/stackable-cockpit/pull/418[stackable-cockpit#418]. diff --git a/extra/man/stackablectl.1 b/extra/man/stackablectl.1 index 643a4340..2b8a7244 100644 --- a/extra/man/stackablectl.1 +++ b/extra/man/stackablectl.1 @@ -1,6 +1,6 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' -.TH stackablectl 1 "stackablectl 1.2.0" +.TH stackablectl 1 "stackablectl 1.2.1" .SH NAME stackablectl \- Command line tool to interact with the Stackable Data Platform .SH SYNOPSIS @@ -120,6 +120,6 @@ EXPERIMENTAL: Launch a debug container for a Pod stackablectl\-help(1) Print this message or the help of the given subcommand(s) .SH VERSION -v1.2.0 +v1.2.1 .SH AUTHORS Stackable GmbH diff --git a/rust/stackablectl/Cargo.toml b/rust/stackablectl/Cargo.toml index d13f34bb..af107a9e 100644 --- a/rust/stackablectl/Cargo.toml +++ b/rust/stackablectl/Cargo.toml @@ -2,7 +2,7 @@ name = "stackablectl" description = "Command line tool to interact with the Stackable Data Platform" # See /Cargo.toml -version = "1.2.0" +version = "1.2.1" authors.workspace = true license.workspace = true edition.workspace = true From f3bc3f72dd6b416e2b925153e2b428226d724282 Mon Sep 17 00:00:00 2001 From: Techassi Date: Thu, 20 Nov 2025 12:26:22 +0100 Subject: [PATCH 42/63] feat: Add version check (command) (#421) * chore: Adjust Rust toolchain in rustfmt override * chore: Add built * feat: Add release check (command) * refactor: Update transfer client and cache related code * chore: Apply suggestions Co-authored-by: Nick <10092581+NickLarsenNZ@users.noreply.github.com> * chore: Revert accidental commented-out instrument attribute * chore: Add timeout to version check --------- Co-authored-by: Nick <10092581+NickLarsenNZ@users.noreply.github.com> --- .vscode/settings.json | 2 +- Cargo.lock | 7 + Cargo.nix | 22 ++ Cargo.toml | 1 + .../stackablectl/partials/commands/help.adoc | 1 + .../stackablectl/partials/commands/index.adoc | 1 + .../partials/commands/version.adoc | 95 +++++ extra/completions/_stackablectl | 147 +++++++ extra/completions/stackablectl.bash | 359 +++++++++++++++++- extra/completions/stackablectl.elv | 57 +++ extra/completions/stackablectl.fish | 55 ++- extra/completions/stackablectl.nu | 68 ++++ extra/man/stackablectl.1 | 3 + rust/stackable-cockpit/src/common/list.rs | 2 +- .../src/platform/manifests.rs | 5 +- rust/stackable-cockpit/src/utils/path.rs | 24 -- rust/stackable-cockpit/src/xfer/mod.rs | 48 ++- rust/stackable-cockpit/src/xfer/processor.rs | 24 +- rust/stackablectl/Cargo.toml | 3 + rust/stackablectl/README.md | 1 + rust/stackablectl/build.rs | 3 + rust/stackablectl/src/cli/mod.rs | 150 ++++++-- rust/stackablectl/src/cmds/cache.rs | 32 +- rust/stackablectl/src/cmds/debug.rs | 4 +- rust/stackablectl/src/cmds/demo.rs | 30 +- rust/stackablectl/src/cmds/mod.rs | 1 + rust/stackablectl/src/cmds/operator.rs | 18 +- rust/stackablectl/src/cmds/release.rs | 36 +- rust/stackablectl/src/cmds/stack.rs | 29 +- rust/stackablectl/src/cmds/stacklet.rs | 10 +- rust/stackablectl/src/cmds/version.rs | 47 +++ rust/stackablectl/src/lib.rs | 11 + rust/stackablectl/src/main.rs | 8 +- .../src/output/templates/result.tpl | 10 +- rust/stackablectl/src/release_check.rs | 86 +++++ 35 files changed, 1223 insertions(+), 177 deletions(-) create mode 100644 docs/modules/stackablectl/partials/commands/version.adoc create mode 100644 rust/stackablectl/build.rs create mode 100644 rust/stackablectl/src/cmds/version.rs create mode 100644 rust/stackablectl/src/release_check.rs diff --git a/.vscode/settings.json b/.vscode/settings.json index c5d5fdae..82d38ab9 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -3,7 +3,7 @@ "rust-analyzer.cargo.features": "all", "rust-analyzer.rustfmt.overrideCommand": [ "rustfmt", - "+nightly-2025-01-15", + "+nightly-2025-10-23", "--edition", "2024", "--" diff --git a/Cargo.lock b/Cargo.lock index 6b4fc025..a654816b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -433,6 +433,12 @@ dependencies = [ "serde", ] +[[package]] +name = "built" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4ad8f11f288f48ca24471bbd51ac257aaeaaa07adae295591266b792902ae64" + [[package]] name = "bumpalo" version = "3.19.0" @@ -3607,6 +3613,7 @@ dependencies = [ name = "stackablectl" version = "1.2.1" dependencies = [ + "built", "clap", "clap_complete", "clap_complete_nushell", diff --git a/Cargo.nix b/Cargo.nix index 141e2f14..1c1c4808 100644 --- a/Cargo.nix +++ b/Cargo.nix @@ -1542,6 +1542,22 @@ rec { }; resolvedDefaultFeatures = [ "alloc" "std" ]; }; + "built" = rec { + crateName = "built"; + version = "0.8.0"; + edition = "2021"; + sha256 = "0r5f08lpjsr6j5ajkbmd0ymfmajpq8ddbfvi8ji8rx48y88qzbgl"; + authors = [ + "Lukas Lueg " + ]; + features = { + "cargo-lock" = [ "dep:cargo-lock" ]; + "chrono" = [ "dep:chrono" ]; + "dependency-tree" = [ "cargo-lock/dependency-tree" ]; + "git2" = [ "dep:git2" ]; + "semver" = [ "dep:semver" ]; + }; + }; "bumpalo" = rec { crateName = "bumpalo"; version = "3.19.0"; @@ -12126,6 +12142,12 @@ rec { packageId = "urlencoding"; } ]; + buildDependencies = [ + { + name = "built"; + packageId = "built"; + } + ]; }; "strsim" = rec { diff --git a/Cargo.toml b/Cargo.toml index 93e88231..fba4c5cf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,6 +22,7 @@ axum = { version = "0.7", features = ["http2"] } axum-extra = { version = "0.9", features = ["typed-header"] } bcrypt = "0.15" bindgen = "0.70.1" +built = "0.8.0" cc = "1.0.106" clap = { version = "4.5", features = ["derive", "env"] } clap_complete = "4.5" diff --git a/docs/modules/stackablectl/partials/commands/help.adoc b/docs/modules/stackablectl/partials/commands/help.adoc index 6a390f6f..c3441a55 100644 --- a/docs/modules/stackablectl/partials/commands/help.adoc +++ b/docs/modules/stackablectl/partials/commands/help.adoc @@ -14,5 +14,6 @@ Commands: completions Generate shell completions for this tool cache Interact with locally cached files experimental-debug EXPERIMENTAL: Launch a debug container for a Pod + version Retrieve version data of the stackablectl installation help Print this message or the help of the given subcommand(s) ---- diff --git a/docs/modules/stackablectl/partials/commands/index.adoc b/docs/modules/stackablectl/partials/commands/index.adoc index b2f8ca3e..a1a305c2 100644 --- a/docs/modules/stackablectl/partials/commands/index.adoc +++ b/docs/modules/stackablectl/partials/commands/index.adoc @@ -14,6 +14,7 @@ Commands: completions Generate shell completions for this tool cache Interact with locally cached files experimental-debug EXPERIMENTAL: Launch a debug container for a Pod + version Retrieve version data of the stackablectl installation help Print this message or the help of the given subcommand(s) Options: diff --git a/docs/modules/stackablectl/partials/commands/version.adoc b/docs/modules/stackablectl/partials/commands/version.adoc new file mode 100644 index 00000000..06610aae --- /dev/null +++ b/docs/modules/stackablectl/partials/commands/version.adoc @@ -0,0 +1,95 @@ +// Autogenerated by cargo xtask gen-docs. DO NOT CHANGE MANUALLY! +[source,console] +---- +Retrieve version data of the stackablectl installation + +Usage: stackablectl version [OPTIONS] + +Commands: + check Check if there is a new version available + help Print this message or the help of the given subcommand(s) + +Options: + -l, --log-level + Log level this application uses + + --no-cache + Do not cache the remote (default) demo, stack and release files + + Cached files are saved at '$XDG_CACHE_HOME/stackablectl', which is usually + '$HOME/.cache/stackablectl' when not explicitly set. + + -h, --help + Print help (see a summary with '-h') + + -V, --version + Print version + +File options: + -d, --demo-file + Provide one or more additional (custom) demo file(s) + + Demos are loaded in the following order: Remote (default) demo file, custom + demo files provided via the 'STACKABLE_DEMO_FILES' environment variable, and + lastly demo files provided via the '-d/--demo-file' argument(s). If there are + demos with the same name, the last demo definition will be used. + + Use "stackablectl [OPTIONS] -d path/to/demos1.yaml -d path/to/demos2.yaml" + to provide multiple additional demo files. + + -s, --stack-file + Provide one or more additional (custom) stack file(s) + + Stacks are loaded in the following order: Remote (default) stack file, custom + stack files provided via the 'STACKABLE_STACK_FILES' environment variable, and + lastly demo files provided via the '-s/--stack-file' argument(s). If there are + stacks with the same name, the last stack definition will be used. + + Use "stackablectl [OPTIONS] -s path/to/stacks1.yaml -s path/to/stacks2.yaml" + to provide multiple additional stack files. + + -r, --release-file + Provide one or more additional (custom) release file(s) + + Releases are loaded in the following order: Remote (default) release file, + custom release files provided via the 'STACKABLE_RELEASE_FILES' environment + variable, and lastly release files provided via the '-r/--release-file' + argument(s). If there are releases with the same name, the last release + definition will be used. + + Use "stackablectl [OPTIONS] -r path/to/releases1.yaml -r path/to/releases2.yaml" + to provide multiple additional release files. + +Helm repository options: + --helm-repo-stable + Provide a custom Helm stable repository URL + + [default: https://repo.stackable.tech/repository/helm-stable/] + + --helm-repo-test + Provide a custom Helm test repository URL + + [default: https://repo.stackable.tech/repository/helm-test/] + + --helm-repo-dev + Provide a custom Helm dev repository URL + + [default: https://repo.stackable.tech/repository/helm-dev/] + + --chart-source + Source the charts from either a OCI registry or from index.yaml-based repositories. + + Possible values: + - oci: OCI registry + - repo: index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific + + [default: oci] + +Operator specific configurations: + --listener-class-preset + Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`). + + This maps to the listener-operator Helm Chart preset value, see [the listener-operator documentation](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass/#presets) for details. + + [possible values: none, stable-nodes, ephemeral-nodes] +---- diff --git a/extra/completions/_stackablectl b/extra/completions/_stackablectl index bba6e21d..342cc466 100644 --- a/extra/completions/_stackablectl +++ b/extra/completions/_stackablectl @@ -1307,6 +1307,88 @@ repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based o '*::cmd -- The command to run in the debug container:_default' \ && ret=0 ;; +(version) +_arguments "${_arguments_options[@]}" : \ +'-l+[Log level this application uses]:LOG_LEVEL:_default' \ +'--log-level=[Log level this application uses]:LOG_LEVEL:_default' \ +'*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ +'--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ +'--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ +'--chart-source=[Source the charts from either a OCI registry or from index.yaml-based repositories]:CHART_SOURCE:((oci\:"OCI registry" +repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based on the version and thus will be operator-specific"))' \ +'--listener-class-preset=[Choose the ListenerClass preset (\`none\`, \`ephemeral-nodes\` or \`stable-nodes\`)]:LISTENER_CLASS_PRESET:(none stable-nodes ephemeral-nodes)' \ +'--no-cache[Do not cache the remote (default) demo, stack and release files]' \ +'-h[Print help (see more with '\''--help'\'')]' \ +'--help[Print help (see more with '\''--help'\'')]' \ +'-V[Print version]' \ +'--version[Print version]' \ +":: :_stackablectl__version_commands" \ +"*::: :->version" \ +&& ret=0 + + case $state in + (version) + words=($line[1] "${words[@]}") + (( CURRENT += 1 )) + curcontext="${curcontext%:*:*}:stackablectl-version-command-$line[1]:" + case $line[1] in + (check) +_arguments "${_arguments_options[@]}" : \ +'-l+[Log level this application uses]:LOG_LEVEL:_default' \ +'--log-level=[Log level this application uses]:LOG_LEVEL:_default' \ +'*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ +'--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ +'--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ +'--chart-source=[Source the charts from either a OCI registry or from index.yaml-based repositories]:CHART_SOURCE:((oci\:"OCI registry" +repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based on the version and thus will be operator-specific"))' \ +'--listener-class-preset=[Choose the ListenerClass preset (\`none\`, \`ephemeral-nodes\` or \`stable-nodes\`)]:LISTENER_CLASS_PRESET:(none stable-nodes ephemeral-nodes)' \ +'--no-cache[Do not cache the remote (default) demo, stack and release files]' \ +'-h[Print help (see more with '\''--help'\'')]' \ +'--help[Print help (see more with '\''--help'\'')]' \ +'-V[Print version]' \ +'--version[Print version]' \ +&& ret=0 +;; +(help) +_arguments "${_arguments_options[@]}" : \ +":: :_stackablectl__version__help_commands" \ +"*::: :->help" \ +&& ret=0 + + case $state in + (help) + words=($line[1] "${words[@]}") + (( CURRENT += 1 )) + curcontext="${curcontext%:*:*}:stackablectl-version-help-command-$line[1]:" + case $line[1] in + (check) +_arguments "${_arguments_options[@]}" : \ +&& ret=0 +;; +(help) +_arguments "${_arguments_options[@]}" : \ +&& ret=0 +;; + esac + ;; +esac +;; + esac + ;; +esac +;; (help) _arguments "${_arguments_options[@]}" : \ ":: :_stackablectl__help_commands" \ @@ -1535,6 +1617,26 @@ esac _arguments "${_arguments_options[@]}" : \ && ret=0 ;; +(version) +_arguments "${_arguments_options[@]}" : \ +":: :_stackablectl__help__version_commands" \ +"*::: :->version" \ +&& ret=0 + + case $state in + (version) + words=($line[1] "${words[@]}") + (( CURRENT += 1 )) + curcontext="${curcontext%:*:*}:stackablectl-help-version-command-$line[1]:" + case $line[1] in + (check) +_arguments "${_arguments_options[@]}" : \ +&& ret=0 +;; + esac + ;; +esac +;; (help) _arguments "${_arguments_options[@]}" : \ && ret=0 @@ -1559,6 +1661,7 @@ _stackablectl_commands() { 'completions:Generate shell completions for this tool' \ 'cache:Interact with locally cached files' \ 'experimental-debug:EXPERIMENTAL\: Launch a debug container for a Pod' \ +'version:Retrieve version data of the stackablectl installation' \ 'help:Print this message or the help of the given subcommand(s)' \ ) _describe -t commands 'stackablectl commands' commands "$@" @@ -1756,6 +1859,7 @@ _stackablectl__help_commands() { 'completions:Generate shell completions for this tool' \ 'cache:Interact with locally cached files' \ 'experimental-debug:EXPERIMENTAL\: Launch a debug container for a Pod' \ +'version:Retrieve version data of the stackablectl installation' \ 'help:Print this message or the help of the given subcommand(s)' \ ) _describe -t commands 'stackablectl help commands' commands "$@" @@ -1962,6 +2066,18 @@ _stackablectl__help__stacklet__list_commands() { local commands; commands=() _describe -t commands 'stackablectl help stacklet list commands' commands "$@" } +(( $+functions[_stackablectl__help__version_commands] )) || +_stackablectl__help__version_commands() { + local commands; commands=( +'check:Check if there is a new version available' \ + ) + _describe -t commands 'stackablectl help version commands' commands "$@" +} +(( $+functions[_stackablectl__help__version__check_commands] )) || +_stackablectl__help__version__check_commands() { + local commands; commands=() + _describe -t commands 'stackablectl help version check commands' commands "$@" +} (( $+functions[_stackablectl__operator_commands] )) || _stackablectl__operator_commands() { local commands; commands=( @@ -2218,6 +2334,37 @@ _stackablectl__stacklet__list_commands() { local commands; commands=() _describe -t commands 'stackablectl stacklet list commands' commands "$@" } +(( $+functions[_stackablectl__version_commands] )) || +_stackablectl__version_commands() { + local commands; commands=( +'check:Check if there is a new version available' \ +'help:Print this message or the help of the given subcommand(s)' \ + ) + _describe -t commands 'stackablectl version commands' commands "$@" +} +(( $+functions[_stackablectl__version__check_commands] )) || +_stackablectl__version__check_commands() { + local commands; commands=() + _describe -t commands 'stackablectl version check commands' commands "$@" +} +(( $+functions[_stackablectl__version__help_commands] )) || +_stackablectl__version__help_commands() { + local commands; commands=( +'check:Check if there is a new version available' \ +'help:Print this message or the help of the given subcommand(s)' \ + ) + _describe -t commands 'stackablectl version help commands' commands "$@" +} +(( $+functions[_stackablectl__version__help__check_commands] )) || +_stackablectl__version__help__check_commands() { + local commands; commands=() + _describe -t commands 'stackablectl version help check commands' commands "$@" +} +(( $+functions[_stackablectl__version__help__help_commands] )) || +_stackablectl__version__help__help_commands() { + local commands; commands=() + _describe -t commands 'stackablectl version help help commands' commands "$@" +} if [ "$funcstack[1]" = "_stackablectl" ]; then _stackablectl "$@" diff --git a/extra/completions/stackablectl.bash b/extra/completions/stackablectl.bash index 3348a0ca..140bd2f6 100644 --- a/extra/completions/stackablectl.bash +++ b/extra/completions/stackablectl.bash @@ -43,6 +43,9 @@ _stackablectl() { stackablectl,stacklet) cmd="stackablectl__stacklet" ;; + stackablectl,version) + cmd="stackablectl__version" + ;; stackablectl__cache,clean) cmd="stackablectl__cache__clean" ;; @@ -148,6 +151,9 @@ _stackablectl() { stackablectl__help,stacklet) cmd="stackablectl__help__stacklet" ;; + stackablectl__help,version) + cmd="stackablectl__help__version" + ;; stackablectl__help__cache,clean) cmd="stackablectl__help__cache__clean" ;; @@ -223,6 +229,9 @@ _stackablectl() { stackablectl__help__stacklet,list) cmd="stackablectl__help__stacklet__list" ;; + stackablectl__help__version,check) + cmd="stackablectl__help__version__check" + ;; stackablectl__operator,describe) cmd="stackablectl__operator__describe" ;; @@ -337,6 +346,18 @@ _stackablectl() { stackablectl__stacklet__help,list) cmd="stackablectl__stacklet__help__list" ;; + stackablectl__version,check) + cmd="stackablectl__version__check" + ;; + stackablectl__version,help) + cmd="stackablectl__version__help" + ;; + stackablectl__version__help,check) + cmd="stackablectl__version__help__check" + ;; + stackablectl__version__help,help) + cmd="stackablectl__version__help__help" + ;; *) ;; esac @@ -344,7 +365,7 @@ _stackablectl() { case "${cmd}" in stackablectl) - opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version operator release stack stacklet demo completions cache experimental-debug help" + opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version operator release stack stacklet demo completions cache experimental-debug version help" if [[ ${cur} == -* || ${COMP_CWORD} -eq 1 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -2648,7 +2669,7 @@ _stackablectl() { return 0 ;; stackablectl__help) - opts="operator release stack stacklet demo completions cache experimental-debug help" + opts="operator release stack stacklet demo completions cache experimental-debug version help" if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -3137,6 +3158,34 @@ _stackablectl() { COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 ;; + stackablectl__help__version) + opts="check" + if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + fi + case "${prev}" in + *) + COMPREPLY=() + ;; + esac + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + ;; + stackablectl__help__version__check) + opts="" + if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + fi + case "${prev}" in + *) + COMPREPLY=() + ;; + esac + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + ;; stackablectl__operator) opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version list describe install uninstall installed help" if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then @@ -6243,6 +6292,312 @@ _stackablectl() { COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 ;; + stackablectl__version) + opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version check help" + if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + fi + case "${prev}" in + --log-level) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -l) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --demo-file) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -d) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + --stack-file) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -s) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + --release-file) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -r) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + --helm-repo-stable) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-test) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-dev) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --chart-source) + COMPREPLY=($(compgen -W "oci repo" -- "${cur}")) + return 0 + ;; + --listener-class-preset) + COMPREPLY=($(compgen -W "none stable-nodes ephemeral-nodes" -- "${cur}")) + return 0 + ;; + *) + COMPREPLY=() + ;; + esac + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + ;; + stackablectl__version__check) + opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version" + if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + fi + case "${prev}" in + --log-level) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -l) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --demo-file) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -d) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + --stack-file) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -s) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + --release-file) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -r) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + --helm-repo-stable) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-test) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-dev) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --chart-source) + COMPREPLY=($(compgen -W "oci repo" -- "${cur}")) + return 0 + ;; + --listener-class-preset) + COMPREPLY=($(compgen -W "none stable-nodes ephemeral-nodes" -- "${cur}")) + return 0 + ;; + *) + COMPREPLY=() + ;; + esac + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + ;; + stackablectl__version__help) + opts="check help" + if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + fi + case "${prev}" in + *) + COMPREPLY=() + ;; + esac + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + ;; + stackablectl__version__help__check) + opts="" + if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + fi + case "${prev}" in + *) + COMPREPLY=() + ;; + esac + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + ;; + stackablectl__version__help__help) + opts="" + if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + fi + case "${prev}" in + *) + COMPREPLY=() + ;; + esac + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + ;; esac } diff --git a/extra/completions/stackablectl.elv b/extra/completions/stackablectl.elv index 07e64733..04175a39 100644 --- a/extra/completions/stackablectl.elv +++ b/extra/completions/stackablectl.elv @@ -44,6 +44,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand completions 'Generate shell completions for this tool' cand cache 'Interact with locally cached files' cand experimental-debug 'EXPERIMENTAL: Launch a debug container for a Pod' + cand version 'Retrieve version data of the stackablectl installation' cand help 'Print this message or the help of the given subcommand(s)' } &'stackablectl;operator'= { @@ -946,6 +947,56 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand -V 'Print version' cand --version 'Print version' } + &'stackablectl;version'= { + cand -l 'Log level this application uses' + cand --log-level 'Log level this application uses' + cand -d 'Provide one or more additional (custom) demo file(s)' + cand --demo-file 'Provide one or more additional (custom) demo file(s)' + cand -s 'Provide one or more additional (custom) stack file(s)' + cand --stack-file 'Provide one or more additional (custom) stack file(s)' + cand -r 'Provide one or more additional (custom) release file(s)' + cand --release-file 'Provide one or more additional (custom) release file(s)' + cand --helm-repo-stable 'Provide a custom Helm stable repository URL' + cand --helm-repo-test 'Provide a custom Helm test repository URL' + cand --helm-repo-dev 'Provide a custom Helm dev repository URL' + cand --chart-source 'Source the charts from either a OCI registry or from index.yaml-based repositories' + cand --listener-class-preset 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' + cand --no-cache 'Do not cache the remote (default) demo, stack and release files' + cand -h 'Print help (see more with ''--help'')' + cand --help 'Print help (see more with ''--help'')' + cand -V 'Print version' + cand --version 'Print version' + cand check 'Check if there is a new version available' + cand help 'Print this message or the help of the given subcommand(s)' + } + &'stackablectl;version;check'= { + cand -l 'Log level this application uses' + cand --log-level 'Log level this application uses' + cand -d 'Provide one or more additional (custom) demo file(s)' + cand --demo-file 'Provide one or more additional (custom) demo file(s)' + cand -s 'Provide one or more additional (custom) stack file(s)' + cand --stack-file 'Provide one or more additional (custom) stack file(s)' + cand -r 'Provide one or more additional (custom) release file(s)' + cand --release-file 'Provide one or more additional (custom) release file(s)' + cand --helm-repo-stable 'Provide a custom Helm stable repository URL' + cand --helm-repo-test 'Provide a custom Helm test repository URL' + cand --helm-repo-dev 'Provide a custom Helm dev repository URL' + cand --chart-source 'Source the charts from either a OCI registry or from index.yaml-based repositories' + cand --listener-class-preset 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' + cand --no-cache 'Do not cache the remote (default) demo, stack and release files' + cand -h 'Print help (see more with ''--help'')' + cand --help 'Print help (see more with ''--help'')' + cand -V 'Print version' + cand --version 'Print version' + } + &'stackablectl;version;help'= { + cand check 'Check if there is a new version available' + cand help 'Print this message or the help of the given subcommand(s)' + } + &'stackablectl;version;help;check'= { + } + &'stackablectl;version;help;help'= { + } &'stackablectl;help'= { cand operator 'Interact with single operator instead of the full platform' cand release 'Interact with all operators of the platform which are released together' @@ -955,6 +1006,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand completions 'Generate shell completions for this tool' cand cache 'Interact with locally cached files' cand experimental-debug 'EXPERIMENTAL: Launch a debug container for a Pod' + cand version 'Retrieve version data of the stackablectl installation' cand help 'Print this message or the help of the given subcommand(s)' } &'stackablectl;help;operator'= { @@ -1048,6 +1100,11 @@ set edit:completion:arg-completer[stackablectl] = {|@words| } &'stackablectl;help;experimental-debug'= { } + &'stackablectl;help;version'= { + cand check 'Check if there is a new version available' + } + &'stackablectl;help;version;check'= { + } &'stackablectl;help;help'= { } ] diff --git a/extra/completions/stackablectl.fish b/extra/completions/stackablectl.fish index 935d79c0..6c090ca3 100644 --- a/extra/completions/stackablectl.fish +++ b/extra/completions/stackablectl.fish @@ -47,6 +47,7 @@ complete -c stackablectl -n "__fish_stackablectl_needs_command" -f -a "demo" -d complete -c stackablectl -n "__fish_stackablectl_needs_command" -f -a "completions" -d 'Generate shell completions for this tool' complete -c stackablectl -n "__fish_stackablectl_needs_command" -f -a "cache" -d 'Interact with locally cached files' complete -c stackablectl -n "__fish_stackablectl_needs_command" -f -a "experimental-debug" -d 'EXPERIMENTAL: Launch a debug container for a Pod' +complete -c stackablectl -n "__fish_stackablectl_needs_command" -f -a "version" -d 'Retrieve version data of the stackablectl installation' complete -c stackablectl -n "__fish_stackablectl_needs_command" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and not __fish_seen_subcommand_from list describe install uninstall installed help" -s l -l log-level -d 'Log level this application uses' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and not __fish_seen_subcommand_from list describe install uninstall installed help" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F @@ -702,15 +703,50 @@ ephemeral-nodes\t''" complete -c stackablectl -n "__fish_stackablectl_using_subcommand experimental-debug" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand experimental-debug" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand experimental-debug" -s V -l version -d 'Print version' -complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and not __fish_seen_subcommand_from operator release stack stacklet demo completions cache experimental-debug help" -f -a "operator" -d 'Interact with single operator instead of the full platform' -complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and not __fish_seen_subcommand_from operator release stack stacklet demo completions cache experimental-debug help" -f -a "release" -d 'Interact with all operators of the platform which are released together' -complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and not __fish_seen_subcommand_from operator release stack stacklet demo completions cache experimental-debug help" -f -a "stack" -d 'Interact with stacks, which are ready-to-use product combinations' -complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and not __fish_seen_subcommand_from operator release stack stacklet demo completions cache experimental-debug help" -f -a "stacklet" -d 'Interact with deployed stacklets, which are bundles of resources and containers required to run the product' -complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and not __fish_seen_subcommand_from operator release stack stacklet demo completions cache experimental-debug help" -f -a "demo" -d 'Interact with demos, which are end-to-end usage demonstrations of the Stackable data platform' -complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and not __fish_seen_subcommand_from operator release stack stacklet demo completions cache experimental-debug help" -f -a "completions" -d 'Generate shell completions for this tool' -complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and not __fish_seen_subcommand_from operator release stack stacklet demo completions cache experimental-debug help" -f -a "cache" -d 'Interact with locally cached files' -complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and not __fish_seen_subcommand_from operator release stack stacklet demo completions cache experimental-debug help" -f -a "experimental-debug" -d 'EXPERIMENTAL: Launch a debug container for a Pod' -complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and not __fish_seen_subcommand_from operator release stack stacklet demo completions cache experimental-debug help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and not __fish_seen_subcommand_from check help" -s l -l log-level -d 'Log level this application uses' -r +complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and not __fish_seen_subcommand_from check help" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and not __fish_seen_subcommand_from check help" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and not __fish_seen_subcommand_from check help" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and not __fish_seen_subcommand_from check help" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f +complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and not __fish_seen_subcommand_from check help" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f +complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and not __fish_seen_subcommand_from check help" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f +complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and not __fish_seen_subcommand_from check help" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' +repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and not __fish_seen_subcommand_from check help" -l listener-class-preset -d 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' -r -f -a "none\t'' +stable-nodes\t'' +ephemeral-nodes\t''" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and not __fish_seen_subcommand_from check help" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and not __fish_seen_subcommand_from check help" -s h -l help -d 'Print help (see more with \'--help\')' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and not __fish_seen_subcommand_from check help" -s V -l version -d 'Print version' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and not __fish_seen_subcommand_from check help" -f -a "check" -d 'Check if there is a new version available' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and not __fish_seen_subcommand_from check help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and __fish_seen_subcommand_from check" -s l -l log-level -d 'Log level this application uses' -r +complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and __fish_seen_subcommand_from check" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and __fish_seen_subcommand_from check" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and __fish_seen_subcommand_from check" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and __fish_seen_subcommand_from check" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f +complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and __fish_seen_subcommand_from check" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f +complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and __fish_seen_subcommand_from check" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f +complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and __fish_seen_subcommand_from check" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' +repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and __fish_seen_subcommand_from check" -l listener-class-preset -d 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' -r -f -a "none\t'' +stable-nodes\t'' +ephemeral-nodes\t''" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and __fish_seen_subcommand_from check" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and __fish_seen_subcommand_from check" -s h -l help -d 'Print help (see more with \'--help\')' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and __fish_seen_subcommand_from check" -s V -l version -d 'Print version' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and __fish_seen_subcommand_from help" -f -a "check" -d 'Check if there is a new version available' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and not __fish_seen_subcommand_from operator release stack stacklet demo completions cache experimental-debug version help" -f -a "operator" -d 'Interact with single operator instead of the full platform' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and not __fish_seen_subcommand_from operator release stack stacklet demo completions cache experimental-debug version help" -f -a "release" -d 'Interact with all operators of the platform which are released together' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and not __fish_seen_subcommand_from operator release stack stacklet demo completions cache experimental-debug version help" -f -a "stack" -d 'Interact with stacks, which are ready-to-use product combinations' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and not __fish_seen_subcommand_from operator release stack stacklet demo completions cache experimental-debug version help" -f -a "stacklet" -d 'Interact with deployed stacklets, which are bundles of resources and containers required to run the product' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and not __fish_seen_subcommand_from operator release stack stacklet demo completions cache experimental-debug version help" -f -a "demo" -d 'Interact with demos, which are end-to-end usage demonstrations of the Stackable data platform' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and not __fish_seen_subcommand_from operator release stack stacklet demo completions cache experimental-debug version help" -f -a "completions" -d 'Generate shell completions for this tool' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and not __fish_seen_subcommand_from operator release stack stacklet demo completions cache experimental-debug version help" -f -a "cache" -d 'Interact with locally cached files' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and not __fish_seen_subcommand_from operator release stack stacklet demo completions cache experimental-debug version help" -f -a "experimental-debug" -d 'EXPERIMENTAL: Launch a debug container for a Pod' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and not __fish_seen_subcommand_from operator release stack stacklet demo completions cache experimental-debug version help" -f -a "version" -d 'Retrieve version data of the stackablectl installation' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and not __fish_seen_subcommand_from operator release stack stacklet demo completions cache experimental-debug version help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and __fish_seen_subcommand_from operator" -f -a "list" -d 'List available operators' complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and __fish_seen_subcommand_from operator" -f -a "describe" -d 'Print out detailed operator information' complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and __fish_seen_subcommand_from operator" -f -a "install" -d 'Install one or more operators' @@ -736,3 +772,4 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and __fi complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and __fish_seen_subcommand_from completions" -f -a "zsh" -d 'Generate shell completions for ZSH' complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and __fish_seen_subcommand_from cache" -f -a "list" -d 'List cached files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and __fish_seen_subcommand_from cache" -f -a "clean" -d 'Clean cached files' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and __fish_seen_subcommand_from version" -f -a "check" -d 'Check if there is a new version available' diff --git a/extra/completions/stackablectl.nu b/extra/completions/stackablectl.nu index 3d72d82d..3bf0c67a 100644 --- a/extra/completions/stackablectl.nu +++ b/extra/completions/stackablectl.nu @@ -1117,6 +1117,66 @@ module completions { --version(-V) # Print version ] + def "nu-complete stackablectl version chart_source" [] { + [ "oci" "repo" ] + } + + def "nu-complete stackablectl version listener_class_preset" [] { + [ "none" "stable-nodes" "ephemeral-nodes" ] + } + + # Retrieve version data of the stackablectl installation + export extern "stackablectl version" [ + --log-level(-l): string # Log level this application uses + --no-cache # Do not cache the remote (default) demo, stack and release files + --demo-file(-d): path # Provide one or more additional (custom) demo file(s) + --stack-file(-s): path # Provide one or more additional (custom) stack file(s) + --release-file(-r): path # Provide one or more additional (custom) release file(s) + --helm-repo-stable: string # Provide a custom Helm stable repository URL + --helm-repo-test: string # Provide a custom Helm test repository URL + --helm-repo-dev: string # Provide a custom Helm dev repository URL + --chart-source: string@"nu-complete stackablectl version chart_source" # Source the charts from either a OCI registry or from index.yaml-based repositories + --listener-class-preset: string@"nu-complete stackablectl version listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) + --help(-h) # Print help (see more with '--help') + --version(-V) # Print version + ] + + def "nu-complete stackablectl version check chart_source" [] { + [ "oci" "repo" ] + } + + def "nu-complete stackablectl version check listener_class_preset" [] { + [ "none" "stable-nodes" "ephemeral-nodes" ] + } + + # Check if there is a new version available + export extern "stackablectl version check" [ + --log-level(-l): string # Log level this application uses + --no-cache # Do not cache the remote (default) demo, stack and release files + --demo-file(-d): path # Provide one or more additional (custom) demo file(s) + --stack-file(-s): path # Provide one or more additional (custom) stack file(s) + --release-file(-r): path # Provide one or more additional (custom) release file(s) + --helm-repo-stable: string # Provide a custom Helm stable repository URL + --helm-repo-test: string # Provide a custom Helm test repository URL + --helm-repo-dev: string # Provide a custom Helm dev repository URL + --chart-source: string@"nu-complete stackablectl version check chart_source" # Source the charts from either a OCI registry or from index.yaml-based repositories + --listener-class-preset: string@"nu-complete stackablectl version check listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) + --help(-h) # Print help (see more with '--help') + --version(-V) # Print version + ] + + # Print this message or the help of the given subcommand(s) + export extern "stackablectl version help" [ + ] + + # Check if there is a new version available + export extern "stackablectl version help check" [ + ] + + # Print this message or the help of the given subcommand(s) + export extern "stackablectl version help help" [ + ] + # Print this message or the help of the given subcommand(s) export extern "stackablectl help" [ ] @@ -1253,6 +1313,14 @@ module completions { export extern "stackablectl help experimental-debug" [ ] + # Retrieve version data of the stackablectl installation + export extern "stackablectl help version" [ + ] + + # Check if there is a new version available + export extern "stackablectl help version check" [ + ] + # Print this message or the help of the given subcommand(s) export extern "stackablectl help help" [ ] diff --git a/extra/man/stackablectl.1 b/extra/man/stackablectl.1 index 2b8a7244..7921dc0b 100644 --- a/extra/man/stackablectl.1 +++ b/extra/man/stackablectl.1 @@ -117,6 +117,9 @@ Interact with locally cached files stackablectl\-experimental\-debug(1) EXPERIMENTAL: Launch a debug container for a Pod .TP +stackablectl\-version(1) +Retrieve version data of the stackablectl installation +.TP stackablectl\-help(1) Print this message or the help of the given subcommand(s) .SH VERSION diff --git a/rust/stackable-cockpit/src/common/list.rs b/rust/stackable-cockpit/src/common/list.rs index 66b721e4..c2a486c3 100644 --- a/rust/stackable-cockpit/src/common/list.rs +++ b/rust/stackable-cockpit/src/common/list.rs @@ -49,7 +49,7 @@ where for file in files { let specs = transfer_client - .get(file, &Yaml::::new()) + .get(file, &Yaml::::default()) .await .context(FileTransferSnafu)?; diff --git a/rust/stackable-cockpit/src/platform/manifests.rs b/rust/stackable-cockpit/src/platform/manifests.rs index 4d983317..15fcf306 100644 --- a/rust/stackable-cockpit/src/platform/manifests.rs +++ b/rust/stackable-cockpit/src/platform/manifests.rs @@ -98,7 +98,10 @@ pub trait InstallManifestsExt { })?; let helm_chart: helm::Chart = transfer_client - .get(&helm_file, &Template::new(¶meters).then(Yaml::new())) + .get( + &helm_file, + &Template::new(¶meters).then(Yaml::default()), + ) .await .context(FileTransferSnafu)?; diff --git a/rust/stackable-cockpit/src/utils/path.rs b/rust/stackable-cockpit/src/utils/path.rs index f71493e5..d0d6020a 100644 --- a/rust/stackable-cockpit/src/utils/path.rs +++ b/rust/stackable-cockpit/src/utils/path.rs @@ -25,18 +25,6 @@ impl> IntoPathOrUrl for T { } } -impl IntoPathOrUrl for PathOrUrl { - fn into_path_or_url(self) -> Result { - Ok(self) - } -} - -impl IntoPathOrUrl for &PathOrUrl { - fn into_path_or_url(self) -> Result { - Ok(self.to_owned()) - } -} - pub trait IntoPathsOrUrls: Sized { fn into_paths_or_urls(self) -> Result, PathOrUrlParseError>; } @@ -54,18 +42,6 @@ impl> IntoPathsOrUrls for Vec { } } -impl IntoPathsOrUrls for PathOrUrl { - fn into_paths_or_urls(self) -> Result, PathOrUrlParseError> { - Ok(vec![self]) - } -} - -impl IntoPathsOrUrls for &PathOrUrl { - fn into_paths_or_urls(self) -> Result, PathOrUrlParseError> { - Ok(vec![self.to_owned()]) - } -} - pub trait ParsePathsOrUrls { fn parse_paths_or_urls(self) -> Result, PathOrUrlParseError>; } diff --git a/rust/stackable-cockpit/src/xfer/mod.rs b/rust/stackable-cockpit/src/xfer/mod.rs index 3792305b..0aaf0027 100644 --- a/rust/stackable-cockpit/src/xfer/mod.rs +++ b/rust/stackable-cockpit/src/xfer/mod.rs @@ -1,4 +1,4 @@ -use std::path::PathBuf; +use std::{path::PathBuf, time::SystemTime}; use snafu::{ResultExt, Snafu}; use tokio::fs; @@ -10,7 +10,7 @@ pub mod processor; use crate::{ utils::path::PathOrUrl, xfer::{ - cache::{Cache, Settings, Status}, + cache::{Cache, DeleteFilter, Settings, Status}, processor::{Processor, ProcessorError}, }, }; @@ -31,9 +31,15 @@ pub enum Error { #[snafu(display("failed to store file in cache"))] CacheStore { source: cache::Error }, - #[snafu(display("failed to retrieve file from cache"))] + #[snafu(display("failed to retrieve file(s) from cache"))] CacheRetrieve { source: cache::Error }, + #[snafu(display("failed to purge cached files"))] + CachePurge { source: cache::Error }, + + #[snafu(display("failed to initialize http client"))] + InitializeClient { source: reqwest::Error }, + #[snafu(display("failed to build http request"))] BuildRequest { source: reqwest::Error }, @@ -57,14 +63,14 @@ impl Client { .try_into_cache() .await .context(CacheSettingsSnafu)?; - let client = reqwest::Client::new(); - Ok(Self { client, cache }) - } + // Some servers require this (eg: GitHub API) + let client = reqwest::Client::builder() + .user_agent("stackable-cockpit") + .build() + .context(InitializeClientSnafu)?; - pub fn new_with(cache: Cache) -> Self { - let client = reqwest::Client::new(); - Self { client, cache } + Ok(Self { client, cache }) } /// Retrieves data from `path_or_url` which can either be a [`PathBuf`] @@ -84,6 +90,30 @@ impl Client { } } + /// Lists all currently cached files. + /// + /// This function does not make any requests to remote resources. + pub async fn list_cached_files(&self) -> Result> { + self.cache.list().await.context(CacheRetrieveSnafu) + } + + /// Purges currently cached files selected by the [`DeleteFilter`]. + /// + /// This function does not make any requests to remote resources. + pub async fn purge_cached_files(&self, delete_filter: DeleteFilter) -> Result<()> { + self.cache + .purge(delete_filter) + .await + .context(CachePurgeSnafu) + } + + /// Auto-purges the underlying cache. + /// + /// This function does not make any requests to remote resources. + pub async fn auto_purge(&self) -> Result<()> { + self.cache.auto_purge().await.context(CachePurgeSnafu) + } + async fn get_from_local_file(&self, path: &PathBuf) -> Result { fs::read_to_string(path) .await diff --git a/rust/stackable-cockpit/src/xfer/processor.rs b/rust/stackable-cockpit/src/xfer/processor.rs index c2f705ba..0631fbc6 100644 --- a/rust/stackable-cockpit/src/xfer/processor.rs +++ b/rust/stackable-cockpit/src/xfer/processor.rs @@ -12,6 +12,9 @@ pub enum ProcessorError { #[snafu(display("failed to deserialize YAML content"))] DeserializeYaml { source: serde_yaml::Error }, + #[snafu(display("failed to deserialize JSON content"))] + DeserializeJson { source: serde_json::Error }, + #[snafu(display("failed to render templated content"))] RenderTemplate { source: tera::Error }, } @@ -81,9 +84,24 @@ impl Default for Yaml { } } -impl Yaml { - pub fn new() -> Self { - Self::default() +#[derive(Debug)] +pub struct Json(PhantomData); + +impl Processor for Json +where + T: DeserializeOwned, +{ + type Input = String; + type Output = T; + + fn process(&self, input: Self::Input) -> Result { + serde_json::from_str(&input).context(DeserializeJsonSnafu) + } +} + +impl Default for Json { + fn default() -> Self { + Self(PhantomData) } } diff --git a/rust/stackablectl/Cargo.toml b/rust/stackablectl/Cargo.toml index af107a9e..30a168b5 100644 --- a/rust/stackablectl/Cargo.toml +++ b/rust/stackablectl/Cargo.toml @@ -38,3 +38,6 @@ indicatif.workspace = true termion.workspace = true urlencoding.workspace = true libc.workspace = true + +[build-dependencies] +built.workspace = true diff --git a/rust/stackablectl/README.md b/rust/stackablectl/README.md index 406f586d..cf48ffe4 100644 --- a/rust/stackablectl/README.md +++ b/rust/stackablectl/README.md @@ -23,6 +23,7 @@ Commands: completions Generate shell completions for this tool cache Interact with locally cached files experimental-debug EXPERIMENTAL: Launch a debug container for a Pod + version Retrieve version data of the stackablectl installation help Print this message or the help of the given subcommand(s) Options: diff --git a/rust/stackablectl/build.rs b/rust/stackablectl/build.rs new file mode 100644 index 00000000..d764d79c --- /dev/null +++ b/rust/stackablectl/build.rs @@ -0,0 +1,3 @@ +fn main() { + built::write_built_file().expect("failed to acquire build-time information"); +} diff --git a/rust/stackablectl/src/cli/mod.rs b/rust/stackablectl/src/cli/mod.rs index bad3bdd8..e4404633 100644 --- a/rust/stackablectl/src/cli/mod.rs +++ b/rust/stackablectl/src/cli/mod.rs @@ -1,4 +1,4 @@ -use std::env; +use std::{env, sync::Arc}; use clap::{Parser, Subcommand, ValueEnum}; use directories::ProjectDirs; @@ -12,19 +12,21 @@ use stackable_cockpit::{ utils::path::{ IntoPathOrUrl, IntoPathsOrUrls, ParsePathsOrUrls, PathOrUrl, PathOrUrlParseError, }, - xfer::cache::Settings, + xfer::{self, cache::Settings}, }; use tracing::{Level, instrument}; +use tracing_indicatif::indicatif_eprintln; use crate::{ args::{CommonFileArgs, CommonOperatorConfigsArgs, CommonRepoArgs}, - cmds::{cache, completions, debug, demo, operator, release, stack, stacklet}, + cmds::{cache, completions, debug, demo, operator, release, stack, stacklet, version}, constants::{ DEMOS_REPOSITORY_DEMOS_SUBPATH, DEMOS_REPOSITORY_STACKS_SUBPATH, DEMOS_REPOSITORY_URL_BASE, ENV_KEY_DEMO_FILES, ENV_KEY_RELEASE_FILES, ENV_KEY_STACK_FILES, REMOTE_RELEASE_FILE, USER_DIR_APPLICATION_NAME, USER_DIR_ORGANIZATION_NAME, USER_DIR_QUALIFIER, }, output::{ErrorContext, Output, ResultContext}, + release_check, }; #[derive(Debug, Snafu)] @@ -41,20 +43,39 @@ pub enum Error { #[snafu(display("failed to execute stacklet (sub)command"))] Stacklet { source: stacklet::CmdError }, - #[snafu(display("demo command error"))] + #[snafu(display("failed to execute demo (sub)command"))] Demo { source: demo::CmdError }, - #[snafu(display("completions command error"))] + #[snafu(display("failed to execute completions (sub)command"))] Completions { source: completions::CmdError }, - #[snafu(display("cache command error"))] + #[snafu(display("failed to execute cache (sub)command"))] Cache { source: cache::CmdError }, - #[snafu(display("debug command error"))] + #[snafu(display("failed to execute debug (sub)command"))] Debug { source: debug::CmdError }, - #[snafu(display("helm error"))] - Helm { source: helm::Error }, + #[snafu(display("failed to execute version (sub)command"))] + Version { source: version::CmdError }, + + #[snafu(display("failed to add Helm repositories"))] + AddHelmRepos { source: helm::Error }, + + #[snafu(display("failed to retrieve cache settings"))] + RetrieveCacheSettings { source: CacheSettingsError }, + + #[snafu(display("failed to auto-purge cache"))] + AutoPurgeCache { source: xfer::Error }, + + #[snafu(display("failed to initialize transfer client"))] + InitializeTransferClient { source: xfer::Error }, +} + +#[derive(Debug, Snafu)] +#[snafu(module)] +pub enum CacheSettingsError { + #[snafu(display("unable to resolve user directories"))] + UserDir, } #[derive(Debug, Parser)] @@ -85,7 +106,7 @@ Cached files are saved at '$XDG_CACHE_HOME/stackablectl', which is usually pub operator_configs: CommonOperatorConfigsArgs, #[command(subcommand)] - pub subcommand: Commands, + pub subcommand: Command, } impl Cli { @@ -170,50 +191,103 @@ impl Cli { } #[instrument(skip_all)] - pub async fn run(&self) -> Result { + pub async fn run(self) -> Result { // FIXME (Techassi): There might be a better way to handle this with // the match later in this function. // Add Helm repos only when required match &self.subcommand { - Commands::Completions(_) => (), - Commands::Cache(_) => (), - _ => self.add_helm_repos().context(HelmSnafu)?, + Command::Completions(_) => (), + Command::Cache(_) => (), + _ => self.add_helm_repos().context(AddHelmReposSnafu)?, } - let cache = self - .cache_settings() - .unwrap() - .try_into_cache() + let cache_settings = self.cache_settings().context(RetrieveCacheSettingsSnafu)?; + let transfer_client = xfer::Client::new(cache_settings) .await - .unwrap(); + .context(InitializeTransferClientSnafu)?; + + // Only run the cache auto-purge when the user executes ANY command other than the cache + // commands. + if !matches!(self.subcommand, Command::Cache(_)) { + transfer_client + .auto_purge() + .await + .context(AutoPurgeCacheSnafu)?; + } - // TODO (Techassi): Do we still want to auto purge when running cache commands? - cache.auto_purge().await.unwrap(); + // Make transfer client sharable across multiple futures/threads + let transfer_client = Arc::new(transfer_client); determine_and_store_listener_class_preset( self.operator_configs.listener_class_preset.as_ref(), ) .await; - match &self.subcommand { - Commands::Operator(args) => args.run(self).await.context(OperatorSnafu), - Commands::Release(args) => args.run(self, cache).await.context(ReleaseSnafu), - Commands::Stack(args) => args.run(self, cache).await.context(StackSnafu), - Commands::Stacklet(args) => args.run(self).await.context(StackletSnafu), - Commands::Demo(args) => args.run(self, cache).await.context(DemoSnafu), - Commands::Completions(args) => args.run().context(CompletionsSnafu), - Commands::Cache(args) => args.run(self, cache).await.context(CacheSnafu), - Commands::ExperimentalDebug(args) => args.run(self).await.context(DebugSnafu), + // Only run the version check in the background if the user runs ANY other command than + // the version command. Also only report if the current version is outdated. + let check_version_in_background = !matches!(self.subcommand, Command::Version(_)); + let release_check_future = release_check::version_notice_output( + transfer_client.clone(), + check_version_in_background, + true, + ); + let release_check_future = + tokio::time::timeout(std::time::Duration::from_secs(2), release_check_future); + + #[rustfmt::skip] + let command_future = async move { + match self.subcommand { + Command::Operator(ref args) => args.run(&self).await.context(OperatorSnafu), + Command::Release(ref args) => args.run(&self, transfer_client).await.context(ReleaseSnafu), + Command::Stack(ref args) => args.run(&self, transfer_client).await.context(StackSnafu), + Command::Stacklet(ref args) => args.run().await.context(StackletSnafu), + Command::Demo(ref args) => args.run(&self, transfer_client).await.context(DemoSnafu), + Command::Completions(ref args) => args.run().context(CompletionsSnafu), + Command::Cache(ref args) => args.run(transfer_client).await.context(CacheSnafu), + Command::ExperimentalDebug(ref args) => args.run().await.context(DebugSnafu), + Command::Version(ref args) => args.run(transfer_client).await.context(VersionSnafu), + } + }; + + // Run the version check and the actual command in parallel and not sequentially. This is + // done to not abort/stall execution when the version check couldn't be performed (because + // of network issues for example). We also optimistically run the version check and don't + // hard-error below when the check failed. + let (release_check_result, command_result) = + tokio::join!(release_check_future, command_future); + + // NOTE (@Techassi): This is freaking ugly (I'm sorry) but there seems to be no other better + // way to achieve what we want without reworking the entire output handling/rendering + // mechanism. + // FIXME (@Techassi): This currently messes up any structured output. This is also not + // trivially solved as explained above. + match command_result { + Ok(command_output) => { + let output = if let Ok(Ok(Some(release_check_output))) = release_check_result { + format!("{command_output}\n\n{release_check_output}") + } else { + command_output + }; + + Ok(output) + } + Err(err) => { + if let Ok(Ok(Some(release_check_output))) = release_check_result { + indicatif_eprintln!("{release_check_output}\n"); + } + + Err(err) + } } } // Output utility functions - pub fn result(&self) -> Output { + pub fn result() -> Output { Output::new(ResultContext::default(), true).expect("Failed to create output renderer") } - pub fn error(&self) -> Output { + pub fn error() -> Output { Output::new(ErrorContext::default(), true).expect("Failed to create output renderer") } @@ -223,7 +297,7 @@ impl Cli { } #[derive(Debug, Subcommand)] -pub enum Commands { +pub enum Command { /// Interact with single operator instead of the full platform #[command(alias("op"))] Operator(operator::OperatorArgs), @@ -264,6 +338,9 @@ CRDs." This container will have access to the same data volumes as the primary container.")] ExperimentalDebug(debug::DebugArgs), + + /// Retrieve version data of the stackablectl installation + Version(version::VersionArguments), } #[derive(Clone, Debug, Default, ValueEnum)] @@ -282,13 +359,6 @@ pub enum OutputType { Yaml, } -#[derive(Debug, Snafu)] -#[snafu(module)] -pub enum CacheSettingsError { - #[snafu(display("unable to resolve user directories"))] - UserDir, -} - /// Returns a list of paths or urls based on the default (remote) file and /// files provided via the env variable. fn get_files(default_file: &str, env_key: &str) -> Result, PathOrUrlParseError> { diff --git a/rust/stackablectl/src/cmds/cache.rs b/rust/stackablectl/src/cmds/cache.rs index 37dc77ee..62fc1bb3 100644 --- a/rust/stackablectl/src/cmds/cache.rs +++ b/rust/stackablectl/src/cmds/cache.rs @@ -1,9 +1,9 @@ -use std::time::Duration; +use std::{sync::Arc, time::Duration}; use clap::{Args, Subcommand}; use comfy_table::{ColumnConstraint, Table, Width, presets::UTF8_FULL}; use snafu::{ResultExt, Snafu}; -use stackable_cockpit::xfer::cache::{self, Cache, DeleteFilter}; +use stackable_cockpit::xfer::{self, cache::DeleteFilter}; use tracing::{info, instrument}; use crate::cli::Cli; @@ -35,26 +35,29 @@ pub struct CacheCleanArgs { #[derive(Debug, Snafu)] pub enum CmdError { #[snafu(display("failed to list cached files"))] - ListCachedFiles { source: cache::Error }, + ListCachedFiles { source: xfer::Error }, #[snafu(display("failed to purge cached files"))] - PurgeCachedFiles { source: cache::Error }, + PurgeCachedFiles { source: xfer::Error }, } impl CacheArgs { - pub async fn run(&self, cli: &Cli, cache: Cache) -> Result { + pub async fn run(&self, transfer_client: Arc) -> Result { match &self.subcommand { - CacheCommands::List => list_cmd(cache, cli).await, - CacheCommands::Clean(args) => clean_cmd(args, cache).await, + CacheCommands::List => list_cmd(transfer_client).await, + CacheCommands::Clean(args) => clean_cmd(args, transfer_client).await, } } } #[instrument(skip_all)] -async fn list_cmd(cache: Cache, cli: &Cli) -> Result { +async fn list_cmd(transfer_client: Arc) -> Result { info!("Listing cached files"); - let files = cache.list().await.context(ListCachedFilesSnafu)?; + let files = transfer_client + .list_cached_files() + .await + .context(ListCachedFilesSnafu)?; if files.is_empty() { return Ok("No cached files".into()); @@ -77,7 +80,7 @@ async fn list_cmd(cache: Cache, cli: &Cli) -> Result { table.add_row(vec![file_path, format!("{modified} seconds ago")]); } - let mut result = cli.result(); + let mut result = Cli::result(); result .with_command_hint("stackablectl cache clean", "to clean all cached files") @@ -87,7 +90,10 @@ async fn list_cmd(cache: Cache, cli: &Cli) -> Result { } #[instrument(skip_all)] -async fn clean_cmd(args: &CacheCleanArgs, cache: Cache) -> Result { +async fn clean_cmd( + args: &CacheCleanArgs, + transfer_client: Arc, +) -> Result { info!("Cleaning cached files"); let delete_filter = if args.only_remove_old_files { @@ -96,8 +102,8 @@ async fn clean_cmd(args: &CacheCleanArgs, cache: Cache) -> Result Result { + pub async fn run(&self) -> Result { let kube = kube::Client::try_default() .await .context(KubeClientCreateSnafu)?; diff --git a/rust/stackablectl/src/cmds/demo.rs b/rust/stackablectl/src/cmds/demo.rs index c8c003e8..513a33f9 100644 --- a/rust/stackablectl/src/cmds/demo.rs +++ b/rust/stackablectl/src/cmds/demo.rs @@ -1,3 +1,5 @@ +use std::sync::Arc; + use clap::{Args, Subcommand}; use comfy_table::{ ContentArrangement, Row, Table, @@ -16,7 +18,7 @@ use stackable_cockpit::{ k8s::{self, Client}, path::PathOrUrlParseError, }, - xfer::{self, cache::Cache}, + xfer, }; use stackable_operator::kvp::{LabelError, Labels}; use tracing::{Span, debug, info, instrument}; @@ -161,11 +163,13 @@ pub enum CmdError { impl DemoArgs { #[instrument(skip_all, fields(with_cache = !cli.no_cache))] - pub async fn run(&self, cli: &Cli, cache: Cache) -> Result { + pub async fn run( + &self, + cli: &Cli, + transfer_client: Arc, + ) -> Result { debug!("Handle demo args"); - let transfer_client = xfer::Client::new_with(cache); - let release_files = cli.get_release_files().context(PathOrUrlParseSnafu)?; let release_list = release::ReleaseList::build(&release_files, &transfer_client) .await @@ -201,8 +205,8 @@ impl DemoArgs { .context(BuildListSnafu)?; match &self.subcommand { - DemoCommands::List(args) => list_cmd(args, cli, list).await, - DemoCommands::Describe(args) => describe_cmd(args, cli, list).await, + DemoCommands::List(args) => list_cmd(args, list).await, + DemoCommands::Describe(args) => describe_cmd(args, list).await, DemoCommands::Install(args) => { install_cmd(args, cli, list, &transfer_client, &release_branch).await } @@ -212,7 +216,7 @@ impl DemoArgs { /// Print out a list of demos, either as a table (plain), JSON or YAML #[instrument(skip_all, fields(indicatif.pb_show = true))] -async fn list_cmd(args: &DemoListArgs, cli: &Cli, list: demo::List) -> Result { +async fn list_cmd(args: &DemoListArgs, list: demo::List) -> Result { info!("Listing demos"); Span::current().pb_set_message("Fetching demo information"); @@ -239,7 +243,7 @@ async fn list_cmd(args: &DemoListArgs, cli: &Cli, list: demo::List) -> Result Result Result { +async fn describe_cmd(args: &DemoDescribeArgs, list: demo::List) -> Result { info!(demo_name = %args.demo_name, "Describing demo"); Span::current().pb_set_message("Fetching demo information"); @@ -299,7 +299,7 @@ async fn describe_cmd( // TODO (Techassi): Add parameter output - let mut result = cli.result(); + let mut result = Cli::result(); result .with_command_hint( @@ -337,7 +337,7 @@ async fn install_cmd( Span::current().pb_set_message("Installing demo"); // Init result output and progress output - let mut output = cli.result(); + let mut output = Cli::result(); let demo = list.get(&args.demo_name).ok_or(CmdError::NoSuchDemo { name: args.demo_name.clone(), diff --git a/rust/stackablectl/src/cmds/mod.rs b/rust/stackablectl/src/cmds/mod.rs index 039e1fd8..e6c82df5 100644 --- a/rust/stackablectl/src/cmds/mod.rs +++ b/rust/stackablectl/src/cmds/mod.rs @@ -6,3 +6,4 @@ pub mod operator; pub mod release; pub mod stack; pub mod stacklet; +pub mod version; diff --git a/rust/stackablectl/src/cmds/operator.rs b/rust/stackablectl/src/cmds/operator.rs index 2c01fbea..71326388 100644 --- a/rust/stackablectl/src/cmds/operator.rs +++ b/rust/stackablectl/src/cmds/operator.rs @@ -183,8 +183,8 @@ impl OperatorArgs { OperatorCommands::List(args) => list_cmd(args, cli).await, OperatorCommands::Describe(args) => describe_cmd(args, cli).await, OperatorCommands::Install(args) => install_cmd(args, cli).await, - OperatorCommands::Uninstall(args) => uninstall_cmd(args, cli), - OperatorCommands::Installed(args) => installed_cmd(args, cli), + OperatorCommands::Uninstall(args) => uninstall_cmd(args), + OperatorCommands::Installed(args) => installed_cmd(args), } } } @@ -227,7 +227,7 @@ async fn list_cmd(args: &OperatorListArgs, cli: &Cli) -> Result Result Result Result Result { +fn uninstall_cmd(args: &OperatorUninstallArgs) -> Result { info!("Uninstalling operator(s)"); Span::current().pb_set_message("Uninstalling operator(s)"); @@ -371,7 +371,7 @@ fn uninstall_cmd(args: &OperatorUninstallArgs, cli: &Cli) -> Result Result Result { +fn installed_cmd(args: &OperatorInstalledArgs) -> Result { info!("Listing installed operators"); Span::current().pb_set_message("Fetching operator information"); @@ -443,7 +443,7 @@ fn installed_cmd(args: &OperatorInstalledArgs, cli: &Cli) -> Result Result { + pub async fn run( + &self, + cli: &Cli, + transfer_client: Arc, + ) -> Result { debug!("Handle release args"); - let transfer_client = xfer::Client::new_with(cache); let files = cli.get_release_files().context(PathOrUrlParseSnafu)?; let release_list = release::ReleaseList::build(&files, &transfer_client) .await @@ -180,10 +185,10 @@ impl ReleaseArgs { } match &self.subcommand { - ReleaseCommands::List(args) => list_cmd(args, cli, release_list).await, - ReleaseCommands::Describe(args) => describe_cmd(args, cli, release_list).await, + ReleaseCommands::List(args) => list_cmd(args, release_list).await, + ReleaseCommands::Describe(args) => describe_cmd(args, release_list).await, ReleaseCommands::Install(args) => install_cmd(args, cli, release_list).await, - ReleaseCommands::Uninstall(args) => uninstall_cmd(args, cli, release_list).await, + ReleaseCommands::Uninstall(args) => uninstall_cmd(args, release_list).await, ReleaseCommands::Upgrade(args) => { upgrade_cmd(args, cli, release_list, &transfer_client).await } @@ -191,10 +196,9 @@ impl ReleaseArgs { } } -#[instrument(skip(cli, release_list), fields(indicatif.pb_show = true))] +#[instrument(skip(release_list), fields(indicatif.pb_show = true))] async fn list_cmd( args: &ReleaseListArgs, - cli: &Cli, release_list: release::ReleaseList, ) -> Result { info!("Listing releases"); @@ -226,7 +230,7 @@ async fn list_cmd( ]); } - let mut result = cli.result(); + let mut result = Cli::result(); result .with_command_hint( @@ -246,10 +250,9 @@ async fn list_cmd( } } -#[instrument(skip(cli, release_list), fields(indicatif.pb_show = true))] +#[instrument(skip(release_list), fields(indicatif.pb_show = true))] async fn describe_cmd( args: &ReleaseDescribeArgs, - cli: &Cli, release_list: release::ReleaseList, ) -> Result { info!(release = %args.release, "Describing release"); @@ -289,7 +292,7 @@ async fn describe_cmd( product_table.to_string().as_str(), ]); - let mut result = cli.result(); + let mut result = Cli::result(); result .with_command_hint( @@ -324,7 +327,7 @@ async fn install_cmd( match release_list.get(&args.release) { Some(release) => { - let mut output = cli.result(); + let mut output = Cli::result(); // Install local cluster if needed args.local_cluster @@ -381,7 +384,7 @@ async fn upgrade_cmd( match release_list.get(&args.release) { Some(release) => { - let mut output = cli.result(); + let mut output = Cli::result(); let client = Client::new().await.context(KubeClientCreateSnafu)?; // Get all currently installed operators to only upgrade those @@ -455,10 +458,9 @@ async fn upgrade_cmd( } } -#[instrument(skip(cli, release_list), fields(indicatif.pb_show = true))] +#[instrument(skip(release_list), fields(indicatif.pb_show = true))] async fn uninstall_cmd( args: &ReleaseUninstallArgs, - cli: &Cli, release_list: release::ReleaseList, ) -> Result { Span::current().pb_set_message("Uninstalling release"); @@ -469,7 +471,7 @@ async fn uninstall_cmd( .uninstall(&Vec::new(), &Vec::new(), &args.operator_namespace) .context(ReleaseUninstallSnafu)?; - let mut result = cli.result(); + let mut result = Cli::result(); result .with_command_hint("stackablectl release list", "list available releases") diff --git a/rust/stackablectl/src/cmds/stack.rs b/rust/stackablectl/src/cmds/stack.rs index 65cf3a26..3912f713 100644 --- a/rust/stackablectl/src/cmds/stack.rs +++ b/rust/stackablectl/src/cmds/stack.rs @@ -1,3 +1,5 @@ +use std::sync::Arc; + use clap::{Args, Subcommand}; use comfy_table::{ ContentArrangement, Table, @@ -16,7 +18,7 @@ use stackable_cockpit::{ k8s::{self, Client}, path::PathOrUrlParseError, }, - xfer::{self, cache::Cache}, + xfer, }; use stackable_operator::kvp::{LabelError, Labels}; use tracing::{Span, debug, info, instrument}; @@ -151,11 +153,13 @@ pub enum CmdError { } impl StackArgs { - pub async fn run(&self, cli: &Cli, cache: Cache) -> Result { + pub async fn run( + &self, + cli: &Cli, + transfer_client: Arc, + ) -> Result { debug!("Handle stack args"); - let transfer_client = xfer::Client::new_with(cache); - let release_files = cli.get_release_files().context(PathOrUrlParseSnafu)?; let release_list = release::ReleaseList::build(&release_files, &transfer_client) .await @@ -188,8 +192,8 @@ impl StackArgs { .context(BuildListSnafu)?; match &self.subcommand { - StackCommands::List(args) => list_cmd(args, cli, stack_list), - StackCommands::Describe(args) => describe_cmd(args, cli, stack_list), + StackCommands::List(args) => list_cmd(args, stack_list), + StackCommands::Describe(args) => describe_cmd(args, stack_list), StackCommands::Install(args) => { install_cmd(args, cli, stack_list, &transfer_client).await } @@ -198,11 +202,7 @@ impl StackArgs { } #[instrument(skip_all, fields(indicatif.pb_show = true))] -fn list_cmd( - args: &StackListArgs, - cli: &Cli, - stack_list: stack::StackList, -) -> Result { +fn list_cmd(args: &StackListArgs, stack_list: stack::StackList) -> Result { info!("Listing stacks"); Span::current().pb_set_message("Fetching stack information"); @@ -228,7 +228,7 @@ fn list_cmd( ]); } - let mut result = cli.result(); + let mut result = Cli::result(); result .with_command_hint( @@ -251,7 +251,6 @@ fn list_cmd( #[instrument(skip_all, fields(indicatif.pb_show = true))] fn describe_cmd( args: &StackDescribeArgs, - cli: &Cli, stack_list: stack::StackList, ) -> Result { info!(stack_name = %args.stack_name, "Describing stack"); @@ -292,7 +291,7 @@ fn describe_cmd( .add_row(vec!["LABELS", stack.labels.join(", ").as_str()]) .add_row(vec!["PARAMETERS", parameter_table.to_string().as_str()]); - let mut result = cli.result(); + let mut result = Cli::result(); result .with_command_hint( @@ -331,7 +330,7 @@ async fn install_cmd( match stack_list.get(&args.stack_name) { Some(stack_spec) => { - let mut output = cli.result(); + let mut output = Cli::result(); // Install local cluster if needed args.local_cluster diff --git a/rust/stackablectl/src/cmds/stacklet.rs b/rust/stackablectl/src/cmds/stacklet.rs index 62c8aff2..475ba4d5 100644 --- a/rust/stackablectl/src/cmds/stacklet.rs +++ b/rust/stackablectl/src/cmds/stacklet.rs @@ -82,16 +82,16 @@ pub enum CmdError { } impl StackletArgs { - pub async fn run(&self, cli: &Cli) -> Result { + pub async fn run(&self) -> Result { match &self.subcommand { - StackletCommands::List(args) => list_cmd(args, cli).await, + StackletCommands::List(args) => list_cmd(args).await, StackletCommands::Credentials(args) => credentials_cmd(args).await, } } } #[instrument(skip_all, fields(indicatif.pb_show = true))] -async fn list_cmd(args: &StackletListArgs, cli: &Cli) -> Result { +async fn list_cmd(args: &StackletListArgs) -> Result { info!("Listing installed stacklets"); Span::current().pb_set_message("Fetching stacklet information"); @@ -105,7 +105,7 @@ async fn list_cmd(args: &StackletListArgs, cli: &Cli) -> Result Result) -> Result { + match &self.subcommand { + VersionCommand::Check => check_cmd(client).await, + } + } +} + +#[instrument(skip_all)] +async fn check_cmd(client: Arc) -> Result { + let output = release_check::version_notice_output(client, true, false) + .await + .context(RetrieveLatestReleaseSnafu)? + .unwrap_or_default(); + + let mut result = Cli::result(); + result.with_output(output); + + Ok(result.render()) +} diff --git a/rust/stackablectl/src/lib.rs b/rust/stackablectl/src/lib.rs index f49b1be7..0eb18d76 100644 --- a/rust/stackablectl/src/lib.rs +++ b/rust/stackablectl/src/lib.rs @@ -3,4 +3,15 @@ pub mod cli; pub mod cmds; pub mod constants; pub mod output; +pub mod release_check; pub mod utils; + +pub mod built_info { + use std::{str::FromStr, sync::LazyLock}; + + include!(concat!(env!("OUT_DIR"), "/built.rs")); + + pub static PKG_SEMVER: LazyLock = LazyLock::new(|| { + semver::Version::from_str(PKG_VERSION).expect("must be a valid semantic version") + }); +} diff --git a/rust/stackablectl/src/main.rs b/rust/stackablectl/src/main.rs index d6f96b24..db4a576a 100644 --- a/rust/stackablectl/src/main.rs +++ b/rust/stackablectl/src/main.rs @@ -19,7 +19,7 @@ use tracing_subscriber::{ #[tokio::main] async fn main() -> Result<(), Error> { // Parse the CLI args and commands - let app = Cli::parse(); + let cli = Cli::parse(); // Construct the tracing subscriber let format = fmt::format() @@ -35,7 +35,7 @@ async fn main() -> Result<(), Error> { ) .with_progress_style(PROGRESS_SPINNER_STYLE.clone()); - if let Some(level) = app.log_level { + if let Some(level) = cli.log_level { tracing_subscriber::registry() .with( fmt::layer() @@ -62,10 +62,10 @@ async fn main() -> Result<(), Error> { } } - match app.run().await { + match cli.run().await { Ok(result) => indicatif_println!("{result}"), Err(err) => { - let mut output = app.error(); + let mut output = Cli::error(); output.with_error_report(err); indicatif_eprintln!("{error}", error = output.render()); diff --git a/rust/stackablectl/src/output/templates/result.tpl b/rust/stackablectl/src/output/templates/result.tpl index c4d57e06..19434ad6 100644 --- a/rust/stackablectl/src/output/templates/result.tpl +++ b/rust/stackablectl/src/output/templates/result.tpl @@ -2,19 +2,17 @@ {% for pre_hint in pre_hints -%} {{ pre_hint }} {% endfor %} -{% endif -%} -{%- if output | length != 0 %} -{{ output }} -{%- endif %} +{% endif -%} +{%- if output | length != 0 %}{{ output }}{% endif -%} +{% if command_hints | length != 0 %} -{% if command_hints | length != 0 -%} {% for command_hint in command_hints -%} {{ command_hint }} {% endfor -%} {% endif -%} +{% if post_hints | length != 0 %} -{% if post_hints | length != 0 -%} {% for post_hint in post_hints -%} {{ post_hint }} {% endfor -%} diff --git a/rust/stackablectl/src/release_check.rs b/rust/stackablectl/src/release_check.rs new file mode 100644 index 00000000..36ab59e5 --- /dev/null +++ b/rust/stackablectl/src/release_check.rs @@ -0,0 +1,86 @@ +use std::{str::FromStr, sync::Arc}; + +use semver::Version; +use serde::Deserialize; +use snafu::{OptionExt, ResultExt, Snafu}; +use stackable_cockpit::{utils::path::PathOrUrl, xfer}; + +use crate::built_info::PKG_SEMVER; + +const URL: &str = "https://api.github.com/repos/stackabletech/stackable-cockpit/releases"; +const PREFIX: &str = "stackablectl-"; + +#[derive(Debug, Snafu)] +pub enum Error { + #[snafu(display("failed to retrieve list of releases"))] + RetrieveReleases { source: xfer::Error }, + + #[snafu(display("failed to find latest release"))] + FindLatestRelease, + + #[snafu(display("failed to parse {input} as semantic version"))] + ParseVersion { + source: semver::Error, + input: String, + }, +} + +#[derive(Debug, Deserialize)] +pub struct Release { + pub name: String, + pub prerelease: bool, + pub draft: bool, +} + +async fn fetch_latest_release_version_from_github( + client: Arc, +) -> Result { + let url = PathOrUrl::from_str(URL).expect("constant URL must be a valid URL"); + + let releases: Vec = client + .get(&url, &xfer::processor::Json::default()) + .await + .context(RetrieveReleasesSnafu)?; + + // We assume the list of releases is ordered (newest to oldest). + // If this ever changes, sorting needs to be done here instead. + let latest_release = releases + .into_iter() + // Filter out any draft and prerelease releases. + .filter(|release| !release.draft && !release.prerelease) + // Find a release starting with 'stackablectl-'. + .find(|release| release.name.starts_with(PREFIX)) + .context(FindLatestReleaseSnafu)?; + + let version = latest_release.name.trim_start_matches(PREFIX).to_owned(); + let version = Version::from_str(&version).context(ParseVersionSnafu { input: version })?; + + Ok(version) +} + +pub async fn version_notice_output( + client: Arc, + run_check: bool, + only_output_outdated: bool, +) -> Result, Error> { + if !run_check { + return Ok(None); + } + + let latest_version = fetch_latest_release_version_from_github(client).await?; + let current_version = &*PKG_SEMVER; + + let output = if &latest_version > current_version { + Some(format!( + "The current stackablectl version ({current_version}) is out-of-date. The latest version available is {latest_version}" + )) + } else if !only_output_outdated { + Some(format!( + "The current stackablectl version ({current_version}) is up-to-date" + )) + } else { + None + }; + + Ok(output) +} From 09352a191fab45f1a2454adcc96f43920a2f274e Mon Sep 17 00:00:00 2001 From: Techassi Date: Thu, 20 Nov 2025 15:21:55 +0100 Subject: [PATCH 43/63] feat: Add user config support (#422) * feat: Add basic user config reading mechanism * refactor: Simplify config reading * feat: Use user config value to disable version check --- Cargo.lock | 31 ++++++++++ Cargo.nix | 103 ++++++++++++++++++++++++++++++- Cargo.toml | 1 + rust/stackablectl/Cargo.toml | 1 + rust/stackablectl/src/cli/mod.rs | 55 ++++++++++------- rust/stackablectl/src/config.rs | 56 +++++++++++++++++ rust/stackablectl/src/lib.rs | 1 + 7 files changed, 226 insertions(+), 22 deletions(-) create mode 100644 rust/stackablectl/src/config.rs diff --git a/Cargo.lock b/Cargo.lock index a654816b..223650d5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3258,6 +3258,15 @@ dependencies = [ "serde_core", ] +[[package]] +name = "serde_spanned" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e24345aa0fe688594e73770a5f6d1b216508b4f93484c0026d521acd30134392" +dependencies = [ + "serde_core", +] + [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -3637,6 +3646,7 @@ dependencies = [ "tera", "termion", "tokio", + "toml", "tracing", "tracing-indicatif", "tracing-subscriber", @@ -3931,6 +3941,21 @@ dependencies = [ "tokio", ] +[[package]] +name = "toml" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0dc8b1fb61449e27716ec0e1bdf0f6b8f3e8f6b05391e8497b8b6d7804ea6d8" +dependencies = [ + "indexmap 2.11.4", + "serde_core", + "serde_spanned", + "toml_datetime", + "toml_parser", + "toml_writer", + "winnow", +] + [[package]] name = "toml_datetime" version = "0.7.3" @@ -3961,6 +3986,12 @@ dependencies = [ "winnow", ] +[[package]] +name = "toml_writer" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df8b2b54733674ad286d16267dcfc7a71ed5c776e4ac7aa3c3e2561f7c637bf2" + [[package]] name = "tonic" version = "0.12.3" diff --git a/Cargo.nix b/Cargo.nix index 1c1c4808..07bd9f00 100644 --- a/Cargo.nix +++ b/Cargo.nix @@ -10793,6 +10793,27 @@ rec { ]; }; + "serde_spanned" = rec { + crateName = "serde_spanned"; + version = "1.0.3"; + edition = "2021"; + sha256 = "14j32cqcs6jjdl1c111lz6s0hr913dnmy2kpfd75k2761ym4ahz2"; + dependencies = [ + { + name = "serde_core"; + packageId = "serde_core"; + optional = true; + usesDefaultFeatures = false; + } + ]; + features = { + "alloc" = [ "serde_core?/alloc" ]; + "default" = [ "std" "serde" ]; + "serde" = [ "dep:serde_core" ]; + "std" = [ "alloc" "serde_core?/std" ]; + }; + resolvedDefaultFeatures = [ "alloc" "serde" "std" ]; + }; "serde_urlencoded" = rec { crateName = "serde_urlencoded"; version = "0.7.1"; @@ -12125,6 +12146,11 @@ rec { packageId = "tokio"; features = [ "rt-multi-thread" "macros" "fs" "process" "io-std" ]; } + { + name = "toml"; + packageId = "toml"; + features = [ "serde" ]; + } { name = "tracing"; packageId = "tracing"; @@ -13105,6 +13131,70 @@ rec { }; resolvedDefaultFeatures = [ "codec" "default" "io" "slab" "time" ]; }; + "toml" = rec { + crateName = "toml"; + version = "0.9.8"; + edition = "2021"; + sha256 = "1n569s0dgdmqjy21wf85df7kx3vb1zgin3pc2rvy4j8lnqgqpp7h"; + dependencies = [ + { + name = "indexmap"; + packageId = "indexmap 2.11.4"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "serde_core"; + packageId = "serde_core"; + optional = true; + usesDefaultFeatures = false; + features = [ "alloc" ]; + } + { + name = "serde_spanned"; + packageId = "serde_spanned"; + usesDefaultFeatures = false; + features = [ "alloc" ]; + } + { + name = "toml_datetime"; + packageId = "toml_datetime"; + usesDefaultFeatures = false; + features = [ "alloc" ]; + } + { + name = "toml_parser"; + packageId = "toml_parser"; + optional = true; + usesDefaultFeatures = false; + features = [ "alloc" ]; + } + { + name = "toml_writer"; + packageId = "toml_writer"; + optional = true; + usesDefaultFeatures = false; + features = [ "alloc" ]; + } + { + name = "winnow"; + packageId = "winnow"; + optional = true; + usesDefaultFeatures = false; + } + ]; + features = { + "debug" = [ "std" "toml_parser?/debug" "dep:anstream" "dep:anstyle" ]; + "default" = [ "std" "serde" "parse" "display" ]; + "display" = [ "dep:toml_writer" ]; + "fast_hash" = [ "preserve_order" "dep:foldhash" ]; + "parse" = [ "dep:toml_parser" "dep:winnow" ]; + "preserve_order" = [ "dep:indexmap" "std" ]; + "serde" = [ "dep:serde_core" "toml_datetime/serde" "serde_spanned/serde" ]; + "std" = [ "indexmap?/std" "serde_core?/std" "toml_parser?/std" "toml_writer?/std" "toml_datetime/std" "serde_spanned/std" ]; + }; + resolvedDefaultFeatures = [ "default" "display" "parse" "serde" "std" ]; + }; "toml_datetime" = rec { crateName = "toml_datetime"; version = "0.7.3"; @@ -13124,7 +13214,7 @@ rec { "serde" = [ "dep:serde_core" ]; "std" = [ "alloc" "serde_core?/std" ]; }; - resolvedDefaultFeatures = [ "alloc" "default" "std" ]; + resolvedDefaultFeatures = [ "alloc" "default" "serde" "std" ]; }; "toml_edit" = rec { crateName = "toml_edit"; @@ -13181,6 +13271,17 @@ rec { }; resolvedDefaultFeatures = [ "alloc" "default" "std" ]; }; + "toml_writer" = rec { + crateName = "toml_writer"; + version = "1.0.4"; + edition = "2021"; + sha256 = "1wkvcdy1ymp2qfipmb74fv3xa7m7qz7ps9hndllasx1nfda2p2yz"; + features = { + "default" = [ "std" ]; + "std" = [ "alloc" ]; + }; + resolvedDefaultFeatures = [ "alloc" "std" ]; + }; "tonic" = rec { crateName = "tonic"; version = "0.12.3"; diff --git a/Cargo.toml b/Cargo.toml index fba4c5cf..e36ec2f1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -54,6 +54,7 @@ stackable-operator = { git = "https://github.com/stackabletech/operator-rs.git", tera = "1.20" termion = "4.0" tokio = { version = "1.38", features = ["rt-multi-thread", "macros", "fs", "process", "io-std"] } +toml = { version = "0.9.8", features = ["serde"] } tower-http = { version = "0.5", features = ["validate-request"] } tracing = "0.1" tracing-indicatif = "0.3.9" diff --git a/rust/stackablectl/Cargo.toml b/rust/stackablectl/Cargo.toml index 30a168b5..49be1910 100644 --- a/rust/stackablectl/Cargo.toml +++ b/rust/stackablectl/Cargo.toml @@ -30,6 +30,7 @@ serde.workspace = true snafu.workspace = true tera.workspace = true tokio.workspace = true +toml.workspace = true tracing-subscriber.workspace = true tracing.workspace = true tracing-indicatif.workspace = true diff --git a/rust/stackablectl/src/cli/mod.rs b/rust/stackablectl/src/cli/mod.rs index e4404633..6fd621fc 100644 --- a/rust/stackablectl/src/cli/mod.rs +++ b/rust/stackablectl/src/cli/mod.rs @@ -1,8 +1,8 @@ -use std::{env, sync::Arc}; +use std::{env, path::Path, sync::Arc}; use clap::{Parser, Subcommand, ValueEnum}; use directories::ProjectDirs; -use snafu::{ResultExt, Snafu}; +use snafu::{OptionExt, ResultExt, Snafu}; use stackable_cockpit::{ constants::{HELM_REPO_NAME_DEV, HELM_REPO_NAME_STABLE, HELM_REPO_NAME_TEST}, helm, @@ -20,6 +20,7 @@ use tracing_indicatif::indicatif_eprintln; use crate::{ args::{CommonFileArgs, CommonOperatorConfigsArgs, CommonRepoArgs}, cmds::{cache, completions, debug, demo, operator, release, stack, stacklet, version}, + config::UserConfig, constants::{ DEMOS_REPOSITORY_DEMOS_SUBPATH, DEMOS_REPOSITORY_STACKS_SUBPATH, DEMOS_REPOSITORY_URL_BASE, ENV_KEY_DEMO_FILES, ENV_KEY_RELEASE_FILES, ENV_KEY_STACK_FILES, REMOTE_RELEASE_FILE, @@ -69,6 +70,9 @@ pub enum Error { #[snafu(display("failed to initialize transfer client"))] InitializeTransferClient { source: xfer::Error }, + + #[snafu(display("failed to retrieve XDG directories"))] + RetrieveXdgDirectories, } #[derive(Debug, Snafu)] @@ -169,27 +173,29 @@ impl Cli { Ok(()) } - pub fn cache_settings(&self) -> Result { + fn cache_settings(&self, cache_directory: &Path) -> Result { if self.no_cache { tracing::debug!("Cache disabled"); Ok(Settings::disabled()) } else { - let project_dir = ProjectDirs::from( - USER_DIR_QUALIFIER, - USER_DIR_ORGANIZATION_NAME, - USER_DIR_APPLICATION_NAME, - ) - .ok_or(CacheSettingsError::UserDir)?; - - let cache_dir = project_dir.cache_dir(); tracing::debug!( - cache_dir = %cache_dir.to_string_lossy(), + cache_directory = %cache_directory.to_string_lossy(), "Setting cache directory" ); - Ok(Settings::disk(cache_dir)) + Ok(Settings::disk(cache_directory)) } } + #[allow(clippy::result_large_err)] + fn xdg_directories() -> Result { + ProjectDirs::from( + USER_DIR_QUALIFIER, + USER_DIR_ORGANIZATION_NAME, + USER_DIR_APPLICATION_NAME, + ) + .context(RetrieveXdgDirectoriesSnafu) + } + #[instrument(skip_all)] pub async fn run(self) -> Result { // FIXME (Techassi): There might be a better way to handle this with @@ -202,7 +208,15 @@ impl Cli { _ => self.add_helm_repos().context(AddHelmReposSnafu)?, } - let cache_settings = self.cache_settings().context(RetrieveCacheSettingsSnafu)?; + let xdg_directories = Cli::xdg_directories()?; + // TODO (@Techassi): Move this file name to a constant + let user_config_path = xdg_directories.config_dir().join("config.toml"); + + let user_config = UserConfig::from_file_or_default(user_config_path).unwrap(); + + let cache_settings = self + .cache_settings(xdg_directories.cache_dir()) + .context(RetrieveCacheSettingsSnafu)?; let transfer_client = xfer::Client::new(cache_settings) .await .context(InitializeTransferClientSnafu)?; @@ -225,13 +239,12 @@ impl Cli { .await; // Only run the version check in the background if the user runs ANY other command than - // the version command. Also only report if the current version is outdated. - let check_version_in_background = !matches!(self.subcommand, Command::Version(_)); - let release_check_future = release_check::version_notice_output( - transfer_client.clone(), - check_version_in_background, - true, - ); + // the version command and the check isn't disabled via the user config. Also only report + // if the current version is outdated. + let check_version = + !matches!(self.subcommand, Command::Version(_)) && user_config.version.check_enabled; + let release_check_future = + release_check::version_notice_output(transfer_client.clone(), check_version, true); let release_check_future = tokio::time::timeout(std::time::Duration::from_secs(2), release_check_future); diff --git a/rust/stackablectl/src/config.rs b/rust/stackablectl/src/config.rs new file mode 100644 index 00000000..4bbbae07 --- /dev/null +++ b/rust/stackablectl/src/config.rs @@ -0,0 +1,56 @@ +use std::path::{Path, PathBuf}; + +use serde::Deserialize; +use snafu::{ResultExt, Snafu}; + +#[derive(Debug, Default, Deserialize)] +pub struct UserConfig { + pub version: VersionOptions, +} + +#[derive(Debug, Deserialize)] +pub struct VersionOptions { + pub check_enabled: bool, +} + +#[derive(Debug, Snafu)] +pub enum Error { + #[snafu(display("failed to read config file from {path}", path = path.display()))] + Read { + source: std::io::Error, + path: PathBuf, + }, + + #[snafu(display("failed to deserialize config file located at {path} as TOML", path = path.display()))] + Deserialize { + source: toml::de::Error, + path: PathBuf, + }, +} + +impl UserConfig { + /// Reads [`UserConfig`] from `path` or if not found, falls back to the default config. + pub fn from_file_or_default

(path: P) -> Result + where + P: AsRef, + { + let path = path.as_ref(); + + match std::fs::read_to_string(path) { + Ok(contents) => toml::from_str(&contents).context(DeserializeSnafu { path }), + Err(err) if err.kind() == std::io::ErrorKind::NotFound => Ok(Self::default()), + Err(err) => Err(Error::Read { + path: path.to_path_buf(), + source: err, + }), + } + } +} + +impl Default for VersionOptions { + fn default() -> Self { + Self { + check_enabled: true, + } + } +} diff --git a/rust/stackablectl/src/lib.rs b/rust/stackablectl/src/lib.rs index 0eb18d76..4d994091 100644 --- a/rust/stackablectl/src/lib.rs +++ b/rust/stackablectl/src/lib.rs @@ -1,6 +1,7 @@ pub mod args; pub mod cli; pub mod cmds; +pub mod config; pub mod constants; pub mod output; pub mod release_check; From 7f7924d2d51b430f2c3792846523e7875279ae6c Mon Sep 17 00:00:00 2001 From: Techassi Date: Mon, 15 Dec 2025 11:42:41 +0100 Subject: [PATCH 44/63] chore: Release stackablectl 1.2.2 (#423) --- Cargo.lock | 2 +- Cargo.nix | 2 +- .../partials/release-notes/release-1.2.2.adoc | 11 +++++++++++ extra/man/stackablectl.1 | 4 ++-- rust/stackablectl/CHANGELOG.md | 17 +++++++++++++++++ rust/stackablectl/Cargo.toml | 2 +- 6 files changed, 33 insertions(+), 5 deletions(-) create mode 100644 docs/modules/stackablectl/partials/release-notes/release-1.2.2.adoc diff --git a/Cargo.lock b/Cargo.lock index 223650d5..3beb471e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3620,7 +3620,7 @@ dependencies = [ [[package]] name = "stackablectl" -version = "1.2.1" +version = "1.2.2" dependencies = [ "built", "clap", diff --git a/Cargo.nix b/Cargo.nix index 07bd9f00..bb6c2523 100644 --- a/Cargo.nix +++ b/Cargo.nix @@ -12029,7 +12029,7 @@ rec { }; "stackablectl" = rec { crateName = "stackablectl"; - version = "1.2.1"; + version = "1.2.2"; edition = "2021"; crateBin = [ { diff --git a/docs/modules/stackablectl/partials/release-notes/release-1.2.2.adoc b/docs/modules/stackablectl/partials/release-notes/release-1.2.2.adoc new file mode 100644 index 00000000..2804f9b5 --- /dev/null +++ b/docs/modules/stackablectl/partials/release-notes/release-1.2.2.adoc @@ -0,0 +1,11 @@ +== 1.2.2 + +* Add the option for users to customize the behaviour of `stackablectl` through a user config located at `$HOME/.config/stackablectl/config.toml`. + The first supported option is `version.check_enabled` which can be set to `true` or `false`. + See https://github.com/stackabletech/stackable-cockpit/pull/422[stackable-cockpit#422]. +* Add a new release check which is used in two different ways: +** A new `stackablectl version check` command can be used to check if the current installation is up-to-date +** A check automatically runs for all other commands (in parallel to not block the commands) and the status is reported as part of the final command output. + ++ +See https://github.com/stackabletech/stackable-cockpit/pull/421[stackable-cockpit#421]. diff --git a/extra/man/stackablectl.1 b/extra/man/stackablectl.1 index 7921dc0b..19b9c9f3 100644 --- a/extra/man/stackablectl.1 +++ b/extra/man/stackablectl.1 @@ -1,6 +1,6 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' -.TH stackablectl 1 "stackablectl 1.2.1" +.TH stackablectl 1 "stackablectl 1.2.2" .SH NAME stackablectl \- Command line tool to interact with the Stackable Data Platform .SH SYNOPSIS @@ -123,6 +123,6 @@ Retrieve version data of the stackablectl installation stackablectl\-help(1) Print this message or the help of the given subcommand(s) .SH VERSION -v1.2.1 +v1.2.2 .SH AUTHORS Stackable GmbH diff --git a/rust/stackablectl/CHANGELOG.md b/rust/stackablectl/CHANGELOG.md index 68908e55..71f9a1cf 100644 --- a/rust/stackablectl/CHANGELOG.md +++ b/rust/stackablectl/CHANGELOG.md @@ -4,6 +4,23 @@ All notable changes to this project will be documented in this file. ## [Unreleased] +## [1.2.2] - 2025-12-03 + +### Added + +- Add the option for users to customize the behaviour of `stackablectl` through a user config located at + `$HOME/.config/stackablectl/config.toml` ([#422]). + - The first supported option is `version.check_enabled` which can be set to `true` or `false`. +- Add a new release check which is used in two different ways ([#421]): + - A new `stackablectl version check` command can be used to check if the current installation is up-to-date + - A check automatically runs for all other commands (in parallel to not block the commands) and the status is reported + as part of the final command output. + +[#421]: https://github.com/stackabletech/stackable-cockpit/pull/421 +[#422]: https://github.com/stackabletech/stackable-cockpit/pull/422 + +## [1.2.1] - 2025-11-18 + ### Fixed - Don't crash during `release upgrade` for SDP 25.11. diff --git a/rust/stackablectl/Cargo.toml b/rust/stackablectl/Cargo.toml index 49be1910..fe216fa0 100644 --- a/rust/stackablectl/Cargo.toml +++ b/rust/stackablectl/Cargo.toml @@ -2,7 +2,7 @@ name = "stackablectl" description = "Command line tool to interact with the Stackable Data Platform" # See /Cargo.toml -version = "1.2.1" +version = "1.2.2" authors.workspace = true license.workspace = true edition.workspace = true From a78def728ff0906ba08bd7a0db28fec4c0a1a98a Mon Sep 17 00:00:00 2001 From: Techassi Date: Mon, 15 Dec 2025 11:58:30 +0100 Subject: [PATCH 45/63] chore: Fix typo in error report (#424) --- rust/stackablectl/src/output/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust/stackablectl/src/output/mod.rs b/rust/stackablectl/src/output/mod.rs index 20ef91ef..44e04a24 100644 --- a/rust/stackablectl/src/output/mod.rs +++ b/rust/stackablectl/src/output/mod.rs @@ -55,7 +55,7 @@ where let mut report = String::new(); // Print top most error - write!(report, "An unrecoverable error occured: {self}\n\n")?; + write!(report, "An unrecoverable error occurred: {self}\n\n")?; writeln!( report, "Caused by these errors (recent errors listed first):" From 4bab412111b5505267a1db14762c651c950c2009 Mon Sep 17 00:00:00 2001 From: Lukas Krug Date: Fri, 6 Mar 2026 14:54:29 +0100 Subject: [PATCH 46/63] feat: publish SBOMs (#428) --- .github/workflows/release_stackablectl.yml | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release_stackablectl.yml b/.github/workflows/release_stackablectl.yml index 0f19fc9e..209c8e47 100644 --- a/.github/workflows/release_stackablectl.yml +++ b/.github/workflows/release_stackablectl.yml @@ -7,6 +7,7 @@ on: - "stackablectl-[0-9]+.[0-9]+.[0-9]+**" env: + CARGO_CYCLONEDX_VERSION: 0.5.7 RUST_VERSION: 1.87.0 CARGO_TERM_COLOR: always CARGO_INCREMENTAL: "0" @@ -50,14 +51,25 @@ jobs: with: go-version: '^1.22.2' + - name: Install cargo-cyclonedx + run: cargo install --locked cargo-cyclonedx@${{ env.CARGO_CYCLONEDX_VERSION }} + - name: Build Binary if: matrix.os != 'windows-latest' run: cargo build --target ${{ matrix.target }} --release --package stackablectl + - name: Generate SBOM + run: cargo cyclonedx --all --spec-version 1.5 --describe binaries + - name: Rename Binary run: mv target/${{ matrix.target }}/release/stackablectl${{ matrix.file-suffix }} stackablectl-${{ matrix.target }}${{ matrix.file-suffix }} - - name: Upload Release Binary + - name: Rename SBOM + run: mv rust/stackablectl/stackablectl_bin.cdx.xml stackablectl-${{ matrix.target }}.cdx.xml + + - name: Upload Release Binary and SBOM uses: softprops/action-gh-release@72f2c25fcb47643c292f7107632f7a47c1df5cd8 # v2.3.2 with: - files: stackablectl-${{ matrix.target }}${{ matrix.file-suffix }} + files: | + stackablectl-${{ matrix.target }}${{ matrix.file-suffix }} + stackablectl-${{ matrix.target }}.cdx.xml From 371c533aadb18aa36d11b2fe2bb382c6abe3285c Mon Sep 17 00:00:00 2001 From: Benedikt Labrenz Date: Mon, 9 Mar 2026 11:25:33 +0100 Subject: [PATCH 47/63] feat: Allow specifying Helm values for operator installations (#425) * allow specifying a values file that will be used for operator installations * minor refactor * rename FileTransfer error variant * Remove common key in yaml and deep merge logic; recommend yaml anchors * Improve helm value file error output * Fix values file example * explain why serialization statement won't fail * fix pre-commit --- .../stackablectl/partials/commands/cache.adoc | 27 + .../partials/commands/completions.adoc | 27 + .../stackablectl/partials/commands/demo.adoc | 27 + .../partials/commands/experimental-debug.adoc | 27 + .../stackablectl/partials/commands/index.adoc | 27 + .../partials/commands/operator.adoc | 27 + .../partials/commands/release.adoc | 27 + .../stackablectl/partials/commands/stack.adoc | 27 + .../partials/commands/stacklet.adoc | 27 + .../partials/commands/version.adoc | 27 + extra/completions/_stackablectl | 72 + extra/completions/stackablectl.bash | 1162 ++++++++++++++++- extra/completions/stackablectl.elv | 72 + extra/completions/stackablectl.fish | 38 +- extra/completions/stackablectl.nu | 36 + extra/man/stackablectl.1 | 29 +- .../src/platform/demo/params.rs | 2 + .../src/platform/demo/spec.rs | 1 + .../platform/operator/listener_operator.rs | 5 +- .../src/platform/operator/mod.rs | 25 +- .../src/platform/release/spec.rs | 6 +- .../src/platform/stack/params.rs | 2 + .../src/platform/stack/spec.rs | 11 +- rust/stackable-cockpit/src/utils/mod.rs | 1 + rust/stackable-cockpit/src/utils/yaml.rs | 13 + rust/stackablectl/README.md | 27 + rust/stackablectl/src/args/file.rs | 29 + .../stackablectl/src/args/operator_configs.rs | 2 + rust/stackablectl/src/cli/mod.rs | 10 +- rust/stackablectl/src/cmds/demo.rs | 10 + rust/stackablectl/src/cmds/operator.rs | 35 +- rust/stackablectl/src/cmds/release.rs | 23 +- rust/stackablectl/src/cmds/stack.rs | 10 + rust/stackablectl/src/utils.rs | 77 +- 34 files changed, 1903 insertions(+), 65 deletions(-) create mode 100644 rust/stackable-cockpit/src/utils/yaml.rs diff --git a/docs/modules/stackablectl/partials/commands/cache.adoc b/docs/modules/stackablectl/partials/commands/cache.adoc index 8f552870..bc581303 100644 --- a/docs/modules/stackablectl/partials/commands/cache.adoc +++ b/docs/modules/stackablectl/partials/commands/cache.adoc @@ -61,6 +61,31 @@ File options: Use "stackablectl [OPTIONS] -r path/to/releases1.yaml -r path/to/releases2.yaml" to provide multiple additional release files. + -f, --operator-values + Path to a Helm values file that will be used for the installation of operators + + The file is a YAML file containing Helm values used to deploy operators. + Operator-specific keys (e.g. 'airflow-operator', 'zookeeper-operator') map + to the Helm values for that operator. Use YAML anchors and aliases to share + values across operators. + + Example values file: + + airflow-operator: + tolerations: &default-tolerations + - key: "example" + operator: "Exists" + effect: "NoSchedule" + podAnnotations: + example.com/team: "data-engineering" + zookeeper-operator: + tolerations: *default-tolerations + podAnnotations: + example.com/team: "platform" + + Use "stackablectl [OPTIONS] -f path/to/values.yaml" to provide a + values file. + Helm repository options: --helm-repo-stable Provide a custom Helm stable repository URL @@ -90,6 +115,8 @@ Operator specific configurations: --listener-class-preset Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`). + This takes precedence over values provided via the '-f/--operator-values' flag. + This maps to the listener-operator Helm Chart preset value, see [the listener-operator documentation](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass/#presets) for details. [possible values: none, stable-nodes, ephemeral-nodes] diff --git a/docs/modules/stackablectl/partials/commands/completions.adoc b/docs/modules/stackablectl/partials/commands/completions.adoc index 8852acb6..695b42e4 100644 --- a/docs/modules/stackablectl/partials/commands/completions.adoc +++ b/docs/modules/stackablectl/partials/commands/completions.adoc @@ -64,6 +64,31 @@ File options: Use "stackablectl [OPTIONS] -r path/to/releases1.yaml -r path/to/releases2.yaml" to provide multiple additional release files. + -f, --operator-values + Path to a Helm values file that will be used for the installation of operators + + The file is a YAML file containing Helm values used to deploy operators. + Operator-specific keys (e.g. 'airflow-operator', 'zookeeper-operator') map + to the Helm values for that operator. Use YAML anchors and aliases to share + values across operators. + + Example values file: + + airflow-operator: + tolerations: &default-tolerations + - key: "example" + operator: "Exists" + effect: "NoSchedule" + podAnnotations: + example.com/team: "data-engineering" + zookeeper-operator: + tolerations: *default-tolerations + podAnnotations: + example.com/team: "platform" + + Use "stackablectl [OPTIONS] -f path/to/values.yaml" to provide a + values file. + Helm repository options: --helm-repo-stable Provide a custom Helm stable repository URL @@ -93,6 +118,8 @@ Operator specific configurations: --listener-class-preset Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`). + This takes precedence over values provided via the '-f/--operator-values' flag. + This maps to the listener-operator Helm Chart preset value, see [the listener-operator documentation](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass/#presets) for details. [possible values: none, stable-nodes, ephemeral-nodes] diff --git a/docs/modules/stackablectl/partials/commands/demo.adoc b/docs/modules/stackablectl/partials/commands/demo.adoc index a7f470ed..c5b2d39b 100644 --- a/docs/modules/stackablectl/partials/commands/demo.adoc +++ b/docs/modules/stackablectl/partials/commands/demo.adoc @@ -65,6 +65,31 @@ File options: Use "stackablectl [OPTIONS] -r path/to/releases1.yaml -r path/to/releases2.yaml" to provide multiple additional release files. + -f, --operator-values + Path to a Helm values file that will be used for the installation of operators + + The file is a YAML file containing Helm values used to deploy operators. + Operator-specific keys (e.g. 'airflow-operator', 'zookeeper-operator') map + to the Helm values for that operator. Use YAML anchors and aliases to share + values across operators. + + Example values file: + + airflow-operator: + tolerations: &default-tolerations + - key: "example" + operator: "Exists" + effect: "NoSchedule" + podAnnotations: + example.com/team: "data-engineering" + zookeeper-operator: + tolerations: *default-tolerations + podAnnotations: + example.com/team: "platform" + + Use "stackablectl [OPTIONS] -f path/to/values.yaml" to provide a + values file. + Helm repository options: --helm-repo-stable Provide a custom Helm stable repository URL @@ -94,6 +119,8 @@ Operator specific configurations: --listener-class-preset Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`). + This takes precedence over values provided via the '-f/--operator-values' flag. + This maps to the listener-operator Helm Chart preset value, see [the listener-operator documentation](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass/#presets) for details. [possible values: none, stable-nodes, ephemeral-nodes] diff --git a/docs/modules/stackablectl/partials/commands/experimental-debug.adoc b/docs/modules/stackablectl/partials/commands/experimental-debug.adoc index a46a2f31..22b4bf7d 100644 --- a/docs/modules/stackablectl/partials/commands/experimental-debug.adoc +++ b/docs/modules/stackablectl/partials/commands/experimental-debug.adoc @@ -78,6 +78,31 @@ File options: Use "stackablectl [OPTIONS] -r path/to/releases1.yaml -r path/to/releases2.yaml" to provide multiple additional release files. + -f, --operator-values + Path to a Helm values file that will be used for the installation of operators + + The file is a YAML file containing Helm values used to deploy operators. + Operator-specific keys (e.g. 'airflow-operator', 'zookeeper-operator') map + to the Helm values for that operator. Use YAML anchors and aliases to share + values across operators. + + Example values file: + + airflow-operator: + tolerations: &default-tolerations + - key: "example" + operator: "Exists" + effect: "NoSchedule" + podAnnotations: + example.com/team: "data-engineering" + zookeeper-operator: + tolerations: *default-tolerations + podAnnotations: + example.com/team: "platform" + + Use "stackablectl [OPTIONS] -f path/to/values.yaml" to provide a + values file. + Helm repository options: --helm-repo-stable Provide a custom Helm stable repository URL @@ -107,6 +132,8 @@ Operator specific configurations: --listener-class-preset Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`). + This takes precedence over values provided via the '-f/--operator-values' flag. + This maps to the listener-operator Helm Chart preset value, see [the listener-operator documentation](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass/#presets) for details. [possible values: none, stable-nodes, ephemeral-nodes] diff --git a/docs/modules/stackablectl/partials/commands/index.adoc b/docs/modules/stackablectl/partials/commands/index.adoc index a1a305c2..f9b5ac16 100644 --- a/docs/modules/stackablectl/partials/commands/index.adoc +++ b/docs/modules/stackablectl/partials/commands/index.adoc @@ -68,6 +68,31 @@ File options: Use "stackablectl [OPTIONS] -r path/to/releases1.yaml -r path/to/releases2.yaml" to provide multiple additional release files. + -f, --operator-values + Path to a Helm values file that will be used for the installation of operators + + The file is a YAML file containing Helm values used to deploy operators. + Operator-specific keys (e.g. 'airflow-operator', 'zookeeper-operator') map + to the Helm values for that operator. Use YAML anchors and aliases to share + values across operators. + + Example values file: + + airflow-operator: + tolerations: &default-tolerations + - key: "example" + operator: "Exists" + effect: "NoSchedule" + podAnnotations: + example.com/team: "data-engineering" + zookeeper-operator: + tolerations: *default-tolerations + podAnnotations: + example.com/team: "platform" + + Use "stackablectl [OPTIONS] -f path/to/values.yaml" to provide a + values file. + Helm repository options: --helm-repo-stable Provide a custom Helm stable repository URL @@ -97,6 +122,8 @@ Operator specific configurations: --listener-class-preset Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`). + This takes precedence over values provided via the '-f/--operator-values' flag. + This maps to the listener-operator Helm Chart preset value, see [the listener-operator documentation](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass/#presets) for details. [possible values: none, stable-nodes, ephemeral-nodes] diff --git a/docs/modules/stackablectl/partials/commands/operator.adoc b/docs/modules/stackablectl/partials/commands/operator.adoc index c85cf589..d7c3fb6b 100644 --- a/docs/modules/stackablectl/partials/commands/operator.adoc +++ b/docs/modules/stackablectl/partials/commands/operator.adoc @@ -64,6 +64,31 @@ File options: Use "stackablectl [OPTIONS] -r path/to/releases1.yaml -r path/to/releases2.yaml" to provide multiple additional release files. + -f, --operator-values + Path to a Helm values file that will be used for the installation of operators + + The file is a YAML file containing Helm values used to deploy operators. + Operator-specific keys (e.g. 'airflow-operator', 'zookeeper-operator') map + to the Helm values for that operator. Use YAML anchors and aliases to share + values across operators. + + Example values file: + + airflow-operator: + tolerations: &default-tolerations + - key: "example" + operator: "Exists" + effect: "NoSchedule" + podAnnotations: + example.com/team: "data-engineering" + zookeeper-operator: + tolerations: *default-tolerations + podAnnotations: + example.com/team: "platform" + + Use "stackablectl [OPTIONS] -f path/to/values.yaml" to provide a + values file. + Helm repository options: --helm-repo-stable Provide a custom Helm stable repository URL @@ -93,6 +118,8 @@ Operator specific configurations: --listener-class-preset Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`). + This takes precedence over values provided via the '-f/--operator-values' flag. + This maps to the listener-operator Helm Chart preset value, see [the listener-operator documentation](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass/#presets) for details. [possible values: none, stable-nodes, ephemeral-nodes] diff --git a/docs/modules/stackablectl/partials/commands/release.adoc b/docs/modules/stackablectl/partials/commands/release.adoc index 58e4d29b..ce797851 100644 --- a/docs/modules/stackablectl/partials/commands/release.adoc +++ b/docs/modules/stackablectl/partials/commands/release.adoc @@ -64,6 +64,31 @@ File options: Use "stackablectl [OPTIONS] -r path/to/releases1.yaml -r path/to/releases2.yaml" to provide multiple additional release files. + -f, --operator-values + Path to a Helm values file that will be used for the installation of operators + + The file is a YAML file containing Helm values used to deploy operators. + Operator-specific keys (e.g. 'airflow-operator', 'zookeeper-operator') map + to the Helm values for that operator. Use YAML anchors and aliases to share + values across operators. + + Example values file: + + airflow-operator: + tolerations: &default-tolerations + - key: "example" + operator: "Exists" + effect: "NoSchedule" + podAnnotations: + example.com/team: "data-engineering" + zookeeper-operator: + tolerations: *default-tolerations + podAnnotations: + example.com/team: "platform" + + Use "stackablectl [OPTIONS] -f path/to/values.yaml" to provide a + values file. + Helm repository options: --helm-repo-stable Provide a custom Helm stable repository URL @@ -93,6 +118,8 @@ Operator specific configurations: --listener-class-preset Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`). + This takes precedence over values provided via the '-f/--operator-values' flag. + This maps to the listener-operator Helm Chart preset value, see [the listener-operator documentation](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass/#presets) for details. [possible values: none, stable-nodes, ephemeral-nodes] diff --git a/docs/modules/stackablectl/partials/commands/stack.adoc b/docs/modules/stackablectl/partials/commands/stack.adoc index 2fd57104..639b1621 100644 --- a/docs/modules/stackablectl/partials/commands/stack.adoc +++ b/docs/modules/stackablectl/partials/commands/stack.adoc @@ -65,6 +65,31 @@ File options: Use "stackablectl [OPTIONS] -r path/to/releases1.yaml -r path/to/releases2.yaml" to provide multiple additional release files. + -f, --operator-values + Path to a Helm values file that will be used for the installation of operators + + The file is a YAML file containing Helm values used to deploy operators. + Operator-specific keys (e.g. 'airflow-operator', 'zookeeper-operator') map + to the Helm values for that operator. Use YAML anchors and aliases to share + values across operators. + + Example values file: + + airflow-operator: + tolerations: &default-tolerations + - key: "example" + operator: "Exists" + effect: "NoSchedule" + podAnnotations: + example.com/team: "data-engineering" + zookeeper-operator: + tolerations: *default-tolerations + podAnnotations: + example.com/team: "platform" + + Use "stackablectl [OPTIONS] -f path/to/values.yaml" to provide a + values file. + Helm repository options: --helm-repo-stable Provide a custom Helm stable repository URL @@ -94,6 +119,8 @@ Operator specific configurations: --listener-class-preset Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`). + This takes precedence over values provided via the '-f/--operator-values' flag. + This maps to the listener-operator Helm Chart preset value, see [the listener-operator documentation](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass/#presets) for details. [possible values: none, stable-nodes, ephemeral-nodes] diff --git a/docs/modules/stackablectl/partials/commands/stacklet.adoc b/docs/modules/stackablectl/partials/commands/stacklet.adoc index 58e7345e..86bd9ab5 100644 --- a/docs/modules/stackablectl/partials/commands/stacklet.adoc +++ b/docs/modules/stackablectl/partials/commands/stacklet.adoc @@ -66,6 +66,31 @@ File options: Use "stackablectl [OPTIONS] -r path/to/releases1.yaml -r path/to/releases2.yaml" to provide multiple additional release files. + -f, --operator-values + Path to a Helm values file that will be used for the installation of operators + + The file is a YAML file containing Helm values used to deploy operators. + Operator-specific keys (e.g. 'airflow-operator', 'zookeeper-operator') map + to the Helm values for that operator. Use YAML anchors and aliases to share + values across operators. + + Example values file: + + airflow-operator: + tolerations: &default-tolerations + - key: "example" + operator: "Exists" + effect: "NoSchedule" + podAnnotations: + example.com/team: "data-engineering" + zookeeper-operator: + tolerations: *default-tolerations + podAnnotations: + example.com/team: "platform" + + Use "stackablectl [OPTIONS] -f path/to/values.yaml" to provide a + values file. + Helm repository options: --helm-repo-stable Provide a custom Helm stable repository URL @@ -95,6 +120,8 @@ Operator specific configurations: --listener-class-preset Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`). + This takes precedence over values provided via the '-f/--operator-values' flag. + This maps to the listener-operator Helm Chart preset value, see [the listener-operator documentation](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass/#presets) for details. [possible values: none, stable-nodes, ephemeral-nodes] diff --git a/docs/modules/stackablectl/partials/commands/version.adoc b/docs/modules/stackablectl/partials/commands/version.adoc index 06610aae..0176deb1 100644 --- a/docs/modules/stackablectl/partials/commands/version.adoc +++ b/docs/modules/stackablectl/partials/commands/version.adoc @@ -60,6 +60,31 @@ File options: Use "stackablectl [OPTIONS] -r path/to/releases1.yaml -r path/to/releases2.yaml" to provide multiple additional release files. + -f, --operator-values + Path to a Helm values file that will be used for the installation of operators + + The file is a YAML file containing Helm values used to deploy operators. + Operator-specific keys (e.g. 'airflow-operator', 'zookeeper-operator') map + to the Helm values for that operator. Use YAML anchors and aliases to share + values across operators. + + Example values file: + + airflow-operator: + tolerations: &default-tolerations + - key: "example" + operator: "Exists" + effect: "NoSchedule" + podAnnotations: + example.com/team: "data-engineering" + zookeeper-operator: + tolerations: *default-tolerations + podAnnotations: + example.com/team: "platform" + + Use "stackablectl [OPTIONS] -f path/to/values.yaml" to provide a + values file. + Helm repository options: --helm-repo-stable Provide a custom Helm stable repository URL @@ -89,6 +114,8 @@ Operator specific configurations: --listener-class-preset Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`). + This takes precedence over values provided via the '-f/--operator-values' flag. + This maps to the listener-operator Helm Chart preset value, see [the listener-operator documentation](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass/#presets) for details. [possible values: none, stable-nodes, ephemeral-nodes] diff --git a/extra/completions/_stackablectl b/extra/completions/_stackablectl index 342cc466..abba1406 100644 --- a/extra/completions/_stackablectl +++ b/extra/completions/_stackablectl @@ -23,6 +23,8 @@ _stackablectl() { '*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ '*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ '*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'-f+[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ +'--operator-values=[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ '--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ '--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ @@ -53,6 +55,8 @@ _arguments "${_arguments_options[@]}" : \ '*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ '*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ '*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'-f+[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ +'--operator-values=[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ '--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ '--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ @@ -92,6 +96,8 @@ yaml\:"Print output formatted as YAML"))' \ '*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ '*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ '*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'-f+[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ +'--operator-values=[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ '--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ '--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ @@ -123,6 +129,8 @@ yaml\:"Print output formatted as YAML"))' \ '*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ '*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ '*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'-f+[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ +'--operator-values=[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ '--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ '--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ @@ -156,6 +164,8 @@ minikube\:"Use a minikube cluster"))' \ '*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ '*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ '*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'-f+[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ +'--operator-values=[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ '--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ '--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ @@ -182,6 +192,8 @@ _arguments "${_arguments_options[@]}" : \ '*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ '*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ '*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'-f+[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ +'--operator-values=[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ '--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ '--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ @@ -216,6 +228,8 @@ yaml\:"Print output formatted as YAML"))' \ '*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ '*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ '*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'-f+[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ +'--operator-values=[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ '--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ '--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ @@ -283,6 +297,8 @@ _arguments "${_arguments_options[@]}" : \ '*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ '*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ '*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'-f+[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ +'--operator-values=[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ '--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ '--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ @@ -322,6 +338,8 @@ yaml\:"Print output formatted as YAML"))' \ '*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ '*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ '*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'-f+[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ +'--operator-values=[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ '--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ '--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ @@ -353,6 +371,8 @@ yaml\:"Print output formatted as YAML"))' \ '*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ '*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ '*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'-f+[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ +'--operator-values=[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ '--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ '--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ @@ -390,6 +410,8 @@ minikube\:"Use a minikube cluster"))' \ '*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ '*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ '*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'-f+[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ +'--operator-values=[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ '--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ '--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ @@ -416,6 +438,8 @@ _arguments "${_arguments_options[@]}" : \ '*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ '*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ '*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'-f+[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ +'--operator-values=[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ '--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ '--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ @@ -446,6 +470,8 @@ _arguments "${_arguments_options[@]}" : \ '*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ '*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ '*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'-f+[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ +'--operator-values=[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ '--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ '--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ @@ -515,6 +541,8 @@ _arguments "${_arguments_options[@]}" : \ '*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ '*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ '*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'-f+[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ +'--operator-values=[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ '--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ '--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ @@ -555,6 +583,8 @@ yaml\:"Print output formatted as YAML"))' \ '*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ '*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ '*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'-f+[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ +'--operator-values=[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ '--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ '--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ @@ -587,6 +617,8 @@ yaml\:"Print output formatted as YAML"))' \ '*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ '*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ '*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'-f+[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ +'--operator-values=[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ '--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ '--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ @@ -626,6 +658,8 @@ minikube\:"Use a minikube cluster"))' \ '*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ '*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ '*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'-f+[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ +'--operator-values=[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ '--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ '--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ @@ -687,6 +721,8 @@ _arguments "${_arguments_options[@]}" : \ '*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ '*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ '*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'-f+[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ +'--operator-values=[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ '--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ '--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ @@ -720,6 +756,8 @@ _arguments "${_arguments_options[@]}" : \ '*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ '*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ '*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'-f+[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ +'--operator-values=[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ '--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ '--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ @@ -758,6 +796,8 @@ yaml\:"Print output formatted as YAML"))' \ '*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ '*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ '*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'-f+[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ +'--operator-values=[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ '--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ '--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ @@ -814,6 +854,8 @@ _arguments "${_arguments_options[@]}" : \ '*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ '*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ '*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'-f+[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ +'--operator-values=[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ '--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ '--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ @@ -854,6 +896,8 @@ yaml\:"Print output formatted as YAML"))' \ '*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ '*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ '*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'-f+[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ +'--operator-values=[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ '--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ '--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ @@ -886,6 +930,8 @@ yaml\:"Print output formatted as YAML"))' \ '*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ '*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ '*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'-f+[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ +'--operator-values=[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ '--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ '--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ @@ -925,6 +971,8 @@ minikube\:"Use a minikube cluster"))' \ '*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ '*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ '*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'-f+[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ +'--operator-values=[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ '--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ '--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ @@ -986,6 +1034,8 @@ _arguments "${_arguments_options[@]}" : \ '*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ '*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ '*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'-f+[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ +'--operator-values=[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ '--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ '--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ @@ -1017,6 +1067,8 @@ _arguments "${_arguments_options[@]}" : \ '*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ '*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ '*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'-f+[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ +'--operator-values=[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ '--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ '--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ @@ -1040,6 +1092,8 @@ _arguments "${_arguments_options[@]}" : \ '*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ '*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ '*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'-f+[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ +'--operator-values=[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ '--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ '--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ @@ -1063,6 +1117,8 @@ _arguments "${_arguments_options[@]}" : \ '*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ '*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ '*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'-f+[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ +'--operator-values=[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ '--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ '--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ @@ -1086,6 +1142,8 @@ _arguments "${_arguments_options[@]}" : \ '*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ '*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ '*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'-f+[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ +'--operator-values=[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ '--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ '--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ @@ -1109,6 +1167,8 @@ _arguments "${_arguments_options[@]}" : \ '*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ '*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ '*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'-f+[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ +'--operator-values=[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ '--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ '--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ @@ -1176,6 +1236,8 @@ _arguments "${_arguments_options[@]}" : \ '*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ '*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ '*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'-f+[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ +'--operator-values=[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ '--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ '--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ @@ -1207,6 +1269,8 @@ _arguments "${_arguments_options[@]}" : \ '*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ '*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ '*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'-f+[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ +'--operator-values=[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ '--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ '--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ @@ -1230,6 +1294,8 @@ _arguments "${_arguments_options[@]}" : \ '*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ '*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ '*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'-f+[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ +'--operator-values=[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ '--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ '--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ @@ -1292,6 +1358,8 @@ _arguments "${_arguments_options[@]}" : \ '*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ '*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ '*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'-f+[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ +'--operator-values=[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ '--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ '--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ @@ -1317,6 +1385,8 @@ _arguments "${_arguments_options[@]}" : \ '*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ '*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ '*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'-f+[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ +'--operator-values=[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ '--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ '--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ @@ -1348,6 +1418,8 @@ _arguments "${_arguments_options[@]}" : \ '*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ '*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ '*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'-f+[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ +'--operator-values=[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ '--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ '--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ diff --git a/extra/completions/stackablectl.bash b/extra/completions/stackablectl.bash index 140bd2f6..be0544fa 100644 --- a/extra/completions/stackablectl.bash +++ b/extra/completions/stackablectl.bash @@ -365,7 +365,7 @@ _stackablectl() { case "${cmd}" in stackablectl) - opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version operator release stack stacklet demo completions cache experimental-debug version help" + opts="-l -d -s -r -f -h -V --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version operator release stack stacklet demo completions cache experimental-debug version help" if [[ ${cur} == -* || ${COMP_CWORD} -eq 1 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -469,6 +469,36 @@ _stackablectl() { fi return 0 ;; + --operator-values) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -f) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; --helm-repo-stable) COMPREPLY=($(compgen -f "${cur}")) return 0 @@ -497,7 +527,7 @@ _stackablectl() { return 0 ;; stackablectl__cache) - opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version list clean help" + opts="-l -d -s -r -f -h -V --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version list clean help" if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -601,6 +631,36 @@ _stackablectl() { fi return 0 ;; + --operator-values) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -f) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; --helm-repo-stable) COMPREPLY=($(compgen -f "${cur}")) return 0 @@ -629,7 +689,7 @@ _stackablectl() { return 0 ;; stackablectl__cache__clean) - opts="-l -d -s -r -h -V --outdated --old --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version" + opts="-l -d -s -r -f -h -V --outdated --old --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -733,6 +793,36 @@ _stackablectl() { fi return 0 ;; + --operator-values) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -f) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; --helm-repo-stable) COMPREPLY=($(compgen -f "${cur}")) return 0 @@ -817,7 +907,7 @@ _stackablectl() { return 0 ;; stackablectl__cache__list) - opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version" + opts="-l -d -s -r -f -h -V --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -921,6 +1011,36 @@ _stackablectl() { fi return 0 ;; + --operator-values) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -f) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; --helm-repo-stable) COMPREPLY=($(compgen -f "${cur}")) return 0 @@ -949,7 +1069,7 @@ _stackablectl() { return 0 ;; stackablectl__completions) - opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version bash elvish fish nushell zsh help" + opts="-l -d -s -r -f -h -V --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version bash elvish fish nushell zsh help" if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -1053,6 +1173,36 @@ _stackablectl() { fi return 0 ;; + --operator-values) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -f) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; --helm-repo-stable) COMPREPLY=($(compgen -f "${cur}")) return 0 @@ -1081,7 +1231,7 @@ _stackablectl() { return 0 ;; stackablectl__completions__bash) - opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version" + opts="-l -d -s -r -f -h -V --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -1185,6 +1335,36 @@ _stackablectl() { fi return 0 ;; + --operator-values) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -f) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; --helm-repo-stable) COMPREPLY=($(compgen -f "${cur}")) return 0 @@ -1213,7 +1393,7 @@ _stackablectl() { return 0 ;; stackablectl__completions__elvish) - opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version" + opts="-l -d -s -r -f -h -V --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -1317,6 +1497,36 @@ _stackablectl() { fi return 0 ;; + --operator-values) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -f) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; --helm-repo-stable) COMPREPLY=($(compgen -f "${cur}")) return 0 @@ -1345,7 +1555,7 @@ _stackablectl() { return 0 ;; stackablectl__completions__fish) - opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version" + opts="-l -d -s -r -f -h -V --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -1449,6 +1659,36 @@ _stackablectl() { fi return 0 ;; + --operator-values) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -f) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; --helm-repo-stable) COMPREPLY=($(compgen -f "${cur}")) return 0 @@ -1575,7 +1815,7 @@ _stackablectl() { return 0 ;; stackablectl__completions__nushell) - opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version" + opts="-l -d -s -r -f -h -V --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -1679,6 +1919,36 @@ _stackablectl() { fi return 0 ;; + --operator-values) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -f) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; --helm-repo-stable) COMPREPLY=($(compgen -f "${cur}")) return 0 @@ -1707,7 +1977,7 @@ _stackablectl() { return 0 ;; stackablectl__completions__zsh) - opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version" + opts="-l -d -s -r -f -h -V --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -1811,6 +2081,36 @@ _stackablectl() { fi return 0 ;; + --operator-values) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -f) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; --helm-repo-stable) COMPREPLY=($(compgen -f "${cur}")) return 0 @@ -1839,7 +2139,7 @@ _stackablectl() { return 0 ;; stackablectl__demo) - opts="-l -d -s -r -h -V --release --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version list describe install help" + opts="-l -d -s -r -f -h -V --release --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version list describe install help" if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -1947,6 +2247,36 @@ _stackablectl() { fi return 0 ;; + --operator-values) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -f) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; --helm-repo-stable) COMPREPLY=($(compgen -f "${cur}")) return 0 @@ -1975,7 +2305,7 @@ _stackablectl() { return 0 ;; stackablectl__demo__describe) - opts="-o -l -d -s -r -h -V --output --release --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version " + opts="-o -l -d -s -r -f -h -V --output --release --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version " if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -2091,6 +2421,36 @@ _stackablectl() { fi return 0 ;; + --operator-values) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -f) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; --helm-repo-stable) COMPREPLY=($(compgen -f "${cur}")) return 0 @@ -2189,7 +2549,7 @@ _stackablectl() { return 0 ;; stackablectl__demo__install) - opts="-c -n -l -d -s -r -h -V --skip-release --stack-parameters --parameters --cluster --cluster-name --cluster-nodes --cluster-cp-nodes --operator-ns --operator-namespace --product-ns --namespace --release --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version " + opts="-c -n -l -d -s -r -f -h -V --skip-release --stack-parameters --parameters --cluster --cluster-name --cluster-nodes --cluster-cp-nodes --operator-ns --operator-namespace --product-ns --namespace --release --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version " if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -2345,6 +2705,36 @@ _stackablectl() { fi return 0 ;; + --operator-values) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -f) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; --helm-repo-stable) COMPREPLY=($(compgen -f "${cur}")) return 0 @@ -2373,7 +2763,7 @@ _stackablectl() { return 0 ;; stackablectl__demo__list) - opts="-o -l -d -s -r -h -V --output --release --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version" + opts="-o -l -d -s -r -f -h -V --output --release --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -2489,6 +2879,36 @@ _stackablectl() { fi return 0 ;; + --operator-values) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -f) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; --helm-repo-stable) COMPREPLY=($(compgen -f "${cur}")) return 0 @@ -2517,7 +2937,7 @@ _stackablectl() { return 0 ;; stackablectl__experimental__debug) - opts="-n -c -l -d -s -r -h -V --namespace --container --image --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version [CMD]..." + opts="-n -c -l -d -s -r -f -h -V --namespace --container --image --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version [CMD]..." if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -2641,6 +3061,36 @@ _stackablectl() { fi return 0 ;; + --operator-values) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -f) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; --helm-repo-stable) COMPREPLY=($(compgen -f "${cur}")) return 0 @@ -3187,7 +3637,7 @@ _stackablectl() { return 0 ;; stackablectl__operator) - opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version list describe install uninstall installed help" + opts="-l -d -s -r -f -h -V --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version list describe install uninstall installed help" if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -3291,6 +3741,36 @@ _stackablectl() { fi return 0 ;; + --operator-values) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -f) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; --helm-repo-stable) COMPREPLY=($(compgen -f "${cur}")) return 0 @@ -3319,7 +3799,7 @@ _stackablectl() { return 0 ;; stackablectl__operator__describe) - opts="-o -l -d -s -r -h -V --output --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version " + opts="-o -l -d -s -r -f -h -V --output --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version " if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -3431,6 +3911,36 @@ _stackablectl() { fi return 0 ;; + --operator-values) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -f) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; --helm-repo-stable) COMPREPLY=($(compgen -f "${cur}")) return 0 @@ -3557,7 +4067,7 @@ _stackablectl() { return 0 ;; stackablectl__operator__install) - opts="-c -l -d -s -r -h -V --operator-ns --operator-namespace --cluster --cluster-name --cluster-nodes --cluster-cp-nodes --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version ..." + opts="-c -l -d -s -r -f -h -V --operator-ns --operator-namespace --cluster --cluster-name --cluster-nodes --cluster-cp-nodes --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version ..." if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -3659,7 +4169,37 @@ _stackablectl() { fi return 0 ;; - --release-file) + --release-file) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -r) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + --operator-values) local oldifs if [ -n "${IFS+x}" ]; then oldifs="$IFS" @@ -3674,7 +4214,7 @@ _stackablectl() { fi return 0 ;; - -r) + -f) local oldifs if [ -n "${IFS+x}" ]; then oldifs="$IFS" @@ -3717,7 +4257,7 @@ _stackablectl() { return 0 ;; stackablectl__operator__installed) - opts="-o -l -d -s -r -h -V --output --operator-ns --operator-namespace --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version" + opts="-o -l -d -s -r -f -h -V --output --operator-ns --operator-namespace --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -3837,6 +4377,36 @@ _stackablectl() { fi return 0 ;; + --operator-values) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -f) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; --helm-repo-stable) COMPREPLY=($(compgen -f "${cur}")) return 0 @@ -3865,7 +4435,7 @@ _stackablectl() { return 0 ;; stackablectl__operator__list) - opts="-o -l -d -s -r -h -V --output --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version" + opts="-o -l -d -s -r -f -h -V --output --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -3977,6 +4547,36 @@ _stackablectl() { fi return 0 ;; + --operator-values) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -f) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; --helm-repo-stable) COMPREPLY=($(compgen -f "${cur}")) return 0 @@ -4005,7 +4605,7 @@ _stackablectl() { return 0 ;; stackablectl__operator__uninstall) - opts="-l -d -s -r -h -V --operator-ns --operator-namespace --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version ..." + opts="-l -d -s -r -f -h -V --operator-ns --operator-namespace --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version ..." if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -4117,6 +4717,36 @@ _stackablectl() { fi return 0 ;; + --operator-values) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -f) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; --helm-repo-stable) COMPREPLY=($(compgen -f "${cur}")) return 0 @@ -4145,7 +4775,7 @@ _stackablectl() { return 0 ;; stackablectl__release) - opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version list describe install uninstall upgrade help" + opts="-l -d -s -r -f -h -V --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version list describe install uninstall upgrade help" if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -4249,6 +4879,36 @@ _stackablectl() { fi return 0 ;; + --operator-values) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -f) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; --helm-repo-stable) COMPREPLY=($(compgen -f "${cur}")) return 0 @@ -4277,7 +4937,7 @@ _stackablectl() { return 0 ;; stackablectl__release__describe) - opts="-o -l -d -s -r -h -V --output --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version " + opts="-o -l -d -s -r -f -h -V --output --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version " if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -4389,6 +5049,36 @@ _stackablectl() { fi return 0 ;; + --operator-values) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -f) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; --helm-repo-stable) COMPREPLY=($(compgen -f "${cur}")) return 0 @@ -4515,7 +5205,7 @@ _stackablectl() { return 0 ;; stackablectl__release__install) - opts="-i -e -c -l -d -s -r -h -V --include --exclude --operator-ns --operator-namespace --cluster --cluster-name --cluster-nodes --cluster-cp-nodes --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version " + opts="-i -e -c -l -d -s -r -f -h -V --include --exclude --operator-ns --operator-namespace --cluster --cluster-name --cluster-nodes --cluster-cp-nodes --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version " if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -4663,6 +5353,36 @@ _stackablectl() { fi return 0 ;; + --operator-values) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -f) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; --helm-repo-stable) COMPREPLY=($(compgen -f "${cur}")) return 0 @@ -4691,7 +5411,7 @@ _stackablectl() { return 0 ;; stackablectl__release__list) - opts="-o -l -d -s -r -h -V --output --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version" + opts="-o -l -d -s -r -f -h -V --output --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -4803,6 +5523,36 @@ _stackablectl() { fi return 0 ;; + --operator-values) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -f) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; --helm-repo-stable) COMPREPLY=($(compgen -f "${cur}")) return 0 @@ -4831,7 +5581,7 @@ _stackablectl() { return 0 ;; stackablectl__release__uninstall) - opts="-l -d -s -r -h -V --operator-ns --operator-namespace --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version " + opts="-l -d -s -r -f -h -V --operator-ns --operator-namespace --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version " if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -4943,6 +5693,36 @@ _stackablectl() { fi return 0 ;; + --operator-values) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -f) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; --helm-repo-stable) COMPREPLY=($(compgen -f "${cur}")) return 0 @@ -4971,7 +5751,7 @@ _stackablectl() { return 0 ;; stackablectl__release__upgrade) - opts="-i -e -l -d -s -r -h -V --include --exclude --operator-ns --operator-namespace --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version " + opts="-i -e -l -d -s -r -f -h -V --include --exclude --operator-ns --operator-namespace --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version " if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -5054,7 +5834,37 @@ _stackablectl() { fi return 0 ;; - -s) + -s) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + --release-file) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -r) local oldifs if [ -n "${IFS+x}" ]; then oldifs="$IFS" @@ -5069,7 +5879,7 @@ _stackablectl() { fi return 0 ;; - --release-file) + --operator-values) local oldifs if [ -n "${IFS+x}" ]; then oldifs="$IFS" @@ -5084,7 +5894,7 @@ _stackablectl() { fi return 0 ;; - -r) + -f) local oldifs if [ -n "${IFS+x}" ]; then oldifs="$IFS" @@ -5127,7 +5937,7 @@ _stackablectl() { return 0 ;; stackablectl__stack) - opts="-l -d -s -r -h -V --release --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version list describe install help" + opts="-l -d -s -r -f -h -V --release --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version list describe install help" if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -5235,6 +6045,36 @@ _stackablectl() { fi return 0 ;; + --operator-values) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -f) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; --helm-repo-stable) COMPREPLY=($(compgen -f "${cur}")) return 0 @@ -5263,7 +6103,7 @@ _stackablectl() { return 0 ;; stackablectl__stack__describe) - opts="-o -l -d -s -r -h -V --output --release --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version " + opts="-o -l -d -s -r -f -h -V --output --release --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version " if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -5379,6 +6219,36 @@ _stackablectl() { fi return 0 ;; + --operator-values) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -f) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; --helm-repo-stable) COMPREPLY=($(compgen -f "${cur}")) return 0 @@ -5477,7 +6347,7 @@ _stackablectl() { return 0 ;; stackablectl__stack__install) - opts="-c -n -l -d -s -r -h -V --skip-release --stack-parameters --parameters --cluster --cluster-name --cluster-nodes --cluster-cp-nodes --operator-ns --operator-namespace --product-ns --namespace --release --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version " + opts="-c -n -l -d -s -r -f -h -V --skip-release --stack-parameters --parameters --cluster --cluster-name --cluster-nodes --cluster-cp-nodes --operator-ns --operator-namespace --product-ns --namespace --release --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version " if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -5633,6 +6503,36 @@ _stackablectl() { fi return 0 ;; + --operator-values) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -f) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; --helm-repo-stable) COMPREPLY=($(compgen -f "${cur}")) return 0 @@ -5661,7 +6561,7 @@ _stackablectl() { return 0 ;; stackablectl__stack__list) - opts="-o -l -d -s -r -h -V --output --release --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version" + opts="-o -l -d -s -r -f -h -V --output --release --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -5777,6 +6677,36 @@ _stackablectl() { fi return 0 ;; + --operator-values) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -f) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; --helm-repo-stable) COMPREPLY=($(compgen -f "${cur}")) return 0 @@ -5805,7 +6735,7 @@ _stackablectl() { return 0 ;; stackablectl__stacklet) - opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version credentials list help" + opts="-l -d -s -r -f -h -V --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version credentials list help" if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -5909,6 +6839,36 @@ _stackablectl() { fi return 0 ;; + --operator-values) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -f) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; --helm-repo-stable) COMPREPLY=($(compgen -f "${cur}")) return 0 @@ -5937,7 +6897,7 @@ _stackablectl() { return 0 ;; stackablectl__stacklet__credentials) - opts="-n -l -d -s -r -h -V --namespace --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version " + opts="-n -l -d -s -r -f -h -V --namespace --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version " if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -6049,6 +7009,36 @@ _stackablectl() { fi return 0 ;; + --operator-values) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -f) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; --helm-repo-stable) COMPREPLY=($(compgen -f "${cur}")) return 0 @@ -6133,7 +7123,7 @@ _stackablectl() { return 0 ;; stackablectl__stacklet__list) - opts="-o -n -l -d -s -r -h -V --output --operator-ns --operator-namespace --product-ns --namespace --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version" + opts="-o -n -l -d -s -r -f -h -V --output --operator-ns --operator-namespace --product-ns --namespace --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -6265,6 +7255,36 @@ _stackablectl() { fi return 0 ;; + --operator-values) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -f) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; --helm-repo-stable) COMPREPLY=($(compgen -f "${cur}")) return 0 @@ -6293,7 +7313,7 @@ _stackablectl() { return 0 ;; stackablectl__version) - opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version check help" + opts="-l -d -s -r -f -h -V --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version check help" if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -6397,6 +7417,36 @@ _stackablectl() { fi return 0 ;; + --operator-values) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -f) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; --helm-repo-stable) COMPREPLY=($(compgen -f "${cur}")) return 0 @@ -6425,7 +7475,7 @@ _stackablectl() { return 0 ;; stackablectl__version__check) - opts="-l -d -s -r -h -V --log-level --no-cache --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version" + opts="-l -d -s -r -f -h -V --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -6529,6 +7579,36 @@ _stackablectl() { fi return 0 ;; + --operator-values) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -f) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; --helm-repo-stable) COMPREPLY=($(compgen -f "${cur}")) return 0 diff --git a/extra/completions/stackablectl.elv b/extra/completions/stackablectl.elv index 04175a39..e98558e7 100644 --- a/extra/completions/stackablectl.elv +++ b/extra/completions/stackablectl.elv @@ -26,6 +26,8 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --stack-file 'Provide one or more additional (custom) stack file(s)' cand -r 'Provide one or more additional (custom) release file(s)' cand --release-file 'Provide one or more additional (custom) release file(s)' + cand -f 'Path to a Helm values file that will be used for the installation of operators' + cand --operator-values 'Path to a Helm values file that will be used for the installation of operators' cand --helm-repo-stable 'Provide a custom Helm stable repository URL' cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' @@ -56,6 +58,8 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --stack-file 'Provide one or more additional (custom) stack file(s)' cand -r 'Provide one or more additional (custom) release file(s)' cand --release-file 'Provide one or more additional (custom) release file(s)' + cand -f 'Path to a Helm values file that will be used for the installation of operators' + cand --operator-values 'Path to a Helm values file that will be used for the installation of operators' cand --helm-repo-stable 'Provide a custom Helm stable repository URL' cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' @@ -84,6 +88,8 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --stack-file 'Provide one or more additional (custom) stack file(s)' cand -r 'Provide one or more additional (custom) release file(s)' cand --release-file 'Provide one or more additional (custom) release file(s)' + cand -f 'Path to a Helm values file that will be used for the installation of operators' + cand --operator-values 'Path to a Helm values file that will be used for the installation of operators' cand --helm-repo-stable 'Provide a custom Helm stable repository URL' cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' @@ -106,6 +112,8 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --stack-file 'Provide one or more additional (custom) stack file(s)' cand -r 'Provide one or more additional (custom) release file(s)' cand --release-file 'Provide one or more additional (custom) release file(s)' + cand -f 'Path to a Helm values file that will be used for the installation of operators' + cand --operator-values 'Path to a Helm values file that will be used for the installation of operators' cand --helm-repo-stable 'Provide a custom Helm stable repository URL' cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' @@ -133,6 +141,8 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --stack-file 'Provide one or more additional (custom) stack file(s)' cand -r 'Provide one or more additional (custom) release file(s)' cand --release-file 'Provide one or more additional (custom) release file(s)' + cand -f 'Path to a Helm values file that will be used for the installation of operators' + cand --operator-values 'Path to a Helm values file that will be used for the installation of operators' cand --helm-repo-stable 'Provide a custom Helm stable repository URL' cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' @@ -155,6 +165,8 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --stack-file 'Provide one or more additional (custom) stack file(s)' cand -r 'Provide one or more additional (custom) release file(s)' cand --release-file 'Provide one or more additional (custom) release file(s)' + cand -f 'Path to a Helm values file that will be used for the installation of operators' + cand --operator-values 'Path to a Helm values file that will be used for the installation of operators' cand --helm-repo-stable 'Provide a custom Helm stable repository URL' cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' @@ -179,6 +191,8 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --stack-file 'Provide one or more additional (custom) stack file(s)' cand -r 'Provide one or more additional (custom) release file(s)' cand --release-file 'Provide one or more additional (custom) release file(s)' + cand -f 'Path to a Helm values file that will be used for the installation of operators' + cand --operator-values 'Path to a Helm values file that will be used for the installation of operators' cand --helm-repo-stable 'Provide a custom Helm stable repository URL' cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' @@ -219,6 +233,8 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --stack-file 'Provide one or more additional (custom) stack file(s)' cand -r 'Provide one or more additional (custom) release file(s)' cand --release-file 'Provide one or more additional (custom) release file(s)' + cand -f 'Path to a Helm values file that will be used for the installation of operators' + cand --operator-values 'Path to a Helm values file that will be used for the installation of operators' cand --helm-repo-stable 'Provide a custom Helm stable repository URL' cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' @@ -247,6 +263,8 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --stack-file 'Provide one or more additional (custom) stack file(s)' cand -r 'Provide one or more additional (custom) release file(s)' cand --release-file 'Provide one or more additional (custom) release file(s)' + cand -f 'Path to a Helm values file that will be used for the installation of operators' + cand --operator-values 'Path to a Helm values file that will be used for the installation of operators' cand --helm-repo-stable 'Provide a custom Helm stable repository URL' cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' @@ -269,6 +287,8 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --stack-file 'Provide one or more additional (custom) stack file(s)' cand -r 'Provide one or more additional (custom) release file(s)' cand --release-file 'Provide one or more additional (custom) release file(s)' + cand -f 'Path to a Helm values file that will be used for the installation of operators' + cand --operator-values 'Path to a Helm values file that will be used for the installation of operators' cand --helm-repo-stable 'Provide a custom Helm stable repository URL' cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' @@ -300,6 +320,8 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --stack-file 'Provide one or more additional (custom) stack file(s)' cand -r 'Provide one or more additional (custom) release file(s)' cand --release-file 'Provide one or more additional (custom) release file(s)' + cand -f 'Path to a Helm values file that will be used for the installation of operators' + cand --operator-values 'Path to a Helm values file that will be used for the installation of operators' cand --helm-repo-stable 'Provide a custom Helm stable repository URL' cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' @@ -322,6 +344,8 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --stack-file 'Provide one or more additional (custom) stack file(s)' cand -r 'Provide one or more additional (custom) release file(s)' cand --release-file 'Provide one or more additional (custom) release file(s)' + cand -f 'Path to a Helm values file that will be used for the installation of operators' + cand --operator-values 'Path to a Helm values file that will be used for the installation of operators' cand --helm-repo-stable 'Provide a custom Helm stable repository URL' cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' @@ -348,6 +372,8 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --stack-file 'Provide one or more additional (custom) stack file(s)' cand -r 'Provide one or more additional (custom) release file(s)' cand --release-file 'Provide one or more additional (custom) release file(s)' + cand -f 'Path to a Helm values file that will be used for the installation of operators' + cand --operator-values 'Path to a Helm values file that will be used for the installation of operators' cand --helm-repo-stable 'Provide a custom Helm stable repository URL' cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' @@ -389,6 +415,8 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --stack-file 'Provide one or more additional (custom) stack file(s)' cand -r 'Provide one or more additional (custom) release file(s)' cand --release-file 'Provide one or more additional (custom) release file(s)' + cand -f 'Path to a Helm values file that will be used for the installation of operators' + cand --operator-values 'Path to a Helm values file that will be used for the installation of operators' cand --helm-repo-stable 'Provide a custom Helm stable repository URL' cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' @@ -416,6 +444,8 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --stack-file 'Provide one or more additional (custom) stack file(s)' cand -r 'Provide one or more additional (custom) release file(s)' cand --release-file 'Provide one or more additional (custom) release file(s)' + cand -f 'Path to a Helm values file that will be used for the installation of operators' + cand --operator-values 'Path to a Helm values file that will be used for the installation of operators' cand --helm-repo-stable 'Provide a custom Helm stable repository URL' cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' @@ -439,6 +469,8 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --stack-file 'Provide one or more additional (custom) stack file(s)' cand -r 'Provide one or more additional (custom) release file(s)' cand --release-file 'Provide one or more additional (custom) release file(s)' + cand -f 'Path to a Helm values file that will be used for the installation of operators' + cand --operator-values 'Path to a Helm values file that will be used for the installation of operators' cand --helm-repo-stable 'Provide a custom Helm stable repository URL' cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' @@ -472,6 +504,8 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --stack-file 'Provide one or more additional (custom) stack file(s)' cand -r 'Provide one or more additional (custom) release file(s)' cand --release-file 'Provide one or more additional (custom) release file(s)' + cand -f 'Path to a Helm values file that will be used for the installation of operators' + cand --operator-values 'Path to a Helm values file that will be used for the installation of operators' cand --helm-repo-stable 'Provide a custom Helm stable repository URL' cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' @@ -507,6 +541,8 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --stack-file 'Provide one or more additional (custom) stack file(s)' cand -r 'Provide one or more additional (custom) release file(s)' cand --release-file 'Provide one or more additional (custom) release file(s)' + cand -f 'Path to a Helm values file that will be used for the installation of operators' + cand --operator-values 'Path to a Helm values file that will be used for the installation of operators' cand --helm-repo-stable 'Provide a custom Helm stable repository URL' cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' @@ -532,6 +568,8 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --stack-file 'Provide one or more additional (custom) stack file(s)' cand -r 'Provide one or more additional (custom) release file(s)' cand --release-file 'Provide one or more additional (custom) release file(s)' + cand -f 'Path to a Helm values file that will be used for the installation of operators' + cand --operator-values 'Path to a Helm values file that will be used for the installation of operators' cand --helm-repo-stable 'Provide a custom Helm stable repository URL' cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' @@ -559,6 +597,8 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --stack-file 'Provide one or more additional (custom) stack file(s)' cand -r 'Provide one or more additional (custom) release file(s)' cand --release-file 'Provide one or more additional (custom) release file(s)' + cand -f 'Path to a Helm values file that will be used for the installation of operators' + cand --operator-values 'Path to a Helm values file that will be used for the installation of operators' cand --helm-repo-stable 'Provide a custom Helm stable repository URL' cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' @@ -591,6 +631,8 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --stack-file 'Provide one or more additional (custom) stack file(s)' cand -r 'Provide one or more additional (custom) release file(s)' cand --release-file 'Provide one or more additional (custom) release file(s)' + cand -f 'Path to a Helm values file that will be used for the installation of operators' + cand --operator-values 'Path to a Helm values file that will be used for the installation of operators' cand --helm-repo-stable 'Provide a custom Helm stable repository URL' cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' @@ -618,6 +660,8 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --stack-file 'Provide one or more additional (custom) stack file(s)' cand -r 'Provide one or more additional (custom) release file(s)' cand --release-file 'Provide one or more additional (custom) release file(s)' + cand -f 'Path to a Helm values file that will be used for the installation of operators' + cand --operator-values 'Path to a Helm values file that will be used for the installation of operators' cand --helm-repo-stable 'Provide a custom Helm stable repository URL' cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' @@ -641,6 +685,8 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --stack-file 'Provide one or more additional (custom) stack file(s)' cand -r 'Provide one or more additional (custom) release file(s)' cand --release-file 'Provide one or more additional (custom) release file(s)' + cand -f 'Path to a Helm values file that will be used for the installation of operators' + cand --operator-values 'Path to a Helm values file that will be used for the installation of operators' cand --helm-repo-stable 'Provide a custom Helm stable repository URL' cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' @@ -674,6 +720,8 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --stack-file 'Provide one or more additional (custom) stack file(s)' cand -r 'Provide one or more additional (custom) release file(s)' cand --release-file 'Provide one or more additional (custom) release file(s)' + cand -f 'Path to a Helm values file that will be used for the installation of operators' + cand --operator-values 'Path to a Helm values file that will be used for the installation of operators' cand --helm-repo-stable 'Provide a custom Helm stable repository URL' cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' @@ -709,6 +757,8 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --stack-file 'Provide one or more additional (custom) stack file(s)' cand -r 'Provide one or more additional (custom) release file(s)' cand --release-file 'Provide one or more additional (custom) release file(s)' + cand -f 'Path to a Helm values file that will be used for the installation of operators' + cand --operator-values 'Path to a Helm values file that will be used for the installation of operators' cand --helm-repo-stable 'Provide a custom Helm stable repository URL' cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' @@ -735,6 +785,8 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --stack-file 'Provide one or more additional (custom) stack file(s)' cand -r 'Provide one or more additional (custom) release file(s)' cand --release-file 'Provide one or more additional (custom) release file(s)' + cand -f 'Path to a Helm values file that will be used for the installation of operators' + cand --operator-values 'Path to a Helm values file that will be used for the installation of operators' cand --helm-repo-stable 'Provide a custom Helm stable repository URL' cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' @@ -755,6 +807,8 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --stack-file 'Provide one or more additional (custom) stack file(s)' cand -r 'Provide one or more additional (custom) release file(s)' cand --release-file 'Provide one or more additional (custom) release file(s)' + cand -f 'Path to a Helm values file that will be used for the installation of operators' + cand --operator-values 'Path to a Helm values file that will be used for the installation of operators' cand --helm-repo-stable 'Provide a custom Helm stable repository URL' cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' @@ -775,6 +829,8 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --stack-file 'Provide one or more additional (custom) stack file(s)' cand -r 'Provide one or more additional (custom) release file(s)' cand --release-file 'Provide one or more additional (custom) release file(s)' + cand -f 'Path to a Helm values file that will be used for the installation of operators' + cand --operator-values 'Path to a Helm values file that will be used for the installation of operators' cand --helm-repo-stable 'Provide a custom Helm stable repository URL' cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' @@ -795,6 +851,8 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --stack-file 'Provide one or more additional (custom) stack file(s)' cand -r 'Provide one or more additional (custom) release file(s)' cand --release-file 'Provide one or more additional (custom) release file(s)' + cand -f 'Path to a Helm values file that will be used for the installation of operators' + cand --operator-values 'Path to a Helm values file that will be used for the installation of operators' cand --helm-repo-stable 'Provide a custom Helm stable repository URL' cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' @@ -815,6 +873,8 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --stack-file 'Provide one or more additional (custom) stack file(s)' cand -r 'Provide one or more additional (custom) release file(s)' cand --release-file 'Provide one or more additional (custom) release file(s)' + cand -f 'Path to a Helm values file that will be used for the installation of operators' + cand --operator-values 'Path to a Helm values file that will be used for the installation of operators' cand --helm-repo-stable 'Provide a custom Helm stable repository URL' cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' @@ -855,6 +915,8 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --stack-file 'Provide one or more additional (custom) stack file(s)' cand -r 'Provide one or more additional (custom) release file(s)' cand --release-file 'Provide one or more additional (custom) release file(s)' + cand -f 'Path to a Helm values file that will be used for the installation of operators' + cand --operator-values 'Path to a Helm values file that will be used for the installation of operators' cand --helm-repo-stable 'Provide a custom Helm stable repository URL' cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' @@ -878,6 +940,8 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --stack-file 'Provide one or more additional (custom) stack file(s)' cand -r 'Provide one or more additional (custom) release file(s)' cand --release-file 'Provide one or more additional (custom) release file(s)' + cand -f 'Path to a Helm values file that will be used for the installation of operators' + cand --operator-values 'Path to a Helm values file that will be used for the installation of operators' cand --helm-repo-stable 'Provide a custom Helm stable repository URL' cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' @@ -898,6 +962,8 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --stack-file 'Provide one or more additional (custom) stack file(s)' cand -r 'Provide one or more additional (custom) release file(s)' cand --release-file 'Provide one or more additional (custom) release file(s)' + cand -f 'Path to a Helm values file that will be used for the installation of operators' + cand --operator-values 'Path to a Helm values file that will be used for the installation of operators' cand --helm-repo-stable 'Provide a custom Helm stable repository URL' cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' @@ -936,6 +1002,8 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --stack-file 'Provide one or more additional (custom) stack file(s)' cand -r 'Provide one or more additional (custom) release file(s)' cand --release-file 'Provide one or more additional (custom) release file(s)' + cand -f 'Path to a Helm values file that will be used for the installation of operators' + cand --operator-values 'Path to a Helm values file that will be used for the installation of operators' cand --helm-repo-stable 'Provide a custom Helm stable repository URL' cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' @@ -956,6 +1024,8 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --stack-file 'Provide one or more additional (custom) stack file(s)' cand -r 'Provide one or more additional (custom) release file(s)' cand --release-file 'Provide one or more additional (custom) release file(s)' + cand -f 'Path to a Helm values file that will be used for the installation of operators' + cand --operator-values 'Path to a Helm values file that will be used for the installation of operators' cand --helm-repo-stable 'Provide a custom Helm stable repository URL' cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' @@ -978,6 +1048,8 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --stack-file 'Provide one or more additional (custom) stack file(s)' cand -r 'Provide one or more additional (custom) release file(s)' cand --release-file 'Provide one or more additional (custom) release file(s)' + cand -f 'Path to a Helm values file that will be used for the installation of operators' + cand --operator-values 'Path to a Helm values file that will be used for the installation of operators' cand --helm-repo-stable 'Provide a custom Helm stable repository URL' cand --helm-repo-test 'Provide a custom Helm test repository URL' cand --helm-repo-dev 'Provide a custom Helm dev repository URL' diff --git a/extra/completions/stackablectl.fish b/extra/completions/stackablectl.fish index 6c090ca3..ba0bb555 100644 --- a/extra/completions/stackablectl.fish +++ b/extra/completions/stackablectl.fish @@ -1,6 +1,6 @@ # Print an optspec for argparse to handle cmd's options that are independent of any subcommand. function __fish_stackablectl_global_optspecs - string join \n l/log-level= no-cache d/demo-file= s/stack-file= r/release-file= helm-repo-stable= helm-repo-test= helm-repo-dev= chart-source= listener-class-preset= h/help V/version + string join \n l/log-level= no-cache d/demo-file= s/stack-file= r/release-file= f/operator-values= helm-repo-stable= helm-repo-test= helm-repo-dev= chart-source= listener-class-preset= h/help V/version end function __fish_stackablectl_needs_command @@ -28,6 +28,7 @@ complete -c stackablectl -n "__fish_stackablectl_needs_command" -s l -l log-leve complete -c stackablectl -n "__fish_stackablectl_needs_command" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_needs_command" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_needs_command" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_needs_command" -s f -l operator-values -d 'Path to a Helm values file that will be used for the installation of operators' -r -F complete -c stackablectl -n "__fish_stackablectl_needs_command" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_needs_command" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_needs_command" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f @@ -53,6 +54,7 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and not __fish_seen_subcommand_from list describe install uninstall installed help" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and not __fish_seen_subcommand_from list describe install uninstall installed help" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and not __fish_seen_subcommand_from list describe install uninstall installed help" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and not __fish_seen_subcommand_from list describe install uninstall installed help" -s f -l operator-values -d 'Path to a Helm values file that will be used for the installation of operators' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and not __fish_seen_subcommand_from list describe install uninstall installed help" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and not __fish_seen_subcommand_from list describe install uninstall installed help" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and not __fish_seen_subcommand_from list describe install uninstall installed help" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f @@ -78,6 +80,7 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from list" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from list" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from list" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from list" -s f -l operator-values -d 'Path to a Helm values file that will be used for the installation of operators' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from list" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from list" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from list" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f @@ -97,6 +100,7 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from describe" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from describe" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from describe" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from describe" -s f -l operator-values -d 'Path to a Helm values file that will be used for the installation of operators' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from describe" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from describe" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from describe" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f @@ -118,6 +122,7 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from install" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from install" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from install" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from install" -s f -l operator-values -d 'Path to a Helm values file that will be used for the installation of operators' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from install" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from install" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from install" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f @@ -134,6 +139,7 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from uninstall" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from uninstall" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from uninstall" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from uninstall" -s f -l operator-values -d 'Path to a Helm values file that will be used for the installation of operators' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from uninstall" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from uninstall" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from uninstall" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f @@ -154,6 +160,7 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from installed" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from installed" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from installed" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from installed" -s f -l operator-values -d 'Path to a Helm values file that will be used for the installation of operators' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from installed" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from installed" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand operator; and __fish_seen_subcommand_from installed" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f @@ -175,6 +182,7 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and n complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall upgrade help" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall upgrade help" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall upgrade help" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall upgrade help" -s f -l operator-values -d 'Path to a Helm values file that will be used for the installation of operators' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall upgrade help" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall upgrade help" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and not __fish_seen_subcommand_from list describe install uninstall upgrade help" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f @@ -200,6 +208,7 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and _ complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from list" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from list" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from list" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from list" -s f -l operator-values -d 'Path to a Helm values file that will be used for the installation of operators' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from list" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from list" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from list" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f @@ -219,6 +228,7 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and _ complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from describe" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from describe" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from describe" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from describe" -s f -l operator-values -d 'Path to a Helm values file that will be used for the installation of operators' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from describe" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from describe" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from describe" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f @@ -242,6 +252,7 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and _ complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from install" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from install" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from install" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from install" -s f -l operator-values -d 'Path to a Helm values file that will be used for the installation of operators' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from install" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from install" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from install" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f @@ -258,6 +269,7 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and _ complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from uninstall" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from uninstall" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from uninstall" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from uninstall" -s f -l operator-values -d 'Path to a Helm values file that will be used for the installation of operators' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from uninstall" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from uninstall" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from uninstall" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f @@ -276,6 +288,7 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and _ complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from upgrade" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from upgrade" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from upgrade" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from upgrade" -s f -l operator-values -d 'Path to a Helm values file that will be used for the installation of operators' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from upgrade" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from upgrade" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from upgrade" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f @@ -298,6 +311,7 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -s f -l operator-values -d 'Path to a Helm values file that will be used for the installation of operators' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f @@ -322,6 +336,7 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from list" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from list" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from list" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from list" -s f -l operator-values -d 'Path to a Helm values file that will be used for the installation of operators' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from list" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from list" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from list" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f @@ -342,6 +357,7 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from describe" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from describe" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from describe" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from describe" -s f -l operator-values -d 'Path to a Helm values file that will be used for the installation of operators' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from describe" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from describe" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from describe" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f @@ -367,6 +383,7 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from install" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from install" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from install" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from install" -s f -l operator-values -d 'Path to a Helm values file that will be used for the installation of operators' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from install" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from install" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from install" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f @@ -387,6 +404,7 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and not __fish_seen_subcommand_from credentials list help" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and not __fish_seen_subcommand_from credentials list help" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and not __fish_seen_subcommand_from credentials list help" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and not __fish_seen_subcommand_from credentials list help" -s f -l operator-values -d 'Path to a Helm values file that will be used for the installation of operators' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and not __fish_seen_subcommand_from credentials list help" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and not __fish_seen_subcommand_from credentials list help" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and not __fish_seen_subcommand_from credentials list help" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f @@ -406,6 +424,7 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from credentials" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from credentials" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from credentials" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from credentials" -s f -l operator-values -d 'Path to a Helm values file that will be used for the installation of operators' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from credentials" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from credentials" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from credentials" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f @@ -427,6 +446,7 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from list" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from list" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from list" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from list" -s f -l operator-values -d 'Path to a Helm values file that will be used for the installation of operators' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from list" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from list" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from list" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f @@ -446,6 +466,7 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install help" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install help" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install help" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install help" -s f -l operator-values -d 'Path to a Helm values file that will be used for the installation of operators' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install help" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install help" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install help" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f @@ -470,6 +491,7 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fi complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from list" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from list" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from list" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from list" -s f -l operator-values -d 'Path to a Helm values file that will be used for the installation of operators' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from list" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from list" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from list" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f @@ -490,6 +512,7 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fi complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from describe" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from describe" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from describe" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from describe" -s f -l operator-values -d 'Path to a Helm values file that will be used for the installation of operators' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from describe" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from describe" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from describe" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f @@ -515,6 +538,7 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fi complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from install" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from install" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from install" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from install" -s f -l operator-values -d 'Path to a Helm values file that will be used for the installation of operators' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from install" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from install" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from install" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f @@ -535,6 +559,7 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; a complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and not __fish_seen_subcommand_from bash elvish fish nushell zsh help" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and not __fish_seen_subcommand_from bash elvish fish nushell zsh help" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and not __fish_seen_subcommand_from bash elvish fish nushell zsh help" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and not __fish_seen_subcommand_from bash elvish fish nushell zsh help" -s f -l operator-values -d 'Path to a Helm values file that will be used for the installation of operators' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and not __fish_seen_subcommand_from bash elvish fish nushell zsh help" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and not __fish_seen_subcommand_from bash elvish fish nushell zsh help" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and not __fish_seen_subcommand_from bash elvish fish nushell zsh help" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f @@ -556,6 +581,7 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; a complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from bash" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from bash" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from bash" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from bash" -s f -l operator-values -d 'Path to a Helm values file that will be used for the installation of operators' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from bash" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from bash" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from bash" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f @@ -571,6 +597,7 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; a complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from elvish" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from elvish" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from elvish" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from elvish" -s f -l operator-values -d 'Path to a Helm values file that will be used for the installation of operators' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from elvish" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from elvish" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from elvish" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f @@ -586,6 +613,7 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; a complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from fish" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from fish" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from fish" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from fish" -s f -l operator-values -d 'Path to a Helm values file that will be used for the installation of operators' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from fish" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from fish" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from fish" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f @@ -601,6 +629,7 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; a complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from nushell" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from nushell" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from nushell" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from nushell" -s f -l operator-values -d 'Path to a Helm values file that will be used for the installation of operators' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from nushell" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from nushell" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from nushell" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f @@ -616,6 +645,7 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; a complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from zsh" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from zsh" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from zsh" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from zsh" -s f -l operator-values -d 'Path to a Helm values file that will be used for the installation of operators' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from zsh" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from zsh" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and __fish_seen_subcommand_from zsh" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f @@ -637,6 +667,7 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and not complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and not __fish_seen_subcommand_from list clean help" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and not __fish_seen_subcommand_from list clean help" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and not __fish_seen_subcommand_from list clean help" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and not __fish_seen_subcommand_from list clean help" -s f -l operator-values -d 'Path to a Helm values file that will be used for the installation of operators' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and not __fish_seen_subcommand_from list clean help" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and not __fish_seen_subcommand_from list clean help" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and not __fish_seen_subcommand_from list clean help" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f @@ -655,6 +686,7 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __f complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __fish_seen_subcommand_from list" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __fish_seen_subcommand_from list" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __fish_seen_subcommand_from list" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __fish_seen_subcommand_from list" -s f -l operator-values -d 'Path to a Helm values file that will be used for the installation of operators' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __fish_seen_subcommand_from list" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __fish_seen_subcommand_from list" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __fish_seen_subcommand_from list" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f @@ -670,6 +702,7 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __f complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __fish_seen_subcommand_from clean" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __fish_seen_subcommand_from clean" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __fish_seen_subcommand_from clean" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __fish_seen_subcommand_from clean" -s f -l operator-values -d 'Path to a Helm values file that will be used for the installation of operators' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __fish_seen_subcommand_from clean" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __fish_seen_subcommand_from clean" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand cache; and __fish_seen_subcommand_from clean" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f @@ -692,6 +725,7 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand experimental-d complete -c stackablectl -n "__fish_stackablectl_using_subcommand experimental-debug" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand experimental-debug" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand experimental-debug" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand experimental-debug" -s f -l operator-values -d 'Path to a Helm values file that will be used for the installation of operators' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand experimental-debug" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand experimental-debug" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand experimental-debug" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f @@ -707,6 +741,7 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and n complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and not __fish_seen_subcommand_from check help" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and not __fish_seen_subcommand_from check help" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and not __fish_seen_subcommand_from check help" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and not __fish_seen_subcommand_from check help" -s f -l operator-values -d 'Path to a Helm values file that will be used for the installation of operators' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and not __fish_seen_subcommand_from check help" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and not __fish_seen_subcommand_from check help" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and not __fish_seen_subcommand_from check help" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f @@ -724,6 +759,7 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and _ complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and __fish_seen_subcommand_from check" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and __fish_seen_subcommand_from check" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and __fish_seen_subcommand_from check" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and __fish_seen_subcommand_from check" -s f -l operator-values -d 'Path to a Helm values file that will be used for the installation of operators' -r -F complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and __fish_seen_subcommand_from check" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and __fish_seen_subcommand_from check" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f complete -c stackablectl -n "__fish_stackablectl_using_subcommand version; and __fish_seen_subcommand_from check" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f diff --git a/extra/completions/stackablectl.nu b/extra/completions/stackablectl.nu index 3bf0c67a..374f7691 100644 --- a/extra/completions/stackablectl.nu +++ b/extra/completions/stackablectl.nu @@ -15,6 +15,7 @@ module completions { --demo-file(-d): path # Provide one or more additional (custom) demo file(s) --stack-file(-s): path # Provide one or more additional (custom) stack file(s) --release-file(-r): path # Provide one or more additional (custom) release file(s) + --operator-values(-f): path # Path to a Helm values file that will be used for the installation of operators --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -39,6 +40,7 @@ module completions { --demo-file(-d): path # Provide one or more additional (custom) demo file(s) --stack-file(-s): path # Provide one or more additional (custom) stack file(s) --release-file(-r): path # Provide one or more additional (custom) release file(s) + --operator-values(-f): path # Path to a Helm values file that will be used for the installation of operators --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -68,6 +70,7 @@ module completions { --demo-file(-d): path # Provide one or more additional (custom) demo file(s) --stack-file(-s): path # Provide one or more additional (custom) stack file(s) --release-file(-r): path # Provide one or more additional (custom) release file(s) + --operator-values(-f): path # Path to a Helm values file that will be used for the installation of operators --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -98,6 +101,7 @@ module completions { --demo-file(-d): path # Provide one or more additional (custom) demo file(s) --stack-file(-s): path # Provide one or more additional (custom) stack file(s) --release-file(-r): path # Provide one or more additional (custom) release file(s) + --operator-values(-f): path # Path to a Helm values file that will be used for the installation of operators --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -133,6 +137,7 @@ module completions { --demo-file(-d): path # Provide one or more additional (custom) demo file(s) --stack-file(-s): path # Provide one or more additional (custom) stack file(s) --release-file(-r): path # Provide one or more additional (custom) release file(s) + --operator-values(-f): path # Path to a Helm values file that will be used for the installation of operators --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -160,6 +165,7 @@ module completions { --demo-file(-d): path # Provide one or more additional (custom) demo file(s) --stack-file(-s): path # Provide one or more additional (custom) stack file(s) --release-file(-r): path # Provide one or more additional (custom) release file(s) + --operator-values(-f): path # Path to a Helm values file that will be used for the installation of operators --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -191,6 +197,7 @@ module completions { --demo-file(-d): path # Provide one or more additional (custom) demo file(s) --stack-file(-s): path # Provide one or more additional (custom) stack file(s) --release-file(-r): path # Provide one or more additional (custom) release file(s) + --operator-values(-f): path # Path to a Helm values file that will be used for the installation of operators --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -243,6 +250,7 @@ module completions { --demo-file(-d): path # Provide one or more additional (custom) demo file(s) --stack-file(-s): path # Provide one or more additional (custom) stack file(s) --release-file(-r): path # Provide one or more additional (custom) release file(s) + --operator-values(-f): path # Path to a Helm values file that will be used for the installation of operators --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -272,6 +280,7 @@ module completions { --demo-file(-d): path # Provide one or more additional (custom) demo file(s) --stack-file(-s): path # Provide one or more additional (custom) stack file(s) --release-file(-r): path # Provide one or more additional (custom) release file(s) + --operator-values(-f): path # Path to a Helm values file that will be used for the installation of operators --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -302,6 +311,7 @@ module completions { --demo-file(-d): path # Provide one or more additional (custom) demo file(s) --stack-file(-s): path # Provide one or more additional (custom) stack file(s) --release-file(-r): path # Provide one or more additional (custom) release file(s) + --operator-values(-f): path # Path to a Helm values file that will be used for the installation of operators --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -339,6 +349,7 @@ module completions { --demo-file(-d): path # Provide one or more additional (custom) demo file(s) --stack-file(-s): path # Provide one or more additional (custom) stack file(s) --release-file(-r): path # Provide one or more additional (custom) release file(s) + --operator-values(-f): path # Path to a Helm values file that will be used for the installation of operators --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -366,6 +377,7 @@ module completions { --demo-file(-d): path # Provide one or more additional (custom) demo file(s) --stack-file(-s): path # Provide one or more additional (custom) stack file(s) --release-file(-r): path # Provide one or more additional (custom) release file(s) + --operator-values(-f): path # Path to a Helm values file that will be used for the installation of operators --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -395,6 +407,7 @@ module completions { --demo-file(-d): path # Provide one or more additional (custom) demo file(s) --stack-file(-s): path # Provide one or more additional (custom) stack file(s) --release-file(-r): path # Provide one or more additional (custom) release file(s) + --operator-values(-f): path # Path to a Helm values file that will be used for the installation of operators --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -448,6 +461,7 @@ module completions { --demo-file(-d): path # Provide one or more additional (custom) demo file(s) --stack-file(-s): path # Provide one or more additional (custom) stack file(s) --release-file(-r): path # Provide one or more additional (custom) release file(s) + --operator-values(-f): path # Path to a Helm values file that will be used for the installation of operators --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -478,6 +492,7 @@ module completions { --demo-file(-d): path # Provide one or more additional (custom) demo file(s) --stack-file(-s): path # Provide one or more additional (custom) stack file(s) --release-file(-r): path # Provide one or more additional (custom) release file(s) + --operator-values(-f): path # Path to a Helm values file that will be used for the installation of operators --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -509,6 +524,7 @@ module completions { --demo-file(-d): path # Provide one or more additional (custom) demo file(s) --stack-file(-s): path # Provide one or more additional (custom) stack file(s) --release-file(-r): path # Provide one or more additional (custom) release file(s) + --operator-values(-f): path # Path to a Helm values file that will be used for the installation of operators --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -550,6 +566,7 @@ module completions { --demo-file(-d): path # Provide one or more additional (custom) demo file(s) --stack-file(-s): path # Provide one or more additional (custom) stack file(s) --release-file(-r): path # Provide one or more additional (custom) release file(s) + --operator-values(-f): path # Path to a Helm values file that will be used for the installation of operators --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -594,6 +611,7 @@ module completions { --demo-file(-d): path # Provide one or more additional (custom) demo file(s) --stack-file(-s): path # Provide one or more additional (custom) stack file(s) --release-file(-r): path # Provide one or more additional (custom) release file(s) + --operator-values(-f): path # Path to a Helm values file that will be used for the installation of operators --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -621,6 +639,7 @@ module completions { --demo-file(-d): path # Provide one or more additional (custom) demo file(s) --stack-file(-s): path # Provide one or more additional (custom) stack file(s) --release-file(-r): path # Provide one or more additional (custom) release file(s) + --operator-values(-f): path # Path to a Helm values file that will be used for the installation of operators --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -654,6 +673,7 @@ module completions { --demo-file(-d): path # Provide one or more additional (custom) demo file(s) --stack-file(-s): path # Provide one or more additional (custom) stack file(s) --release-file(-r): path # Provide one or more additional (custom) release file(s) + --operator-values(-f): path # Path to a Helm values file that will be used for the installation of operators --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -695,6 +715,7 @@ module completions { --demo-file(-d): path # Provide one or more additional (custom) demo file(s) --stack-file(-s): path # Provide one or more additional (custom) stack file(s) --release-file(-r): path # Provide one or more additional (custom) release file(s) + --operator-values(-f): path # Path to a Helm values file that will be used for the installation of operators --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -725,6 +746,7 @@ module completions { --demo-file(-d): path # Provide one or more additional (custom) demo file(s) --stack-file(-s): path # Provide one or more additional (custom) stack file(s) --release-file(-r): path # Provide one or more additional (custom) release file(s) + --operator-values(-f): path # Path to a Helm values file that will be used for the installation of operators --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -756,6 +778,7 @@ module completions { --demo-file(-d): path # Provide one or more additional (custom) demo file(s) --stack-file(-s): path # Provide one or more additional (custom) stack file(s) --release-file(-r): path # Provide one or more additional (custom) release file(s) + --operator-values(-f): path # Path to a Helm values file that will be used for the installation of operators --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -797,6 +820,7 @@ module completions { --demo-file(-d): path # Provide one or more additional (custom) demo file(s) --stack-file(-s): path # Provide one or more additional (custom) stack file(s) --release-file(-r): path # Provide one or more additional (custom) release file(s) + --operator-values(-f): path # Path to a Helm values file that will be used for the installation of operators --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -841,6 +865,7 @@ module completions { --demo-file(-d): path # Provide one or more additional (custom) demo file(s) --stack-file(-s): path # Provide one or more additional (custom) stack file(s) --release-file(-r): path # Provide one or more additional (custom) release file(s) + --operator-values(-f): path # Path to a Helm values file that will be used for the installation of operators --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -865,6 +890,7 @@ module completions { --demo-file(-d): path # Provide one or more additional (custom) demo file(s) --stack-file(-s): path # Provide one or more additional (custom) stack file(s) --release-file(-r): path # Provide one or more additional (custom) release file(s) + --operator-values(-f): path # Path to a Helm values file that will be used for the installation of operators --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -889,6 +915,7 @@ module completions { --demo-file(-d): path # Provide one or more additional (custom) demo file(s) --stack-file(-s): path # Provide one or more additional (custom) stack file(s) --release-file(-r): path # Provide one or more additional (custom) release file(s) + --operator-values(-f): path # Path to a Helm values file that will be used for the installation of operators --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -913,6 +940,7 @@ module completions { --demo-file(-d): path # Provide one or more additional (custom) demo file(s) --stack-file(-s): path # Provide one or more additional (custom) stack file(s) --release-file(-r): path # Provide one or more additional (custom) release file(s) + --operator-values(-f): path # Path to a Helm values file that will be used for the installation of operators --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -937,6 +965,7 @@ module completions { --demo-file(-d): path # Provide one or more additional (custom) demo file(s) --stack-file(-s): path # Provide one or more additional (custom) stack file(s) --release-file(-r): path # Provide one or more additional (custom) release file(s) + --operator-values(-f): path # Path to a Helm values file that will be used for the installation of operators --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -961,6 +990,7 @@ module completions { --demo-file(-d): path # Provide one or more additional (custom) demo file(s) --stack-file(-s): path # Provide one or more additional (custom) stack file(s) --release-file(-r): path # Provide one or more additional (custom) release file(s) + --operator-values(-f): path # Path to a Helm values file that will be used for the installation of operators --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -1013,6 +1043,7 @@ module completions { --demo-file(-d): path # Provide one or more additional (custom) demo file(s) --stack-file(-s): path # Provide one or more additional (custom) stack file(s) --release-file(-r): path # Provide one or more additional (custom) release file(s) + --operator-values(-f): path # Path to a Helm values file that will be used for the installation of operators --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -1037,6 +1068,7 @@ module completions { --demo-file(-d): path # Provide one or more additional (custom) demo file(s) --stack-file(-s): path # Provide one or more additional (custom) stack file(s) --release-file(-r): path # Provide one or more additional (custom) release file(s) + --operator-values(-f): path # Path to a Helm values file that will be used for the installation of operators --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -1063,6 +1095,7 @@ module completions { --demo-file(-d): path # Provide one or more additional (custom) demo file(s) --stack-file(-s): path # Provide one or more additional (custom) stack file(s) --release-file(-r): path # Provide one or more additional (custom) release file(s) + --operator-values(-f): path # Path to a Helm values file that will be used for the installation of operators --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -1108,6 +1141,7 @@ module completions { --demo-file(-d): path # Provide one or more additional (custom) demo file(s) --stack-file(-s): path # Provide one or more additional (custom) stack file(s) --release-file(-r): path # Provide one or more additional (custom) release file(s) + --operator-values(-f): path # Path to a Helm values file that will be used for the installation of operators --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -1132,6 +1166,7 @@ module completions { --demo-file(-d): path # Provide one or more additional (custom) demo file(s) --stack-file(-s): path # Provide one or more additional (custom) stack file(s) --release-file(-r): path # Provide one or more additional (custom) release file(s) + --operator-values(-f): path # Path to a Helm values file that will be used for the installation of operators --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL @@ -1156,6 +1191,7 @@ module completions { --demo-file(-d): path # Provide one or more additional (custom) demo file(s) --stack-file(-s): path # Provide one or more additional (custom) stack file(s) --release-file(-r): path # Provide one or more additional (custom) release file(s) + --operator-values(-f): path # Path to a Helm values file that will be used for the installation of operators --helm-repo-stable: string # Provide a custom Helm stable repository URL --helm-repo-test: string # Provide a custom Helm test repository URL --helm-repo-dev: string # Provide a custom Helm dev repository URL diff --git a/extra/man/stackablectl.1 b/extra/man/stackablectl.1 index 19b9c9f3..a16b5858 100644 --- a/extra/man/stackablectl.1 +++ b/extra/man/stackablectl.1 @@ -4,7 +4,7 @@ .SH NAME stackablectl \- Command line tool to interact with the Stackable Data Platform .SH SYNOPSIS -\fBstackablectl\fR [\fB\-l\fR|\fB\-\-log\-level\fR] [\fB\-\-no\-cache\fR] [\fB\-d\fR|\fB\-\-demo\-file\fR] [\fB\-s\fR|\fB\-\-stack\-file\fR] [\fB\-r\fR|\fB\-\-release\-file\fR] [\fB\-\-helm\-repo\-stable\fR] [\fB\-\-helm\-repo\-test\fR] [\fB\-\-helm\-repo\-dev\fR] [\fB\-\-chart\-source\fR] [\fB\-\-listener\-class\-preset\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fB\-V\fR|\fB\-\-version\fR] <\fIsubcommands\fR> +\fBstackablectl\fR [\fB\-l\fR|\fB\-\-log\-level\fR] [\fB\-\-no\-cache\fR] [\fB\-d\fR|\fB\-\-demo\-file\fR] [\fB\-s\fR|\fB\-\-stack\-file\fR] [\fB\-r\fR|\fB\-\-release\-file\fR] [\fB\-f\fR|\fB\-\-operator\-values\fR] [\fB\-\-helm\-repo\-stable\fR] [\fB\-\-helm\-repo\-test\fR] [\fB\-\-helm\-repo\-dev\fR] [\fB\-\-chart\-source\fR] [\fB\-\-listener\-class\-preset\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fB\-V\fR|\fB\-\-version\fR] <\fIsubcommands\fR> .SH DESCRIPTION Command line tool to interact with the Stackable Data Platform .SH OPTIONS @@ -58,6 +58,31 @@ definition will be used. Use "stackablectl [OPTIONS] \-r path/to/releases1.yaml \-r path/to/releases2.yaml" to provide multiple additional release files. +.TP +\fB\-f\fR, \fB\-\-operator\-values\fR \fI\fR +Path to a Helm values file that will be used for the installation of operators + +The file is a YAML file containing Helm values used to deploy operators. +Operator\-specific keys (e.g. \*(Aqairflow\-operator\*(Aq, \*(Aqzookeeper\-operator\*(Aq) map +to the Helm values for that operator. Use YAML anchors and aliases to share +values across operators. + +Example values file: + + airflow\-operator: + tolerations: &default\-tolerations + \- key: "example" + operator: "Exists" + effect: "NoSchedule" + podAnnotations: + example.com/team: "data\-engineering" + zookeeper\-operator: + tolerations: *default\-tolerations + podAnnotations: + example.com/team: "platform" + +Use "stackablectl [OPTIONS] \-f path/to/values.yaml" to provide a +values file. .SH "HELM REPOSITORY OPTIONS" .TP \fB\-\-helm\-repo\-stable\fR \fI\fR [default: https://repo.stackable.tech/repository/helm\-stable/] @@ -86,6 +111,8 @@ repo: index.yaml\-based repositories: resolution (dev, test, stable) is based on \fB\-\-listener\-class\-preset\fR \fI\fR Choose the ListenerClass preset (`none`, `ephemeral\-nodes` or `stable\-nodes`). +This takes precedence over values provided via the \*(Aq\-f/\-\-operator\-values\*(Aq flag. + This maps to the listener\-operator Helm Chart preset value, see [the listener\-operator documentation](https://docs.stackable.tech/home/nightly/listener\-operator/listenerclass/#presets) for details. .br diff --git a/rust/stackable-cockpit/src/platform/demo/params.rs b/rust/stackable-cockpit/src/platform/demo/params.rs index 5cb337de..84f54d2b 100644 --- a/rust/stackable-cockpit/src/platform/demo/params.rs +++ b/rust/stackable-cockpit/src/platform/demo/params.rs @@ -1,3 +1,4 @@ +use serde_yaml::Mapping; use stackable_operator::kvp::Labels; use crate::platform::operator::ChartSourceType; @@ -13,4 +14,5 @@ pub struct DemoInstallParameters { pub stack_labels: Labels, pub labels: Labels, pub chart_source: ChartSourceType, + pub operator_values: Mapping, } diff --git a/rust/stackable-cockpit/src/platform/demo/spec.rs b/rust/stackable-cockpit/src/platform/demo/spec.rs index 6c4c5589..96107d49 100644 --- a/rust/stackable-cockpit/src/platform/demo/spec.rs +++ b/rust/stackable-cockpit/src/platform/demo/spec.rs @@ -161,6 +161,7 @@ impl DemoSpec { stack_name: self.stack.clone(), demo_name: None, chart_source: install_parameters.chart_source.clone(), + operator_values: install_parameters.operator_values.clone(), }; stack diff --git a/rust/stackable-cockpit/src/platform/operator/listener_operator.rs b/rust/stackable-cockpit/src/platform/operator/listener_operator.rs index 81cec862..214a128a 100644 --- a/rust/stackable-cockpit/src/platform/operator/listener_operator.rs +++ b/rust/stackable-cockpit/src/platform/operator/listener_operator.rs @@ -1,4 +1,5 @@ use clap::ValueEnum; +use serde_yaml::Value; use snafu::ResultExt; use stackable_operator::{ k8s_openapi::api::core::v1::Node, @@ -18,13 +19,13 @@ pub enum ListenerClassPreset { } impl ListenerClassPreset { - pub fn as_helm_values(&self) -> String { + pub fn as_helm_value(&self) -> Value { let preset_value = match self { Self::None => "none", Self::StableNodes => "stable-nodes", Self::EphemeralNodes => "ephemeral-nodes", }; - format!("preset: {preset_value}") + Value::String(preset_value.to_string()) } } diff --git a/rust/stackable-cockpit/src/platform/operator/mod.rs b/rust/stackable-cockpit/src/platform/operator/mod.rs index c1dbf6f1..958b0239 100644 --- a/rust/stackable-cockpit/src/platform/operator/mod.rs +++ b/rust/stackable-cockpit/src/platform/operator/mod.rs @@ -3,6 +3,7 @@ use std::{fmt::Display, str::FromStr}; use listener_operator::LISTENER_CLASS_PRESET; use semver::Version; use serde::Serialize; +use serde_yaml::{Mapping, Value}; use snafu::{ResultExt, Snafu, ensure}; use tracing::{Span, info, instrument}; use tracing_indicatif::{indicatif_println, span_ext::IndicatifSpanExt}; @@ -196,6 +197,7 @@ impl OperatorSpec { &self, namespace: &str, chart_source: &ChartSourceType, + values: &Mapping, ) -> Result<(), helm::Error> { info!(operator = %self, "Installing operator"); Span::current() @@ -211,13 +213,22 @@ impl OperatorSpec { ChartSourceType::Repo => self.helm_repo_name(), }; - let mut helm_values = None; + let mut helm_values = values.clone(); if self.name == "listener" { - helm_values = Some( - LISTENER_CLASS_PRESET.get() - .expect("At this point LISTENER_CLASS_PRESET must be set by determine_and_store_listener_class_preset") - .as_helm_values() - ); + let preset = LISTENER_CLASS_PRESET + .get() + .expect("LISTENER_CLASS_PRESET must have been set") + .as_helm_value(); + helm_values.insert(Value::String("preset".to_string()), preset); + } + + let helm_values_yaml = if helm_values.is_empty() { + None + } else { + Some( + serde_yaml::to_string(&helm_values) + .expect("serializing a small YAML Mapping back to a YAML string can't fail"), + ) }; // Install using Helm @@ -228,7 +239,7 @@ impl OperatorSpec { chart_name: &helm_name, chart_source: &chart_source, }, - helm_values.as_deref(), + helm_values_yaml.as_deref(), namespace, true, )?; diff --git a/rust/stackable-cockpit/src/platform/release/spec.rs b/rust/stackable-cockpit/src/platform/release/spec.rs index 21a5ef82..c73887d9 100644 --- a/rust/stackable-cockpit/src/platform/release/spec.rs +++ b/rust/stackable-cockpit/src/platform/release/spec.rs @@ -2,6 +2,7 @@ use futures::{StreamExt as _, TryStreamExt}; use indexmap::IndexMap; use reqwest::StatusCode; use serde::{Deserialize, Serialize}; +use serde_yaml::Mapping; use snafu::{ResultExt, Snafu}; use tokio::task::JoinError; use tracing::{Instrument, Span, debug, info, instrument}; @@ -18,6 +19,7 @@ use crate::{ utils::{ k8s::{self, Client}, path::{IntoPathOrUrl as _, PathOrUrlParseError}, + yaml::values_for_operator, }, xfer::{self, processor::Text}, }; @@ -85,6 +87,7 @@ impl ReleaseSpec { exclude_products: &[String], namespace: &str, chart_source: &ChartSourceType, + operator_values: &Mapping, ) -> Result<()> { info!("Installing release"); Span::current().pb_set_style(&PROGRESS_BAR_STYLE); @@ -108,6 +111,7 @@ impl ReleaseSpec { let namespace = namespace.clone(); let chart_source = chart_source.clone(); + let operator_helm_values = values_for_operator(operator_values, &product_name); // Helm installs currently `block_in_place`, so we need to spawn each job onto a separate task to // get useful parallelism. tokio::spawn( @@ -122,7 +126,7 @@ impl ReleaseSpec { // Install operator operator - .install(&namespace, &chart_source) + .install(&namespace, &chart_source, &operator_helm_values) .context(HelmInstallSnafu)?; info!("Installed {product_name}-operator"); diff --git a/rust/stackable-cockpit/src/platform/stack/params.rs b/rust/stackable-cockpit/src/platform/stack/params.rs index 39eb12ed..0688eba2 100644 --- a/rust/stackable-cockpit/src/platform/stack/params.rs +++ b/rust/stackable-cockpit/src/platform/stack/params.rs @@ -1,3 +1,4 @@ +use serde_yaml::Mapping; use stackable_operator::kvp::Labels; use crate::platform::operator::ChartSourceType; @@ -14,4 +15,5 @@ pub struct StackInstallParameters { pub skip_release: bool, pub labels: Labels, pub chart_source: ChartSourceType, + pub operator_values: Mapping, } diff --git a/rust/stackable-cockpit/src/platform/stack/spec.rs b/rust/stackable-cockpit/src/platform/stack/spec.rs index c5fd2939..2bb39d62 100644 --- a/rust/stackable-cockpit/src/platform/stack/spec.rs +++ b/rust/stackable-cockpit/src/platform/stack/spec.rs @@ -1,4 +1,5 @@ use serde::{Deserialize, Serialize}; +use serde_yaml::Mapping; use snafu::{OptionExt, ResultExt, Snafu}; use tracing::{Span, debug, info, instrument, log::warn}; use tracing_indicatif::span_ext::IndicatifSpanExt as _; @@ -178,6 +179,7 @@ impl StackSpec { &install_parameters.operator_namespace, &install_parameters.stack_namespace, &install_parameters.chart_source, + &install_parameters.operator_values, ) .await?; } @@ -202,6 +204,7 @@ impl StackSpec { operator_namespace: &str, _namespace: &str, // TODO (@NickLarsenNZ): remove this field chart_source: &ChartSourceType, + operator_values: &Mapping, ) -> Result<(), Error> { info!(self.release, "Trying to install release"); Span::current().pb_set_message("Installing operators"); @@ -215,7 +218,13 @@ impl StackSpec { // Install the release release - .install(&self.operators, &[], operator_namespace, chart_source) + .install( + &self.operators, + &[], + operator_namespace, + chart_source, + operator_values, + ) .await .context(InstallReleaseSnafu) } diff --git a/rust/stackable-cockpit/src/utils/mod.rs b/rust/stackable-cockpit/src/utils/mod.rs index 1339f0c1..59a42c98 100644 --- a/rust/stackable-cockpit/src/utils/mod.rs +++ b/rust/stackable-cockpit/src/utils/mod.rs @@ -4,6 +4,7 @@ pub mod k8s; pub mod params; pub mod path; pub mod templating; +pub mod yaml; /// Returns the name of the operator used in the Helm repository. pub fn operator_chart_name(name: &str) -> String { diff --git a/rust/stackable-cockpit/src/utils/yaml.rs b/rust/stackable-cockpit/src/utils/yaml.rs new file mode 100644 index 00000000..486edd9b --- /dev/null +++ b/rust/stackable-cockpit/src/utils/yaml.rs @@ -0,0 +1,13 @@ +use serde_yaml::{Mapping, Value}; + +/// Extracts the Helm values for a specific operator from the operator values mapping. +/// +/// Looks up the operator-specific key (e.g. `airflow-operator`) and returns +/// the associated mapping, or an empty mapping if not found. +pub fn values_for_operator(operator_values: &Mapping, operator_name: &str) -> Mapping { + operator_values + .get(format!("{operator_name}-operator")) + .and_then(Value::as_mapping) + .cloned() + .unwrap_or_default() +} diff --git a/rust/stackablectl/README.md b/rust/stackablectl/README.md index cf48ffe4..d998a4bd 100644 --- a/rust/stackablectl/README.md +++ b/rust/stackablectl/README.md @@ -77,6 +77,31 @@ File options: Use "stackablectl [OPTIONS] -r path/to/releases1.yaml -r path/to/releases2.yaml" to provide multiple additional release files. + -f, --operator-values + Path to a Helm values file that will be used for the installation of operators + + The file is a YAML file containing Helm values used to deploy operators. + Operator-specific keys (e.g. 'airflow-operator', 'zookeeper-operator') map + to the Helm values for that operator. Use YAML anchors and aliases to share + values across operators. + + Example values file: + + airflow-operator: + tolerations: &default-tolerations + - key: "example" + operator: "Exists" + effect: "NoSchedule" + podAnnotations: + example.com/team: "data-engineering" + zookeeper-operator: + tolerations: *default-tolerations + podAnnotations: + example.com/team: "platform" + + Use "stackablectl [OPTIONS] -f path/to/values.yaml" to provide a + values file. + Helm repository options: --helm-repo-stable Provide a custom Helm stable repository URL @@ -106,6 +131,8 @@ Operator specific configurations: --listener-class-preset Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`). + This takes precedence over values provided via the '-f/--operator-values' flag. + This maps to the listener-operator Helm Chart preset value, see [the listener-operator documentation](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass/#presets) for details. [possible values: none, stable-nodes, ephemeral-nodes] diff --git a/rust/stackablectl/src/args/file.rs b/rust/stackablectl/src/args/file.rs index 18b54579..91000466 100644 --- a/rust/stackablectl/src/args/file.rs +++ b/rust/stackablectl/src/args/file.rs @@ -42,4 +42,33 @@ definition will be used. Use \"stackablectl [OPTIONS] -r path/to/releases1.yaml -r path/to/releases2.yaml\" to provide multiple additional release files.")] pub release_files: Vec, + + /// Path to a Helm values file that will be used for the installation of operators + #[arg(short = 'f', long, value_name = "VALUES_FILE", value_hint = ValueHint::FilePath, global = true)] + #[arg( + long_help = "Path to a Helm values file that will be used for the installation of operators + +The file is a YAML file containing Helm values used to deploy operators. +Operator-specific keys (e.g. 'airflow-operator', 'zookeeper-operator') map +to the Helm values for that operator. Use YAML anchors and aliases to share +values across operators. + +Example values file: + + airflow-operator: + tolerations: &default-tolerations + - key: \"example\" + operator: \"Exists\" + effect: \"NoSchedule\" + podAnnotations: + example.com/team: \"data-engineering\" + zookeeper-operator: + tolerations: *default-tolerations + podAnnotations: + example.com/team: \"platform\" + +Use \"stackablectl [OPTIONS] -f path/to/values.yaml\" to provide a +values file." + )] + pub operator_values: Option, } diff --git a/rust/stackablectl/src/args/operator_configs.rs b/rust/stackablectl/src/args/operator_configs.rs index f0bbbef4..08014c1a 100644 --- a/rust/stackablectl/src/args/operator_configs.rs +++ b/rust/stackablectl/src/args/operator_configs.rs @@ -6,6 +6,8 @@ use stackable_cockpit::platform::operator::listener_operator::ListenerClassPrese pub struct CommonOperatorConfigsArgs { /// Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`). /// + /// This takes precedence over values provided via the '-f/--operator-values' flag. + /// /// This maps to the listener-operator Helm Chart preset value, see /// [the listener-operator documentation](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass/#presets) /// for details. diff --git a/rust/stackablectl/src/cli/mod.rs b/rust/stackablectl/src/cli/mod.rs index 6fd621fc..8973b90e 100644 --- a/rust/stackablectl/src/cli/mod.rs +++ b/rust/stackablectl/src/cli/mod.rs @@ -156,6 +156,14 @@ impl Cli { Ok(files) } + pub fn get_values_file(&self) -> Result, PathOrUrlParseError> { + if let Some(operator_values) = self.files.operator_values.clone() { + Ok(Some(operator_values.into_path_or_url()?)) + } else { + Ok(None) + } + } + /// Adds the default (or custom) Helm repository URLs. Internally this calls the Helm SDK written in Go through the /// `go-helm-wrapper`. pub fn add_helm_repos(&self) -> Result<(), helm::Error> { @@ -251,7 +259,7 @@ impl Cli { #[rustfmt::skip] let command_future = async move { match self.subcommand { - Command::Operator(ref args) => args.run(&self).await.context(OperatorSnafu), + Command::Operator(ref args) => args.run(&self, transfer_client).await.context(OperatorSnafu), Command::Release(ref args) => args.run(&self, transfer_client).await.context(ReleaseSnafu), Command::Stack(ref args) => args.run(&self, transfer_client).await.context(StackSnafu), Command::Stacklet(ref args) => args.run().await.context(StackletSnafu), diff --git a/rust/stackablectl/src/cmds/demo.rs b/rust/stackablectl/src/cmds/demo.rs index 513a33f9..251a94fe 100644 --- a/rust/stackablectl/src/cmds/demo.rs +++ b/rust/stackablectl/src/cmds/demo.rs @@ -27,6 +27,7 @@ use tracing_indicatif::span_ext::IndicatifSpanExt as _; use crate::{ args::{CommonClusterArgs, CommonClusterArgsError, CommonNamespaceArgs}, cli::{Cli, OutputType}, + utils::load_operator_values, }; #[derive(Debug, Args)] @@ -159,6 +160,9 @@ pub enum CmdError { #[snafu(display("failed to create Kubernetes client"))] KubeClientCreate { source: k8s::Error }, + + #[snafu(display("failed to load operator values"))] + LoadOperatorValues { source: crate::utils::Error }, } impl DemoArgs { @@ -378,6 +382,11 @@ async fn install_cmd( .parse_insert(("stackable.tech/stack", &demo.stack)) .context(BuildLabelsSnafu)?; + let values_file = cli.get_values_file().context(PathOrUrlParseSnafu)?; + let operator_values = load_operator_values(values_file.as_ref(), transfer_client) + .await + .context(LoadOperatorValuesSnafu)?; + let install_parameters = DemoInstallParameters { operator_namespace: args.namespaces.operator_namespace.clone(), demo_namespace: args.namespaces.namespace.clone(), @@ -387,6 +396,7 @@ async fn install_cmd( stack_labels, labels, chart_source: ChartSourceType::from(cli.chart_type()), + operator_values, }; demo.install( diff --git a/rust/stackablectl/src/cmds/operator.rs b/rust/stackablectl/src/cmds/operator.rs index 71326388..690289b6 100644 --- a/rust/stackablectl/src/cmds/operator.rs +++ b/rust/stackablectl/src/cmds/operator.rs @@ -1,4 +1,4 @@ -use std::collections::HashMap; +use std::{collections::HashMap, sync::Arc}; use clap::{Args, Subcommand}; use comfy_table::{ @@ -23,7 +23,10 @@ use stackable_cockpit::{ self, chartsource::ChartSourceMetadata, k8s::{self, Client}, + path::PathOrUrlParseError, + yaml::values_for_operator, }, + xfer, }; use tracing::{Span, debug, info, instrument}; use tracing_indicatif::{indicatif_println, span_ext::IndicatifSpanExt}; @@ -31,7 +34,7 @@ use tracing_indicatif::{indicatif_println, span_ext::IndicatifSpanExt}; use crate::{ args::{CommonClusterArgs, CommonClusterArgsError}, cli::{Cli, OutputType}, - utils::{InvalidRepoNameError, helm_repo_name_to_repo_url}, + utils::{InvalidRepoNameError, helm_repo_name_to_repo_url, load_operator_values}, }; const INSTALL_AFTER_HELP_TEXT: &str = "Examples: @@ -169,6 +172,12 @@ pub enum CmdError { #[snafu(display("OCI error"))] OciError { source: oci::Error }, + + #[snafu(display("path/url parse error"))] + PathOrUrlParse { source: PathOrUrlParseError }, + + #[snafu(display("failed to load operator values"))] + LoadOperatorValues { source: crate::utils::Error }, } /// This list contains a list of operator version grouped by stable, test and @@ -178,11 +187,15 @@ pub enum CmdError { pub struct OperatorVersionList(HashMap>); impl OperatorArgs { - pub async fn run(&self, cli: &Cli) -> Result { + pub async fn run( + &self, + cli: &Cli, + transfer_client: Arc, + ) -> Result { match &self.subcommand { OperatorCommands::List(args) => list_cmd(args, cli).await, OperatorCommands::Describe(args) => describe_cmd(args, cli).await, - OperatorCommands::Install(args) => install_cmd(args, cli).await, + OperatorCommands::Install(args) => install_cmd(args, cli, transfer_client).await, OperatorCommands::Uninstall(args) => uninstall_cmd(args), OperatorCommands::Installed(args) => installed_cmd(args), } @@ -311,7 +324,11 @@ async fn describe_cmd(args: &OperatorDescribeArgs, cli: &Cli) -> Result Result { +async fn install_cmd( + args: &OperatorInstallArgs, + cli: &Cli, + transfer_client: Arc, +) -> Result { info!("Installing operator(s)"); Span::current().pb_set_message("Installing operator(s)"); @@ -328,11 +345,19 @@ async fn install_cmd(args: &OperatorInstallArgs, cli: &Cli) -> Result list_cmd(args, release_list).await, ReleaseCommands::Describe(args) => describe_cmd(args, release_list).await, - ReleaseCommands::Install(args) => install_cmd(args, cli, release_list).await, + ReleaseCommands::Install(args) => { + install_cmd(args, cli, release_list, &transfer_client).await + } ReleaseCommands::Uninstall(args) => uninstall_cmd(args, release_list).await, ReleaseCommands::Upgrade(args) => { upgrade_cmd(args, cli, release_list, &transfer_client).await @@ -316,11 +322,12 @@ async fn describe_cmd( } } -#[instrument(skip(cli, release_list), fields(indicatif.pb_show = true))] +#[instrument(skip(cli, release_list, transfer_client), fields(indicatif.pb_show = true))] async fn install_cmd( args: &ReleaseInstallArgs, cli: &Cli, release_list: release::ReleaseList, + transfer_client: &xfer::Client, ) -> Result { info!(release = %args.release, "Installing release"); Span::current().pb_set_message("Installing release"); @@ -344,12 +351,18 @@ async fn install_cmd( namespace: args.operator_namespace.clone(), })?; + let values_file = cli.get_values_file().context(PathOrUrlParseSnafu)?; + let operator_values = load_operator_values(values_file.as_ref(), transfer_client) + .await + .context(LoadOperatorValuesSnafu)?; + release .install( &args.included_products, &args.excluded_products, &args.operator_namespace, &ChartSourceType::from(cli.chart_type()), + &operator_values, ) .await .context(ReleaseInstallSnafu)?; @@ -429,6 +442,11 @@ async fn upgrade_cmd( .await .context(CrdUpgradeSnafu)?; + let values_file = cli.get_values_file().context(PathOrUrlParseSnafu)?; + let operator_values = load_operator_values(values_file.as_ref(), transfer_client) + .await + .context(LoadOperatorValuesSnafu)?; + // Install the new operator release release .install( @@ -436,6 +454,7 @@ async fn upgrade_cmd( &args.excluded_products, &args.operator_namespace, &ChartSourceType::from(cli.chart_type()), + &operator_values, ) .await .context(ReleaseInstallSnafu)?; diff --git a/rust/stackablectl/src/cmds/stack.rs b/rust/stackablectl/src/cmds/stack.rs index 3912f713..f4045f9a 100644 --- a/rust/stackablectl/src/cmds/stack.rs +++ b/rust/stackablectl/src/cmds/stack.rs @@ -27,6 +27,7 @@ use tracing_indicatif::span_ext::IndicatifSpanExt as _; use crate::{ args::{CommonClusterArgs, CommonClusterArgsError, CommonNamespaceArgs}, cli::{Cli, OutputType}, + utils::load_operator_values, }; #[derive(Debug, Args)] @@ -150,6 +151,9 @@ pub enum CmdError { #[snafu(source(from(k8s::Error, Box::new)))] source: Box, }, + + #[snafu(display("failed to load operator values"))] + LoadOperatorValues { source: crate::utils::Error }, } impl StackArgs { @@ -349,6 +353,11 @@ async fn install_cmd( ]) .context(BuildLabelsSnafu)?; + let values_file = cli.get_values_file().context(PathOrUrlParseSnafu)?; + let operator_values = load_operator_values(values_file.as_ref(), transfer_client) + .await + .context(LoadOperatorValuesSnafu)?; + let install_parameters = StackInstallParameters { operator_namespace: args.namespaces.operator_namespace.clone(), stack_namespace: args.namespaces.namespace.clone(), @@ -358,6 +367,7 @@ async fn install_cmd( demo_name: None, labels, chart_source: ChartSourceType::from(cli.chart_type()), + operator_values, }; stack_spec diff --git a/rust/stackablectl/src/utils.rs b/rust/stackablectl/src/utils.rs index 2c7a16a7..9d85a7de 100644 --- a/rust/stackablectl/src/utils.rs +++ b/rust/stackablectl/src/utils.rs @@ -1,12 +1,29 @@ use std::env; -use snafu::Snafu; -use stackable_cockpit::constants::{ - HELM_REPO_NAME_DEV, HELM_REPO_NAME_STABLE, HELM_REPO_NAME_TEST, +use serde_yaml::{Mapping, Value}; +use snafu::{ResultExt, Snafu}; +use stackable_cockpit::{ + constants::{HELM_REPO_NAME_DEV, HELM_REPO_NAME_STABLE, HELM_REPO_NAME_TEST}, + utils::path::PathOrUrl, + xfer::{self, processor::Yaml}, }; use crate::constants::{HELM_REPO_URL_DEV, HELM_REPO_URL_STABLE, HELM_REPO_URL_TEST}; +#[derive(Debug, Snafu)] +pub enum Error { + #[snafu(display("failed to open or transfer values file '{path}'"))] + FileTransfer { source: xfer::Error, path: String }, + + #[snafu(display("operator values file '{path}' must be a YAML mapping at the top level"))] + InvalidValueType { path: String }, + + #[snafu(display( + "value for key '{key}' in operator values file '{path}' must be a YAML mapping" + ))] + InvalidEntryType { key: String, path: String }, +} + #[derive(Debug, Snafu)] #[snafu(display("Invalid Helm repo name ({name}), cannot resolve to repo URL"))] pub struct InvalidRepoNameError { @@ -38,3 +55,57 @@ where pub fn use_colored_output(use_color: bool) -> bool { use_color && env::var_os("NO_COLOR").is_none() } + +/// Loads operator helm values from a YAML file. +/// +/// The file should contain a YAML mapping of operator names to their helm values. +/// Use YAML anchors and aliases to share values across operators: +/// ```yaml +/// airflow-operator: +/// tolerations: &default-tolerations +/// - key: "example" +/// operator: "Exists" +/// effect: "NoSchedule" +/// podAnnotations: +/// example.com/team: "data-engineering" +/// zookeeper-operator: +/// tolerations: *default-tolerations +/// podAnnotations: +/// example.com/team: "platform" +/// ``` +pub async fn load_operator_values( + values_file: Option<&PathOrUrl>, + transfer_client: &xfer::Client, +) -> Result { + let file = match values_file { + Some(file) => file, + None => return Ok(Mapping::new()), + }; + + let path = match file { + PathOrUrl::Path(p) => p.display().to_string(), + PathOrUrl::Url(u) => u.to_string(), + }; + + let value = transfer_client + .get(file, &Yaml::::default()) + .await + .context(FileTransferSnafu { path: path.clone() })?; + + let mapping = match value { + Value::Mapping(mapping) => mapping, + _ => return InvalidValueTypeSnafu { path: path.clone() }.fail(), + }; + + for (key, value) in &mapping { + if !value.is_mapping() { + return InvalidEntryTypeSnafu { + key: key.as_str().unwrap_or("").to_string(), + path: path.clone(), + } + .fail(); + } + } + + Ok(mapping) +} From a6ad2a71e9f00dd5490f12d1d34b837ac054fa77 Mon Sep 17 00:00:00 2001 From: Sebastian Bernauer Date: Tue, 10 Mar 2026 12:26:37 +0100 Subject: [PATCH 48/63] chore: Rust and Go bumps (#426) * Rust dependency and Rust bumps * Bump other crates * Update deny.toml * Bump cargo-deny * Regenerate stuff * Fix rust docs * Install rustls ring provider * Bump to op-rs 0.107.0 * Go bumps * Add comment on helm 4 * linter * Bump Go in CI * changelog * Move comments, gg Go * Update rust/stackablectl/CHANGELOG.md Co-authored-by: Nick <10092581+NickLarsenNZ@users.noreply.github.com> --------- Co-authored-by: Nick <10092581+NickLarsenNZ@users.noreply.github.com> --- .github/workflows/pr_cockpit.yml | 4 +- .github/workflows/pr_general.yml | 6 +- .github/workflows/pr_stackablectl.yml | 4 +- .github/workflows/release_stackablectl.yml | 2 +- Cargo.lock | 2267 ++--- Cargo.nix | 8244 +++++++++-------- Cargo.toml | 43 +- crate-hashes.json | 21 +- deny.toml | 52 +- docker/Dockerfile | 2 +- extra/completions/stackablectl.nu | 30 +- go.mod | 156 +- go.sum | 710 +- gomod2nix.toml | 876 +- nix/sources.json | 24 +- rust-toolchain.toml | 2 +- rust/stackable-cockpit/Cargo.toml | 2 - .../src/platform/cluster/mod.rs | 7 +- .../src/platform/cluster/resource_request.rs | 6 +- .../src/platform/credentials.rs | 4 +- .../src/platform/namespace.rs | 1 + .../stackable-cockpit/src/platform/service.rs | 6 +- .../src/platform/stacklet/grafana.rs | 2 +- .../src/platform/stacklet/minio.rs | 2 +- .../src/platform/stacklet/mod.rs | 6 +- .../src/platform/stacklet/opensearch.rs | 2 +- .../src/platform/stacklet/prometheus.rs | 2 +- .../src/utils/k8s/byte_string.rs | 2 +- .../stackable-cockpit/src/utils/k8s/client.rs | 29 +- .../src/utils/k8s/conditions.rs | 12 +- .../stackable-cockpit/src/utils/k8s/labels.rs | 2 +- .../stackable-cockpit/src/utils/templating.rs | 6 +- rust/stackable-cockpitd/Cargo.toml | 1 - rust/stackable-cockpitd/src/handlers/demos.rs | 4 +- rust/stackablectl/CHANGELOG.md | 7 + rust/stackablectl/Cargo.toml | 1 + rust/stackablectl/src/cmds/debug.rs | 6 +- rust/stackablectl/src/main.rs | 7 + web/build.rs | 2 +- web/src/api/schema.d.ts | 10 +- 40 files changed, 6364 insertions(+), 6208 deletions(-) diff --git a/.github/workflows/pr_cockpit.yml b/.github/workflows/pr_cockpit.yml index 7092a6d2..1248c07b 100644 --- a/.github/workflows/pr_cockpit.yml +++ b/.github/workflows/pr_cockpit.yml @@ -15,8 +15,8 @@ on: - "go.sum" env: - RUST_VERSION: 1.87.0 - GO_VERSION: '^1.22.5' + RUST_VERSION: 1.93.0 + GO_VERSION: '^1.26.0' CARGO_TERM_COLOR: always CARGO_INCREMENTAL: "0" CARGO_PROFILE_DEV_DEBUG: "0" diff --git a/.github/workflows/pr_general.yml b/.github/workflows/pr_general.yml index 900bf85e..81702f6d 100644 --- a/.github/workflows/pr_general.yml +++ b/.github/workflows/pr_general.yml @@ -4,8 +4,8 @@ name: Pull Request General on: workflow_call env: - RUST_VERSION: 1.87.0 - GO_VERSION: '^1.22.5' + RUST_VERSION: 1.93.0 + GO_VERSION: '^1.26.0' CARGO_TERM_COLOR: always CARGO_INCREMENTAL: "0" CARGO_PROFILE_DEV_DEBUG: "0" @@ -59,7 +59,7 @@ jobs: - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 with: submodules: recursive - - uses: EmbarkStudios/cargo-deny-action@30f817c6f72275c6d54dc744fbca09ebc958599f # v2.0.12 + - uses: EmbarkStudios/cargo-deny-action@3fd3802e88374d3fe9159b834c7714ec57d6c979 # v2.0.15 with: command: check ${{ matrix.checks }} diff --git a/.github/workflows/pr_stackablectl.yml b/.github/workflows/pr_stackablectl.yml index 4067d3c0..8ca9cea7 100644 --- a/.github/workflows/pr_stackablectl.yml +++ b/.github/workflows/pr_stackablectl.yml @@ -14,8 +14,8 @@ on: - "extra/**" env: - RUST_VERSION: 1.87.0 - GO_VERSION: '^1.22.5' + RUST_VERSION: 1.93.0 + GO_VERSION: '^1.26.0' CARGO_TERM_COLOR: always CARGO_INCREMENTAL: "0" CARGO_PROFILE_DEV_DEBUG: "0" diff --git a/.github/workflows/release_stackablectl.yml b/.github/workflows/release_stackablectl.yml index 209c8e47..2a90b4b4 100644 --- a/.github/workflows/release_stackablectl.yml +++ b/.github/workflows/release_stackablectl.yml @@ -8,7 +8,7 @@ on: env: CARGO_CYCLONEDX_VERSION: 0.5.7 - RUST_VERSION: 1.87.0 + RUST_VERSION: 1.93.0 CARGO_TERM_COLOR: always CARGO_INCREMENTAL: "0" CARGO_PROFILE_DEV_DEBUG: "0" diff --git a/Cargo.lock b/Cargo.lock index 3beb471e..5d8e3459 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -23,9 +23,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" dependencies = [ "memchr", ] @@ -96,29 +96,29 @@ dependencies = [ [[package]] name = "anstyle-query" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2" +checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" dependencies = [ - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] name = "anstyle-wincon" -version = "3.0.10" +version = "3.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e0633414522a32ffaac8ac6cc8f748e090c5717661fddeea04219e2344f5f2a" +checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" dependencies = [ "anstyle", "once_cell_polyfill", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] name = "anyhow" -version = "1.0.100" +version = "1.0.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" +checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" [[package]] name = "arbitrary" @@ -147,16 +147,6 @@ dependencies = [ "pin-project-lite", ] -[[package]] -name = "async-socks5" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da2537846e16b96d2972ee52a3b355663872a1a687ce6d57a3b6f6b6a181c89" -dependencies = [ - "thiserror 1.0.69", - "tokio", -] - [[package]] name = "async-stream" version = "0.3.6" @@ -176,7 +166,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] @@ -187,7 +177,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] @@ -203,46 +193,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] -name = "axum" -version = "0.7.9" +name = "aws-lc-rs" +version = "1.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" +checksum = "94bffc006df10ac2a68c83692d734a465f8ee6c5b384d8545a636f81d858f4bf" dependencies = [ - "async-trait", - "axum-core 0.4.5", - "bytes", - "futures-util", - "http", - "http-body", - "http-body-util", - "hyper", - "hyper-util", - "itoa", - "matchit 0.7.3", - "memchr", - "mime", - "percent-encoding", - "pin-project-lite", - "rustversion", - "serde", - "serde_json", - "serde_path_to_error", - "serde_urlencoded", - "sync_wrapper", - "tokio", - "tower 0.5.2", - "tower-layer", - "tower-service", - "tracing", + "aws-lc-sys", + "zeroize", +] + +[[package]] +name = "aws-lc-sys" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4321e568ed89bb5a7d291a7f37997c2c0df89809d7b6d12062c81ddb54aa782e" +dependencies = [ + "cc", + "cmake", + "dunce", + "fs_extra", ] [[package]] name = "axum" -version = "0.8.6" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a18ed336352031311f4e0b4dd2ff392d4fbb370777c9d18d7fc9d7359f73871" +checksum = "8b52af3cb4058c895d37317bb27508dccc8e5f2d39454016b297bf4a400597b8" dependencies = [ - "axum-core 0.5.5", + "axum-core", "bytes", "form_urlencoded", "futures-util", @@ -252,7 +230,7 @@ dependencies = [ "hyper", "hyper-util", "itoa", - "matchit 0.8.4", + "matchit", "memchr", "mime", "percent-encoding", @@ -263,28 +241,7 @@ dependencies = [ "serde_urlencoded", "sync_wrapper", "tokio", - "tower 0.5.2", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "axum-core" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" -dependencies = [ - "async-trait", - "bytes", - "futures-util", - "http", - "http-body", - "http-body-util", - "mime", - "pin-project-lite", - "rustversion", - "sync_wrapper", + "tower", "tower-layer", "tower-service", "tracing", @@ -292,9 +249,9 @@ dependencies = [ [[package]] name = "axum-core" -version = "0.5.5" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59446ce19cd142f8833f856eb31f3eb097812d1479ab224f54d72428ca21ea22" +checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1" dependencies = [ "bytes", "futures-core", @@ -311,33 +268,31 @@ dependencies = [ [[package]] name = "axum-extra" -version = "0.9.6" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c794b30c904f0a1c2fb7740f7df7f7972dfaa14ef6f57cb6178dc63e5dca2f04" +checksum = "fef252edff26ddba56bbcdf2ee3307b8129acb86f5749b68990c168a6fcc9c76" dependencies = [ - "axum 0.7.9", - "axum-core 0.4.5", + "axum", + "axum-core", "bytes", - "fastrand", + "futures-core", "futures-util", "headers", "http", "http-body", "http-body-util", "mime", - "multer", "pin-project-lite", - "serde", - "tower 0.5.2", "tower-layer", "tower-service", + "tracing", ] [[package]] name = "backon" -version = "1.5.2" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "592277618714fbcecda9a02ba7a8781f319d26532a88553bbacc77ba5d2b3a8d" +checksum = "cffb0e931875b666fc4fcb20fee52e9bbd1ef836fd9e9e04ec21555f9f85f7ef" dependencies = [ "fastrand", "gloo-timers", @@ -352,22 +307,22 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "bcrypt" -version = "0.15.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e65938ed058ef47d92cf8b346cc76ef48984572ade631927e9937b5ffc7662c7" +checksum = "523ab528ce3a7ada6597f8ccf5bd8d85ebe26d5edf311cad4d1d3cfb2d357ac6" dependencies = [ "base64", "blowfish", - "getrandom 0.2.16", + "getrandom 0.4.2", "subtle", "zeroize", ] [[package]] name = "bindgen" -version = "0.70.1" +version = "0.72.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" +checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" dependencies = [ "bitflags", "cexpr", @@ -378,31 +333,31 @@ dependencies = [ "proc-macro2", "quote", "regex", - "rustc-hash 1.1.0", + "rustc-hash", "shlex", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] name = "bit-set" -version = "0.5.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" dependencies = [ "bit-vec", ] [[package]] name = "bit-vec" -version = "0.6.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" [[package]] name = "bitflags" -version = "2.9.4" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" +checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" [[package]] name = "block-buffer" @@ -425,9 +380,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.12.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "234113d19d0d7d613b40e86fb654acf958910802bcceab913a4f9e7cda03b1a4" +checksum = "63044e1ae8e69f3b5a92c736ca6269b8d12fa7efe39bf34ddb06d102cf0e2cab" dependencies = [ "memchr", "serde", @@ -441,9 +396,9 @@ checksum = "f4ad8f11f288f48ca24471bbd51ac257aaeaaa07adae295591266b792902ae64" [[package]] name = "bumpalo" -version = "3.19.0" +version = "3.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" +checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" [[package]] name = "byteorder" @@ -453,20 +408,28 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.10.1" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" +checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" [[package]] name = "cc" -version = "1.2.41" +version = "1.2.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac9fe6cdbb24b6ade63616c0a0688e45bb56732262c158df3c0c4bea4ca47cb7" +checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" dependencies = [ "find-msvc-tools", + "jobserver", + "libc", "shlex", ] +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + [[package]] name = "cexpr" version = "0.6.0" @@ -488,16 +451,26 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" +[[package]] +name = "chacha20" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f8d983286843e49675a4b7a2d174efe136dc93a18d69130dd18198a6c167601" +dependencies = [ + "cfg-if", + "cpufeatures 0.3.0", + "rand_core 0.10.0", +] + [[package]] name = "chrono" -version = "0.4.42" +version = "0.4.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" +checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" dependencies = [ "iana-time-zone", "num-traits", - "serde", - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -508,7 +481,7 @@ checksum = "93698b29de5e97ad0ae26447b344c482a7284c737d9ddc5f9e52b74a336671bb" dependencies = [ "chrono", "chrono-tz-build", - "phf", + "phf 0.11.3", ] [[package]] @@ -518,8 +491,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c088aee841df9c3041febbb73934cfc39708749bf96dc827e3359cd39ef11b1" dependencies = [ "parse-zoneinfo", - "phf", - "phf_codegen", + "phf 0.11.3", + "phf_codegen 0.11.3", ] [[package]] @@ -545,9 +518,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.49" +version = "4.5.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4512b90fa68d3a9932cea5184017c5d200f5921df706d45e853537dea51508f" +checksum = "2797f34da339ce31042b27d23607e051786132987f595b02ba4f6a6dffb7030a" dependencies = [ "clap_builder", "clap_derive", @@ -555,9 +528,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.49" +version = "4.5.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0025e98baa12e766c67ba13ff4695a887a1eba19569aad00a472546795bd6730" +checksum = "24a241312cea5059b13574bb9b3861cabf758b879c15190b37b6d6fd63ab6876" dependencies = [ "anstream", "anstyle", @@ -567,18 +540,18 @@ dependencies = [ [[package]] name = "clap_complete" -version = "4.5.59" +version = "4.5.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2348487adcd4631696ced64ccdb40d38ac4d31cae7f2eec8817fcea1b9d1c43c" +checksum = "c757a3b7e39161a4e56f9365141ada2a6c915a8622c408ab6bb4b5d047371031" dependencies = [ "clap", ] [[package]] name = "clap_complete_nushell" -version = "4.5.9" +version = "4.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "811159f339691baacdf7d534df2946b9d217014081099e23d31d887d99521e70" +checksum = "685bc86fd34b7467e0532a4f8435ab107960d69a243785ef0275e571b35b641a" dependencies = [ "clap", "clap_complete", @@ -586,49 +559,68 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.49" +version = "4.5.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671" +checksum = "a92793da1a46a5f2a02a6f4c46c6496b28c43638adea8306fcb0caa1634f24e5" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] name = "clap_lex" -version = "0.7.6" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d" +checksum = "3a822ea5bc7590f9d40f1ba12c0dc3c2760f3482c6984db1573ad11031420831" [[package]] name = "clap_mangen" -version = "0.2.30" +version = "0.2.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "263c8214a8e0cb8129f3c62036c50e9c6e15c7bd364c42e0437c492b9293f778" +checksum = "439ea63a92086df93893164221ad4f24142086d535b3a0957b9b9bea2dc86301" dependencies = [ "clap", "roff", ] +[[package]] +name = "cmake" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75443c44cd6b379beb8c5b45d85d0773baf31cce901fe7bb252f4eff3008ef7d" +dependencies = [ + "cc", +] + [[package]] name = "colorchoice" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + [[package]] name = "comfy-table" -version = "7.2.1" +version = "7.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b03b7db8e0b4b2fdad6c551e634134e99ec000e5c8c3b6856c65e8bbaded7a3b" +checksum = "958c5d6ecf1f214b4c2bbbbf6ab9523a864bd136dcf71a7e8904799acfe1ad47" dependencies = [ "ansi-str", "console", "crossterm", "unicode-segmentation", - "unicode-width 0.2.2", + "unicode-width", ] [[package]] @@ -642,14 +634,14 @@ dependencies = [ [[package]] name = "console" -version = "0.16.1" +version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b430743a6eb14e9764d4260d4c0d8123087d504eeb9c48f2b2a5e810dd369df4" +checksum = "03e45a4a8926227e4197636ba97a9fc9b00477e9f4bd711395687c5f0734bec4" dependencies = [ "encode_unicode", "libc", "once_cell", - "unicode-width 0.2.2", + "unicode-width", "windows-sys 0.61.2", ] @@ -675,21 +667,20 @@ dependencies = [ [[package]] name = "convert_case" -version = "0.8.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baaaa0ecca5b51987b9423ccdc971514dd8b0bb7b4060b983d3664dad3f1f89f" +checksum = "affbf0190ed2caf063e3def54ff444b449371d55c58e513a95ab98eca50adb49" dependencies = [ "unicode-segmentation", ] [[package]] -name = "core-foundation" -version = "0.9.4" +name = "convert_case_extras" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +checksum = "589c70f0faf8aa9d17787557d5eae854d7755cac50f5c3d12c81d3d57661cebb" dependencies = [ - "core-foundation-sys", - "libc", + "convert_case", ] [[package]] @@ -717,6 +708,15 @@ dependencies = [ "libc", ] +[[package]] +name = "cpufeatures" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201" +dependencies = [ + "libc", +] + [[package]] name = "crc32fast" version = "1.5.0" @@ -770,7 +770,7 @@ dependencies = [ "crossterm_winapi", "document-features", "parking_lot", - "rustix 1.1.2", + "rustix", "winapi", ] @@ -785,9 +785,9 @@ dependencies = [ [[package]] name = "crypto-common" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" dependencies = [ "generic-array", "typenum", @@ -795,9 +795,9 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.11" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" +checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" dependencies = [ "darling_core", "darling_macro", @@ -805,51 +805,50 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.11" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" +checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" dependencies = [ - "fnv", "ident_case", "proc-macro2", "quote", "strsim", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] name = "darling_macro" -version = "0.20.11" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" +checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ "darling_core", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] name = "data-encoding" -version = "2.9.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" +checksum = "d7a1e2f27636f116493b8b860f5546edb47c8d8f8ea73e1d2a20be88e28d1fea" [[package]] name = "delegate" -version = "0.13.4" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6178a82cf56c836a3ba61a7935cdb1c49bfaa6fa4327cd5bf554a503087de26b" +checksum = "780eb241654bf097afb00fc5f054a09b687dad862e485fdcf8399bb056565370" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] name = "deranged" -version = "0.5.4" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a41953f86f8a05768a6cda24def994fd2f424b04ec5c719cf89989779f199071" +checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" dependencies = [ "powerfmt", ] @@ -862,7 +861,28 @@ checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", +] + +[[package]] +name = "derive_more" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" +dependencies = [ + "proc-macro2", + "quote", + "rustc_version", + "syn 2.0.117", ] [[package]] @@ -883,23 +903,23 @@ dependencies = [ [[package]] name = "directories" -version = "5.0.1" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a49173b84e034382284f27f1af4dcbbd231ffa358c0fe316541a7337f376a35" +checksum = "16f5094c54661b38d03bd7e50df373292118db60b585c08a411c6d840017fe7d" dependencies = [ "dirs-sys", ] [[package]] name = "dirs-sys" -version = "0.4.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" dependencies = [ "libc", "option-ext", "redox_users", - "windows-sys 0.48.0", + "windows-sys 0.61.2", ] [[package]] @@ -910,14 +930,14 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] name = "doc-comment" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" +checksum = "780955b8b195a21ab8e4ac6b60dd1dbdcec1dc6c51c0617964b08c81785e12c9" [[package]] name = "dockerfile-parser" @@ -935,9 +955,9 @@ dependencies = [ [[package]] name = "document-features" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95249b50c6c185bee49034bcb378a49dc2b5dff0be90ff6616d31d64febab05d" +checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61" dependencies = [ "litrs", ] @@ -948,6 +968,12 @@ version = "0.15.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + [[package]] name = "dyn-clone" version = "1.0.20" @@ -963,7 +989,7 @@ dependencies = [ "enum-ordinalize", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] @@ -998,22 +1024,22 @@ dependencies = [ [[package]] name = "enum-ordinalize" -version = "4.3.0" +version = "4.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fea0dcfa4e54eeb516fe454635a95753ddd39acda650ce703031c6973e315dd5" +checksum = "4a1091a7bb1f8f2c4b28f1fe2cef4980ca2d410a3d727d67ecc3178c9b0800f0" dependencies = [ "enum-ordinalize-derive", ] [[package]] name = "enum-ordinalize-derive" -version = "4.3.1" +version = "4.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" +checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] @@ -1055,9 +1081,9 @@ dependencies = [ [[package]] name = "fancy-regex" -version = "0.13.0" +version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "531e46835a22af56d1e3b66f04844bed63158bc094a628bec1d321d9b4c44bf2" +checksum = "998b056554fbe42e03ae0e152895cd1a7e1002aec800fdc6635d20270260c46f" dependencies = [ "bit-set", "regex-automata", @@ -1072,18 +1098,19 @@ checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "find-msvc-tools" -version = "0.1.4" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" [[package]] name = "flate2" -version = "1.1.4" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc5a4e564e38c699f2880d3fda590bedc2e69f3f84cd48b457bd892ce61d0aa9" +checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" dependencies = [ "crc32fast", "miniz_oxide", + "zlib-rs", ] [[package]] @@ -1098,6 +1125,12 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + [[package]] name = "form_urlencoded" version = "1.2.2" @@ -1107,11 +1140,17 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "fs_extra" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" + [[package]] name = "futures" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d" dependencies = [ "futures-channel", "futures-core", @@ -1124,9 +1163,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" dependencies = [ "futures-core", "futures-sink", @@ -1134,15 +1173,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" +checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" [[package]] name = "futures-executor" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" dependencies = [ "futures-core", "futures-task", @@ -1151,32 +1190,32 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" +checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" [[package]] name = "futures-macro" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] name = "futures-sink" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" +checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" [[package]] name = "futures-task" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" +checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" [[package]] name = "futures-timer" @@ -1186,9 +1225,9 @@ checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" [[package]] name = "futures-util" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" dependencies = [ "futures-channel", "futures-core", @@ -1198,15 +1237,14 @@ dependencies = [ "futures-task", "memchr", "pin-project-lite", - "pin-utils", "slab", ] [[package]] name = "generic-array" -version = "0.14.9" +version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", @@ -1214,9 +1252,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" dependencies = [ "cfg-if", "js-sys", @@ -1234,11 +1272,25 @@ dependencies = [ "cfg-if", "js-sys", "libc", - "r-efi", + "r-efi 5.3.0", "wasip2", "wasm-bindgen", ] +[[package]] +name = "getrandom" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" +dependencies = [ + "cfg-if", + "libc", + "r-efi 6.0.0", + "rand_core 0.10.0", + "wasip2", + "wasip3", +] + [[package]] name = "glob" version = "0.3.3" @@ -1247,9 +1299,9 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "globset" -version = "0.4.17" +version = "0.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eab69130804d941f8075cfd713bf8848a2c3b3f201a9457a11e6f87e1ab62305" +checksum = "52dfc19153a48bde0cbd630453615c8151bce3a5adfac7a0aebfbf0a1e1f57e3" dependencies = [ "aho-corasick", "bstr", @@ -1283,9 +1335,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" +checksum = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54" dependencies = [ "atomic-waker", "bytes", @@ -1293,35 +1345,32 @@ dependencies = [ "futures-core", "futures-sink", "http", - "indexmap 2.11.4", + "indexmap", "slab", "tokio", "tokio-util", "tracing", ] -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - [[package]] name = "hashbrown" version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ - "allocator-api2", - "equivalent", - "foldhash", + "foldhash 0.1.5", ] [[package]] name = "hashbrown" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash 0.2.0", +] [[package]] name = "headers" @@ -1359,37 +1408,27 @@ version = "0.0.0-dev" dependencies = [ "bindgen", "cc", - "snafu 0.8.9", -] - -[[package]] -name = "home" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" -dependencies = [ - "windows-sys 0.59.0", + "snafu 0.9.0", ] [[package]] name = "hostname" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56f203cd1c76362b69e3863fd987520ac36cf70a8c92627449b2f64a8cf7d65" +checksum = "617aaa3557aef3810a6369d0a99fac8a080891b68bd9f9812a1eeda0c0730cbd" dependencies = [ "cfg-if", "libc", - "windows-link 0.1.3", + "windows-link", ] [[package]] name = "http" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" dependencies = [ "bytes", - "fnv", "itoa", ] @@ -1439,9 +1478,9 @@ dependencies = [ [[package]] name = "hyper" -version = "1.7.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e" +checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" dependencies = [ "atomic-waker", "bytes", @@ -1460,26 +1499,6 @@ dependencies = [ "want", ] -[[package]] -name = "hyper-http-proxy" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ad4b0a1e37510028bc4ba81d0e38d239c39671b0f0ce9e02dfa93a8133f7c08" -dependencies = [ - "bytes", - "futures-util", - "headers", - "http", - "hyper", - "hyper-rustls", - "hyper-util", - "pin-project-lite", - "rustls-native-certs 0.7.3", - "tokio", - "tokio-rustls", - "tower-service", -] - [[package]] name = "hyper-rustls" version = "0.27.7" @@ -1491,27 +1510,11 @@ dependencies = [ "hyper-util", "log", "rustls", - "rustls-native-certs 0.8.2", + "rustls-native-certs", "rustls-pki-types", "tokio", "tokio-rustls", "tower-service", - "webpki-roots", -] - -[[package]] -name = "hyper-socks2" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51c227614c208f7e7c2e040526912604a1a957fe467c9c2f5b06c5d032337dab" -dependencies = [ - "async-socks5", - "http", - "hyper", - "hyper-util", - "thiserror 1.0.69", - "tokio", - "tower-service", ] [[package]] @@ -1529,14 +1532,13 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.17" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8" +checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" dependencies = [ "base64", "bytes", "futures-channel", - "futures-core", "futures-util", "http", "http-body", @@ -1545,7 +1547,7 @@ dependencies = [ "libc", "percent-encoding", "pin-project-lite", - "socket2 0.6.1", + "socket2", "tokio", "tower-service", "tracing", @@ -1553,9 +1555,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.64" +version = "0.1.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" +checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -1577,9 +1579,9 @@ dependencies = [ [[package]] name = "icu_collections" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" dependencies = [ "displaydoc", "potential_utf", @@ -1590,9 +1592,9 @@ dependencies = [ [[package]] name = "icu_locale_core" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" dependencies = [ "displaydoc", "litemap", @@ -1603,11 +1605,10 @@ dependencies = [ [[package]] name = "icu_normalizer" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" dependencies = [ - "displaydoc", "icu_collections", "icu_normalizer_data", "icu_properties", @@ -1618,42 +1619,38 @@ dependencies = [ [[package]] name = "icu_normalizer_data" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" [[package]] name = "icu_properties" -version = "2.0.1" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" +checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" dependencies = [ - "displaydoc", "icu_collections", "icu_locale_core", "icu_properties_data", "icu_provider", - "potential_utf", "zerotrie", "zerovec", ] [[package]] name = "icu_properties_data" -version = "2.0.1" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" +checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" [[package]] name = "icu_provider" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" dependencies = [ "displaydoc", "icu_locale_core", - "stable_deref_trait", - "tinystr", "writeable", "yoke", "zerofrom", @@ -1661,6 +1658,12 @@ dependencies = [ "zerovec", ] +[[package]] +name = "id-arena" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" + [[package]] name = "ident_case" version = "1.0.1" @@ -1690,9 +1693,9 @@ dependencies = [ [[package]] name = "ignore" -version = "0.4.24" +version = "0.4.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81776e6f9464432afcc28d03e52eb101c93b6f0566f52aef2427663e700f0403" +checksum = "d3d782a365a015e0f5c04902246139249abf769125006fbe7649e2ee88169b4a" dependencies = [ "crossbeam-deque", "globset", @@ -1706,40 +1709,39 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.9.3" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", -] - -[[package]] -name = "indexmap" -version = "2.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5" +checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" dependencies = [ "equivalent", - "hashbrown 0.16.0", + "hashbrown 0.16.1", "serde", "serde_core", ] [[package]] name = "indicatif" -version = "0.18.0" +version = "0.18.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a646d946d06bedbbc4cac4c218acf4bbf2d87757a784857025f4d447e4e1cd" +checksum = "25470f23803092da7d239834776d653104d551bc4d7eacaf31e6837854b8e9eb" dependencies = [ "console", "portable-atomic", - "unicode-width 0.2.2", + "unicode-width", "unit-prefix", "vt100", "web-time", ] +[[package]] +name = "indoc" +version = "2.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706" +dependencies = [ + "rustversion", +] + [[package]] name = "inout" version = "0.1.4" @@ -1751,15 +1753,15 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.11.0" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" +checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" [[package]] name = "iri-string" -version = "0.7.8" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +checksum = "c91338f0783edbd6195decb37bae672fd3b165faffb89bf7b9e6942f8b1a731a" dependencies = [ "memchr", "serde", @@ -1767,9 +1769,9 @@ dependencies = [ [[package]] name = "is_terminal_polyfill" -version = "1.70.1" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" [[package]] name = "itertools" @@ -1791,9 +1793,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.15" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" +checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" [[package]] name = "java-properties" @@ -1806,11 +1808,84 @@ dependencies = [ "regex", ] +[[package]] +name = "jiff" +version = "0.2.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a3546dc96b6d42c5f24902af9e2538e82e39ad350b0c766eb3fbf2d8f3d8359" +dependencies = [ + "jiff-static", + "jiff-tzdb-platform", + "log", + "portable-atomic", + "portable-atomic-util", + "serde_core", + "windows-sys 0.61.2", +] + +[[package]] +name = "jiff-static" +version = "0.2.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a8c8b344124222efd714b73bb41f8b5120b27a7cc1c75593a6ff768d9d05aa4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "jiff-tzdb" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c900ef84826f1338a557697dc8fc601df9ca9af4ac137c7fb61d4c6f2dfd3076" + +[[package]] +name = "jiff-tzdb-platform" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "875a5a69ac2bab1a891711cf5eccbec1ce0341ea805560dcd90b7a2e925132e8" +dependencies = [ + "jiff-tzdb", +] + +[[package]] +name = "jni" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +dependencies = [ + "cesu8", + "cfg-if", + "combine", + "jni-sys", + "log", + "thiserror 1.0.69", + "walkdir", + "windows-sys 0.45.0", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + +[[package]] +name = "jobserver" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +dependencies = [ + "getrandom 0.3.4", + "libc", +] + [[package]] name = "js-sys" -version = "0.3.81" +version = "0.3.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec48937a97411dcb524a265206ccd4c90bb711fca92b2792c407f268825b9305" +checksum = "b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c" dependencies = [ "once_cell", "wasm-bindgen", @@ -1830,15 +1905,15 @@ dependencies = [ [[package]] name = "jsonpath-rust" -version = "0.7.5" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c00ae348f9f8fd2d09f82a98ca381c60df9e0820d8d79fce43e649b4dc3128b" +checksum = "633a7320c4bb672863a3782e89b9094ad70285e097ff6832cddd0ec615beadfa" dependencies = [ "pest", "pest_derive", "regex", "serde_json", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -1853,22 +1928,21 @@ dependencies = [ [[package]] name = "k8s-openapi" -version = "0.24.0" +version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c75b990324f09bef15e791606b7b7a296d02fc88a344f6eba9390970a870ad5" +checksum = "51b326f5219dd55872a72c1b6ddd1b830b8334996c667449c29391d657d78d5e" dependencies = [ "base64", - "chrono", + "jiff", "schemars", "serde", - "serde-value", "serde_json", ] [[package]] name = "k8s-version" -version = "0.1.2" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1" +version = "0.1.3" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.107.0#a16cafb151202948e79925a58662b14b8b004cd7" dependencies = [ "darling", "regex", @@ -1877,9 +1951,8 @@ dependencies = [ [[package]] name = "kube" -version = "0.99.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a4eb20010536b48abe97fec37d23d43069bcbe9686adcf9932202327bc5ca6e" +version = "3.0.1" +source = "git+https://github.com/kube-rs/kube-rs?rev=fe69cc486ff8e62a7da61d64ec3ebbd9e64c43b5#fe69cc486ff8e62a7da61d64ec3ebbd9e64c43b5" dependencies = [ "k8s-openapi", "kube-client", @@ -1890,25 +1963,21 @@ dependencies = [ [[package]] name = "kube-client" -version = "0.99.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fc2ed952042df20d15ac2fe9614d0ec14b6118eab89633985d4b36e688dccf1" +version = "3.0.1" +source = "git+https://github.com/kube-rs/kube-rs?rev=fe69cc486ff8e62a7da61d64ec3ebbd9e64c43b5#fe69cc486ff8e62a7da61d64ec3ebbd9e64c43b5" dependencies = [ "base64", "bytes", - "chrono", "either", "futures", - "home", "http", "http-body", "http-body-util", "hyper", - "hyper-http-proxy", "hyper-rustls", - "hyper-socks2", "hyper-timeout", "hyper-util", + "jiff", "jsonpath-rust", "k8s-openapi", "kube-core", @@ -1918,61 +1987,58 @@ dependencies = [ "serde", "serde_json", "serde_yaml", - "thiserror 2.0.17", + "thiserror 2.0.18", "tokio", "tokio-tungstenite", "tokio-util", - "tower 0.5.2", - "tower-http 0.6.6", + "tower", + "tower-http", "tracing", ] [[package]] name = "kube-core" -version = "0.99.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff0d0793db58e70ca6d689489183816cb3aa481673e7433dc618cf7e8007c675" +version = "3.0.1" +source = "git+https://github.com/kube-rs/kube-rs?rev=fe69cc486ff8e62a7da61d64ec3ebbd9e64c43b5#fe69cc486ff8e62a7da61d64ec3ebbd9e64c43b5" dependencies = [ - "chrono", + "derive_more", "form_urlencoded", "http", + "jiff", "json-patch", "k8s-openapi", "schemars", "serde", "serde-value", "serde_json", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] name = "kube-derive" -version = "0.99.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c562f58dc9f7ca5feac8a6ee5850ca221edd6f04ce0dd2ee873202a88cd494c9" +version = "3.0.1" +source = "git+https://github.com/kube-rs/kube-rs?rev=fe69cc486ff8e62a7da61d64ec3ebbd9e64c43b5#fe69cc486ff8e62a7da61d64ec3ebbd9e64c43b5" dependencies = [ "darling", "proc-macro2", "quote", "serde", "serde_json", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] name = "kube-runtime" -version = "0.99.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88f34cfab9b4bd8633062e0e85edb81df23cb09f159f2e31c60b069ae826ffdc" +version = "3.0.1" +source = "git+https://github.com/kube-rs/kube-rs?rev=fe69cc486ff8e62a7da61d64ec3ebbd9e64c43b5#fe69cc486ff8e62a7da61d64ec3ebbd9e64c43b5" dependencies = [ "ahash", "async-broadcast", "async-stream", - "async-trait", "backon", "educe", "futures", - "hashbrown 0.15.5", + "hashbrown 0.16.1", "hostname", "json-patch", "k8s-openapi", @@ -1981,7 +2047,7 @@ dependencies = [ "pin-project", "serde", "serde_json", - "thiserror 2.0.17", + "thiserror 2.0.18", "tokio", "tokio-util", "tracing", @@ -1993,11 +2059,17 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +[[package]] +name = "leb128fmt" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" + [[package]] name = "libc" -version = "0.2.177" +version = "0.2.183" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" +checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d" [[package]] name = "libloading" @@ -2006,49 +2078,41 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" dependencies = [ "cfg-if", - "windows-link 0.2.1", + "windows-link", ] [[package]] name = "libm" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" +checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" [[package]] name = "libredox" -version = "0.1.10" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" +checksum = "1744e39d1d6a9948f4f388969627434e31128196de472883b39f148769bfe30a" dependencies = [ - "bitflags", "libc", - "redox_syscall", ] [[package]] name = "linux-raw-sys" -version = "0.4.15" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" - -[[package]] -name = "linux-raw-sys" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" [[package]] name = "litemap" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" [[package]] name = "litrs" -version = "0.4.2" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5e54036fe321fd421e10d732f155734c4e4afd610dd556d9a82833ab3ee0bed" +checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092" [[package]] name = "lock_api" @@ -2061,9 +2125,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.28" +version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" [[package]] name = "lru-slab" @@ -2080,12 +2144,6 @@ dependencies = [ "regex-automata", ] -[[package]] -name = "matchit" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" - [[package]] name = "matchit" version = "0.8.4" @@ -2094,9 +2152,9 @@ checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" [[package]] name = "memchr" -version = "2.7.6" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" +checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" [[package]] name = "mime" @@ -2132,32 +2190,15 @@ dependencies = [ [[package]] name = "mio" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" +checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" dependencies = [ "libc", "wasi", "windows-sys 0.61.2", ] -[[package]] -name = "multer" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83e87776546dc87511aa5ee218730c92b666d7264ab6ed41f9d215af9cd5224b" -dependencies = [ - "bytes", - "encoding_rs", - "futures-util", - "http", - "httparse", - "memchr", - "mime", - "spin", - "version_check", -] - [[package]] name = "nom" version = "7.1.3" @@ -2179,9 +2220,9 @@ dependencies = [ [[package]] name = "num-conv" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" +checksum = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050" [[package]] name = "num-traits" @@ -2192,28 +2233,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "num_enum" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" -dependencies = [ - "num_enum_derive", - "rustversion", -] - -[[package]] -name = "num_enum_derive" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 2.0.106", -] - [[package]] name = "numtoa" version = "0.2.4" @@ -2228,35 +2247,35 @@ checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] name = "once_cell_polyfill" -version = "1.70.1" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" [[package]] name = "openssl-probe" -version = "0.1.6" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" +checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" [[package]] name = "opentelemetry" -version = "0.28.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "236e667b670a5cdf90c258f5a55794ec5ac5027e960c224bff8367a59e1e6426" +checksum = "b84bcd6ae87133e903af7ef497404dda70c60d0ea14895fc8a5e6722754fc2a0" dependencies = [ "futures-core", "futures-sink", "js-sys", "pin-project-lite", - "thiserror 2.0.17", + "thiserror 2.0.18", "tracing", ] [[package]] name = "opentelemetry-appender-tracing" -version = "0.28.1" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c513c7af3bec30113f3d4620134ff923295f1e9c580fda2b8abe0831f925ddc0" +checksum = "ef6a1ac5ca3accf562b8c306fa8483c85f4390f768185ab775f242f7fe8fdcc2" dependencies = [ "opentelemetry", "tracing", @@ -2266,34 +2285,31 @@ dependencies = [ [[package]] name = "opentelemetry-http" -version = "0.28.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8863faf2910030d139fb48715ad5ff2f35029fc5f244f6d5f689ddcf4d26253" +checksum = "d7a6d09a73194e6b66df7c8f1b680f156d916a1a942abf2de06823dd02b7855d" dependencies = [ "async-trait", "bytes", "http", "opentelemetry", - "reqwest", - "tracing", + "reqwest 0.12.28", ] [[package]] name = "opentelemetry-otlp" -version = "0.28.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bef114c6d41bea83d6dc60eb41720eedd0261a67af57b66dd2b84ac46c01d91" +checksum = "7a2366db2dca4d2ad033cad11e6ee42844fd727007af5ad04a1730f4cb8163bf" dependencies = [ - "async-trait", - "futures-core", "http", "opentelemetry", "opentelemetry-http", "opentelemetry-proto", "opentelemetry_sdk", "prost", - "reqwest", - "thiserror 2.0.17", + "reqwest 0.12.28", + "thiserror 2.0.18", "tokio", "tonic", "tracing", @@ -2301,35 +2317,38 @@ dependencies = [ [[package]] name = "opentelemetry-proto" -version = "0.28.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f8870d3024727e99212eb3bb1762ec16e255e3e6f58eeb3dc8db1aa226746d" +checksum = "a7175df06de5eaee9909d4805a3d07e28bb752c34cab57fa9cff549da596b30f" dependencies = [ "opentelemetry", "opentelemetry_sdk", "prost", "tonic", + "tonic-prost", ] +[[package]] +name = "opentelemetry-semantic-conventions" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e62e29dfe041afb8ed2a6c9737ab57db4907285d999ef8ad3a59092a36bdc846" + [[package]] name = "opentelemetry_sdk" -version = "0.28.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84dfad6042089c7fc1f6118b7040dc2eb4ab520abbf410b79dc481032af39570" +checksum = "e14ae4f5991976fd48df6d843de219ca6d31b01daaab2dad5af2badeded372bd" dependencies = [ - "async-trait", "futures-channel", "futures-executor", "futures-util", - "glob", "opentelemetry", "percent-encoding", - "rand 0.8.5", - "serde_json", - "thiserror 2.0.17", + "rand 0.9.2", + "thiserror 2.0.18", "tokio", "tokio-stream", - "tracing", ] [[package]] @@ -2373,7 +2392,7 @@ dependencies = [ "libc", "redox_syscall", "smallvec", - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -2403,9 +2422,9 @@ checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "pest" -version = "2.8.3" +version = "2.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "989e7521a040efde50c3ab6bbadafbe15ab6dc042686926be59ac35d74607df4" +checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" dependencies = [ "memchr", "ucd-trie", @@ -2413,9 +2432,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.8.3" +version = "2.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "187da9a3030dbafabbbfb20cb323b976dc7b7ce91fcd84f2f74d6e31d378e2de" +checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" dependencies = [ "pest", "pest_generator", @@ -2423,22 +2442,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.3" +version = "2.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49b401d98f5757ebe97a26085998d6c0eecec4995cad6ab7fc30ffdf4b052843" +checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] name = "pest_meta" -version = "2.8.3" +version = "2.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72f27a2cfee9f9039c4d86faa5af122a0ac3851441a34865b8a043b46be0065a" +checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" dependencies = [ "pest", "sha2", @@ -2450,7 +2469,17 @@ version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" dependencies = [ - "phf_shared", + "phf_shared 0.11.3", +] + +[[package]] +name = "phf" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" +dependencies = [ + "phf_shared 0.13.1", + "serde", ] [[package]] @@ -2459,8 +2488,18 @@ version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" dependencies = [ - "phf_generator", - "phf_shared", + "phf_generator 0.11.3", + "phf_shared 0.11.3", +] + +[[package]] +name = "phf_codegen" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49aa7f9d80421bca176ca8dbfebe668cc7a2684708594ec9f3c0db0805d5d6e1" +dependencies = [ + "phf_generator 0.13.1", + "phf_shared 0.13.1", ] [[package]] @@ -2469,10 +2508,20 @@ version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" dependencies = [ - "phf_shared", + "phf_shared 0.11.3", "rand 0.8.5", ] +[[package]] +name = "phf_generator" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737" +dependencies = [ + "fastrand", + "phf_shared 0.13.1", +] + [[package]] name = "phf_shared" version = "0.11.3" @@ -2482,31 +2531,40 @@ dependencies = [ "siphasher", ] +[[package]] +name = "phf_shared" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" +dependencies = [ + "siphasher", +] + [[package]] name = "pin-project" -version = "1.1.10" +version = "1.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +checksum = "f1749c7ed4bcaf4c3d0a3efc28538844fb29bcdd7d2b67b2be7e20ba861ff517" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.10" +version = "1.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +checksum = "d9b20ed30f105399776b9c883e68e536ef602a16ae6f596d2c473591d6ad64c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] name = "pin-project-lite" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pin-utils" @@ -2516,15 +2574,24 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "portable-atomic" -version = "1.11.1" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" +checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" + +[[package]] +name = "portable-atomic-util" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a9db96d7fa8782dd8c15ce32ffe8680bbd1e978a43bf51a34d39483540495f5" +dependencies = [ + "portable-atomic", +] [[package]] name = "potential_utf" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" dependencies = [ "zerovec", ] @@ -2551,55 +2618,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] name = "proc-macro-crate" -version = "3.4.0" +version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" +checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" dependencies = [ "toml_edit", ] -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", -] - [[package]] name = "proc-macro2" -version = "1.0.101" +version = "1.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" dependencies = [ "unicode-ident", ] [[package]] name = "product-config" -version = "0.7.0" -source = "git+https://github.com/stackabletech/product-config.git?tag=0.7.0#d61d4c7542c942da2ba0e9af4e5e3c3113abb0cf" +version = "0.8.0" +source = "git+https://github.com/stackabletech/product-config.git?tag=0.8.0#678fb7cf30af7d7b516c9a46698a1b661120d54a" dependencies = [ "fancy-regex", "java-properties", @@ -2609,14 +2652,14 @@ dependencies = [ "serde_json", "serde_yaml", "snafu 0.8.9", - "xml-rs", + "xml", ] [[package]] name = "prost" -version = "0.13.5" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" +checksum = "d2ea70524a2f82d518bce41317d0fae74151505651af45faf1ffbd6fd33f0568" dependencies = [ "bytes", "prost-derive", @@ -2624,15 +2667,15 @@ dependencies = [ [[package]] name = "prost-derive" -version = "0.13.5" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" +checksum = "27c6023962132f4b30eb4c172c91ce92d933da334c59c23cddee82358ddafb0b" dependencies = [ "anyhow", "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] @@ -2646,10 +2689,10 @@ dependencies = [ "pin-project-lite", "quinn-proto", "quinn-udp", - "rustc-hash 2.1.1", + "rustc-hash", "rustls", - "socket2 0.6.1", - "thiserror 2.0.17", + "socket2", + "thiserror 2.0.18", "tokio", "tracing", "web-time", @@ -2657,20 +2700,21 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.11.13" +version = "0.11.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" +checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098" dependencies = [ + "aws-lc-rs", "bytes", "getrandom 0.3.4", "lru-slab", "rand 0.9.2", "ring", - "rustc-hash 2.1.1", + "rustc-hash", "rustls", "rustls-pki-types", "slab", - "thiserror 2.0.17", + "thiserror 2.0.18", "tinyvec", "tracing", "web-time", @@ -2685,16 +2729,16 @@ dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.6.1", + "socket2", "tracing", "windows-sys 0.60.2", ] [[package]] name = "quote" -version = "1.0.41" +version = "1.0.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" dependencies = [ "proc-macro2", ] @@ -2705,6 +2749,12 @@ version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + [[package]] name = "rand" version = "0.8.5" @@ -2723,7 +2773,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" dependencies = [ "rand_chacha 0.9.0", - "rand_core 0.9.3", + "rand_core 0.9.5", +] + +[[package]] +name = "rand" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc266eb313df6c5c09c1c7b1fbe2510961e5bcd3add930c1e31f7ed9da0feff8" +dependencies = [ + "chacha20", + "getrandom 0.4.2", + "rand_core 0.10.0", ] [[package]] @@ -2743,7 +2804,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" dependencies = [ "ppv-lite86", - "rand_core 0.9.3", + "rand_core 0.9.5", ] [[package]] @@ -2752,18 +2813,24 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.16", + "getrandom 0.2.17", ] [[package]] name = "rand_core" -version = "0.9.3" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" dependencies = [ "getrandom 0.3.4", ] +[[package]] +name = "rand_core" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c8d0fd677905edcbeedbf2edb6494d676f0e98d54d5cf9bda0b061cb8fb8aba" + [[package]] name = "redox_syscall" version = "0.5.18" @@ -2774,27 +2841,41 @@ dependencies = [ ] [[package]] -name = "redox_termios" -version = "0.1.3" +name = "redox_users" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20145670ba436b55d91fc92d25e71160fbfbdd57831631c8d7d36377a476f1cb" +checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" +dependencies = [ + "getrandom 0.2.17", + "libredox", + "thiserror 2.0.18", +] [[package]] -name = "redox_users" -version = "0.4.6" +name = "ref-cast" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" dependencies = [ - "getrandom 0.2.16", - "libredox", - "thiserror 1.0.69", + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", ] [[package]] name = "regex" -version = "1.12.2" +version = "1.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" +checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" dependencies = [ "aho-corasick", "memchr", @@ -2804,9 +2885,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" +checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" dependencies = [ "aho-corasick", "memchr", @@ -2815,9 +2896,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.8" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" +checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" [[package]] name = "relative-path" @@ -2827,9 +2908,9 @@ checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2" [[package]] name = "reqwest" -version = "0.12.24" +version = "0.12.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d0946410b9f7b082a427e4ef5c8ff541a88b357bc6c637c40db3a68ac70a36f" +checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" dependencies = [ "base64", "bytes", @@ -2840,6 +2921,38 @@ dependencies = [ "http-body", "http-body-util", "hyper", + "hyper-util", + "js-sys", + "log", + "percent-encoding", + "pin-project-lite", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "reqwest" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab3f43e3283ab1488b624b44b0e988d0acea0b3214e694730a055cb6b2efa801" +dependencies = [ + "base64", + "bytes", + "futures-core", + "http", + "http-body", + "http-body-util", + "hyper", "hyper-rustls", "hyper-util", "js-sys", @@ -2848,22 +2961,20 @@ dependencies = [ "pin-project-lite", "quinn", "rustls", - "rustls-native-certs 0.8.2", "rustls-pki-types", + "rustls-platform-verifier", "serde", "serde_json", - "serde_urlencoded", "sync_wrapper", "tokio", "tokio-rustls", - "tower 0.5.2", - "tower-http 0.6.6", + "tower", + "tower-http", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "webpki-roots", ] [[package]] @@ -2874,7 +2985,7 @@ checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom 0.2.16", + "getrandom 0.2.17", "libc", "untrusted", "windows-sys 0.52.0", @@ -2888,21 +2999,20 @@ checksum = "88f8660c1ff60292143c98d08fc6e2f654d722db50410e3f3797d40baaf9d8f3" [[package]] name = "rstest" -version = "0.22.0" +version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b423f0e62bdd61734b67cd21ff50871dfaeb9cc74f869dcd6af974fbcb19936" +checksum = "f5a3193c063baaa2a95a33f03035c8a72b83d97a54916055ba22d35ed3839d49" dependencies = [ - "futures", "futures-timer", + "futures-util", "rstest_macros", - "rustc_version", ] [[package]] name = "rstest_macros" -version = "0.22.0" +version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5e1711e7d14f74b12a58411c542185ef7fb7f2e7f8ee6e2940a883628522b42" +checksum = "9c845311f0ff7951c5506121a9ad75aec44d083c31583b2ea5a30bcb0b0abba0" dependencies = [ "cfg-if", "glob", @@ -2912,15 +3022,15 @@ dependencies = [ "regex", "relative-path", "rustc_version", - "syn 2.0.106", + "syn 2.0.117", "unicode-ident", ] [[package]] name = "rust-embed" -version = "8.7.2" +version = "8.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "025908b8682a26ba8d12f6f2d66b987584a4a87bc024abc5bbc12553a8cd178a" +checksum = "04113cb9355a377d83f06ef1f0a45b8ab8cd7d8b1288160717d66df5c7988d27" dependencies = [ "rust-embed-impl", "rust-embed-utils", @@ -2929,33 +3039,27 @@ dependencies = [ [[package]] name = "rust-embed-impl" -version = "8.7.2" +version = "8.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6065f1a4392b71819ec1ea1df1120673418bf386f50de1d6f54204d836d4349c" +checksum = "da0902e4c7c8e997159ab384e6d0fc91c221375f6894346ae107f47dd0f3ccaa" dependencies = [ "proc-macro2", "quote", "rust-embed-utils", - "syn 2.0.106", + "syn 2.0.117", "walkdir", ] [[package]] name = "rust-embed-utils" -version = "8.7.2" +version = "8.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6cc0c81648b20b70c491ff8cce00c1c3b223bb8ed2b5d41f0e54c6c4c0a3594" +checksum = "5bcdef0be6fe7f6fa333b1073c949729274b05f123a0ad7efcb8efd878e5c3b1" dependencies = [ "sha2", "walkdir", ] -[[package]] -name = "rustc-hash" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" - [[package]] name = "rustc-hash" version = "2.1.1" @@ -2973,36 +3077,24 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" -dependencies = [ - "bitflags", - "errno", - "libc", - "linux-raw-sys 0.4.15", - "windows-sys 0.59.0", -] - -[[package]] -name = "rustix" -version = "1.1.2" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ "bitflags", "errno", "libc", - "linux-raw-sys 0.11.0", + "linux-raw-sys", "windows-sys 0.61.2", ] [[package]] name = "rustls" -version = "0.23.33" +version = "0.23.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "751e04a496ca00bb97a5e043158d23d66b5aabf2e1d5aa2a0aaebb1aafe6f82c" +checksum = "758025cb5fccfd3bc2fd74708fd4682be41d99e5dff73c377c0646c6012c73a4" dependencies = [ + "aws-lc-rs", "log", "once_cell", "ring", @@ -3014,54 +3106,60 @@ dependencies = [ [[package]] name = "rustls-native-certs" -version = "0.7.3" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5bfb394eeed242e909609f56089eecfe5fda225042e8b171791b9c95f5931e5" +checksum = "612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63" dependencies = [ "openssl-probe", - "rustls-pemfile", "rustls-pki-types", "schannel", - "security-framework 2.11.1", + "security-framework", ] [[package]] -name = "rustls-native-certs" -version = "0.8.2" +name = "rustls-pki-types" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9980d917ebb0c0536119ba501e90834767bffc3d60641457fd84a1f3fd337923" +checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" dependencies = [ - "openssl-probe", - "rustls-pki-types", - "schannel", - "security-framework 3.5.1", + "web-time", + "zeroize", ] [[package]] -name = "rustls-pemfile" -version = "2.2.0" +name = "rustls-platform-verifier" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" +checksum = "1d99feebc72bae7ab76ba994bb5e121b8d83d910ca40b36e0921f53becc41784" dependencies = [ - "rustls-pki-types", + "core-foundation", + "core-foundation-sys", + "jni", + "log", + "once_cell", + "rustls", + "rustls-native-certs", + "rustls-platform-verifier-android", + "rustls-webpki", + "security-framework", + "security-framework-sys", + "webpki-root-certs", + "windows-sys 0.61.2", ] [[package]] -name = "rustls-pki-types" -version = "1.12.0" +name = "rustls-platform-verifier-android" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" -dependencies = [ - "web-time", - "zeroize", -] +checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" [[package]] name = "rustls-webpki" -version = "0.103.7" +version = "0.103.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10b3f4191e8a80e6b43eebabfac91e5dcecebb27a71f04e820c47ec41d314bf" +checksum = "d7df23109aa6c1567d1c575b9952556388da57401e4ace1d15f79eedad0d8f53" dependencies = [ + "aws-lc-rs", "ring", "rustls-pki-types", "untrusted", @@ -3075,9 +3173,9 @@ checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "ryu" -version = "1.0.20" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" +checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" [[package]] name = "same-file" @@ -3099,11 +3197,12 @@ dependencies = [ [[package]] name = "schemars" -version = "0.8.22" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" +checksum = "a2b42f36aa1cd011945615b92222f6bf73c599a102a300334cd7f8dbeec726cc" dependencies = [ "dyn-clone", + "ref-cast", "schemars_derive", "serde", "serde_json", @@ -3112,14 +3211,14 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.22" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" +checksum = "7d115b50f4aaeea07e79c1912f645c7513d81715d0420f8bc77a18c6260b307f" dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] @@ -3139,25 +3238,12 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.11.1" +version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" dependencies = [ "bitflags", - "core-foundation 0.9.4", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework" -version = "3.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef" -dependencies = [ - "bitflags", - "core-foundation 0.10.1", + "core-foundation", "core-foundation-sys", "libc", "security-framework-sys", @@ -3165,9 +3251,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.15.0" +version = "2.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" +checksum = "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3" dependencies = [ "core-foundation-sys", "libc", @@ -3220,7 +3306,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] @@ -3231,20 +3317,20 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] name = "serde_json" -version = "1.0.145" +version = "1.0.149" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" dependencies = [ "itoa", "memchr", - "ryu", "serde", "serde_core", + "zmij", ] [[package]] @@ -3260,9 +3346,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e24345aa0fe688594e73770a5f6d1b216508b4f93484c0026d521acd30134392" +checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" dependencies = [ "serde_core", ] @@ -3285,7 +3371,7 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.11.4", + "indexmap", "itoa", "ryu", "serde", @@ -3299,7 +3385,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "digest", ] @@ -3310,7 +3396,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "digest", ] @@ -3331,30 +3417,31 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" -version = "1.4.6" +version = "1.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" dependencies = [ + "errno", "libc", ] [[package]] name = "simd-adler32" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" +checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" [[package]] name = "siphasher" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" +checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" [[package]] name = "slab" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "slug" @@ -3387,10 +3474,19 @@ name = "snafu" version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e84b3f4eacbf3a1ce05eac6763b4d629d60cbc94d632e4092c54ade71f1e1a2" +dependencies = [ + "snafu-derive 0.8.9", +] + +[[package]] +name = "snafu" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1d4bced6a69f90b2056c03dcff2c4737f98d6fb9e0853493996e1d253ca29c6" dependencies = [ "futures-core", "pin-project", - "snafu-derive 0.8.9", + "snafu-derive 0.9.0", ] [[package]] @@ -3413,35 +3509,31 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] -name = "socket2" -version = "0.5.10" +name = "snafu-derive" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" +checksum = "54254b8531cafa275c5e096f62d48c81435d1015405a91198ddb11e967301d40" dependencies = [ - "libc", - "windows-sys 0.52.0", + "heck", + "proc-macro2", + "quote", + "syn 2.0.117", ] [[package]] name = "socket2" -version = "0.6.1" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" +checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" dependencies = [ "libc", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] -[[package]] -name = "spin" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" - [[package]] name = "stable_deref_trait" version = "1.2.1" @@ -3456,19 +3548,17 @@ dependencies = [ "clap", "futures", "helm-sys", - "indexmap 2.11.4", + "indexmap", "indicatif", - "k8s-openapi", - "kube", - "rand 0.8.5", - "reqwest", + "rand 0.10.0", + "reqwest 0.13.2", "rstest", "semver", "serde", "serde_json", "serde_yaml", "sha2", - "snafu 0.8.9", + "snafu 0.9.0", "stackable-operator", "tera", "tokio", @@ -3484,26 +3574,25 @@ dependencies = [ name = "stackable-cockpit-web" version = "0.0.0-dev" dependencies = [ - "phf", - "phf_codegen", + "phf 0.13.1", + "phf_codegen 0.13.1", ] [[package]] name = "stackable-cockpitd" version = "0.0.0-dev" dependencies = [ - "axum 0.7.9", + "axum", "axum-extra", "bcrypt", "clap", "futures", - "k8s-openapi", "serde", - "snafu 0.8.9", + "snafu 0.9.0", "stackable-cockpit", "stackable-cockpit-web", "tokio", - "tower-http 0.5.2", + "tower-http", "tracing", "tracing-subscriber", "utoipa", @@ -3513,10 +3602,9 @@ dependencies = [ [[package]] name = "stackable-operator" -version = "0.92.0" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1" +version = "0.107.0" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.107.0#a16cafb151202948e79925a58662b14b8b004cd7" dependencies = [ - "chrono", "clap", "const_format", "delegate", @@ -3524,7 +3612,9 @@ dependencies = [ "educe", "either", "futures", - "indexmap 2.11.4", + "http", + "indexmap", + "jiff", "json-patch", "k8s-openapi", "kube", @@ -3551,43 +3641,49 @@ dependencies = [ [[package]] name = "stackable-operator-derive" version = "0.3.1" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.107.0#a16cafb151202948e79925a58662b14b8b004cd7" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] name = "stackable-shared" -version = "0.0.1" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1" +version = "0.1.0" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.107.0#a16cafb151202948e79925a58662b14b8b004cd7" dependencies = [ + "jiff", + "k8s-openapi", "kube", + "schemars", "semver", "serde", "serde_yaml", "snafu 0.8.9", + "strum", + "time", ] [[package]] name = "stackable-telemetry" -version = "0.6.0" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1" +version = "0.6.2" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.107.0#a16cafb151202948e79925a58662b14b8b004cd7" dependencies = [ - "axum 0.8.6", + "axum", "clap", "futures-util", "opentelemetry", "opentelemetry-appender-tracing", "opentelemetry-otlp", + "opentelemetry-semantic-conventions", "opentelemetry_sdk", "pin-project", "snafu 0.8.9", "strum", "tokio", - "tower 0.5.2", + "tower", "tracing", "tracing-appender", "tracing-opentelemetry", @@ -3596,26 +3692,33 @@ dependencies = [ [[package]] name = "stackable-versioned" -version = "0.7.1" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1" +version = "0.8.3" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.107.0#a16cafb151202948e79925a58662b14b8b004cd7" dependencies = [ + "schemars", + "serde", + "serde_json", + "serde_yaml", + "snafu 0.8.9", "stackable-versioned-macros", ] [[package]] name = "stackable-versioned-macros" -version = "0.7.1" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1" +version = "0.8.3" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.107.0#a16cafb151202948e79925a58662b14b8b004cd7" dependencies = [ "convert_case", + "convert_case_extras", "darling", + "indoc", "itertools 0.14.0", "k8s-openapi", "k8s-version", "kube", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] @@ -3630,17 +3733,18 @@ dependencies = [ "directories", "dotenvy", "futures", - "indexmap 2.11.4", + "indexmap", "indicatif", "lazy_static", "libc", - "rand 0.8.5", - "reqwest", + "rand 0.10.0", + "reqwest 0.13.2", + "rustls", "semver", "serde", "serde_json", "serde_yaml", - "snafu 0.8.9", + "snafu 0.9.0", "stackable-cockpit", "stackable-operator", "tera", @@ -3661,23 +3765,23 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "strum" -version = "0.27.2" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" +checksum = "9628de9b8791db39ceda2b119bbe13134770b56c138ec1d3af810d045c04f9bd" dependencies = [ "strum_macros", ] [[package]] name = "strum_macros" -version = "0.27.2" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" +checksum = "ab85eea0270ee17587ed4156089e10b9e6880ee688791d45a905f5b1ca36f664" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] @@ -3699,9 +3803,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.106" +version = "2.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" dependencies = [ "proc-macro2", "quote", @@ -3725,14 +3829,14 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] name = "tera" -version = "1.20.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab9d851b45e865f178319da0abdbfe6acbc4328759ff18dafc3a41c16b4cd2ee" +checksum = "e8004bca281f2d32df3bacd59bc67b312cb4c70cea46cbd79dbe8ac5ed206722" dependencies = [ "chrono", "chrono-tz", @@ -3747,19 +3851,17 @@ dependencies = [ "serde", "serde_json", "slug", - "unic-segment", + "unicode-segmentation", ] [[package]] name = "termion" -version = "4.0.5" +version = "4.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3669a69de26799d6321a5aa713f55f7e2cd37bd47be044b50f2acafc42c122bb" +checksum = "f44138a9ae08f0f502f24104d82517ef4da7330c35acd638f1f29d3cd5475ecb" dependencies = [ "libc", - "libredox", "numtoa", - "redox_termios", ] [[package]] @@ -3773,11 +3875,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.17" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" dependencies = [ - "thiserror-impl 2.0.17", + "thiserror-impl 2.0.18", ] [[package]] @@ -3788,18 +3890,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] name = "thiserror-impl" -version = "2.0.17" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] @@ -3813,30 +3915,30 @@ dependencies = [ [[package]] name = "time" -version = "0.3.44" +version = "0.3.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" +checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" dependencies = [ "deranged", "itoa", "num-conv", "powerfmt", - "serde", + "serde_core", "time-core", "time-macros", ] [[package]] name = "time-core" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" +checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" [[package]] name = "time-macros" -version = "0.2.24" +version = "0.2.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" +checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" dependencies = [ "num-conv", "time-core", @@ -3844,9 +3946,9 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" dependencies = [ "displaydoc", "zerovec", @@ -3869,29 +3971,29 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.48.0" +version = "1.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" +checksum = "27ad5e34374e03cfffefc301becb44e9dc3c17584f414349ebe29ed26661822d" dependencies = [ "bytes", "libc", "mio", "pin-project-lite", "signal-hook-registry", - "socket2 0.6.1", + "socket2", "tokio-macros", "windows-sys 0.61.2", ] [[package]] name = "tokio-macros" -version = "2.6.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" +checksum = "5c55a2eff8b69ce66c84f85e1da1c233edc36ceb85a2058d11b0d6a3c7e7569c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] @@ -3906,9 +4008,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.17" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" +checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70" dependencies = [ "futures-core", "pin-project-lite", @@ -3917,9 +4019,9 @@ dependencies = [ [[package]] name = "tokio-tungstenite" -version = "0.26.2" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a9daff607c6d2bf6c16fd681ccb7eecc83e4e2cdc1ca067ffaadfca5de7f084" +checksum = "d25a406cddcc431a75d3d9afc6a7c0f7428d4891dd973e4d54c56b46127bf857" dependencies = [ "futures-util", "log", @@ -3929,9 +4031,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.16" +version = "0.7.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" +checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" dependencies = [ "bytes", "futures-core", @@ -3943,11 +4045,11 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.8" +version = "1.0.6+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0dc8b1fb61449e27716ec0e1bdf0f6b8f3e8f6b05391e8497b8b6d7804ea6d8" +checksum = "399b1124a3c9e16766831c6bba21e50192572cdd98706ea114f9502509686ffc" dependencies = [ - "indexmap 2.11.4", + "indexmap", "serde_core", "serde_spanned", "toml_datetime", @@ -3958,20 +4060,20 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.3" +version = "1.0.0+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" +checksum = "32c2555c699578a4f59f0cc68e5116c8d7cabbd45e1409b989d4be085b53f13e" dependencies = [ "serde_core", ] [[package]] name = "toml_edit" -version = "0.23.7" +version = "0.25.4+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" +checksum = "7193cbd0ce53dc966037f54351dbbcf0d5a642c7f0038c382ef9e677ce8c13f2" dependencies = [ - "indexmap 2.11.4", + "indexmap", "toml_datetime", "toml_parser", "winnow", @@ -3979,32 +4081,29 @@ dependencies = [ [[package]] name = "toml_parser" -version = "1.0.4" +version = "1.0.9+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" +checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" dependencies = [ "winnow", ] [[package]] name = "toml_writer" -version = "1.0.4" +version = "1.0.6+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df8b2b54733674ad286d16267dcfc7a71ed5c776e4ac7aa3c3e2561f7c637bf2" +checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" [[package]] name = "tonic" -version = "0.12.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" +checksum = "fec7c61a0695dc1887c1b53952990f3ad2e3a31453e1f49f10e75424943a93ec" dependencies = [ - "async-stream", "async-trait", - "axum 0.7.9", "base64", "bytes", "flate2", - "h2", "http", "http-body", "http-body-util", @@ -4013,45 +4112,37 @@ dependencies = [ "hyper-util", "percent-encoding", "pin-project", - "prost", - "socket2 0.5.10", + "sync_wrapper", "tokio", "tokio-stream", - "tower 0.4.13", + "tower", "tower-layer", "tower-service", "tracing", ] [[package]] -name = "tower" -version = "0.4.13" +name = "tonic-prost" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +checksum = "a55376a0bbaa4975a3f10d009ad763d8f4108f067c7c2e74f3001fb49778d309" dependencies = [ - "futures-core", - "futures-util", - "indexmap 1.9.3", - "pin-project", - "pin-project-lite", - "rand 0.8.5", - "slab", - "tokio", - "tokio-util", - "tower-layer", - "tower-service", - "tracing", + "bytes", + "prost", + "tonic", ] [[package]] name = "tower" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" dependencies = [ "futures-core", "futures-util", + "indexmap", "pin-project-lite", + "slab", "sync_wrapper", "tokio", "tokio-util", @@ -4062,26 +4153,9 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" -dependencies = [ - "bitflags", - "bytes", - "http", - "http-body", - "http-body-util", - "mime", - "pin-project-lite", - "tower-layer", - "tower-service", -] - -[[package]] -name = "tower-http" -version = "0.6.6" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" dependencies = [ "base64", "bitflags", @@ -4092,7 +4166,7 @@ dependencies = [ "iri-string", "mime", "pin-project-lite", - "tower 0.5.2", + "tower", "tower-layer", "tower-service", "tracing", @@ -4112,9 +4186,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.41" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" dependencies = [ "log", "pin-project-lite", @@ -4124,32 +4198,32 @@ dependencies = [ [[package]] name = "tracing-appender" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf" +checksum = "786d480bce6247ab75f005b14ae1624ad978d3029d9113f0a22fa1ac773faeaf" dependencies = [ "crossbeam-channel", - "thiserror 1.0.69", + "thiserror 2.0.18", "time", "tracing-subscriber", ] [[package]] name = "tracing-attributes" -version = "0.1.30" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] name = "tracing-core" -version = "0.1.34" +version = "0.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" dependencies = [ "once_cell", "valuable", @@ -4157,9 +4231,9 @@ dependencies = [ [[package]] name = "tracing-indicatif" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04d4e11e0e27acef25a47f27e9435355fecdc488867fa2bc90e75b0700d2823d" +checksum = "e1ef6990e0438749f0080573248e96631171a0b5ddfddde119aa5ba8c3a9c47e" dependencies = [ "indicatif", "tracing", @@ -4180,14 +4254,12 @@ dependencies = [ [[package]] name = "tracing-opentelemetry" -version = "0.29.0" +version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "721f2d2569dce9f3dfbbddee5906941e953bfcdf736a62da3377f5751650cc36" +checksum = "1ac28f2d093c6c477eaa76b23525478f38de514fa9aeb1285738d4b97a9552fc" dependencies = [ "js-sys", - "once_cell", "opentelemetry", - "opentelemetry_sdk", "smallvec", "tracing", "tracing-core", @@ -4208,9 +4280,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.20" +version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5" +checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e" dependencies = [ "matchers", "nu-ansi-term", @@ -4235,9 +4307,9 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "tungstenite" -version = "0.26.2" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4793cb5e56680ecbb1d843515b23b6de9a75eb04b66643e256a396d43be33c13" +checksum = "8628dcc84e5a09eb3d8423d6cb682965dea9133204e8fb3efee74c2a0c259442" dependencies = [ "bytes", "data-encoding", @@ -4246,7 +4318,7 @@ dependencies = [ "log", "rand 0.9.2", "sha1", - "thiserror 2.0.17", + "thiserror 2.0.18", "utf-8", ] @@ -4262,67 +4334,17 @@ version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" -[[package]] -name = "unic-char-property" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221" -dependencies = [ - "unic-char-range", -] - -[[package]] -name = "unic-char-range" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc" - -[[package]] -name = "unic-common" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" - -[[package]] -name = "unic-segment" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4ed5d26be57f84f176157270c112ef57b86debac9cd21daaabbe56db0f88f23" -dependencies = [ - "unic-ucd-segment", -] - -[[package]] -name = "unic-ucd-segment" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2079c122a62205b421f499da10f3ee0f7697f012f55b675e002483c73ea34700" -dependencies = [ - "unic-char-property", - "unic-char-range", - "unic-ucd-version", -] - -[[package]] -name = "unic-ucd-version" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4" -dependencies = [ - "unic-common", -] - [[package]] name = "unicase" -version = "2.8.1" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" +checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" [[package]] name = "unicode-ident" -version = "1.0.19" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-segmentation" @@ -4330,12 +4352,6 @@ version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" -[[package]] -name = "unicode-width" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" - [[package]] name = "unicode-width" version = "0.2.2" @@ -4350,9 +4366,9 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "unit-prefix" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "323402cff2dd658f39ca17c789b502021b3f18707c91cdf22e3838e1b4023817" +checksum = "81e544489bf3d8ef66c953931f56617f423cd4b5494be343d9b9d3dda037b9a3" [[package]] name = "unsafe-libyaml" @@ -4368,14 +4384,15 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.7" +version = "2.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" dependencies = [ "form_urlencoded", "idna", "percent-encoding", "serde", + "serde_derive", ] [[package]] @@ -4404,11 +4421,11 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "utoipa" -version = "4.2.3" +version = "5.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5afb1a60e207dca502682537fefcfd9921e71d0b83e9576060f09abc6efab23" +checksum = "2fcc29c80c21c31608227e0912b2d7fddba57ad76b606890627ba8ee7964e993" dependencies = [ - "indexmap 2.11.4", + "indexmap", "serde", "serde_json", "utoipa-gen", @@ -4416,26 +4433,25 @@ dependencies = [ [[package]] name = "utoipa-gen" -version = "4.3.1" +version = "5.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20c24e8ab68ff9ee746aad22d39b5535601e6416d1b0feeabf78be986a5c4392" +checksum = "6d79d08d92ab8af4c5e8a6da20c47ae3f61a0f1dabc1997cdf2d082b757ca08b" dependencies = [ - "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] name = "utoipa-swagger-ui" -version = "7.1.0" +version = "9.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "943e0ff606c6d57d410fd5663a4d7c074ab2c5f14ab903b9514565e59fa1189e" +checksum = "d047458f1b5b65237c2f6dc6db136945667f40a7668627b3490b9513a3d43a55" dependencies = [ - "axum 0.7.9", + "axum", + "base64", "mime_guess", "regex", - "reqwest", "rust-embed", "serde", "serde_json", @@ -4446,11 +4462,11 @@ dependencies = [ [[package]] name = "uuid" -version = "1.18.1" +version = "1.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" +checksum = "a68d3c8f01c0cfa54a75291d83601161799e4a89a39e0929f4b0354d88757a37" dependencies = [ - "getrandom 0.3.4", + "getrandom 0.4.2", "js-sys", "wasm-bindgen", ] @@ -4469,25 +4485,13 @@ checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "vt100" -version = "0.15.2" +version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84cd863bf0db7e392ba3bd04994be3473491b31e66340672af5d11943c6274de" +checksum = "054ff75fb8fa83e609e685106df4faeffdf3a735d3c74ebce97ec557d5d36fd9" dependencies = [ "itoa", - "log", - "unicode-width 0.1.14", - "vte 0.11.1", -] - -[[package]] -name = "vte" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5022b5fbf9407086c180e9557be968742d839e68346af7792b8592489732197" -dependencies = [ - "arrayvec", - "utf8parse", - "vte_generate_state_changes", + "unicode-width", + "vte 0.15.0", ] [[package]] @@ -4501,13 +4505,13 @@ dependencies = [ ] [[package]] -name = "vte_generate_state_changes" -version = "0.1.2" +name = "vte" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e369bee1b05d510a7b4ed645f5faa90619e05437111783ea5848f28d97d3c2e" +checksum = "a5924018406ce0063cd67f8e008104968b74b563ee1b85dde3ed1f7cb87d3dbd" dependencies = [ - "proc-macro2", - "quote", + "arrayvec", + "memchr", ] [[package]] @@ -4537,47 +4541,43 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasip2" -version = "1.0.1+wasi-0.2.4" +version = "1.0.2+wasi-0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" dependencies = [ "wit-bindgen", ] [[package]] -name = "wasm-bindgen" -version = "0.2.104" +name = "wasip3" +version = "0.4.0+wasi-0.3.0-rc-2026-01-06" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1da10c01ae9f1ae40cbfac0bac3b1e724b320abfcf52229f80b547c0d250e2d" +checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" dependencies = [ - "cfg-if", - "once_cell", - "rustversion", - "wasm-bindgen-macro", - "wasm-bindgen-shared", + "wit-bindgen", ] [[package]] -name = "wasm-bindgen-backend" -version = "0.2.104" +name = "wasm-bindgen" +version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "671c9a5a66f49d8a47345ab942e2cb93c7d1d0339065d4f8139c486121b43b19" +checksum = "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e" dependencies = [ - "bumpalo", - "log", - "proc-macro2", - "quote", - "syn 2.0.106", + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.54" +version = "0.4.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e038d41e478cc73bae0ff9b36c60cff1c98b8f38f8d7e8061e79ee63608ac5c" +checksum = "e9c5522b3a28661442748e09d40924dfb9ca614b21c00d3fd135720e48b67db8" dependencies = [ "cfg-if", + "futures-util", "js-sys", "once_cell", "wasm-bindgen", @@ -4586,9 +4586,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.104" +version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ca60477e4c59f5f2986c50191cd972e3a50d8a95603bc9434501cf156a9a119" +checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4596,31 +4596,65 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.104" +version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f07d2f20d4da7b26400c9f4a0511e6e0345b040694e8a75bd41d578fa4421d7" +checksum = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3" dependencies = [ + "bumpalo", "proc-macro2", "quote", - "syn 2.0.106", - "wasm-bindgen-backend", + "syn 2.0.117", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.104" +version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bad67dc8b2a1a6e5448428adec4c3e84c43e561d8c9ee8a9e5aabeb193ec41d1" +checksum = "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16" dependencies = [ "unicode-ident", ] +[[package]] +name = "wasm-encoder" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" +dependencies = [ + "leb128fmt", + "wasmparser", +] + +[[package]] +name = "wasm-metadata" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" +dependencies = [ + "anyhow", + "indexmap", + "wasm-encoder", + "wasmparser", +] + +[[package]] +name = "wasmparser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" +dependencies = [ + "bitflags", + "hashbrown 0.15.5", + "indexmap", + "semver", +] + [[package]] name = "web-sys" -version = "0.3.81" +version = "0.3.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9367c417a924a74cae129e6a2ae3b47fabb1f8995595ab474029da749a8be120" +checksum = "854ba17bb104abfb26ba36da9729addc7ce7f06f5c0f90f3c391f8461cca21f9" dependencies = [ "js-sys", "wasm-bindgen", @@ -4637,24 +4671,21 @@ dependencies = [ ] [[package]] -name = "webpki-roots" -version = "1.0.3" +name = "webpki-root-certs" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32b130c0d2d49f8b6889abc456e795e82525204f27c42cf767cf0d7734e089b8" +checksum = "804f18a4ac2676ffb4e8b5b5fa9ae38af06df08162314f96a68d2a363e21a8ca" dependencies = [ "rustls-pki-types", ] [[package]] name = "which" -version = "6.0.3" +version = "8.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ee928febd44d98f2f459a4a79bd4d928591333a494a10a868418ac1b39cf1f" +checksum = "81995fafaaaf6ae47a7d0cc83c67caf92aeb7e5331650ae6ff856f7c0c60c459" dependencies = [ - "either", - "home", - "rustix 0.38.44", - "winsafe", + "libc", ] [[package]] @@ -4696,7 +4727,7 @@ checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" dependencies = [ "windows-implement", "windows-interface", - "windows-link 0.2.1", + "windows-link", "windows-result", "windows-strings", ] @@ -4709,7 +4740,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] @@ -4720,15 +4751,9 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] -[[package]] -name = "windows-link" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" - [[package]] name = "windows-link" version = "0.2.1" @@ -4741,7 +4766,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" dependencies = [ - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -4750,16 +4775,16 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" dependencies = [ - "windows-link 0.2.1", + "windows-link", ] [[package]] name = "windows-sys" -version = "0.48.0" +version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" dependencies = [ - "windows-targets 0.48.5", + "windows-targets 0.42.2", ] [[package]] @@ -4771,15 +4796,6 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "windows-sys" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" -dependencies = [ - "windows-targets 0.52.6", -] - [[package]] name = "windows-sys" version = "0.60.2" @@ -4795,22 +4811,22 @@ version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" dependencies = [ - "windows-link 0.2.1", + "windows-link", ] [[package]] name = "windows-targets" -version = "0.48.5" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", ] [[package]] @@ -4835,7 +4851,7 @@ version = "0.53.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" dependencies = [ - "windows-link 0.2.1", + "windows-link", "windows_aarch64_gnullvm 0.53.1", "windows_aarch64_msvc 0.53.1", "windows_i686_gnu 0.53.1", @@ -4848,9 +4864,9 @@ dependencies = [ [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.5" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" [[package]] name = "windows_aarch64_gnullvm" @@ -4866,9 +4882,9 @@ checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" [[package]] name = "windows_aarch64_msvc" -version = "0.48.5" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" [[package]] name = "windows_aarch64_msvc" @@ -4884,9 +4900,9 @@ checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" [[package]] name = "windows_i686_gnu" -version = "0.48.5" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" [[package]] name = "windows_i686_gnu" @@ -4914,9 +4930,9 @@ checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" [[package]] name = "windows_i686_msvc" -version = "0.48.5" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" [[package]] name = "windows_i686_msvc" @@ -4932,9 +4948,9 @@ checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" [[package]] name = "windows_x86_64_gnu" -version = "0.48.5" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" [[package]] name = "windows_x86_64_gnu" @@ -4950,9 +4966,9 @@ checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.5" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" [[package]] name = "windows_x86_64_gnullvm" @@ -4968,9 +4984,9 @@ checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" [[package]] name = "windows_x86_64_msvc" -version = "0.48.5" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" [[package]] name = "windows_x86_64_msvc" @@ -4986,36 +5002,112 @@ checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] name = "winnow" -version = "0.7.13" +version = "0.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" +checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" dependencies = [ "memchr", ] [[package]] -name = "winsafe" -version = "0.0.19" +name = "wit-bindgen" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" +dependencies = [ + "wit-bindgen-rust-macro", +] [[package]] -name = "wit-bindgen" -version = "0.46.0" +name = "wit-bindgen-core" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" +dependencies = [ + "anyhow", + "heck", + "wit-parser", +] + +[[package]] +name = "wit-bindgen-rust" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" +dependencies = [ + "anyhow", + "heck", + "indexmap", + "prettyplease", + "syn 2.0.117", + "wasm-metadata", + "wit-bindgen-core", + "wit-component", +] + +[[package]] +name = "wit-bindgen-rust-macro" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" +dependencies = [ + "anyhow", + "prettyplease", + "proc-macro2", + "quote", + "syn 2.0.117", + "wit-bindgen-core", + "wit-bindgen-rust", +] + +[[package]] +name = "wit-component" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" +dependencies = [ + "anyhow", + "bitflags", + "indexmap", + "log", + "serde", + "serde_derive", + "serde_json", + "wasm-encoder", + "wasm-metadata", + "wasmparser", + "wit-parser", +] + +[[package]] +name = "wit-parser" +version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" +checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" +dependencies = [ + "anyhow", + "id-arena", + "indexmap", + "log", + "semver", + "serde", + "serde_derive", + "serde_json", + "unicode-xid", + "wasmparser", +] [[package]] name = "writeable" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" [[package]] -name = "xml-rs" -version = "0.8.27" +name = "xml" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fd8403733700263c6eb89f192880191f1b83e332f7a20371ddcf421c4a337c7" +checksum = "b8aa498d22c9bbaf482329839bc5620c46be275a19a812e9a22a2b07529a642a" [[package]] name = "xtask" @@ -5028,7 +5120,7 @@ dependencies = [ "once_cell", "regex", "serde_json", - "snafu 0.8.9", + "snafu 0.9.0", "stackable-cockpitd", "stackablectl", "tera", @@ -5036,11 +5128,10 @@ dependencies = [ [[package]] name = "yoke" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" dependencies = [ - "serde", "stable_deref_trait", "yoke-derive", "zerofrom", @@ -5048,34 +5139,34 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", "synstructure", ] [[package]] name = "zerocopy" -version = "0.8.27" +version = "0.8.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" +checksum = "96e13bc581734df6250836c59a5f44f3c57db9f9acb9dc8e3eaabdaf6170254d" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.27" +version = "0.8.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" +checksum = "3545ea9e86d12ab9bba9fcd99b54c1556fd3199007def5a03c375623d05fac1c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] @@ -5095,7 +5186,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", "synstructure", ] @@ -5107,9 +5198,9 @@ checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" [[package]] name = "zerotrie" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" dependencies = [ "displaydoc", "yoke", @@ -5118,9 +5209,9 @@ dependencies = [ [[package]] name = "zerovec" -version = "0.11.4" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" dependencies = [ "yoke", "zerofrom", @@ -5129,27 +5220,49 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.117", ] [[package]] name = "zip" -version = "1.1.4" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cc23c04387f4da0374be4533ad1208cbb091d5c11d070dfef13676ad6497164" +checksum = "12598812502ed0105f607f941c386f43d441e00148fce9dec3ca5ffb0bde9308" dependencies = [ "arbitrary", "crc32fast", - "crossbeam-utils", - "displaydoc", "flate2", - "indexmap 2.11.4", - "num_enum", - "thiserror 1.0.69", + "indexmap", + "memchr", + "zopfli", +] + +[[package]] +name = "zlib-rs" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3be3d40e40a133f9c916ee3f9f4fa2d9d63435b5fbe1bfc6d9dae0aa0ada1513" + +[[package]] +name = "zmij" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" + +[[package]] +name = "zopfli" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f05cd8797d63865425ff89b5c4a48804f35ba0ce8d125800027ad6017d2b5249" +dependencies = [ + "bumpalo", + "crc32fast", + "log", + "simd-adler32", ] diff --git a/Cargo.nix b/Cargo.nix index bb6c2523..d5a81ad2 100644 --- a/Cargo.nix +++ b/Cargo.nix @@ -1,10 +1,11 @@ -# This file was @generated by crate2nix 0.14.1 with the command: +# This file was @generated by crate2nix 0.15.0 with the command: # "generate" # See https://github.com/kolloch/crate2nix for more info. { nixpkgs ? , pkgs ? import nixpkgs { config = {}; } +, fetchurl ? pkgs.fetchurl , lib ? pkgs.lib , stdenv ? pkgs.stdenv , buildRustCrateForPkgs ? pkgs: pkgs.buildRustCrate @@ -18,6 +19,11 @@ # (separated by `,`, prefixed with `+`). # Used for conditional compilation based on CPU feature detection. , targetFeatures ? [] + # Additional target attributes for conditional dependencies. + # Use this for custom cfg flags that are passed via rustcflags but need to + # be known at Nix evaluation time for dependency resolution. + # Example: { tracing_unstable = true; } for crates using cfg(tracing_unstable). +, extraTargetFlags ? {} # Whether to perform release builds: longer compile times, faster binaries. , release ? true # Additional crate2nix configuration if it exists. @@ -99,6 +105,8 @@ rec { }; }; + + # A derivation that joins the outputs of all workspace members together. allWorkspaceMembers = pkgs.symlinkJoin { name = "all-workspace-members"; @@ -189,9 +197,9 @@ rec { }; "aho-corasick" = rec { crateName = "aho-corasick"; - version = "1.1.3"; + version = "1.1.4"; edition = "2021"; - sha256 = "05mrpkvdgp5d20y2p989f187ry9diliijgwrs254fs9s1m1x6q4f"; + sha256 = "00a32wb2h07im3skkikc495jvncf62jl6s96vwc7bhi70h9imlyx"; libName = "aho_corasick"; authors = [ "Andrew Gallant " @@ -362,14 +370,14 @@ rec { }; "anstyle-query" = rec { crateName = "anstyle-query"; - version = "1.1.4"; + version = "1.1.5"; edition = "2021"; - sha256 = "1qir6d6fl5a4y2gmmw9a5w93ckwx6xn51aryd83p26zn6ihiy8wy"; + sha256 = "1p6shfpnbghs6jsa0vnqd8bb8gd7pjd0jr7w0j8jikakzmr8zi20"; libName = "anstyle_query"; dependencies = [ { name = "windows-sys"; - packageId = "windows-sys 0.60.2"; + packageId = "windows-sys 0.61.2"; target = { target, features }: (target."windows" or false); features = [ "Win32_System_Console" "Win32_Foundation" ]; } @@ -378,9 +386,9 @@ rec { }; "anstyle-wincon" = rec { crateName = "anstyle-wincon"; - version = "3.0.10"; + version = "3.0.11"; edition = "2021"; - sha256 = "0ajz9wsf46a2l3pds7v62xbhq2cffj7wrilamkx2z8r28m0k61iy"; + sha256 = "0zblannm70sk3xny337mz7c6d8q8i24vhbqi42ld8v7q1wjnl7i9"; libName = "anstyle_wincon"; dependencies = [ { @@ -394,7 +402,7 @@ rec { } { name = "windows-sys"; - packageId = "windows-sys 0.60.2"; + packageId = "windows-sys 0.61.2"; target = { target, features }: (target."windows" or false); features = [ "Win32_System_Console" "Win32_Foundation" ]; } @@ -403,14 +411,13 @@ rec { }; "anyhow" = rec { crateName = "anyhow"; - version = "1.0.100"; - edition = "2018"; - sha256 = "0qbfmw4hhv2ampza1csyvf1jqjs2dgrj29cv3h3sh623c6qvcgm2"; + version = "1.0.102"; + edition = "2021"; + sha256 = "0b447dra1v12z474c6z4jmicdmc5yxz5bakympdnij44ckw2s83z"; authors = [ "David Tolnay " ]; features = { - "backtrace" = [ "dep:backtrace" ]; "default" = [ "std" ]; }; resolvedDefaultFeatures = [ "default" "std" ]; @@ -486,36 +493,6 @@ rec { } ]; - }; - "async-socks5" = rec { - crateName = "async-socks5"; - version = "0.6.0"; - edition = "2021"; - sha256 = "128w31m6nvrvgbaycz3838m8fqsn6lxjmr9fjz99csz18rw578ld"; - libName = "async_socks5"; - authors = [ - "Arsenii Lyashenko " - "Temirkhan Myrzamadi " - ]; - dependencies = [ - { - name = "thiserror"; - packageId = "thiserror 1.0.69"; - } - { - name = "tokio"; - packageId = "tokio"; - features = [ "net" "io-util" ]; - } - ]; - devDependencies = [ - { - name = "tokio"; - packageId = "tokio"; - features = [ "net" "io-util" "rt" "macros" ]; - } - ]; - }; "async-stream" = rec { crateName = "async-stream"; @@ -563,7 +540,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.106"; + packageId = "syn 2.0.117"; features = [ "full" "visit-mut" ]; } ]; @@ -590,7 +567,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.106"; + packageId = "syn 2.0.117"; usesDefaultFeatures = false; features = [ "clone-impls" "full" "parsing" "printing" "proc-macro" "visit-mut" ]; } @@ -621,187 +598,87 @@ rec { ]; }; - "axum 0.7.9" = rec { - crateName = "axum"; - version = "0.7.9"; + "aws-lc-rs" = rec { + crateName = "aws-lc-rs"; + version = "1.16.1"; edition = "2021"; - sha256 = "07z7wqczi9i8xb4460rvn39p4wjqwr32hx907crd1vwb2fy8ijpd"; + links = "aws_lc_rs_1_16_1_sys"; + sha256 = "1gzlb3c82vv3b9adi15kqpk8wps699rjssc3ijkc42pidl0grgwl"; + libName = "aws_lc_rs"; + authors = [ + "AWS-LibCrypto" + ]; dependencies = [ { - name = "async-trait"; - packageId = "async-trait"; - } - { - name = "axum-core"; - packageId = "axum-core 0.4.5"; - } - { - name = "bytes"; - packageId = "bytes"; - } - { - name = "futures-util"; - packageId = "futures-util"; - usesDefaultFeatures = false; - features = [ "alloc" ]; - } - { - name = "http"; - packageId = "http"; - } - { - name = "http-body"; - packageId = "http-body"; - } - { - name = "http-body-util"; - packageId = "http-body-util"; - } - { - name = "hyper"; - packageId = "hyper"; - optional = true; - } - { - name = "hyper-util"; - packageId = "hyper-util"; - optional = true; - features = [ "tokio" "server" "service" ]; - } - { - name = "itoa"; - packageId = "itoa"; - } - { - name = "matchit"; - packageId = "matchit 0.7.3"; - } - { - name = "memchr"; - packageId = "memchr"; - } - { - name = "mime"; - packageId = "mime"; - } - { - name = "percent-encoding"; - packageId = "percent-encoding"; - } - { - name = "pin-project-lite"; - packageId = "pin-project-lite"; - } - { - name = "rustversion"; - packageId = "rustversion"; - } - { - name = "serde"; - packageId = "serde"; - } - { - name = "serde_json"; - packageId = "serde_json"; - optional = true; - features = [ "raw_value" ]; - } - { - name = "serde_path_to_error"; - packageId = "serde_path_to_error"; - optional = true; - } - { - name = "serde_urlencoded"; - packageId = "serde_urlencoded"; - optional = true; - } - { - name = "sync_wrapper"; - packageId = "sync_wrapper"; - } - { - name = "tokio"; - packageId = "tokio"; - rename = "tokio"; + name = "aws-lc-sys"; + packageId = "aws-lc-sys"; optional = true; - features = [ "time" ]; - } - { - name = "tower"; - packageId = "tower 0.5.2"; usesDefaultFeatures = false; - features = [ "util" ]; - } - { - name = "tower-layer"; - packageId = "tower-layer"; - } - { - name = "tower-service"; - packageId = "tower-service"; } { - name = "tracing"; - packageId = "tracing"; - optional = true; - usesDefaultFeatures = false; + name = "zeroize"; + packageId = "zeroize"; } ]; - devDependencies = [ - { - name = "serde"; - packageId = "serde"; - features = [ "derive" ]; - } + features = { + "asan" = [ "aws-lc-sys?/asan" "aws-lc-fips-sys?/asan" ]; + "aws-lc-sys" = [ "dep:aws-lc-sys" ]; + "bindgen" = [ "aws-lc-sys?/bindgen" "aws-lc-fips-sys?/bindgen" ]; + "default" = [ "aws-lc-sys" "alloc" "ring-io" "ring-sig-verify" ]; + "fips" = [ "dep:aws-lc-fips-sys" ]; + "non-fips" = [ "aws-lc-sys" ]; + "prebuilt-nasm" = [ "aws-lc-sys?/prebuilt-nasm" ]; + "ring-io" = [ "dep:untrusted" ]; + "ring-sig-verify" = [ "dep:untrusted" ]; + }; + resolvedDefaultFeatures = [ "aws-lc-sys" "prebuilt-nasm" ]; + }; + "aws-lc-sys" = rec { + crateName = "aws-lc-sys"; + version = "0.38.0"; + edition = "2021"; + links = "aws_lc_0_38_0"; + sha256 = "0bkqm9adn7f8c8hd3dnp16cgh39cgjckfzqs55ymmfw9xmlfa8a3"; + build = "builder/main.rs"; + libName = "aws_lc_sys"; + authors = [ + "AWS-LC" + ]; + buildDependencies = [ { - name = "serde_json"; - packageId = "serde_json"; - features = [ "raw_value" ]; + name = "cc"; + packageId = "cc"; + features = [ "parallel" ]; } { - name = "tokio"; - packageId = "tokio"; - rename = "tokio"; - features = [ "macros" "rt" "rt-multi-thread" "net" "test-util" ]; + name = "cmake"; + packageId = "cmake"; } { - name = "tower"; - packageId = "tower 0.5.2"; - rename = "tower"; - features = [ "util" "timeout" "limit" "load-shed" "steer" "filter" ]; + name = "dunce"; + packageId = "dunce"; } { - name = "tracing"; - packageId = "tracing"; + name = "fs_extra"; + packageId = "fs_extra"; } ]; features = { - "__private_docs" = [ "axum-core/__private_docs" "tower/full" "dep:tower-http" ]; - "default" = [ "form" "http1" "json" "matched-path" "original-uri" "query" "tokio" "tower-log" "tracing" ]; - "form" = [ "dep:serde_urlencoded" ]; - "http1" = [ "dep:hyper" "hyper?/http1" "hyper-util?/http1" ]; - "http2" = [ "dep:hyper" "hyper?/http2" "hyper-util?/http2" ]; - "json" = [ "dep:serde_json" "dep:serde_path_to_error" ]; - "macros" = [ "dep:axum-macros" ]; - "multipart" = [ "dep:multer" ]; - "query" = [ "dep:serde_urlencoded" ]; - "tokio" = [ "dep:hyper-util" "dep:tokio" "tokio/net" "tokio/rt" "tower/make" "tokio/macros" ]; - "tower-log" = [ "tower/log" ]; - "tracing" = [ "dep:tracing" "axum-core/tracing" ]; - "ws" = [ "dep:hyper" "tokio" "dep:tokio-tungstenite" "dep:sha1" "dep:base64" ]; + "bindgen" = [ "dep:bindgen" ]; + "default" = [ "all-bindings" ]; + "ssl" = [ "bindgen" "all-bindings" ]; }; - resolvedDefaultFeatures = [ "default" "form" "http1" "http2" "json" "matched-path" "original-uri" "query" "tokio" "tower-log" "tracing" ]; + resolvedDefaultFeatures = [ "prebuilt-nasm" ]; }; - "axum 0.8.6" = rec { + "axum" = rec { crateName = "axum"; - version = "0.8.6"; + version = "0.8.8"; edition = "2021"; - sha256 = "0w9qyxcp77gwswc9sz3pf2rzpm4jycpxvd70yh8i60sjccrys64a"; + sha256 = "1f4p0m04mgwpn8b40i9r5mgqxk6w11sv4yri6xfqk305nhyayllb"; dependencies = [ { name = "axum-core"; - packageId = "axum-core 0.5.5"; + packageId = "axum-core"; } { name = "bytes"; @@ -847,7 +724,7 @@ rec { } { name = "matchit"; - packageId = "matchit 0.8.4"; + packageId = "matchit"; } { name = "memchr"; @@ -898,7 +775,7 @@ rec { } { name = "tower"; - packageId = "tower 0.5.2"; + packageId = "tower"; usesDefaultFeatures = false; features = [ "util" ]; } @@ -936,7 +813,7 @@ rec { } { name = "tower"; - packageId = "tower 0.5.2"; + packageId = "tower"; rename = "tower"; features = [ "util" "timeout" "limit" "load-shed" "steer" "filter" ]; } @@ -961,28 +838,22 @@ rec { "tracing" = [ "dep:tracing" "axum-core/tracing" ]; "ws" = [ "dep:hyper" "tokio" "dep:tokio-tungstenite" "dep:sha1" "dep:base64" ]; }; - resolvedDefaultFeatures = [ "default" "form" "http1" "json" "matched-path" "original-uri" "query" "tokio" "tower-log" "tracing" ]; + resolvedDefaultFeatures = [ "default" "form" "http1" "http2" "json" "matched-path" "original-uri" "query" "tokio" "tower-log" "tracing" ]; }; - "axum-core 0.4.5" = rec { + "axum-core" = rec { crateName = "axum-core"; - version = "0.4.5"; + version = "0.5.6"; edition = "2021"; - sha256 = "16b1496c4gm387q20hkv5ic3k5bd6xmnvk50kwsy6ymr8rhvvwh9"; + sha256 = "1lcjhxysnbc64rh21ag9m9fpiryd1iwcdh9mwxz1yadiswqqziq8"; libName = "axum_core"; dependencies = [ - { - name = "async-trait"; - packageId = "async-trait"; - } { name = "bytes"; packageId = "bytes"; } { - name = "futures-util"; - packageId = "futures-util"; - usesDefaultFeatures = false; - features = [ "alloc" ]; + name = "futures-core"; + packageId = "futures-core"; } { name = "http"; @@ -1004,10 +875,6 @@ rec { name = "pin-project-lite"; packageId = "pin-project-lite"; } - { - name = "rustversion"; - packageId = "rustversion"; - } { name = "sync_wrapper"; packageId = "sync_wrapper"; @@ -1027,27 +894,29 @@ rec { usesDefaultFeatures = false; } ]; - devDependencies = [ - { - name = "futures-util"; - packageId = "futures-util"; - usesDefaultFeatures = false; - features = [ "alloc" ]; - } - ]; features = { "__private_docs" = [ "dep:tower-http" ]; "tracing" = [ "dep:tracing" ]; }; resolvedDefaultFeatures = [ "tracing" ]; }; - "axum-core 0.5.5" = rec { - crateName = "axum-core"; - version = "0.5.5"; + "axum-extra" = rec { + crateName = "axum-extra"; + version = "0.12.5"; edition = "2021"; - sha256 = "08pa4752h96pai7j5avr2hnq35xh7qgv6vl57y1zhhnikkhnqi2r"; - libName = "axum_core"; + sha256 = "0xlwripql5hck5l9nx7mhv5rl4mq0wryxwndpdbbmp96zznm5wpy"; + libName = "axum_extra"; dependencies = [ + { + name = "axum"; + packageId = "axum"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "axum-core"; + packageId = "axum-core"; + } { name = "bytes"; packageId = "bytes"; @@ -1056,6 +925,17 @@ rec { name = "futures-core"; packageId = "futures-core"; } + { + name = "futures-util"; + packageId = "futures-util"; + usesDefaultFeatures = false; + features = [ "alloc" ]; + } + { + name = "headers"; + packageId = "headers"; + optional = true; + } { name = "http"; packageId = "http"; @@ -1076,10 +956,6 @@ rec { name = "pin-project-lite"; packageId = "pin-project-lite"; } - { - name = "sync_wrapper"; - packageId = "sync_wrapper"; - } { name = "tower-layer"; packageId = "tower-layer"; @@ -1096,130 +972,40 @@ rec { } ]; features = { - "__private_docs" = [ "dep:tower-http" ]; - "tracing" = [ "dep:tracing" ]; + "__private_docs" = [ "axum/json" "dep:serde" "dep:tower" ]; + "async-read-body" = [ "dep:tokio-util" "tokio-util?/io" "dep:tokio" ]; + "attachment" = [ "dep:tracing" ]; + "cached" = [ "dep:axum" ]; + "cookie" = [ "dep:cookie" ]; + "cookie-key-expansion" = [ "cookie" "cookie?/key-expansion" ]; + "cookie-private" = [ "cookie" "cookie?/private" ]; + "cookie-signed" = [ "cookie" "cookie?/signed" ]; + "default" = [ "tracing" ]; + "erased-json" = [ "dep:serde_core" "dep:serde_json" "dep:typed-json" ]; + "error-response" = [ "dep:tracing" "tracing/std" ]; + "file-stream" = [ "dep:tokio-util" "tokio-util?/io" "dep:tokio" "tokio?/fs" "tokio?/io-util" ]; + "form" = [ "dep:axum" "dep:form_urlencoded" "dep:serde_core" "dep:serde_html_form" "dep:serde_path_to_error" ]; + "handler" = [ "dep:axum" ]; + "json-deserializer" = [ "dep:serde_core" "dep:serde_json" "dep:serde_path_to_error" ]; + "json-lines" = [ "dep:serde_core" "dep:serde_json" "dep:tokio-util" "dep:tokio-stream" "tokio-util?/io" "tokio-stream?/io-util" "dep:tokio" ]; + "middleware" = [ "dep:axum" ]; + "multipart" = [ "dep:multer" "dep:fastrand" ]; + "optional-path" = [ "dep:axum" "dep:serde_core" ]; + "protobuf" = [ "dep:prost" ]; + "query" = [ "dep:form_urlencoded" "dep:serde_core" "dep:serde_html_form" "dep:serde_path_to_error" ]; + "routing" = [ "axum/original-uri" "dep:rustversion" ]; + "tracing" = [ "axum-core/tracing" "axum/tracing" "dep:tracing" ]; + "typed-header" = [ "dep:headers" ]; + "typed-routing" = [ "routing" "dep:axum-macros" "dep:percent-encoding" "dep:serde_core" "dep:serde_html_form" "dep:form_urlencoded" ]; + "with-rejection" = [ "dep:axum" ]; }; - resolvedDefaultFeatures = [ "tracing" ]; - }; - "axum-extra" = rec { - crateName = "axum-extra"; - version = "0.9.6"; - edition = "2021"; - sha256 = "011gr9fkxild2yv7rxgn9shzlbcpyzvps3vlnwpiq2jgj06b7567"; - libName = "axum_extra"; - dependencies = [ - { - name = "axum"; - packageId = "axum 0.7.9"; - usesDefaultFeatures = false; - features = [ "original-uri" ]; - } - { - name = "axum-core"; - packageId = "axum-core 0.4.5"; - } - { - name = "bytes"; - packageId = "bytes"; - } - { - name = "fastrand"; - packageId = "fastrand"; - optional = true; - } - { - name = "futures-util"; - packageId = "futures-util"; - usesDefaultFeatures = false; - features = [ "alloc" ]; - } - { - name = "headers"; - packageId = "headers"; - optional = true; - } - { - name = "http"; - packageId = "http"; - } - { - name = "http-body"; - packageId = "http-body"; - } - { - name = "http-body-util"; - packageId = "http-body-util"; - } - { - name = "mime"; - packageId = "mime"; - } - { - name = "multer"; - packageId = "multer"; - optional = true; - } - { - name = "pin-project-lite"; - packageId = "pin-project-lite"; - } - { - name = "serde"; - packageId = "serde"; - } - { - name = "tower"; - packageId = "tower 0.5.2"; - usesDefaultFeatures = false; - features = [ "util" ]; - } - { - name = "tower-layer"; - packageId = "tower-layer"; - } - { - name = "tower-service"; - packageId = "tower-service"; - } - ]; - devDependencies = [ - { - name = "serde"; - packageId = "serde"; - features = [ "derive" ]; - } - { - name = "tower"; - packageId = "tower 0.5.2"; - features = [ "util" ]; - } - ]; - features = { - "async-read-body" = [ "dep:tokio-util" "tokio-util?/io" "dep:tokio" ]; - "attachment" = [ "dep:tracing" ]; - "cookie" = [ "dep:cookie" ]; - "cookie-key-expansion" = [ "cookie" "cookie?/key-expansion" ]; - "cookie-private" = [ "cookie" "cookie?/private" ]; - "cookie-signed" = [ "cookie" "cookie?/signed" ]; - "default" = [ "tracing" "multipart" ]; - "erased-json" = [ "dep:serde_json" "dep:typed-json" ]; - "form" = [ "dep:serde_html_form" ]; - "json-deserializer" = [ "dep:serde_json" "dep:serde_path_to_error" ]; - "json-lines" = [ "dep:serde_json" "dep:tokio-util" "dep:tokio-stream" "tokio-util?/io" "tokio-stream?/io-util" "dep:tokio" ]; - "multipart" = [ "dep:multer" "dep:fastrand" ]; - "protobuf" = [ "dep:prost" ]; - "query" = [ "dep:serde_html_form" ]; - "tracing" = [ "axum-core/tracing" "axum/tracing" ]; - "typed-header" = [ "dep:headers" ]; - "typed-routing" = [ "dep:axum-macros" "dep:percent-encoding" "dep:serde_html_form" "dep:form_urlencoded" ]; - }; - resolvedDefaultFeatures = [ "default" "multipart" "tracing" "typed-header" ]; + resolvedDefaultFeatures = [ "default" "tracing" "typed-header" ]; }; "backon" = rec { crateName = "backon"; - version = "1.5.2"; - edition = "2021"; - sha256 = "139s5dfvlxycp8xmb21aack9sc8zg2lafax0m76wxyqlhxhpf8jr"; + version = "1.6.0"; + edition = "2024"; + sha256 = "1vzphngmym91xh29x7px6vw1xgcv5vjzw86b9zy6ddkm329hxyyg"; dependencies = [ { name = "fastrand"; @@ -1243,14 +1029,14 @@ rec { { name = "tokio"; packageId = "tokio"; - target = {target, features}: (!("wasm32" == target."arch" or null)); + target = { target, features }: (!("wasm32" == target."arch" or null)); features = [ "time" "rt" "macros" "sync" "rt-multi-thread" ]; } { name = "tokio"; packageId = "tokio"; usesDefaultFeatures = false; - target = {target, features}: ("wasm32" == target."arch" or null); + target = { target, features }: ("wasm32" == target."arch" or null); features = [ "macros" "rt" "sync" ]; } ]; @@ -1284,9 +1070,9 @@ rec { }; "bcrypt" = rec { crateName = "bcrypt"; - version = "0.15.1"; - edition = "2021"; - sha256 = "1iv2fvy5yywkx4kijqyy59bq92gldv3nqd4bry97vx4f0pnkhng6"; + version = "0.19.0"; + edition = "2024"; + sha256 = "1iks6lnzng0x9nniqcfzbrny5sw5inyzbk7qjxjxlyisrqlbafjj"; authors = [ "Vincent Prouillet " ]; @@ -1303,7 +1089,7 @@ rec { } { name = "getrandom"; - packageId = "getrandom 0.2.16"; + packageId = "getrandom 0.4.2"; optional = true; usesDefaultFeatures = false; } @@ -1322,7 +1108,6 @@ rec { "alloc" = [ "base64/alloc" "getrandom" ]; "default" = [ "std" "zeroize" ]; "getrandom" = [ "dep:getrandom" ]; - "js" = [ "getrandom/js" ]; "std" = [ "getrandom/std" "base64/std" ]; "zeroize" = [ "dep:zeroize" ]; }; @@ -1330,9 +1115,9 @@ rec { }; "bindgen" = rec { crateName = "bindgen"; - version = "0.70.1"; - edition = "2018"; - sha256 = "0vyf0jp6apcy9kjyz4s8vldj0xqycnbzb6zv3skkwiqdi3nqz7gl"; + version = "0.72.1"; + edition = "2021"; + sha256 = "15bq73y3wd3x3vxh3z3g72hy08zs8rxg1f0i1xsrrd6g16spcdwr"; libPath = "lib.rs"; authors = [ "Jyun-Yan You " @@ -1352,7 +1137,7 @@ rec { { name = "clang-sys"; packageId = "clang-sys"; - features = [ "clang_6_0" ]; + features = [ "clang_11_0" ]; } { name = "itertools"; @@ -1373,7 +1158,6 @@ rec { { name = "proc-macro2"; packageId = "proc-macro2"; - usesDefaultFeatures = false; } { name = "quote"; @@ -1388,7 +1172,7 @@ rec { } { name = "rustc-hash"; - packageId = "rustc-hash 1.1.0"; + packageId = "rustc-hash"; } { name = "shlex"; @@ -1396,11 +1180,12 @@ rec { } { name = "syn"; - packageId = "syn 2.0.106"; + packageId = "syn 2.0.117"; features = [ "full" "extra-traits" "visit-mut" ]; } ]; features = { + "__cli" = [ "dep:clap" "dep:clap_complete" ]; "default" = [ "logging" "prettyplease" "runtime" ]; "experimental" = [ "dep:annotate-snippets" ]; "logging" = [ "dep:log" ]; @@ -1412,9 +1197,9 @@ rec { }; "bit-set" = rec { crateName = "bit-set"; - version = "0.5.3"; + version = "0.8.0"; edition = "2015"; - sha256 = "1wcm9vxi00ma4rcxkl3pzzjli6ihrpn9cfdi0c5b4cvga2mxs007"; + sha256 = "18riaa10s6n59n39vix0cr7l2dgwdhcpbcm97x1xbyfp1q47x008"; libName = "bit_set"; authors = [ "Alexis Beingessner " @@ -1428,21 +1213,26 @@ rec { ]; features = { "default" = [ "std" ]; + "serde" = [ "dep:serde" "bit-vec/serde" ]; "std" = [ "bit-vec/std" ]; }; resolvedDefaultFeatures = [ "std" ]; }; "bit-vec" = rec { crateName = "bit-vec"; - version = "0.6.3"; + version = "0.8.0"; edition = "2015"; - sha256 = "1ywqjnv60cdh1slhz67psnp422md6jdliji6alq0gmly2xm9p7rl"; + sha256 = "1xxa1s2cj291r7k1whbxq840jxvmdsq9xgh7bvrxl46m80fllxjy"; libName = "bit_vec"; authors = [ "Alexis Beingessner " ]; features = { + "borsh" = [ "dep:borsh" ]; + "borsh_std" = [ "borsh/std" ]; "default" = [ "std" ]; + "miniserde" = [ "dep:miniserde" ]; + "nanoserde" = [ "dep:nanoserde" ]; "serde" = [ "dep:serde" ]; "serde_no_std" = [ "serde/alloc" ]; "serde_std" = [ "std" "serde/std" ]; @@ -1451,16 +1241,17 @@ rec { }; "bitflags" = rec { crateName = "bitflags"; - version = "2.9.4"; + version = "2.11.0"; edition = "2021"; - sha256 = "157kkcv8s7vk6d17dar1pa5cqcz4c8pdrn16wm1ld7jnr86d2q92"; + sha256 = "1bwjibwry5nfwsfm9kjg2dqx5n5nja9xymwbfl6svnn8jsz6ff44"; authors = [ "The Rust Project Developers" ]; features = { "arbitrary" = [ "dep:arbitrary" ]; "bytemuck" = [ "dep:bytemuck" ]; - "serde" = [ "dep:serde" ]; + "serde" = [ "serde_core" ]; + "serde_core" = [ "dep:serde_core" ]; }; resolvedDefaultFeatures = [ "std" ]; }; @@ -1514,9 +1305,9 @@ rec { }; "bstr" = rec { crateName = "bstr"; - version = "1.12.0"; + version = "1.12.1"; edition = "2021"; - sha256 = "195i0gd7r7jg7a8spkmw08492n7rmiabcvz880xn2z8dkp8i6h93"; + sha256 = "1arc1v7h5l86vd6z76z3xykjzldqd5icldn7j9d3p7z6x0d4w133"; authors = [ "Andrew Gallant " ]; @@ -1560,9 +1351,9 @@ rec { }; "bumpalo" = rec { crateName = "bumpalo"; - version = "3.19.0"; + version = "3.20.2"; edition = "2021"; - sha256 = "0hsdndvcpqbjb85ghrhska2qxvp9i75q2vb70hma9fxqawdy9ia6"; + sha256 = "1jrgxlff76k9glam0akhwpil2fr1w32gbjdf5hpipc7ld2c7h82x"; authors = [ "Nick Fitzgerald " ]; @@ -1587,9 +1378,9 @@ rec { }; "bytes" = rec { crateName = "bytes"; - version = "1.10.1"; - edition = "2018"; - sha256 = "0smd4wi2yrhp5pmq571yiaqx84bjqlm1ixqhnvfwzzc6pqkn26yp"; + version = "1.11.1"; + edition = "2021"; + sha256 = "0czwlhbq8z29wq0ia87yass2mzy1y0jcasjb8ghriiybnwrqfx0y"; authors = [ "Carl Lerche " "Sean McArthur " @@ -1603,9 +1394,9 @@ rec { }; "cc" = rec { crateName = "cc"; - version = "1.2.41"; + version = "1.2.56"; edition = "2018"; - sha256 = "1dvwli6fljqc7kgmihb249rmdfs5irla1h0n6vkavdi4pg6yd7xc"; + sha256 = "1chvh9g2izhqad7vzy4cc7xpdljdvqpsr6x6hv1hmyqv3mlkbgxf"; authors = [ "Alex Crichton " ]; @@ -1614,6 +1405,19 @@ rec { name = "find-msvc-tools"; packageId = "find-msvc-tools"; } + { + name = "jobserver"; + packageId = "jobserver"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "libc"; + packageId = "libc"; + optional = true; + usesDefaultFeatures = false; + target = { target, features }: (target."unix" or false); + } { name = "shlex"; packageId = "shlex"; @@ -1622,6 +1426,18 @@ rec { features = { "parallel" = [ "dep:libc" "dep:jobserver" ]; }; + resolvedDefaultFeatures = [ "parallel" ]; + }; + "cesu8" = rec { + crateName = "cesu8"; + version = "1.1.0"; + edition = "2015"; + sha256 = "0g6q58wa7khxrxcxgnqyi9s1z2cjywwwd3hzr5c55wskhx6s0hvd"; + authors = [ + "Eric Kidd " + ]; + features = { + }; }; "cexpr" = rec { crateName = "cexpr"; @@ -1665,11 +1481,46 @@ rec { ]; }; + "chacha20" = rec { + crateName = "chacha20"; + version = "0.10.0"; + edition = "2024"; + sha256 = "00bn2rn8l68qvlq93mhq7b4ns4zy9qbjsyjbb9kljgl4hqr9i3bg"; + authors = [ + "RustCrypto Developers" + ]; + dependencies = [ + { + name = "cfg-if"; + packageId = "cfg-if"; + } + { + name = "cpufeatures"; + packageId = "cpufeatures 0.3.0"; + target = { target, features }: (("x86_64" == target."arch" or null) || ("x86" == target."arch" or null)); + } + { + name = "rand_core"; + packageId = "rand_core 0.10.0"; + optional = true; + usesDefaultFeatures = false; + } + ]; + features = { + "cipher" = [ "dep:cipher" ]; + "default" = [ "cipher" ]; + "legacy" = [ "cipher" ]; + "rng" = [ "dep:rand_core" ]; + "xchacha" = [ "cipher" ]; + "zeroize" = [ "dep:zeroize" ]; + }; + resolvedDefaultFeatures = [ "rng" ]; + }; "chrono" = rec { crateName = "chrono"; - version = "0.4.42"; + version = "0.4.44"; edition = "2021"; - sha256 = "1lp8iz9js9jwxw0sj8yi59v54lgvwdvm49b9wch77f25sfym4l0l"; + sha256 = "1c64mk9a235271j5g3v4zrzqqmd43vp9vki7vqfllpqf5rd0fwy6"; dependencies = [ { name = "iana-time-zone"; @@ -1683,15 +1534,9 @@ rec { packageId = "num-traits"; usesDefaultFeatures = false; } - { - name = "serde"; - packageId = "serde"; - optional = true; - usesDefaultFeatures = false; - } { name = "windows-link"; - packageId = "windows-link 0.2.1"; + packageId = "windows-link"; optional = true; target = { target, features }: (target."windows" or false); } @@ -1700,6 +1545,7 @@ rec { "arbitrary" = [ "dep:arbitrary" ]; "clock" = [ "winapi" "iana-time-zone" "now" ]; "default" = [ "clock" "std" "oldtime" "wasmbind" ]; + "defmt" = [ "dep:defmt" "pure-rust-locales?/defmt" ]; "iana-time-zone" = [ "dep:iana-time-zone" ]; "js-sys" = [ "dep:js-sys" ]; "now" = [ "std" ]; @@ -1717,7 +1563,7 @@ rec { "winapi" = [ "windows-link" ]; "windows-link" = [ "dep:windows-link" ]; }; - resolvedDefaultFeatures = [ "alloc" "clock" "iana-time-zone" "now" "serde" "std" "winapi" "windows-link" ]; + resolvedDefaultFeatures = [ "alloc" "clock" "iana-time-zone" "now" "std" "winapi" "windows-link" ]; }; "chrono-tz" = rec { crateName = "chrono-tz"; @@ -1733,7 +1579,7 @@ rec { } { name = "phf"; - packageId = "phf"; + packageId = "phf 0.11.3"; usesDefaultFeatures = false; } ]; @@ -1773,12 +1619,12 @@ rec { } { name = "phf"; - packageId = "phf"; + packageId = "phf 0.11.3"; usesDefaultFeatures = false; } { name = "phf_codegen"; - packageId = "phf_codegen"; + packageId = "phf_codegen 0.11.3"; usesDefaultFeatures = false; } ]; @@ -1877,14 +1723,14 @@ rec { "libloading" = [ "dep:libloading" ]; "runtime" = [ "libloading" ]; }; - resolvedDefaultFeatures = [ "clang_3_5" "clang_3_6" "clang_3_7" "clang_3_8" "clang_3_9" "clang_4_0" "clang_5_0" "clang_6_0" "libloading" "runtime" ]; + resolvedDefaultFeatures = [ "clang_10_0" "clang_11_0" "clang_3_5" "clang_3_6" "clang_3_7" "clang_3_8" "clang_3_9" "clang_4_0" "clang_5_0" "clang_6_0" "clang_7_0" "clang_8_0" "clang_9_0" "libloading" "runtime" ]; }; "clap" = rec { crateName = "clap"; - version = "4.5.49"; + version = "4.5.60"; edition = "2021"; crateBin = []; - sha256 = "13sha7m7slskx12nsw6z45chy82xgh0q8lga5j9sklv8za82nlgl"; + sha256 = "02h3nzznssjgp815nnbzk0r62y2iw03kdli75c233kirld6z75r7"; dependencies = [ { name = "clap_builder"; @@ -1923,9 +1769,9 @@ rec { }; "clap_builder" = rec { crateName = "clap_builder"; - version = "4.5.49"; + version = "4.5.60"; edition = "2021"; - sha256 = "0c37pnanfm3jlh0av6jn36x1wyl8b9lz8gx1gg36drqjma5yj980"; + sha256 = "0xk8mdizvmmn6w5ij5cwhy5pbgyac4w9pfvl6nqmjl7a5hql38i4"; dependencies = [ { name = "anstream"; @@ -1962,9 +1808,9 @@ rec { }; "clap_complete" = rec { crateName = "clap_complete"; - version = "4.5.59"; + version = "4.5.66"; edition = "2021"; - sha256 = "0g64s6ws3kkzh74fxwp7r8qlvb1q1nscsk6nrsb1cqylvix4hj13"; + sha256 = "0c8h6x3x1ddldfmhii12hrd92v1av8d18rckdzjs8qciwfvs6my7"; dependencies = [ { name = "clap"; @@ -1991,9 +1837,9 @@ rec { }; "clap_complete_nushell" = rec { crateName = "clap_complete_nushell"; - version = "4.5.9"; + version = "4.5.10"; edition = "2021"; - sha256 = "0w0yaacpv20xscirw2c1800iglmr8qlxyd6myz6sl6v977rmj4c1"; + sha256 = "06k4bfrp3rbm0bpqadr4kbb60y8hmcsq8kraagh6fx2bsdpwhnv8"; dependencies = [ { name = "clap"; @@ -2021,9 +1867,9 @@ rec { }; "clap_derive" = rec { crateName = "clap_derive"; - version = "4.5.49"; + version = "4.5.55"; edition = "2021"; - sha256 = "0wbngw649138v3jwx8pm5x9sq0qsml3sh0sfzyrdxcpamy3m82ra"; + sha256 = "1r949xis3jmhzh387smd70vc8a3b9734ck3g5ahg59a63bd969x9"; procMacro = true; dependencies = [ { @@ -2040,7 +1886,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.106"; + packageId = "syn 2.0.117"; features = [ "full" ]; } ]; @@ -2053,16 +1899,16 @@ rec { }; "clap_lex" = rec { crateName = "clap_lex"; - version = "0.7.6"; + version = "1.0.0"; edition = "2021"; - sha256 = "13cxw9m2rqvplgazgkq2awms0rgf34myc19bz6gywfngi762imx1"; + sha256 = "0c8888qi1l9sayqlv666h8s0yxn2qc6jr88v1zagk43mpjjjx0is"; }; "clap_mangen" = rec { crateName = "clap_mangen"; - version = "0.2.30"; + version = "0.2.31"; edition = "2021"; - sha256 = "0y7pjf92njbw8gh44k1npp3iavlw1v2kc866yclq3jz0m0a84g16"; + sha256 = "00b3r0nym6wvgfas1crmsn3205149ynj2hhnjcwgjv88j8xad7j3"; dependencies = [ { name = "clap"; @@ -2088,6 +1934,22 @@ rec { }; resolvedDefaultFeatures = [ "default" ]; }; + "cmake" = rec { + crateName = "cmake"; + version = "0.1.57"; + edition = "2021"; + sha256 = "0zgg10qgykig4nxyf7whrqfg7fkk0xfxhiavikmrndvbrm23qi3m"; + authors = [ + "Alex Crichton " + ]; + dependencies = [ + { + name = "cc"; + packageId = "cc"; + } + ]; + + }; "colorchoice" = rec { crateName = "colorchoice"; version = "1.0.4"; @@ -2095,11 +1957,58 @@ rec { sha256 = "0x8ymkz1xr77rcj1cfanhf416pc4v681gmkc9dzb3jqja7f62nxh"; }; + "combine" = rec { + crateName = "combine"; + version = "4.6.7"; + edition = "2018"; + sha256 = "1z8rh8wp59gf8k23ar010phgs0wgf5i8cx4fg01gwcnzfn5k0nms"; + authors = [ + "Markus Westerlind " + ]; + dependencies = [ + { + name = "bytes"; + packageId = "bytes"; + optional = true; + } + { + name = "memchr"; + packageId = "memchr"; + usesDefaultFeatures = false; + } + ]; + devDependencies = [ + { + name = "bytes"; + packageId = "bytes"; + } + ]; + features = { + "bytes" = [ "dep:bytes" ]; + "bytes_05" = [ "dep:bytes_05" ]; + "default" = [ "std" ]; + "futures-03" = [ "pin-project" "std" "futures-core-03" "futures-io-03" "pin-project-lite" ]; + "futures-core-03" = [ "dep:futures-core-03" ]; + "futures-io-03" = [ "dep:futures-io-03" ]; + "pin-project" = [ "pin-project-lite" ]; + "pin-project-lite" = [ "dep:pin-project-lite" ]; + "regex" = [ "dep:regex" ]; + "std" = [ "memchr/std" "bytes" "alloc" ]; + "tokio" = [ "tokio-dep" "tokio-util/io" "futures-core-03" "pin-project-lite" ]; + "tokio-02" = [ "pin-project" "std" "tokio-02-dep" "futures-core-03" "pin-project-lite" "bytes_05" ]; + "tokio-02-dep" = [ "dep:tokio-02-dep" ]; + "tokio-03" = [ "pin-project" "std" "tokio-03-dep" "futures-core-03" "pin-project-lite" ]; + "tokio-03-dep" = [ "dep:tokio-03-dep" ]; + "tokio-dep" = [ "dep:tokio-dep" ]; + "tokio-util" = [ "dep:tokio-util" ]; + }; + resolvedDefaultFeatures = [ "alloc" "bytes" "default" "std" ]; + }; "comfy-table" = rec { crateName = "comfy-table"; - version = "7.2.1"; + version = "7.2.2"; edition = "2024"; - sha256 = "0fvsxnnvps35dj2vdhy8wl0c17p96i0n67jmdjnzvcmlw2w7sfxh"; + sha256 = "0ixdw77rly84i5z1mxyw6v8lp1isaawnmgxv5d64n88zrxp5v34m"; libName = "comfy_table"; authors = [ "Arne Beer " @@ -2136,7 +2045,7 @@ rec { } { name = "unicode-width"; - packageId = "unicode-width 0.2.2"; + packageId = "unicode-width"; } ]; features = { @@ -2174,9 +2083,9 @@ rec { }; "console" = rec { crateName = "console"; - version = "0.16.1"; + version = "0.16.2"; edition = "2021"; - sha256 = "1x4x6vfi1s55nbr4i77b9r87s213h46lq396sij9fkmidqx78c5l"; + sha256 = "1i5y6h3myz38jl9p3gglx5vh9c69kxxajsv3jx0pw8i6i555mr03"; dependencies = [ { name = "encode_unicode"; @@ -2195,7 +2104,7 @@ rec { } { name = "unicode-width"; - packageId = "unicode-width 0.2.2"; + packageId = "unicode-width"; optional = true; } { @@ -2280,9 +2189,9 @@ rec { }; "convert_case" = rec { crateName = "convert_case"; - version = "0.8.0"; + version = "0.11.0"; edition = "2021"; - sha256 = "17zqy79xlr1n7nc0n1mlnw5qpp8l2nbxrk13jixrhlavrbna1ams"; + sha256 = "0jfv1ajyr65bjlx533n5alfkfjdl8ks4zxfywdiz1jnj1qcz1yxg"; authors = [ "rutrum " ]; @@ -2292,45 +2201,32 @@ rec { packageId = "unicode-segmentation"; } ]; - features = { - "rand" = [ "dep:rand" ]; - "random" = [ "rand" ]; - }; + }; - "core-foundation 0.10.1" = rec { - crateName = "core-foundation"; - version = "0.10.1"; + "convert_case_extras" = rec { + crateName = "convert_case_extras"; + version = "0.2.0"; edition = "2021"; - sha256 = "1xjns6dqf36rni2x9f47b65grxwdm20kwdg9lhmzdrrkwadcv9mj"; - libName = "core_foundation"; + sha256 = "1fyfc5vdblw15k8w7xahmif7bmslx3mdamvmg0brvapqzbq7172q"; authors = [ - "The Servo Project Developers" + "rutrum " ]; dependencies = [ { - name = "core-foundation-sys"; - packageId = "core-foundation-sys"; - usesDefaultFeatures = false; - } - { - name = "libc"; - packageId = "libc"; + name = "convert_case"; + packageId = "convert_case"; } ]; features = { - "default" = [ "link" ]; - "link" = [ "core-foundation-sys/link" ]; - "mac_os_10_7_support" = [ "core-foundation-sys/mac_os_10_7_support" ]; - "mac_os_10_8_features" = [ "core-foundation-sys/mac_os_10_8_features" ]; - "with-uuid" = [ "dep:uuid" ]; + "rand" = [ "dep:rand" ]; + "random" = [ "rand" ]; }; - resolvedDefaultFeatures = [ "default" "link" ]; }; - "core-foundation 0.9.4" = rec { + "core-foundation" = rec { crateName = "core-foundation"; - version = "0.9.4"; - edition = "2018"; - sha256 = "13zvbbj07yk3b61b8fhwfzhy35535a583irf23vlcg59j7h9bqci"; + version = "0.10.1"; + edition = "2021"; + sha256 = "1xjns6dqf36rni2x9f47b65grxwdm20kwdg9lhmzdrrkwadcv9mj"; libName = "core_foundation"; authors = [ "The Servo Project Developers" @@ -2347,14 +2243,11 @@ rec { } ]; features = { - "chrono" = [ "dep:chrono" ]; "default" = [ "link" ]; "link" = [ "core-foundation-sys/link" ]; "mac_os_10_7_support" = [ "core-foundation-sys/mac_os_10_7_support" ]; "mac_os_10_8_features" = [ "core-foundation-sys/mac_os_10_8_features" ]; - "uuid" = [ "dep:uuid" ]; - "with-chrono" = [ "chrono" ]; - "with-uuid" = [ "uuid" ]; + "with-uuid" = [ "dep:uuid" ]; }; resolvedDefaultFeatures = [ "default" "link" ]; }; @@ -2372,7 +2265,7 @@ rec { }; resolvedDefaultFeatures = [ "default" "link" ]; }; - "cpufeatures" = rec { + "cpufeatures 0.2.17" = rec { crateName = "cpufeatures"; version = "0.2.17"; edition = "2018"; @@ -2385,7 +2278,7 @@ rec { name = "libc"; packageId = "libc"; usesDefaultFeatures = false; - target = { target, features }: (stdenv.hostPlatform.rust.rustcTarget == "aarch64-linux-android"); + target = { target, features }: (target.name == "aarch64-linux-android"); } { name = "libc"; @@ -2408,20 +2301,56 @@ rec { ]; }; - "crc32fast" = rec { - crateName = "crc32fast"; - version = "1.5.0"; - edition = "2021"; - sha256 = "04d51liy8rbssra92p0qnwjw8i9rm9c4m3bwy19wjamz1k4w30cl"; + "cpufeatures 0.3.0" = rec { + crateName = "cpufeatures"; + version = "0.3.0"; + edition = "2024"; + sha256 = "00fjhygsqmh4kbxxlb99mcsbspxcai6hjydv4c46pwb67wwl2alb"; authors = [ - "Sam Rijs " - "Alex Crichton " + "RustCrypto Developers" ]; dependencies = [ { - name = "cfg-if"; - packageId = "cfg-if"; - } + name = "libc"; + packageId = "libc"; + usesDefaultFeatures = false; + target = { target, features }: (("aarch64" == target."arch" or null) && ("android" == target."os" or null)); + } + { + name = "libc"; + packageId = "libc"; + usesDefaultFeatures = false; + target = { target, features }: (("aarch64" == target."arch" or null) && ("linux" == target."os" or null)); + } + { + name = "libc"; + packageId = "libc"; + usesDefaultFeatures = false; + target = { target, features }: (("aarch64" == target."arch" or null) && ("apple" == target."vendor" or null)); + } + { + name = "libc"; + packageId = "libc"; + usesDefaultFeatures = false; + target = { target, features }: (("loongarch64" == target."arch" or null) && ("linux" == target."os" or null)); + } + ]; + + }; + "crc32fast" = rec { + crateName = "crc32fast"; + version = "1.5.0"; + edition = "2021"; + sha256 = "04d51liy8rbssra92p0qnwjw8i9rm9c4m3bwy19wjamz1k4w30cl"; + authors = [ + "Sam Rijs " + "Alex Crichton " + ]; + dependencies = [ + { + name = "cfg-if"; + packageId = "cfg-if"; + } ]; features = { "default" = [ "std" ]; @@ -2503,7 +2432,7 @@ rec { "default" = [ "std" ]; "loom" = [ "dep:loom" ]; }; - resolvedDefaultFeatures = [ "default" "std" ]; + resolvedDefaultFeatures = [ "std" ]; }; "crossterm" = rec { crateName = "crossterm"; @@ -2534,7 +2463,7 @@ rec { } { name = "rustix"; - packageId = "rustix 1.1.2"; + packageId = "rustix"; usesDefaultFeatures = false; target = { target, features }: (target."unix" or false); features = [ "std" "stdio" "termios" ]; @@ -2581,9 +2510,9 @@ rec { }; "crypto-common" = rec { crateName = "crypto-common"; - version = "0.1.6"; + version = "0.1.7"; edition = "2018"; - sha256 = "1cvby95a6xg7kxdz5ln3rl9xh66nz66w46mm3g56ri1z5x815yqv"; + sha256 = "02nn2rhfy7kvdkdjl457q2z0mklcvj9h662xrq6dzhfialh2kj3q"; libName = "crypto_common"; authors = [ "RustCrypto Developers" @@ -2607,9 +2536,9 @@ rec { }; "darling" = rec { crateName = "darling"; - version = "0.20.11"; + version = "0.23.0"; edition = "2021"; - sha256 = "1vmlphlrlw4f50z16p4bc9p5qwdni1ba95qmxfrrmzs6dh8lczzw"; + sha256 = "179fj6p6ajw4dnkrik51wjhifxwy02x5zhligyymcb905zd17bi5"; authors = [ "Ted Driggs " ]; @@ -2626,23 +2555,20 @@ rec { features = { "default" = [ "suggestions" ]; "diagnostics" = [ "darling_core/diagnostics" ]; + "serde" = [ "darling_core/serde" ]; "suggestions" = [ "darling_core/suggestions" ]; }; resolvedDefaultFeatures = [ "default" "suggestions" ]; }; "darling_core" = rec { crateName = "darling_core"; - version = "0.20.11"; + version = "0.23.0"; edition = "2021"; - sha256 = "0bj1af6xl4ablnqbgn827m43b8fiicgv180749f5cphqdmcvj00d"; + sha256 = "1c033vrks38vpw8kwgd5w088dsr511kfz55n9db56prkgh7sarcq"; authors = [ "Ted Driggs " ]; dependencies = [ - { - name = "fnv"; - packageId = "fnv"; - } { name = "ident_case"; packageId = "ident_case"; @@ -2662,11 +2588,12 @@ rec { } { name = "syn"; - packageId = "syn 2.0.106"; + packageId = "syn 2.0.117"; features = [ "full" "extra-traits" ]; } ]; features = { + "serde" = [ "dep:serde" ]; "strsim" = [ "dep:strsim" ]; "suggestions" = [ "strsim" ]; }; @@ -2674,9 +2601,9 @@ rec { }; "darling_macro" = rec { crateName = "darling_macro"; - version = "0.20.11"; + version = "0.23.0"; edition = "2021"; - sha256 = "1bbfbc2px6sj1pqqq97bgqn6c8xdnb2fmz66f7f40nrqrcybjd7w"; + sha256 = "13fvzji9xyp304mgq720z5l0xgm54qj68jibwscagkynggn88fdc"; procMacro = true; authors = [ "Ted Driggs " @@ -2692,16 +2619,16 @@ rec { } { name = "syn"; - packageId = "syn 2.0.106"; + packageId = "syn 2.0.117"; } ]; }; "data-encoding" = rec { crateName = "data-encoding"; - version = "2.9.0"; + version = "2.10.0"; edition = "2018"; - sha256 = "0xm46371aw613ghc12ay4vsnn49hpcmcwlijnqy8lbp2bpd308ra"; + sha256 = "1shzipi8igi058fkx9wfiy6prd7d8rahz1lb7d4idw9nfvrf58fp"; libName = "data_encoding"; authors = [ "Julien Cretin " @@ -2714,9 +2641,9 @@ rec { }; "delegate" = rec { crateName = "delegate"; - version = "0.13.4"; + version = "0.13.5"; edition = "2018"; - sha256 = "0sz2gl4079alymdws9s3zakgm6y4n76kay8slqxnm0vcylnahy31"; + sha256 = "0w2karbb16rrz3f5yj1fhsnpss4vl1ag1i8gn2prgw2bcm0v43kq"; procMacro = true; authors = [ "Godfrey Chan " @@ -2733,7 +2660,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.106"; + packageId = "syn 2.0.117"; features = [ "full" "visit-mut" ]; } ]; @@ -2741,9 +2668,9 @@ rec { }; "deranged" = rec { crateName = "deranged"; - version = "0.5.4"; + version = "0.5.8"; edition = "2021"; - sha256 = "0wch36gpg2crz2f72p7c0i5l4bzxjkwxw96sdj57c1cadzw566d4"; + sha256 = "0711df3w16vx80k55ivkwzwswziinj4dz05xci3rvmn15g615n3w"; authors = [ "Jacob Pratt " ]; @@ -2760,7 +2687,8 @@ rec { "num" = [ "dep:num-traits" ]; "powerfmt" = [ "dep:powerfmt" ]; "quickcheck" = [ "dep:quickcheck" "alloc" ]; - "rand" = [ "rand08" "rand09" ]; + "rand" = [ "rand08" "rand09" "rand010" ]; + "rand010" = [ "dep:rand010" ]; "rand08" = [ "dep:rand08" ]; "rand09" = [ "dep:rand09" ]; "serde" = [ "dep:serde_core" ]; @@ -2791,12 +2719,111 @@ rec { } { name = "syn"; - packageId = "syn 2.0.106"; + packageId = "syn 2.0.117"; features = [ "derive" "parsing" "extra-traits" ]; } ]; }; + "derive_more" = rec { + crateName = "derive_more"; + version = "2.1.1"; + edition = "2021"; + sha256 = "0d5i10l4aff744jw7v4n8g6cv15rjk5mp0f1z522pc2nj7jfjlfp"; + authors = [ + "Jelte Fennema " + ]; + dependencies = [ + { + name = "derive_more-impl"; + packageId = "derive_more-impl"; + } + ]; + features = { + "add" = [ "derive_more-impl/add" ]; + "add_assign" = [ "derive_more-impl/add_assign" ]; + "as_ref" = [ "derive_more-impl/as_ref" ]; + "constructor" = [ "derive_more-impl/constructor" ]; + "debug" = [ "derive_more-impl/debug" ]; + "default" = [ "std" ]; + "deref" = [ "derive_more-impl/deref" ]; + "deref_mut" = [ "derive_more-impl/deref_mut" ]; + "display" = [ "derive_more-impl/display" ]; + "eq" = [ "derive_more-impl/eq" ]; + "error" = [ "derive_more-impl/error" ]; + "from" = [ "derive_more-impl/from" ]; + "from_str" = [ "derive_more-impl/from_str" ]; + "full" = [ "add" "add_assign" "as_ref" "constructor" "debug" "deref" "deref_mut" "display" "eq" "error" "from" "from_str" "index" "index_mut" "into" "into_iterator" "is_variant" "mul" "mul_assign" "not" "sum" "try_from" "try_into" "try_unwrap" "unwrap" ]; + "index" = [ "derive_more-impl/index" ]; + "index_mut" = [ "derive_more-impl/index_mut" ]; + "into" = [ "derive_more-impl/into" ]; + "into_iterator" = [ "derive_more-impl/into_iterator" ]; + "is_variant" = [ "derive_more-impl/is_variant" ]; + "mul" = [ "derive_more-impl/mul" ]; + "mul_assign" = [ "derive_more-impl/mul_assign" ]; + "not" = [ "derive_more-impl/not" ]; + "sum" = [ "derive_more-impl/sum" ]; + "testing-helpers" = [ "derive_more-impl/testing-helpers" "dep:rustc_version" ]; + "try_from" = [ "derive_more-impl/try_from" ]; + "try_into" = [ "derive_more-impl/try_into" ]; + "try_unwrap" = [ "derive_more-impl/try_unwrap" ]; + "unwrap" = [ "derive_more-impl/unwrap" ]; + }; + resolvedDefaultFeatures = [ "default" "from" "std" ]; + }; + "derive_more-impl" = rec { + crateName = "derive_more-impl"; + version = "2.1.1"; + edition = "2021"; + sha256 = "1jwdp836vymp35d7mfvvalplkdgk2683nv3zjlx65n1194k9g6kr"; + procMacro = true; + libName = "derive_more_impl"; + authors = [ + "Jelte Fennema " + ]; + dependencies = [ + { + name = "proc-macro2"; + packageId = "proc-macro2"; + } + { + name = "quote"; + packageId = "quote"; + } + { + name = "syn"; + packageId = "syn 2.0.117"; + } + ]; + buildDependencies = [ + { + name = "rustc_version"; + packageId = "rustc_version"; + } + ]; + features = { + "add" = [ "syn/extra-traits" "syn/visit" ]; + "add_assign" = [ "syn/extra-traits" "syn/visit" ]; + "as_ref" = [ "syn/extra-traits" "syn/visit" ]; + "debug" = [ "syn/extra-traits" "dep:unicode-xid" ]; + "display" = [ "syn/extra-traits" "dep:unicode-xid" "dep:convert_case" ]; + "eq" = [ "syn/extra-traits" "syn/visit" ]; + "error" = [ "syn/extra-traits" ]; + "from" = [ "syn/extra-traits" ]; + "from_str" = [ "syn/full" "syn/visit" "dep:convert_case" ]; + "full" = [ "add" "add_assign" "as_ref" "constructor" "debug" "deref" "deref_mut" "display" "eq" "error" "from" "from_str" "index" "index_mut" "into" "into_iterator" "is_variant" "mul" "mul_assign" "not" "sum" "try_from" "try_into" "try_unwrap" "unwrap" ]; + "into" = [ "syn/extra-traits" "syn/visit-mut" ]; + "is_variant" = [ "dep:convert_case" ]; + "mul" = [ "syn/extra-traits" "syn/visit" ]; + "mul_assign" = [ "syn/extra-traits" "syn/visit" ]; + "not" = [ "syn/extra-traits" ]; + "testing-helpers" = [ "syn/full" ]; + "try_into" = [ "syn/extra-traits" "syn/full" "syn/visit-mut" ]; + "try_unwrap" = [ "dep:convert_case" ]; + "unwrap" = [ "dep:convert_case" ]; + }; + resolvedDefaultFeatures = [ "default" "from" ]; + }; "deunicode" = rec { crateName = "deunicode"; version = "1.6.2"; @@ -2847,9 +2874,9 @@ rec { }; "directories" = rec { crateName = "directories"; - version = "5.0.1"; + version = "6.0.0"; edition = "2015"; - sha256 = "0dba6xzk79s1clqzxh2qlgzk3lmvvks1lzzjhhi3hd70hhxifjcs"; + sha256 = "0zgy2w088v8w865c11dmc3dih899fgrhvrfp7g83h6v6ai60kx8n"; authors = [ "Simon Ochsenreither " ]; @@ -2863,9 +2890,9 @@ rec { }; "dirs-sys" = rec { crateName = "dirs-sys"; - version = "0.4.1"; + version = "0.5.0"; edition = "2015"; - sha256 = "071jy0pvaad9lsa6mzawxrh7cmr7hsmsdxwzm7jzldfkrfjha3sj"; + sha256 = "1aqzpgq6ampza6v012gm2dppx9k35cdycbj54808ksbys9k366p0"; libName = "dirs_sys"; authors = [ "Simon Ochsenreither " @@ -2888,7 +2915,7 @@ rec { } { name = "windows-sys"; - packageId = "windows-sys 0.48.0"; + packageId = "windows-sys 0.61.2"; target = { target, features }: (target."windows" or false); features = [ "Win32_UI_Shell" "Win32_Foundation" "Win32_Globalization" "Win32_System_Com" ]; } @@ -2915,7 +2942,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.106"; + packageId = "syn 2.0.117"; } ]; features = { @@ -2924,9 +2951,9 @@ rec { }; "doc-comment" = rec { crateName = "doc-comment"; - version = "0.3.3"; + version = "0.3.4"; edition = "2015"; - sha256 = "043sprsf3wl926zmck1bm7gw0jq50mb76lkpk49vasfr6ax1p97y"; + sha256 = "1j8jbrw8335hciwn3h2idkfc3kmx3pfn0sxcwjw1m8lmn6w5a2bq"; libName = "doc_comment"; authors = [ "Guillaume Gomez " @@ -2973,9 +3000,9 @@ rec { }; "document-features" = rec { crateName = "document-features"; - version = "0.2.11"; + version = "0.2.12"; edition = "2018"; - sha256 = "0pdhpbz687fk2rkgz45yy3gvbhlxliwb7g1lj3jbx1f1qr89n94m"; + sha256 = "0qcgpialq3zgvjmsvar9n6v10rfbv6mk6ajl46dd4pj5hn3aif6l"; procMacro = true; libName = "document_features"; libPath = "lib.rs"; @@ -2986,7 +3013,6 @@ rec { { name = "litrs"; packageId = "litrs"; - usesDefaultFeatures = false; } ]; features = { @@ -3014,6 +3040,16 @@ rec { "cli" = [ "clap" ]; }; }; + "dunce" = rec { + crateName = "dunce"; + version = "1.0.5"; + edition = "2021"; + sha256 = "04y8wwv3vvcqaqmqzssi6k0ii9gs6fpz96j5w9nky2ccsl23axwj"; + authors = [ + "Kornel " + ]; + + }; "dyn-clone" = rec { crateName = "dyn-clone"; version = "1.0.20"; @@ -3051,13 +3087,13 @@ rec { } { name = "syn"; - packageId = "syn 2.0.106"; + packageId = "syn 2.0.117"; } ]; devDependencies = [ { name = "syn"; - packageId = "syn 2.0.106"; + packageId = "syn 2.0.117"; features = [ "full" ]; } ]; @@ -3137,9 +3173,9 @@ rec { }; "enum-ordinalize" = rec { crateName = "enum-ordinalize"; - version = "4.3.0"; + version = "4.3.2"; edition = "2021"; - sha256 = "1max64z9giii61qcwl56rndd7pakaylkaij5zqbbbvjl9vxdr87y"; + sha256 = "1w0012dqq5y3xikpswix190jvjl097pjrzpi515jr3qzpfkr242a"; libName = "enum_ordinalize"; dependencies = [ { @@ -3158,9 +3194,9 @@ rec { }; "enum-ordinalize-derive" = rec { crateName = "enum-ordinalize-derive"; - version = "4.3.1"; + version = "4.3.2"; edition = "2021"; - sha256 = "1zy53fabazimwv5cl0366k834ybixzl84lxj9mfavbnlfn532a0d"; + sha256 = "0cf61sxxsf3f6n5xhzjxdrc1793k52250ql32zp9h9fnn8gn1acc"; procMacro = true; libName = "enum_ordinalize_derive"; dependencies = [ @@ -3174,7 +3210,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.106"; + packageId = "syn 2.0.117"; } ]; features = { @@ -3226,7 +3262,7 @@ rec { "default" = [ "std" ]; "std" = [ "libc/std" ]; }; - resolvedDefaultFeatures = [ "std" ]; + resolvedDefaultFeatures = [ "default" "std" ]; }; "event-listener" = rec { crateName = "event-listener"; @@ -3297,13 +3333,14 @@ rec { }; "fancy-regex" = rec { crateName = "fancy-regex"; - version = "0.13.0"; + version = "0.16.2"; edition = "2018"; - sha256 = "1wjbqjsdj8fkq6z2i9llq25iaqzd9f208vxnwg8mdbr2ba1lc7jk"; + sha256 = "0vy4c012f82xcg3gs068mq110zhsrnajh58fmq1jxr7vaijhb2wr"; libName = "fancy_regex"; authors = [ "Raph Levien " "Robin Stocker " + "Keith Hall " ]; dependencies = [ { @@ -3345,21 +3382,21 @@ rec { "js" = [ "std" "getrandom" ]; "std" = [ "alloc" ]; }; - resolvedDefaultFeatures = [ "alloc" "default" "std" ]; + resolvedDefaultFeatures = [ "alloc" "std" ]; }; "find-msvc-tools" = rec { crateName = "find-msvc-tools"; - version = "0.1.4"; + version = "0.1.9"; edition = "2018"; - sha256 = "09x1sfinrz86bkm6i2d85lpsfnxn0w797g5zisv1nwhaz1w1h1aj"; + sha256 = "10nmi0qdskq6l7zwxw5g56xny7hb624iki1c39d907qmfh3vrbjv"; libName = "find_msvc_tools"; }; "flate2" = rec { crateName = "flate2"; - version = "1.1.4"; + version = "1.1.9"; edition = "2018"; - sha256 = "1a8a3pk2r2dxays4ikc47ygydhpd1dcxlgqdi3r9kiiq9rb4wnnw"; + sha256 = "0g2pb7cxnzcbzrj8bw4v6gpqqp21aycmf6d84rzb6j748qkvlgw4"; authors = [ "Alex Crichton " "Josh Triplett " @@ -3368,6 +3405,7 @@ rec { { name = "crc32fast"; packageId = "crc32fast"; + optional = true; } { name = "miniz_oxide"; @@ -3383,25 +3421,33 @@ rec { target = { target, features }: (("wasm32" == target."arch" or null) && (!("emscripten" == target."os" or null))); features = [ "with-alloc" "simd" ]; } + { + name = "zlib-rs"; + packageId = "zlib-rs"; + optional = true; + usesDefaultFeatures = false; + features = [ "std" "rust-allocator" ]; + } ]; features = { + "any_c_zlib" = [ "any_zlib" ]; "any_zlib" = [ "any_impl" ]; "cloudflare-zlib-sys" = [ "dep:cloudflare-zlib-sys" ]; - "cloudflare_zlib" = [ "any_zlib" "cloudflare-zlib-sys" ]; + "cloudflare_zlib" = [ "any_c_zlib" "cloudflare-zlib-sys" "dep:crc32fast" ]; "default" = [ "rust_backend" ]; + "document-features" = [ "dep:document-features" ]; "libz-ng-sys" = [ "dep:libz-ng-sys" ]; - "libz-rs-sys" = [ "dep:libz-rs-sys" ]; "libz-sys" = [ "dep:libz-sys" ]; "miniz-sys" = [ "rust_backend" ]; - "miniz_oxide" = [ "dep:miniz_oxide" ]; + "miniz_oxide" = [ "any_impl" "dep:miniz_oxide" "dep:crc32fast" ]; "rust_backend" = [ "miniz_oxide" "any_impl" ]; - "zlib" = [ "any_zlib" "libz-sys" ]; - "zlib-default" = [ "any_zlib" "libz-sys/default" ]; - "zlib-ng" = [ "any_zlib" "libz-ng-sys" ]; - "zlib-ng-compat" = [ "zlib" "libz-sys/zlib-ng" ]; - "zlib-rs" = [ "any_zlib" "libz-rs-sys" ]; + "zlib" = [ "any_c_zlib" "libz-sys" "dep:crc32fast" ]; + "zlib-default" = [ "any_c_zlib" "libz-sys/default" "dep:crc32fast" ]; + "zlib-ng" = [ "any_c_zlib" "libz-ng-sys" "dep:crc32fast" ]; + "zlib-ng-compat" = [ "zlib" "libz-sys/zlib-ng" "dep:crc32fast" ]; + "zlib-rs" = [ "any_zlib" "dep:zlib-rs" ]; }; - resolvedDefaultFeatures = [ "any_impl" "default" "miniz_oxide" "rust_backend" ]; + resolvedDefaultFeatures = [ "any_impl" "any_zlib" "default" "miniz_oxide" "rust_backend" "zlib-rs" ]; }; "fnv" = rec { crateName = "fnv"; @@ -3417,7 +3463,7 @@ rec { }; resolvedDefaultFeatures = [ "default" "std" ]; }; - "foldhash" = rec { + "foldhash 0.1.5" = rec { crateName = "foldhash"; version = "0.1.5"; edition = "2021"; @@ -3429,6 +3475,18 @@ rec { "default" = [ "std" ]; }; }; + "foldhash 0.2.0" = rec { + crateName = "foldhash"; + version = "0.2.0"; + edition = "2021"; + sha256 = "1nvgylb099s11xpfm1kn2wcsql080nqmnhj1l25bp3r2b35j9kkp"; + authors = [ + "Orson Peters " + ]; + features = { + "default" = [ "std" ]; + }; + }; "form_urlencoded" = rec { crateName = "form_urlencoded"; version = "1.2.2"; @@ -3451,11 +3509,21 @@ rec { }; resolvedDefaultFeatures = [ "alloc" "default" "std" ]; }; + "fs_extra" = rec { + crateName = "fs_extra"; + version = "1.3.0"; + edition = "2018"; + sha256 = "075i25z70j2mz9r7i9p9r521y8xdj81q7skslyb7zhqnnw33fw22"; + authors = [ + "Denis Kurilenko " + ]; + + }; "futures" = rec { crateName = "futures"; - version = "0.3.31"; + version = "0.3.32"; edition = "2018"; - sha256 = "0xh8ddbkm9jy8kc5gbvjp9a4b6rqqxvc8471yb2qaz5wm2qhgg35"; + sha256 = "0b9q86r5ar18v5xjiyqn7sb8sa32xv98qqnfz779gl7ns7lpw54b"; dependencies = [ { name = "futures-channel"; @@ -3505,6 +3573,7 @@ rec { "executor" = [ "std" "futures-executor/std" ]; "futures-executor" = [ "dep:futures-executor" ]; "io-compat" = [ "compat" "futures-util/io-compat" ]; + "spin" = [ "futures-util/spin" ]; "std" = [ "alloc" "futures-core/std" "futures-task/std" "futures-io/std" "futures-sink/std" "futures-util/std" "futures-util/io" "futures-util/channel" ]; "thread-pool" = [ "executor" "futures-executor/thread-pool" ]; "unstable" = [ "futures-core/unstable" "futures-task/unstable" "futures-channel/unstable" "futures-io/unstable" "futures-util/unstable" ]; @@ -3514,9 +3583,9 @@ rec { }; "futures-channel" = rec { crateName = "futures-channel"; - version = "0.3.31"; + version = "0.3.32"; edition = "2018"; - sha256 = "040vpqpqlbk099razq8lyn74m0f161zd0rp36hciqrwcg2zibzrd"; + sha256 = "07fcyzrmbmh7fh4ainilf1s7gnwvnk07phdq77jkb9fpa2ffifq7"; libName = "futures_channel"; dependencies = [ { @@ -3542,9 +3611,9 @@ rec { }; "futures-core" = rec { crateName = "futures-core"; - version = "0.3.31"; + version = "0.3.32"; edition = "2018"; - sha256 = "0gk6yrxgi5ihfanm2y431jadrll00n5ifhnpx090c2f2q1cr1wh5"; + sha256 = "07bbvwjbm5g2i330nyr1kcvjapkmdqzl4r6mqv75ivvjaa0m0d3y"; libName = "futures_core"; features = { "default" = [ "std" ]; @@ -3555,9 +3624,9 @@ rec { }; "futures-executor" = rec { crateName = "futures-executor"; - version = "0.3.31"; + version = "0.3.32"; edition = "2018"; - sha256 = "17vcci6mdfzx4gbk0wx64chr2f13wwwpvyf3xd5fb1gmjzcx2a0y"; + sha256 = "17aplz3ns74qn7a04qg7qlgsdx5iwwwkd4jvdfra6hl3h4w9rwms"; libName = "futures_executor"; dependencies = [ { @@ -3578,17 +3647,16 @@ rec { ]; features = { "default" = [ "std" ]; - "num_cpus" = [ "dep:num_cpus" ]; "std" = [ "futures-core/std" "futures-task/std" "futures-util/std" ]; - "thread-pool" = [ "std" "num_cpus" ]; + "thread-pool" = [ "std" ]; }; resolvedDefaultFeatures = [ "default" "std" ]; }; "futures-io" = rec { crateName = "futures-io"; - version = "0.3.31"; + version = "0.3.32"; edition = "2018"; - sha256 = "1ikmw1yfbgvsychmsihdkwa8a1knank2d9a8dk01mbjar9w1np4y"; + sha256 = "063pf5m6vfmyxj74447x8kx9q8zj6m9daamj4hvf49yrg9fs7jyf"; libName = "futures_io"; features = { "default" = [ "std" ]; @@ -3597,9 +3665,9 @@ rec { }; "futures-macro" = rec { crateName = "futures-macro"; - version = "0.3.31"; + version = "0.3.32"; edition = "2018"; - sha256 = "0l1n7kqzwwmgiznn0ywdc5i24z72zvh9q1dwps54mimppi7f6bhn"; + sha256 = "0ys4b1lk7s0bsj29pv42bxsaavalch35rprp64s964p40c1bfdg8"; procMacro = true; libName = "futures_macro"; dependencies = [ @@ -3613,7 +3681,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.106"; + packageId = "syn 2.0.117"; features = [ "full" ]; } ]; @@ -3621,9 +3689,9 @@ rec { }; "futures-sink" = rec { crateName = "futures-sink"; - version = "0.3.31"; + version = "0.3.32"; edition = "2018"; - sha256 = "1xyly6naq6aqm52d5rh236snm08kw8zadydwqz8bip70s6vzlxg5"; + sha256 = "14q8ml7hn5a6gyy9ri236j28kh0svqmrk4gcg0wh26rkazhm95y3"; libName = "futures_sink"; features = { "default" = [ "std" ]; @@ -3633,9 +3701,9 @@ rec { }; "futures-task" = rec { crateName = "futures-task"; - version = "0.3.31"; + version = "0.3.32"; edition = "2018"; - sha256 = "124rv4n90f5xwfsm9qw6y99755y021cmi5dhzh253s920z77s3zr"; + sha256 = "14s3vqf8llz3kjza33vn4ixg6kwxp61xrysn716h0cwwsnri2xq3"; libName = "futures_task"; features = { "default" = [ "std" ]; @@ -3660,9 +3728,9 @@ rec { }; "futures-util" = rec { crateName = "futures-util"; - version = "0.3.31"; + version = "0.3.32"; edition = "2018"; - sha256 = "10aa1ar8bgkgbr4wzxlidkqkcxf77gffyj8j7768h831pcaq784z"; + sha256 = "1mn60lw5kh32hz9isinjlpw34zx708fk5q1x0m40n6g6jq9a971q"; libName = "futures_util"; dependencies = [ { @@ -3710,21 +3778,18 @@ rec { name = "pin-project-lite"; packageId = "pin-project-lite"; } - { - name = "pin-utils"; - packageId = "pin-utils"; - } { name = "slab"; packageId = "slab"; optional = true; + usesDefaultFeatures = false; } ]; features = { - "alloc" = [ "futures-core/alloc" "futures-task/alloc" ]; + "alloc" = [ "futures-core/alloc" "futures-task/alloc" "slab" ]; "async-await-macro" = [ "async-await" "futures-macro" ]; "channel" = [ "std" "futures-channel" ]; - "compat" = [ "std" "futures_01" ]; + "compat" = [ "std" "futures_01" "libc" ]; "default" = [ "std" "async-await" "async-await-macro" ]; "futures-channel" = [ "dep:futures-channel" ]; "futures-io" = [ "dep:futures-io" ]; @@ -3732,12 +3797,14 @@ rec { "futures-sink" = [ "dep:futures-sink" ]; "futures_01" = [ "dep:futures_01" ]; "io" = [ "std" "futures-io" "memchr" ]; - "io-compat" = [ "io" "compat" "tokio-io" ]; + "io-compat" = [ "io" "compat" "tokio-io" "libc" ]; + "libc" = [ "dep:libc" ]; "memchr" = [ "dep:memchr" ]; "portable-atomic" = [ "futures-core/portable-atomic" ]; "sink" = [ "futures-sink" ]; "slab" = [ "dep:slab" ]; - "std" = [ "alloc" "futures-core/std" "futures-task/std" "slab" ]; + "spin" = [ "dep:spin" ]; + "std" = [ "alloc" "futures-core/std" "futures-task/std" "slab/std" ]; "tokio-io" = [ "dep:tokio-io" ]; "unstable" = [ "futures-core/unstable" "futures-task/unstable" ]; "write-all-vectored" = [ "io" ]; @@ -3746,9 +3813,9 @@ rec { }; "generic-array" = rec { crateName = "generic-array"; - version = "0.14.9"; + version = "0.14.7"; edition = "2015"; - sha256 = "1wpdn5ngpqkkyyibbg7wa4cfg0y8zjc57spaia2h47jkk0qp9djb"; + sha256 = "16lyyrzrljfq424c3n8kfwkqihlimmsg5nhshbbp48np3yjrqr45"; libName = "generic_array"; authors = [ "Bartłomiej Kamiński " @@ -3772,11 +3839,11 @@ rec { }; resolvedDefaultFeatures = [ "more_lengths" ]; }; - "getrandom 0.2.16" = rec { + "getrandom 0.2.17" = rec { crateName = "getrandom"; - version = "0.2.16"; + version = "0.2.17"; edition = "2018"; - sha256 = "14l5aaia20cc6cc08xdlhrzmfcylmrnprwnna20lqf746pqzjprk"; + sha256 = "1l2ac6jfj9xhpjjgmcx6s1x89bbnw9x6j9258yy6xjkzpq0bqapz"; authors = [ "The Rand Project Developers" ]; @@ -3891,7 +3958,7 @@ rec { } { name = "r-efi"; - packageId = "r-efi"; + packageId = "r-efi 5.3.0"; usesDefaultFeatures = false; target = { target, features }: (("uefi" == target."os" or null) && ("efi_rng" == target."getrandom_backend" or null)); } @@ -3914,6 +3981,96 @@ rec { }; resolvedDefaultFeatures = [ "std" "wasm_js" ]; }; + "getrandom 0.4.2" = rec { + crateName = "getrandom"; + version = "0.4.2"; + edition = "2024"; + sha256 = "0mb5833hf9pvn9dhvxjgfg5dx0m77g8wavvjdpvpnkp9fil1xr8d"; + authors = [ + "The Rand Project Developers" + ]; + dependencies = [ + { + name = "cfg-if"; + packageId = "cfg-if"; + } + { + name = "libc"; + packageId = "libc"; + usesDefaultFeatures = false; + target = { target, features }: ((("linux" == target."os" or null) || ("android" == target."os" or null)) && (!((("linux" == target."os" or null) && ("" == target."env" or null)) || ("custom" == target."getrandom_backend" or null) || ("linux_raw" == target."getrandom_backend" or null) || ("rdrand" == target."getrandom_backend" or null) || ("rndr" == target."getrandom_backend" or null)))); + } + { + name = "libc"; + packageId = "libc"; + usesDefaultFeatures = false; + target = { target, features }: (("dragonfly" == target."os" or null) || ("freebsd" == target."os" or null) || ("hurd" == target."os" or null) || ("illumos" == target."os" or null) || ("cygwin" == target."os" or null) || (("horizon" == target."os" or null) && ("arm" == target."arch" or null))); + } + { + name = "libc"; + packageId = "libc"; + usesDefaultFeatures = false; + target = { target, features }: (("haiku" == target."os" or null) || ("redox" == target."os" or null) || ("nto" == target."os" or null) || ("aix" == target."os" or null)); + } + { + name = "libc"; + packageId = "libc"; + usesDefaultFeatures = false; + target = { target, features }: (("ios" == target."os" or null) || ("visionos" == target."os" or null) || ("watchos" == target."os" or null) || ("tvos" == target."os" or null)); + } + { + name = "libc"; + packageId = "libc"; + usesDefaultFeatures = false; + target = { target, features }: (("macos" == target."os" or null) || ("openbsd" == target."os" or null) || ("vita" == target."os" or null) || ("emscripten" == target."os" or null)); + } + { + name = "libc"; + packageId = "libc"; + usesDefaultFeatures = false; + target = { target, features }: ("netbsd" == target."os" or null); + } + { + name = "libc"; + packageId = "libc"; + usesDefaultFeatures = false; + target = { target, features }: ("solaris" == target."os" or null); + } + { + name = "libc"; + packageId = "libc"; + usesDefaultFeatures = false; + target = { target, features }: ("vxworks" == target."os" or null); + } + { + name = "r-efi"; + packageId = "r-efi 6.0.0"; + usesDefaultFeatures = false; + target = { target, features }: (("uefi" == target."os" or null) && ("efi_rng" == target."getrandom_backend" or null)); + } + { + name = "rand_core"; + packageId = "rand_core 0.10.0"; + optional = true; + } + { + name = "wasip2"; + packageId = "wasip2"; + usesDefaultFeatures = false; + target = { target, features }: (("wasm32" == target."arch" or null) && ("wasi" == target."os" or null) && ("p2" == target."env" or null)); + } + { + name = "wasip3"; + packageId = "wasip3"; + target = { target, features }: (("wasm32" == target."arch" or null) && ("wasi" == target."os" or null) && ("p3" == target."env" or null)); + } + ]; + features = { + "sys_rng" = [ "dep:rand_core" ]; + "wasm_js" = [ "dep:wasm-bindgen" "dep:js-sys" ]; + }; + resolvedDefaultFeatures = [ "std" "sys_rng" ]; + }; "glob" = rec { crateName = "glob"; version = "0.3.3"; @@ -3926,9 +4083,9 @@ rec { }; "globset" = rec { crateName = "globset"; - version = "0.4.17"; + version = "0.4.18"; edition = "2024"; - sha256 = "0193nqd7xy7625x4ba81yarw78j8i2zi7mygfn01z52dh0q93dpa"; + sha256 = "1qsp3wg0mgxzmshcgymdlpivqlc1bihm6133pl6dx2x4af8w3psj"; authors = [ "Andrew Gallant " ]; @@ -4032,9 +4189,9 @@ rec { }; "h2" = rec { crateName = "h2"; - version = "0.4.12"; + version = "0.4.13"; edition = "2021"; - sha256 = "11hk5mpid8757z6n3v18jwb62ikffrgzjlrgpzqvkqdlzjfbdh7k"; + sha256 = "0m6w5gg0n0m1m5915bxrv8n4rlazhx5icknkslz719jhh4xdli1g"; authors = [ "Carl Lerche " "Sean McArthur " @@ -4068,7 +4225,7 @@ rec { } { name = "indexmap"; - packageId = "indexmap 2.11.4"; + packageId = "indexmap"; features = [ "std" ]; } { @@ -4102,33 +4259,41 @@ rec { features = { }; }; - "hashbrown 0.12.3" = rec { + "hashbrown 0.15.5" = rec { crateName = "hashbrown"; - version = "0.12.3"; + version = "0.15.5"; edition = "2021"; - sha256 = "1268ka4750pyg2pbgsr43f0289l5zah4arir2k4igx5a8c6fg7la"; + sha256 = "189qaczmjxnikm9db748xyhiw04kpmhm9xj9k9hg0sgx7pjwyacj"; authors = [ "Amanieu d'Antras " ]; + dependencies = [ + { + name = "foldhash"; + packageId = "foldhash 0.1.5"; + optional = true; + usesDefaultFeatures = false; + } + ]; features = { - "ahash" = [ "dep:ahash" ]; - "ahash-compile-time-rng" = [ "ahash/compile-time-rng" ]; "alloc" = [ "dep:alloc" ]; - "bumpalo" = [ "dep:bumpalo" ]; - "compiler_builtins" = [ "dep:compiler_builtins" ]; + "allocator-api2" = [ "dep:allocator-api2" ]; "core" = [ "dep:core" ]; - "default" = [ "ahash" "inline-more" ]; + "default" = [ "default-hasher" "inline-more" "allocator-api2" "equivalent" "raw-entry" ]; + "default-hasher" = [ "dep:foldhash" ]; + "equivalent" = [ "dep:equivalent" ]; + "nightly" = [ "bumpalo/allocator_api" ]; "rayon" = [ "dep:rayon" ]; - "rustc-dep-of-std" = [ "nightly" "core" "compiler_builtins" "alloc" "rustc-internal-api" ]; + "rustc-dep-of-std" = [ "nightly" "core" "alloc" "rustc-internal-api" ]; "serde" = [ "dep:serde" ]; }; - resolvedDefaultFeatures = [ "raw" ]; + resolvedDefaultFeatures = [ "default-hasher" ]; }; - "hashbrown 0.15.5" = rec { + "hashbrown 0.16.1" = rec { crateName = "hashbrown"; - version = "0.15.5"; + version = "0.16.1"; edition = "2021"; - sha256 = "189qaczmjxnikm9db748xyhiw04kpmhm9xj9k9hg0sgx7pjwyacj"; + sha256 = "004i3njw38ji3bzdp9z178ba9x3k0c1pgy8x69pj7yfppv4iq7c4"; authors = [ "Amanieu d'Antras " ]; @@ -4148,7 +4313,7 @@ rec { } { name = "foldhash"; - packageId = "foldhash"; + packageId = "foldhash 0.2.0"; optional = true; usesDefaultFeatures = false; } @@ -4160,39 +4325,18 @@ rec { "default" = [ "default-hasher" "inline-more" "allocator-api2" "equivalent" "raw-entry" ]; "default-hasher" = [ "dep:foldhash" ]; "equivalent" = [ "dep:equivalent" ]; - "nightly" = [ "bumpalo/allocator_api" ]; + "nightly" = [ "foldhash?/nightly" "bumpalo/allocator_api" ]; "rayon" = [ "dep:rayon" ]; "rustc-dep-of-std" = [ "nightly" "core" "alloc" "rustc-internal-api" ]; - "serde" = [ "dep:serde" ]; + "serde" = [ "dep:serde_core" "dep:serde" ]; }; resolvedDefaultFeatures = [ "allocator-api2" "default" "default-hasher" "equivalent" "inline-more" "raw-entry" ]; }; - "hashbrown 0.16.0" = rec { - crateName = "hashbrown"; - version = "0.16.0"; - edition = "2021"; - sha256 = "13blh9j2yv77a6ni236ixiwdzbc1sh2bc4bdpaz7y859yv2bs6al"; - authors = [ - "Amanieu d'Antras " - ]; - features = { - "alloc" = [ "dep:alloc" ]; - "allocator-api2" = [ "dep:allocator-api2" ]; - "core" = [ "dep:core" ]; - "default" = [ "default-hasher" "inline-more" "allocator-api2" "equivalent" "raw-entry" ]; - "default-hasher" = [ "dep:foldhash" ]; - "equivalent" = [ "dep:equivalent" ]; - "nightly" = [ "foldhash?/nightly" "bumpalo/allocator_api" ]; - "rayon" = [ "dep:rayon" ]; - "rustc-dep-of-std" = [ "nightly" "core" "alloc" "rustc-internal-api" ]; - "serde" = [ "dep:serde" ]; - }; - }; - "headers" = rec { - crateName = "headers"; - version = "0.4.1"; - edition = "2018"; - sha256 = "1sr4zygaq1b2f0k7b5l8vx5vp05wvd82w7vpavgvr52xvdd4scdk"; + "headers" = rec { + crateName = "headers"; + version = "0.4.1"; + edition = "2018"; + sha256 = "1sr4zygaq1b2f0k7b5l8vx5vp05wvd82w7vpavgvr52xvdd4scdk"; authors = [ "Sean McArthur " ]; @@ -4274,35 +4418,17 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.9"; + packageId = "snafu 0.9.0"; features = [ "futures" ]; } ]; - }; - "home" = rec { - crateName = "home"; - version = "0.5.11"; - edition = "2021"; - sha256 = "1kxb4k87a9sayr8jipr7nq9wpgmjk4hk4047hmf9kc24692k75aq"; - authors = [ - "Brian Anderson " - ]; - dependencies = [ - { - name = "windows-sys"; - packageId = "windows-sys 0.59.0"; - target = { target, features }: (target."windows" or false); - features = [ "Win32_Foundation" "Win32_UI_Shell" "Win32_System_Com" ]; - } - ]; - }; "hostname" = rec { crateName = "hostname"; - version = "0.4.1"; + version = "0.4.2"; edition = "2021"; - sha256 = "0rbxryl68bwv8hkjdjd8f37kdb10fncgsqrqksv64qy7s4y20vx5"; + sha256 = "1g8cfg0a1v8y5a0zkncbns8hh24amjgskl39cc583wxfawsslyk1"; dependencies = [ { name = "cfg-if"; @@ -4315,7 +4441,7 @@ rec { } { name = "windows-link"; - packageId = "windows-link 0.1.3"; + packageId = "windows-link"; target = { target, features }: ("windows" == target."os" or null); } ]; @@ -4325,9 +4451,9 @@ rec { }; "http" = rec { crateName = "http"; - version = "1.3.1"; - edition = "2018"; - sha256 = "0r95i5h7dr1xadp1ac9453w0s62s27hzkam356nyx2d9mqqmva7l"; + version = "1.4.0"; + edition = "2021"; + sha256 = "06iind4cwsj1d6q8c2xgq8i2wka4ps74kmws24gsi1bzdlw2mfp3"; authors = [ "Alex Crichton " "Carl Lerche " @@ -4338,10 +4464,6 @@ rec { name = "bytes"; packageId = "bytes"; } - { - name = "fnv"; - packageId = "fnv"; - } { name = "itoa"; packageId = "itoa"; @@ -4457,9 +4579,9 @@ rec { }; "hyper" = rec { crateName = "hyper"; - version = "1.7.0"; + version = "1.8.1"; edition = "2021"; - sha256 = "07n59pxzlq621z611cbpvh7p4h9h15v0r7m5wgxygpx02d5aafpb"; + sha256 = "04cxr8j5y86bhxxlyqb8xkxjskpajk7cxwfzzk4v3my3a3rd9cia"; authors = [ "Sean McArthur " ]; @@ -4565,104 +4687,6 @@ rec { }; resolvedDefaultFeatures = [ "client" "default" "http1" "http2" "server" ]; }; - "hyper-http-proxy" = rec { - crateName = "hyper-http-proxy"; - version = "1.1.0"; - edition = "2021"; - sha256 = "023w7w9si4zs5phfj30g3dkkk713ipix10dsqj5h443mwfhv1m3s"; - libName = "hyper_http_proxy"; - authors = [ - "MetalBear Tech LTD " - ]; - dependencies = [ - { - name = "bytes"; - packageId = "bytes"; - } - { - name = "futures-util"; - packageId = "futures-util"; - usesDefaultFeatures = false; - } - { - name = "headers"; - packageId = "headers"; - } - { - name = "http"; - packageId = "http"; - } - { - name = "hyper"; - packageId = "hyper"; - features = [ "client" ]; - } - { - name = "hyper-rustls"; - packageId = "hyper-rustls"; - optional = true; - usesDefaultFeatures = false; - } - { - name = "hyper-util"; - packageId = "hyper-util"; - features = [ "client" "client-legacy" "tokio" ]; - } - { - name = "pin-project-lite"; - packageId = "pin-project-lite"; - } - { - name = "rustls-native-certs"; - packageId = "rustls-native-certs 0.7.3"; - optional = true; - } - { - name = "tokio"; - packageId = "tokio"; - features = [ "io-std" "io-util" ]; - } - { - name = "tokio-rustls"; - packageId = "tokio-rustls"; - optional = true; - usesDefaultFeatures = false; - } - { - name = "tower-service"; - packageId = "tower-service"; - } - ]; - devDependencies = [ - { - name = "hyper"; - packageId = "hyper"; - features = [ "client" "http1" ]; - } - { - name = "hyper-util"; - packageId = "hyper-util"; - features = [ "client" "client-legacy" "http1" "tokio" ]; - } - { - name = "tokio"; - packageId = "tokio"; - features = [ "full" ]; - } - ]; - features = { - "__rustls" = [ "dep:hyper-rustls" "dep:tokio-rustls" "__tls" ]; - "default" = [ "default-tls" ]; - "default-tls" = [ "rustls-tls-native-roots" ]; - "hyper-tls" = [ "dep:hyper-tls" ]; - "native-tls" = [ "dep:native-tls" "tokio-native-tls" "hyper-tls" "__tls" ]; - "native-tls-vendored" = [ "native-tls" "tokio-native-tls?/vendored" ]; - "rustls-tls-native-roots" = [ "dep:rustls-native-certs" "__rustls" "hyper-rustls/rustls-native-certs" ]; - "rustls-tls-webpki-roots" = [ "dep:webpki-roots" "__rustls" "hyper-rustls/webpki-roots" ]; - "tokio-native-tls" = [ "dep:tokio-native-tls" ]; - }; - resolvedDefaultFeatures = [ "__rustls" "__tls" "rustls-tls-native-roots" ]; - }; "hyper-rustls" = rec { crateName = "hyper-rustls"; version = "0.27.7"; @@ -4697,7 +4721,7 @@ rec { } { name = "rustls-native-certs"; - packageId = "rustls-native-certs 0.8.2"; + packageId = "rustls-native-certs"; optional = true; } { @@ -4718,11 +4742,6 @@ rec { name = "tower-service"; packageId = "tower-service"; } - { - name = "webpki-roots"; - packageId = "webpki-roots"; - optional = true; - } ]; devDependencies = [ { @@ -4759,69 +4778,7 @@ rec { "webpki-roots" = [ "dep:webpki-roots" ]; "webpki-tokio" = [ "webpki-roots" ]; }; - resolvedDefaultFeatures = [ "http1" "log" "logging" "native-tokio" "ring" "rustls-native-certs" "tls12" "webpki-roots" "webpki-tokio" ]; - }; - "hyper-socks2" = rec { - crateName = "hyper-socks2"; - version = "0.9.1"; - edition = "2021"; - sha256 = "1avx6crd1i86bcprqz26zrbsk8844s8jc1845ry7x3r09ihjghji"; - libName = "hyper_socks2"; - authors = [ - "Arsenii Lyashenko " - ]; - dependencies = [ - { - name = "async-socks5"; - packageId = "async-socks5"; - } - { - name = "http"; - packageId = "http"; - } - { - name = "hyper"; - packageId = "hyper"; - } - { - name = "hyper-util"; - packageId = "hyper-util"; - features = [ "tokio" ]; - } - { - name = "thiserror"; - packageId = "thiserror 1.0.69"; - } - { - name = "tokio"; - packageId = "tokio"; - } - { - name = "tower-service"; - packageId = "tower-service"; - } - ]; - devDependencies = [ - { - name = "hyper-util"; - packageId = "hyper-util"; - features = [ "http1" "client" "client-legacy" ]; - } - { - name = "tokio"; - packageId = "tokio"; - features = [ "macros" ]; - } - ]; - features = { - "default" = [ "tls" ]; - "hyper-rustls" = [ "dep:hyper-rustls" ]; - "hyper-tls" = [ "dep:hyper-tls" ]; - "rustls" = [ "hyper-rustls" "rusttls" "rustls-native-certs" ]; - "rustls-native-certs" = [ "dep:rustls-native-certs" ]; - "rusttls" = [ "dep:rusttls" ]; - "tls" = [ "hyper-tls" ]; - }; + resolvedDefaultFeatures = [ "aws-lc-rs" "http1" "log" "logging" "native-tokio" "ring" "rustls-native-certs" "tls12" ]; }; "hyper-timeout" = rec { crateName = "hyper-timeout"; @@ -4876,9 +4833,9 @@ rec { }; "hyper-util" = rec { crateName = "hyper-util"; - version = "0.1.17"; + version = "0.1.20"; edition = "2021"; - sha256 = "1a5fcnz0alrg4lx9xf6ja66ihaab58jnm5msnky804wg39cras9w"; + sha256 = "186zdc58hmm663csmjvrzgkr6jdh93sfmi3q2pxi57gcaqjpqm4n"; libName = "hyper_util"; authors = [ "Sean McArthur " @@ -4898,10 +4855,6 @@ rec { packageId = "futures-channel"; optional = true; } - { - name = "futures-core"; - packageId = "futures-core"; - } { name = "futures-util"; packageId = "futures-util"; @@ -4941,7 +4894,7 @@ rec { } { name = "socket2"; - packageId = "socket2 0.6.1"; + packageId = "socket2"; optional = true; features = [ "all" ]; } @@ -4989,9 +4942,10 @@ rec { features = { "client" = [ "hyper/client" "tokio/net" "dep:tracing" "dep:futures-channel" "dep:tower-service" ]; "client-legacy" = [ "client" "dep:socket2" "tokio/sync" "dep:libc" "dep:futures-util" ]; + "client-pool" = [ "client" "dep:futures-util" "dep:tower-layer" ]; "client-proxy" = [ "client" "dep:base64" "dep:ipnet" "dep:percent-encoding" ]; "client-proxy-system" = [ "dep:system-configuration" "dep:windows-registry" ]; - "full" = [ "client" "client-legacy" "client-proxy" "client-proxy-system" "server" "server-auto" "server-graceful" "service" "http1" "http2" "tokio" "tracing" ]; + "full" = [ "client" "client-legacy" "client-pool" "client-proxy" "client-proxy-system" "server" "server-auto" "server-graceful" "service" "http1" "http2" "tokio" "tracing" ]; "http1" = [ "hyper/http1" ]; "http2" = [ "hyper/http2" ]; "server" = [ "hyper/server" ]; @@ -5001,13 +4955,13 @@ rec { "tokio" = [ "dep:tokio" "tokio/rt" "tokio/time" ]; "tracing" = [ "dep:tracing" ]; }; - resolvedDefaultFeatures = [ "client" "client-legacy" "client-proxy" "default" "http1" "http2" "server" "server-auto" "service" "tokio" ]; + resolvedDefaultFeatures = [ "client" "client-legacy" "client-proxy" "default" "http1" "http2" "server" "service" "tokio" "tracing" ]; }; "iana-time-zone" = rec { crateName = "iana-time-zone"; - version = "0.1.64"; + version = "0.1.65"; edition = "2021"; - sha256 = "1yz980fmhaq9bdkasz35z63az37ci6kzzfhya83kgdqba61pzr9k"; + sha256 = "0w64khw5p8s4nzwcf36bwnsmqzf61vpwk9ca1920x82bk6nwj6z3"; libName = "iana_time_zone"; authors = [ "Andrew Straw " @@ -5074,9 +5028,9 @@ rec { }; "icu_collections" = rec { crateName = "icu_collections"; - version = "2.0.0"; + version = "2.1.1"; edition = "2021"; - sha256 = "0izfgypv1hsxlz1h8fc2aak641iyvkak16aaz5b4aqg3s3sp4010"; + sha256 = "0hsblchsdl64q21qwrs4hvc2672jrf466zivbj1bwyv606bn8ssc"; authors = [ "The ICU4X Project Developers" ]; @@ -5112,16 +5066,16 @@ rec { } ]; features = { - "alloc" = [ "zerovec/alloc" ]; + "alloc" = [ "serde?/alloc" "zerovec/alloc" ]; "databake" = [ "dep:databake" "zerovec/databake" ]; "serde" = [ "dep:serde" "zerovec/serde" "potential_utf/serde" "alloc" ]; }; }; "icu_locale_core" = rec { crateName = "icu_locale_core"; - version = "2.0.0"; + version = "2.1.1"; edition = "2021"; - sha256 = "02phv7vwhyx6vmaqgwkh2p4kc2kciykv2px6g4h8glxfrh02gphc"; + sha256 = "1djvdc2f5ylmp1ymzv4gcnmq1s4hqfim9nxlcm173lsd01hpifpd"; authors = [ "The ICU4X Project Developers" ]; @@ -5135,13 +5089,11 @@ rec { name = "litemap"; packageId = "litemap"; usesDefaultFeatures = false; - features = [ "alloc" ]; } { name = "tinystr"; packageId = "tinystr"; usesDefaultFeatures = false; - features = [ "alloc" ]; } { name = "writeable"; @@ -5156,26 +5108,22 @@ rec { } ]; features = { + "alloc" = [ "litemap/alloc" "tinystr/alloc" "writeable/alloc" "serde?/alloc" ]; "databake" = [ "dep:databake" "alloc" ]; - "serde" = [ "dep:serde" "tinystr/serde" "alloc" ]; + "serde" = [ "dep:serde" "tinystr/serde" ]; "zerovec" = [ "dep:zerovec" "tinystr/zerovec" ]; }; resolvedDefaultFeatures = [ "zerovec" ]; }; "icu_normalizer" = rec { crateName = "icu_normalizer"; - version = "2.0.0"; + version = "2.1.1"; edition = "2021"; - sha256 = "0ybrnfnxx4sf09gsrxri8p48qifn54il6n3dq2xxgx4dw7l80s23"; + sha256 = "16dmn5596la2qm0r3vih0bzjfi0vx9a20yqjha6r1y3vnql8hv2z"; authors = [ "The ICU4X Project Developers" ]; dependencies = [ - { - name = "displaydoc"; - packageId = "displaydoc"; - usesDefaultFeatures = false; - } { name = "icu_collections"; packageId = "icu_collections"; @@ -5215,17 +5163,16 @@ rec { "default" = [ "compiled_data" "utf8_iter" "utf16_iter" ]; "icu_properties" = [ "dep:icu_properties" ]; "serde" = [ "dep:serde" "icu_collections/serde" "zerovec/serde" "icu_properties?/serde" "icu_provider/serde" ]; - "utf16_iter" = [ "dep:utf16_iter" "write16" ]; + "utf16_iter" = [ "dep:utf16_iter" "dep:write16" ]; "utf8_iter" = [ "dep:utf8_iter" ]; - "write16" = [ "dep:write16" ]; }; resolvedDefaultFeatures = [ "compiled_data" ]; }; "icu_normalizer_data" = rec { crateName = "icu_normalizer_data"; - version = "2.0.0"; + version = "2.1.1"; edition = "2021"; - sha256 = "1lvjpzxndyhhjyzd1f6vi961gvzhj244nribfpdqxjdgjdl0s880"; + sha256 = "02jnzizg6q75m41l6c13xc7nkc5q8yr1b728dcgfhpzw076wrvbs"; authors = [ "The ICU4X Project Developers" ]; @@ -5233,18 +5180,13 @@ rec { }; "icu_properties" = rec { crateName = "icu_properties"; - version = "2.0.1"; + version = "2.1.2"; edition = "2021"; - sha256 = "0az349pjg8f18lrjbdmxcpg676a7iz2ibc09d2wfz57b3sf62v01"; + sha256 = "1v3lbmhhi7i6jgw51ikjb1p50qh5rb67grlkdnkc63l7zq1gq2q2"; authors = [ "The ICU4X Project Developers" ]; dependencies = [ - { - name = "displaydoc"; - packageId = "displaydoc"; - usesDefaultFeatures = false; - } { name = "icu_collections"; packageId = "icu_collections"; @@ -5267,12 +5209,6 @@ rec { packageId = "icu_provider"; usesDefaultFeatures = false; } - { - name = "potential_utf"; - packageId = "potential_utf"; - usesDefaultFeatures = false; - features = [ "zerovec" ]; - } { name = "zerotrie"; packageId = "zerotrie"; @@ -5287,20 +5223,20 @@ rec { } ]; features = { - "alloc" = [ "zerovec/alloc" "icu_collections/alloc" ]; + "alloc" = [ "zerovec/alloc" "icu_collections/alloc" "serde?/alloc" ]; "compiled_data" = [ "dep:icu_properties_data" "icu_provider/baked" ]; - "datagen" = [ "serde" "dep:databake" "potential_utf/databake" "zerovec/databake" "icu_collections/databake" "icu_locale_core/databake" "zerotrie/databake" "icu_provider/export" ]; + "datagen" = [ "serde" "dep:databake" "zerovec/databake" "icu_collections/databake" "icu_locale_core/databake" "zerotrie/databake" "icu_provider/export" ]; "default" = [ "compiled_data" ]; - "serde" = [ "dep:serde" "icu_locale_core/serde" "potential_utf/serde" "zerovec/serde" "icu_collections/serde" "icu_provider/serde" "zerotrie/serde" ]; + "serde" = [ "dep:serde" "icu_locale_core/serde" "zerovec/serde" "icu_collections/serde" "icu_provider/serde" "zerotrie/serde" ]; "unicode_bidi" = [ "dep:unicode-bidi" ]; }; resolvedDefaultFeatures = [ "compiled_data" ]; }; "icu_properties_data" = rec { crateName = "icu_properties_data"; - version = "2.0.1"; + version = "2.1.2"; edition = "2021"; - sha256 = "0cnn3fkq6k88w7p86w7hsd1254s4sl783rpz4p6hlccq74a5k119"; + sha256 = "1bvpkh939rgzrjfdb7hz47v4wijngk0snmcgrnpwc9fpz162jv31"; authors = [ "The ICU4X Project Developers" ]; @@ -5308,9 +5244,9 @@ rec { }; "icu_provider" = rec { crateName = "icu_provider"; - version = "2.0.0"; + version = "2.1.1"; edition = "2021"; - sha256 = "1bz5v02gxv1i06yhdhs2kbwxkw3ny9r2vvj9j288fhazgfi0vj03"; + sha256 = "0576b7dizgyhpfa74kacv86y4g1p7v5ffd6c56kf1q82rvq2r5l5"; authors = [ "The ICU4X Project Developers" ]; @@ -5325,32 +5261,23 @@ rec { packageId = "icu_locale_core"; usesDefaultFeatures = false; } - { - name = "stable_deref_trait"; - packageId = "stable_deref_trait"; - usesDefaultFeatures = false; - } - { - name = "tinystr"; - packageId = "tinystr"; - usesDefaultFeatures = false; - } { name = "writeable"; packageId = "writeable"; + optional = true; usesDefaultFeatures = false; } { name = "yoke"; packageId = "yoke"; usesDefaultFeatures = false; - features = [ "alloc" "derive" ]; + features = [ "derive" ]; } { name = "zerofrom"; packageId = "zerofrom"; usesDefaultFeatures = false; - features = [ "alloc" "derive" ]; + features = [ "derive" ]; } { name = "zerotrie"; @@ -5366,8 +5293,8 @@ rec { } ]; features = { - "alloc" = [ "icu_locale_core/alloc" "zerovec/alloc" "zerotrie/alloc" ]; - "baked" = [ "zerotrie" ]; + "alloc" = [ "icu_locale_core/alloc" "serde?/alloc" "yoke/alloc" "zerofrom/alloc" "zerovec/alloc" "zerotrie?/alloc" "dep:stable_deref_trait" "dep:writeable" ]; + "baked" = [ "dep:zerotrie" "dep:writeable" ]; "deserialize_bincode_1" = [ "serde" "dep:bincode" "std" ]; "deserialize_json" = [ "serde" "dep:serde_json" ]; "deserialize_postcard_1" = [ "serde" "dep:postcard" ]; @@ -5375,9 +5302,24 @@ rec { "logging" = [ "dep:log" ]; "serde" = [ "dep:serde" "yoke/serde" ]; "std" = [ "alloc" ]; - "zerotrie" = [ "dep:zerotrie" ]; }; - resolvedDefaultFeatures = [ "baked" "zerotrie" ]; + resolvedDefaultFeatures = [ "baked" ]; + }; + "id-arena" = rec { + crateName = "id-arena"; + version = "2.3.0"; + edition = "2021"; + sha256 = "0m6rs0jcaj4mg33gkv98d71w3hridghp5c4yr928hplpkgbnfc1x"; + libName = "id_arena"; + authors = [ + "Nick Fitzgerald " + "Aleksey Kladov " + ]; + features = { + "default" = [ "std" ]; + "rayon" = [ "dep:rayon" ]; + }; + resolvedDefaultFeatures = [ "default" "std" ]; }; "ident_case" = rec { crateName = "ident_case"; @@ -5446,9 +5388,9 @@ rec { }; "ignore" = rec { crateName = "ignore"; - version = "0.4.24"; + version = "0.4.25"; edition = "2024"; - sha256 = "00q41xq3wri74kpjmxb60mpkpj81n4pfa0wdqby2lhv4jipnwxw1"; + sha256 = "0jlv2s4fxqj9fsz6y015j5vbz6i475hj80j9q3sy05d0cniq5myk"; authors = [ "Andrew Gallant " ]; @@ -5492,39 +5434,11 @@ rec { features = { }; }; - "indexmap 1.9.3" = rec { - crateName = "indexmap"; - version = "1.9.3"; - edition = "2021"; - sha256 = "16dxmy7yvk51wvnih3a3im6fp5lmx0wx76i03n06wyak6cwhw1xx"; - dependencies = [ - { - name = "hashbrown"; - packageId = "hashbrown 0.12.3"; - usesDefaultFeatures = false; - features = [ "raw" ]; - } - ]; - buildDependencies = [ - { - name = "autocfg"; - packageId = "autocfg"; - } - ]; - features = { - "arbitrary" = [ "dep:arbitrary" ]; - "quickcheck" = [ "dep:quickcheck" ]; - "rayon" = [ "dep:rayon" ]; - "rustc-rayon" = [ "dep:rustc-rayon" ]; - "serde" = [ "dep:serde" ]; - "serde-1" = [ "serde" ]; - }; - }; - "indexmap 2.11.4" = rec { + "indexmap" = rec { crateName = "indexmap"; - version = "2.11.4"; + version = "2.13.0"; edition = "2021"; - sha256 = "1rc8bgcjzfcskz1zipjjm7s3m1jskzhnhr9jxmsafhdk1xv863sb"; + sha256 = "05qh5c4h2hrnyypphxpwflk45syqbzvqsvvyxg43mp576w2ff53p"; dependencies = [ { name = "equivalent"; @@ -5533,7 +5447,7 @@ rec { } { name = "hashbrown"; - packageId = "hashbrown 0.16.0"; + packageId = "hashbrown 0.16.1"; usesDefaultFeatures = false; } { @@ -5571,9 +5485,9 @@ rec { }; "indicatif" = rec { crateName = "indicatif"; - version = "0.18.0"; + version = "0.18.4"; edition = "2021"; - sha256 = "1kg1wi3x9x15f22q99spfzcg5fzlmhcc5i6aqjxyssyh8vcld9kh"; + sha256 = "1sz9p1a7i0z666psqzjdpi8xa11icmnpfd4q4dyxm4ihh0ihyir5"; dependencies = [ { name = "console"; @@ -5587,7 +5501,7 @@ rec { } { name = "unicode-width"; - packageId = "unicode-width 0.2.2"; + packageId = "unicode-width"; optional = true; } { @@ -5602,21 +5516,46 @@ rec { { name = "web-time"; packageId = "web-time"; + optional = true; target = { target, features }: ("wasm32" == target."arch" or null); } ]; features = { - "default" = [ "unicode-width" "console/unicode-width" ]; + "default" = [ "unicode-width" "wasmbind" ]; "futures" = [ "dep:futures-core" ]; - "improved_unicode" = [ "unicode-segmentation" "unicode-width" "console/unicode-width" ]; + "improved_unicode" = [ "unicode-segmentation" "unicode-width" ]; "in_memory" = [ "vt100" ]; "rayon" = [ "dep:rayon" ]; "tokio" = [ "dep:tokio" ]; "unicode-segmentation" = [ "dep:unicode-segmentation" ]; - "unicode-width" = [ "dep:unicode-width" ]; + "unicode-width" = [ "dep:unicode-width" "console/unicode-width" ]; "vt100" = [ "dep:vt100" ]; + "wasmbind" = [ "dep:web-time" ]; }; - resolvedDefaultFeatures = [ "default" "in_memory" "unicode-width" "vt100" ]; + resolvedDefaultFeatures = [ "default" "in_memory" "unicode-width" "vt100" "wasmbind" ]; + }; + "indoc" = rec { + crateName = "indoc"; + version = "2.0.7"; + edition = "2021"; + sha256 = "01np60qdq6lvgh8ww2caajn9j4dibx9n58rvzf7cya1jz69mrkvr"; + procMacro = true; + authors = [ + "David Tolnay " + ]; + buildDependencies = [ + { + name = "rustversion"; + packageId = "rustversion"; + } + ]; + devDependencies = [ + { + name = "rustversion"; + packageId = "rustversion"; + } + ]; + }; "inout" = rec { crateName = "inout"; @@ -5639,27 +5578,29 @@ rec { }; "ipnet" = rec { crateName = "ipnet"; - version = "2.11.0"; + version = "2.12.0"; edition = "2018"; - sha256 = "0c5i9sfi2asai28m8xp48k5gvwkqrg5ffpi767py6mzsrswv17s6"; + sha256 = "1qpq2y0asyv0jppw7zww9y96fpnpinwap8a0phhqqgyy3znnz3yr"; authors = [ "Kris Price " ]; features = { "default" = [ "std" ]; - "heapless" = [ "dep:heapless" ]; - "json" = [ "serde" "schemars" ]; - "schemars" = [ "dep:schemars" ]; - "ser_as_str" = [ "heapless" ]; + "heapless" = [ "dep:heapless" "serde" ]; + "json" = [ "schemars08" "serde" ]; + "schemars" = [ "schemars08" ]; + "schemars08" = [ "dep:schemars08" ]; + "schemars1" = [ "dep:schemars1" ]; + "ser_as_str" = [ "dep:heapless" ]; "serde" = [ "dep:serde" ]; }; resolvedDefaultFeatures = [ "default" "std" ]; }; "iri-string" = rec { crateName = "iri-string"; - version = "0.7.8"; + version = "0.7.10"; edition = "2021"; - sha256 = "1cl0wfq97wq4s1p4dl0ix5cfgsc5fn7l22ljgw9ab9x1qglypifv"; + sha256 = "06kk3a5jz576p7vrpf7zz9jv3lrgcyp7pczcblcxdnryg3q3h4y9"; libName = "iri_string"; authors = [ "YOSHIOKA Takuma " @@ -5690,9 +5631,9 @@ rec { }; "is_terminal_polyfill" = rec { crateName = "is_terminal_polyfill"; - version = "1.70.1"; + version = "1.70.2"; edition = "2021"; - sha256 = "1kwfgglh91z33kl0w5i338mfpa3zs0hidq5j4ny4rmjwrikchhvr"; + sha256 = "15anlc47sbz0jfs9q8fhwf0h3vs2w4imc030shdnq54sny5i7jx6"; features = { }; resolvedDefaultFeatures = [ "default" ]; @@ -5740,9 +5681,9 @@ rec { }; "itoa" = rec { crateName = "itoa"; - version = "1.0.15"; - edition = "2018"; - sha256 = "0b4fj9kz54dr3wam0vprjwgygvycyw8r0qwg7vp19ly8b2w16psa"; + version = "1.0.17"; + edition = "2021"; + sha256 = "1lh93xydrdn1g9x547bd05g0d3hra7pd1k4jfd2z1pl1h5hwdv4j"; authors = [ "David Tolnay " ]; @@ -5774,12 +5715,239 @@ rec { } ]; + }; + "jiff" = rec { + crateName = "jiff"; + version = "0.2.23"; + edition = "2021"; + sha256 = "0nc37n7jvgrzxdkcgc2hsfdf70lfagigjalh4igjrm5njvf4cd8s"; + authors = [ + "Andrew Gallant " + ]; + dependencies = [ + { + name = "jiff-static"; + packageId = "jiff-static"; + optional = true; + } + { + name = "jiff-static"; + packageId = "jiff-static"; + target = { target, features }: false; + } + { + name = "jiff-tzdb-platform"; + packageId = "jiff-tzdb-platform"; + optional = true; + target = { target, features }: ((target."windows" or false) || (builtins.elem "wasm" target."family")); + } + { + name = "log"; + packageId = "log"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "portable-atomic"; + packageId = "portable-atomic"; + usesDefaultFeatures = false; + target = { target, features }: (!("ptr" == target."has_atomic" or null)); + } + { + name = "portable-atomic-util"; + packageId = "portable-atomic-util"; + usesDefaultFeatures = false; + target = { target, features }: (!("ptr" == target."has_atomic" or null)); + } + { + name = "serde_core"; + packageId = "serde_core"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "windows-sys"; + packageId = "windows-sys 0.61.2"; + optional = true; + usesDefaultFeatures = false; + target = { target, features }: (target."windows" or false); + features = [ "Win32_Foundation" "Win32_System_Time" ]; + } + ]; + devDependencies = [ + { + name = "log"; + packageId = "log"; + } + ]; + features = { + "alloc" = [ "serde_core?/alloc" "portable-atomic-util/alloc" ]; + "default" = [ "std" "tz-system" "tz-fat" "tzdb-bundle-platform" "tzdb-zoneinfo" "tzdb-concatenated" "perf-inline" ]; + "js" = [ "dep:wasm-bindgen" "dep:js-sys" ]; + "logging" = [ "dep:log" ]; + "serde" = [ "dep:serde_core" ]; + "static" = [ "static-tz" "jiff-static?/tzdb" ]; + "static-tz" = [ "dep:jiff-static" ]; + "std" = [ "alloc" "log?/std" "serde_core?/std" ]; + "tz-fat" = [ "jiff-static?/tz-fat" ]; + "tz-system" = [ "std" "dep:windows-sys" ]; + "tzdb-bundle-always" = [ "dep:jiff-tzdb" "alloc" ]; + "tzdb-bundle-platform" = [ "dep:jiff-tzdb-platform" "alloc" ]; + "tzdb-concatenated" = [ "std" ]; + "tzdb-zoneinfo" = [ "std" ]; + }; + resolvedDefaultFeatures = [ "alloc" "default" "perf-inline" "serde" "std" "tz-fat" "tz-system" "tzdb-bundle-platform" "tzdb-concatenated" "tzdb-zoneinfo" ]; + }; + "jiff-static" = rec { + crateName = "jiff-static"; + version = "0.2.23"; + edition = "2021"; + sha256 = "192ss3cnixvg79cpa76clwkhn4mmz10vnwsbf7yjw8i484s8p31a"; + procMacro = true; + libName = "jiff_static"; + authors = [ + "Andrew Gallant " + ]; + dependencies = [ + { + name = "proc-macro2"; + packageId = "proc-macro2"; + } + { + name = "quote"; + packageId = "quote"; + } + { + name = "syn"; + packageId = "syn 2.0.117"; + } + ]; + features = { + "tzdb" = [ "dep:jiff-tzdb" ]; + }; + resolvedDefaultFeatures = [ "default" "tz-fat" ]; + }; + "jiff-tzdb" = rec { + crateName = "jiff-tzdb"; + version = "0.1.6"; + edition = "2021"; + sha256 = "0xihzlnnyk0xnrzpq4xcyjdcmy8xc3ychzb9ayjkh4vgha2fy069"; + libName = "jiff_tzdb"; + libPath = "lib.rs"; + authors = [ + "Andrew Gallant " + ]; + + }; + "jiff-tzdb-platform" = rec { + crateName = "jiff-tzdb-platform"; + version = "0.1.3"; + edition = "2021"; + sha256 = "1s1ja692wyhbv7f60mc0x90h7kn1pv65xkqi2y4imarbmilmlnl7"; + libName = "jiff_tzdb_platform"; + libPath = "lib.rs"; + authors = [ + "Andrew Gallant " + ]; + dependencies = [ + { + name = "jiff-tzdb"; + packageId = "jiff-tzdb"; + } + ]; + + }; + "jni" = rec { + crateName = "jni"; + version = "0.21.1"; + edition = "2018"; + sha256 = "15wczfkr2r45slsljby12ymf2hij8wi5b104ghck9byjnwmsm1qs"; + authors = [ + "Josh Chase " + ]; + dependencies = [ + { + name = "cesu8"; + packageId = "cesu8"; + } + { + name = "cfg-if"; + packageId = "cfg-if"; + } + { + name = "combine"; + packageId = "combine"; + } + { + name = "jni-sys"; + packageId = "jni-sys"; + } + { + name = "log"; + packageId = "log"; + } + { + name = "thiserror"; + packageId = "thiserror 1.0.69"; + } + { + name = "windows-sys"; + packageId = "windows-sys 0.45.0"; + target = { target, features }: (target."windows" or false); + features = [ "Win32_Globalization" ]; + } + ]; + buildDependencies = [ + { + name = "walkdir"; + packageId = "walkdir"; + } + ]; + features = { + "invocation" = [ "java-locator" "libloading" ]; + "java-locator" = [ "dep:java-locator" ]; + "libloading" = [ "dep:libloading" ]; + }; + }; + "jni-sys" = rec { + crateName = "jni-sys"; + version = "0.3.0"; + edition = "2015"; + sha256 = "0c01zb9ygvwg9wdx2fii2d39myzprnpqqhy7yizxvjqp5p04pbwf"; + libName = "jni_sys"; + authors = [ + "Steven Fackler " + ]; + + }; + "jobserver" = rec { + crateName = "jobserver"; + version = "0.1.34"; + edition = "2021"; + sha256 = "0cwx0fllqzdycqn4d6nb277qx5qwnmjdxdl0lxkkwssx77j3vyws"; + authors = [ + "Alex Crichton " + ]; + dependencies = [ + { + name = "getrandom"; + packageId = "getrandom 0.3.4"; + target = { target, features }: (target."windows" or false); + features = [ "std" ]; + } + { + name = "libc"; + packageId = "libc"; + target = { target, features }: (target."unix" or false); + } + ]; + }; "js-sys" = rec { crateName = "js-sys"; - version = "0.3.81"; + version = "0.3.91"; edition = "2021"; - sha256 = "01ckbf16iwh7qj92fax9zh8vf2y9sk60cli6999cn7a1jxx96j7c"; + sha256 = "171rzgq33wc1nxkgnvhlqqwwnrifs13mg3jjpjj5nf1z0yvib5xl"; libName = "js_sys"; authors = [ "The wasm-bindgen Developers" @@ -5797,10 +5965,10 @@ rec { } ]; features = { - "default" = [ "std" ]; + "default" = [ "std" "unsafe-eval" ]; "std" = [ "wasm-bindgen/std" ]; }; - resolvedDefaultFeatures = [ "default" "std" ]; + resolvedDefaultFeatures = [ "default" "std" "unsafe-eval" ]; }; "json-patch" = rec { crateName = "json-patch"; @@ -5846,9 +6014,9 @@ rec { }; "jsonpath-rust" = rec { crateName = "jsonpath-rust"; - version = "0.7.5"; + version = "1.0.4"; edition = "2021"; - sha256 = "12qjqd6rnr1ywky7k38dhbhgj3f6h6iqrac2kz8d53wziwsaw00c"; + sha256 = "1ymdpqawc3nxrlr6izwpw22h5msa16wqjbkqldijhrxvqhh76fk3"; libName = "jsonpath_rust"; authors = [ "BorisZhguchev " @@ -5872,7 +6040,7 @@ rec { } { name = "thiserror"; - packageId = "thiserror 2.0.17"; + packageId = "thiserror 2.0.18"; } ]; @@ -5915,10 +6083,10 @@ rec { }; "k8s-openapi" = rec { crateName = "k8s-openapi"; - version = "0.24.0"; + version = "0.27.1"; edition = "2021"; - links = "k8s-openapi-0.24.0"; - sha256 = "1m8ahw59g44kp9p4yd4ar0px15m2nyvhc5krbvqvw2ag6a8bjx9c"; + links = "k8s-openapi-0.27.1"; + sha256 = "0pldsxbxd4ckq94p8rkck4s862w33gfns6rclxr5imcx47sjdcsi"; libName = "k8s_openapi"; authors = [ "Arnav Singh " @@ -5931,8 +6099,8 @@ rec { features = [ "alloc" ]; } { - name = "chrono"; - packageId = "chrono"; + name = "jiff"; + packageId = "jiff"; usesDefaultFeatures = false; features = [ "alloc" "serde" ]; } @@ -5947,11 +6115,6 @@ rec { packageId = "serde"; usesDefaultFeatures = false; } - { - name = "serde-value"; - packageId = "serde-value"; - usesDefaultFeatures = false; - } { name = "serde_json"; packageId = "serde_json"; @@ -5960,21 +6123,22 @@ rec { } ]; features = { - "earliest" = [ "v1_28" ]; - "latest" = [ "v1_32" ]; + "default" = [ "std" ]; + "earliest" = [ "v1_31" ]; + "latest" = [ "v1_35" ]; "schemars" = [ "dep:schemars" ]; }; - resolvedDefaultFeatures = [ "schemars" "v1_32" ]; + resolvedDefaultFeatures = [ "schemars" "v1_35" ]; }; "k8s-version" = rec { crateName = "k8s-version"; - version = "0.1.2"; + version = "0.1.3"; edition = "2024"; workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; - rev = "5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1"; - sha256 = "0li9smdrz7danqz17lfkl0j9zl2i84csgc7d01lxs5qi8jcs9fzw"; + rev = "a16cafb151202948e79925a58662b14b8b004cd7"; + sha256 = "01krcfa4jfhrvl2skgmq35a9fx9zrjm82ymmplr6fsp354fqdzdq"; }; libName = "k8s_version"; authors = [ @@ -5997,14 +6161,20 @@ rec { ]; features = { "darling" = [ "dep:darling" ]; + "serde" = [ "dep:serde" ]; }; resolvedDefaultFeatures = [ "darling" ]; }; "kube" = rec { crateName = "kube"; - version = "0.99.0"; - edition = "2021"; - sha256 = "0vnaqmxk40i2jgwxqsk8x75rn1j37p93gv3zx6mlhssk200b4kls"; + version = "3.0.1"; + edition = "2024"; + workspace_member = null; + src = pkgs.fetchgit { + url = "https://github.com/kube-rs/kube-rs"; + rev = "fe69cc486ff8e62a7da61d64ec3ebbd9e64c43b5"; + sha256 = "1irm4g79crlxjm3iqrgvx0f6wxdcj394ky84q89pk9i36y2mlw3n"; + }; authors = [ "clux " "Natalie Klestrup Röijezon " @@ -6071,13 +6241,18 @@ rec { "webpki-roots" = [ "kube-client/webpki-roots" "client" ]; "ws" = [ "kube-client/ws" "kube-core/ws" ]; }; - resolvedDefaultFeatures = [ "client" "config" "derive" "http-proxy" "jsonpatch" "kube-client" "kube-derive" "kube-runtime" "ring" "runtime" "rustls-tls" "socks5" "ws" ]; + resolvedDefaultFeatures = [ "admission" "client" "config" "derive" "jsonpatch" "kube-client" "kube-derive" "kube-runtime" "ring" "runtime" "rustls-tls" "ws" ]; }; "kube-client" = rec { crateName = "kube-client"; - version = "0.99.0"; - edition = "2021"; - sha256 = "1wfciml6xcylhlwn72dbiq8vc57cs0a9dzn2bb8j1ps242ayvhkz"; + version = "3.0.1"; + edition = "2024"; + workspace_member = null; + src = pkgs.fetchgit { + url = "https://github.com/kube-rs/kube-rs"; + rev = "fe69cc486ff8e62a7da61d64ec3ebbd9e64c43b5"; + sha256 = "1irm4g79crlxjm3iqrgvx0f6wxdcj394ky84q89pk9i36y2mlw3n"; + }; libName = "kube_client"; authors = [ "clux " @@ -6095,12 +6270,6 @@ rec { packageId = "bytes"; optional = true; } - { - name = "chrono"; - packageId = "chrono"; - optional = true; - usesDefaultFeatures = false; - } { name = "either"; packageId = "either"; @@ -6113,11 +6282,6 @@ rec { usesDefaultFeatures = false; features = [ "std" ]; } - { - name = "home"; - packageId = "home"; - optional = true; - } { name = "http"; packageId = "http"; @@ -6138,12 +6302,6 @@ rec { optional = true; features = [ "client" "http1" ]; } - { - name = "hyper-http-proxy"; - packageId = "hyper-http-proxy"; - optional = true; - usesDefaultFeatures = false; - } { name = "hyper-rustls"; packageId = "hyper-rustls"; @@ -6151,12 +6309,6 @@ rec { usesDefaultFeatures = false; features = [ "http1" "logging" "native-tokio" "tls12" ]; } - { - name = "hyper-socks2"; - packageId = "hyper-socks2"; - optional = true; - usesDefaultFeatures = false; - } { name = "hyper-timeout"; packageId = "hyper-timeout"; @@ -6166,7 +6318,14 @@ rec { name = "hyper-util"; packageId = "hyper-util"; optional = true; - features = [ "client" "client-legacy" "http1" "tokio" ]; + features = [ "client" "client-legacy" "http1" "tokio" "tracing" ]; + } + { + name = "jiff"; + packageId = "jiff"; + optional = true; + usesDefaultFeatures = false; + features = [ "std" "serde" ]; } { name = "jsonpath-rust"; @@ -6213,7 +6372,7 @@ rec { } { name = "thiserror"; - packageId = "thiserror 2.0.17"; + packageId = "thiserror 2.0.18"; } { name = "tokio"; @@ -6234,15 +6393,15 @@ rec { } { name = "tower"; - packageId = "tower 0.5.2"; + packageId = "tower"; optional = true; - features = [ "buffer" "filter" "util" ]; + features = [ "buffer" "filter" "util" "retry" ]; } { name = "tower-http"; - packageId = "tower-http 0.6.6"; + packageId = "tower-http"; optional = true; - features = [ "auth" "map-response-body" "trace" ]; + features = [ "auth" "map-response-body" "trace" "util" ]; } { name = "tracing"; @@ -6281,25 +6440,22 @@ rec { "aws-lc-rs" = [ "hyper-rustls?/aws-lc-rs" ]; "base64" = [ "dep:base64" ]; "bytes" = [ "dep:bytes" ]; - "chrono" = [ "dep:chrono" ]; - "client" = [ "config" "__non_core" "hyper" "hyper-util" "http-body" "http-body-util" "tower" "tower-http" "hyper-timeout" "chrono" "jsonpath-rust" "bytes" "futures" "tokio" "tokio-util" "either" ]; - "config" = [ "__non_core" "pem" "home" ]; + "client" = [ "config" "__non_core" "hyper" "hyper-util" "http-body" "http-body-util" "tower" "tower-http" "hyper-timeout" "jiff" "jsonpath-rust" "bytes" "futures" "tokio" "tokio-util" "either" ]; + "config" = [ "__non_core" "pem" ]; "default" = [ "client" "ring" ]; "either" = [ "dep:either" ]; "form_urlencoded" = [ "dep:form_urlencoded" ]; "futures" = [ "dep:futures" ]; "gzip" = [ "client" "tower-http/decompression-gzip" ]; - "home" = [ "dep:home" ]; "http-body" = [ "dep:http-body" ]; "http-body-util" = [ "dep:http-body-util" ]; - "http-proxy" = [ "hyper-http-proxy" ]; + "http-proxy" = [ "hyper-util/client-proxy" ]; "hyper" = [ "dep:hyper" ]; - "hyper-http-proxy" = [ "dep:hyper-http-proxy" ]; "hyper-openssl" = [ "dep:hyper-openssl" ]; "hyper-rustls" = [ "dep:hyper-rustls" ]; - "hyper-socks2" = [ "dep:hyper-socks2" ]; "hyper-timeout" = [ "dep:hyper-timeout" ]; "hyper-util" = [ "dep:hyper-util" ]; + "jiff" = [ "dep:jiff" ]; "jsonpatch" = [ "kube-core/jsonpatch" ]; "jsonpath-rust" = [ "dep:jsonpath-rust" ]; "kubelet-debug" = [ "ws" "kube-core/kubelet-debug" ]; @@ -6310,9 +6466,9 @@ rec { "pem" = [ "dep:pem" ]; "ring" = [ "hyper-rustls?/ring" ]; "rustls" = [ "dep:rustls" ]; - "rustls-tls" = [ "rustls" "hyper-rustls" "hyper-http-proxy?/rustls-tls-native-roots" ]; + "rustls-tls" = [ "rustls" "hyper-rustls" ]; "serde_yaml" = [ "dep:serde_yaml" ]; - "socks5" = [ "hyper-socks2" ]; + "socks5" = [ "hyper-util/client-proxy" ]; "tame-oauth" = [ "dep:tame-oauth" ]; "tokio" = [ "dep:tokio" ]; "tokio-tungstenite" = [ "dep:tokio-tungstenite" ]; @@ -6323,13 +6479,18 @@ rec { "webpki-roots" = [ "hyper-rustls/webpki-roots" ]; "ws" = [ "client" "tokio-tungstenite" "kube-core/ws" "tokio/macros" ]; }; - resolvedDefaultFeatures = [ "__non_core" "base64" "bytes" "chrono" "client" "config" "either" "futures" "home" "http-body" "http-body-util" "http-proxy" "hyper" "hyper-http-proxy" "hyper-rustls" "hyper-socks2" "hyper-timeout" "hyper-util" "jsonpatch" "jsonpath-rust" "pem" "ring" "rustls" "rustls-tls" "serde_yaml" "socks5" "tokio" "tokio-tungstenite" "tokio-util" "tower" "tower-http" "tracing" "ws" ]; + resolvedDefaultFeatures = [ "__non_core" "base64" "bytes" "client" "config" "either" "futures" "http-body" "http-body-util" "hyper" "hyper-rustls" "hyper-timeout" "hyper-util" "jiff" "jsonpatch" "jsonpath-rust" "pem" "ring" "rustls" "rustls-tls" "serde_yaml" "tokio" "tokio-tungstenite" "tokio-util" "tower" "tower-http" "tracing" "ws" ]; }; "kube-core" = rec { crateName = "kube-core"; - version = "0.99.0"; - edition = "2021"; - sha256 = "0xf60y07xkqqqqyl7rvk2r4amcvch61r2j49ssk0rrsqvf9hf3gz"; + version = "3.0.1"; + edition = "2024"; + workspace_member = null; + src = pkgs.fetchgit { + url = "https://github.com/kube-rs/kube-rs"; + rev = "fe69cc486ff8e62a7da61d64ec3ebbd9e64c43b5"; + sha256 = "1irm4g79crlxjm3iqrgvx0f6wxdcj394ky84q89pk9i36y2mlw3n"; + }; libName = "kube_core"; authors = [ "clux " @@ -6338,10 +6499,9 @@ rec { ]; dependencies = [ { - name = "chrono"; - packageId = "chrono"; - usesDefaultFeatures = false; - features = [ "now" ]; + name = "derive_more"; + packageId = "derive_more"; + features = [ "from" ]; } { name = "form_urlencoded"; @@ -6351,6 +6511,12 @@ rec { name = "http"; packageId = "http"; } + { + name = "jiff"; + packageId = "jiff"; + usesDefaultFeatures = false; + features = [ "std" ]; + } { name = "json-patch"; packageId = "json-patch"; @@ -6381,7 +6547,7 @@ rec { } { name = "thiserror"; - packageId = "thiserror 2.0.17"; + packageId = "thiserror 2.0.18"; } ]; devDependencies = [ @@ -6400,13 +6566,18 @@ rec { "schema" = [ "schemars" ]; "schemars" = [ "dep:schemars" ]; }; - resolvedDefaultFeatures = [ "json-patch" "jsonpatch" "schema" "schemars" "ws" ]; + resolvedDefaultFeatures = [ "admission" "json-patch" "jsonpatch" "schema" "schemars" "ws" ]; }; "kube-derive" = rec { crateName = "kube-derive"; - version = "0.99.0"; - edition = "2021"; - sha256 = "1jclsj6ah0ijhzpd43ff0ipxs7i2r985ivm6r3m5zjppr66zaqn5"; + version = "3.0.1"; + edition = "2024"; + workspace_member = null; + src = pkgs.fetchgit { + url = "https://github.com/kube-rs/kube-rs"; + rev = "fe69cc486ff8e62a7da61d64ec3ebbd9e64c43b5"; + sha256 = "1irm4g79crlxjm3iqrgvx0f6wxdcj394ky84q89pk9i36y2mlw3n"; + }; procMacro = true; libName = "kube_derive"; authors = [ @@ -6438,7 +6609,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.106"; + packageId = "syn 2.0.117"; features = [ "extra-traits" ]; } ]; @@ -6453,9 +6624,14 @@ rec { }; "kube-runtime" = rec { crateName = "kube-runtime"; - version = "0.99.0"; - edition = "2021"; - sha256 = "1p7z4vl9l1hbqqqjx7qmkyq3rwhxp3nqa3if0qrqdgdlp7x4rww8"; + version = "3.0.1"; + edition = "2024"; + workspace_member = null; + src = pkgs.fetchgit { + url = "https://github.com/kube-rs/kube-rs"; + rev = "fe69cc486ff8e62a7da61d64ec3ebbd9e64c43b5"; + sha256 = "1irm4g79crlxjm3iqrgvx0f6wxdcj394ky84q89pk9i36y2mlw3n"; + }; libName = "kube_runtime"; authors = [ "clux " @@ -6475,10 +6651,6 @@ rec { name = "async-stream"; packageId = "async-stream"; } - { - name = "async-trait"; - packageId = "async-trait"; - } { name = "backon"; packageId = "backon"; @@ -6497,7 +6669,7 @@ rec { } { name = "hashbrown"; - packageId = "hashbrown 0.15.5"; + packageId = "hashbrown 0.16.1"; } { name = "hostname"; @@ -6536,7 +6708,7 @@ rec { } { name = "thiserror"; - packageId = "thiserror 2.0.17"; + packageId = "thiserror 2.0.18"; } { name = "tokio"; @@ -6587,11 +6759,23 @@ rec { "spin_no_std" = [ "spin" ]; }; }; - "libc" = rec { - crateName = "libc"; - version = "0.2.177"; + "leb128fmt" = rec { + crateName = "leb128fmt"; + version = "0.1.0"; edition = "2021"; - sha256 = "0xjrn69cywaii1iq2lib201bhlvan7czmrm604h5qcm28yps4x18"; + sha256 = "1chxm1484a0bly6anh6bd7a99sn355ymlagnwj3yajafnpldkv89"; + authors = [ + "Bryant Luk " + ]; + features = { + "default" = [ "std" ]; + }; + }; + "libc" = rec { + crateName = "libc"; + version = "0.2.183"; + edition = "2021"; + sha256 = "17c9gyia7rrzf9gsssvk3vq9ca2jp6rh32fsw6ciarpn5djlddmm"; authors = [ "The Rust Project Developers" ]; @@ -6601,7 +6785,7 @@ rec { "rustc-std-workspace-core" = [ "dep:rustc-std-workspace-core" ]; "use_std" = [ "std" ]; }; - resolvedDefaultFeatures = [ "default" "extra_traits" "std" ]; + resolvedDefaultFeatures = [ "default" "std" ]; }; "libloading" = rec { crateName = "libloading"; @@ -6619,7 +6803,7 @@ rec { } { name = "windows-link"; - packageId = "windows-link 0.2.1"; + packageId = "windows-link"; target = { target, features }: (target."windows" or false); } ]; @@ -6627,11 +6811,14 @@ rec { }; "libm" = rec { crateName = "libm"; - version = "0.2.15"; + version = "0.2.16"; edition = "2021"; - sha256 = "1plpzf0p829viazdj57yw5dhmlr8ywf3apayxc2f2bq5a6mvryzr"; + sha256 = "10brh0a3qjmbzkr5mf5xqi887nhs5y9layvnki89ykz9xb1wxlmn"; authors = [ - "Jorge Aparicio " + "Alex Crichton " + "Amanieu d'Antras " + "Jorge Aparicio " + "Trevor Gross " ]; features = { "default" = [ "arch" ]; @@ -6641,40 +6828,39 @@ rec { }; "libredox" = rec { crateName = "libredox"; - version = "0.1.10"; + version = "0.1.14"; edition = "2021"; - sha256 = "1jswil4ai90s4rh91fg8580x8nikni1zl3wnch4h01nvidqpwvs1"; + sha256 = "02p3pxlqf54znf1jhiyyjs0i4caf8ckrd5l8ygs4i6ba3nfy6i0p"; authors = [ "4lDO2 <4lDO2@protonmail.com>" ]; dependencies = [ - { - name = "bitflags"; - packageId = "bitflags"; - } { name = "libc"; packageId = "libc"; - } - { - name = "redox_syscall"; - packageId = "redox_syscall"; optional = true; } ]; features = { - "default" = [ "call" "std" "redox_syscall" ]; + "base" = [ "libc" ]; + "bitflags" = [ "dep:bitflags" ]; + "call" = [ "base" ]; + "default" = [ "base" "call" "std" "redox_syscall" "protocol" ]; "ioslice" = [ "dep:ioslice" ]; + "libc" = [ "dep:libc" ]; "mkns" = [ "ioslice" ]; + "plain" = [ "dep:plain" ]; + "protocol" = [ "plain" "bitflags" "redox_syscall" ]; "redox_syscall" = [ "dep:redox_syscall" ]; + "std" = [ "base" ]; }; - resolvedDefaultFeatures = [ "call" "default" "redox_syscall" "std" ]; + resolvedDefaultFeatures = [ "base" "call" "libc" "std" ]; }; - "linux-raw-sys 0.11.0" = rec { + "linux-raw-sys" = rec { crateName = "linux-raw-sys"; - version = "0.11.0"; + version = "0.12.1"; edition = "2021"; - sha256 = "0fghx0nn8nvbz5yzgizfcwd6ap2pislp68j8c1bwyr6sacxkq7fz"; + sha256 = "0lwasljrqxjjfk9l2j8lyib1babh2qjlnhylqzl01nihw14nk9ij"; libName = "linux_raw_sys"; authors = [ "Dan Gohman " @@ -6686,51 +6872,32 @@ rec { }; resolvedDefaultFeatures = [ "auxvec" "elf" "errno" "general" "ioctl" "no_std" ]; }; - "linux-raw-sys 0.4.15" = rec { - crateName = "linux-raw-sys"; - version = "0.4.15"; - edition = "2021"; - sha256 = "1aq7r2g7786hyxhv40spzf2nhag5xbw2axxc1k8z5k1dsgdm4v6j"; - libName = "linux_raw_sys"; - authors = [ - "Dan Gohman " - ]; - features = { - "compiler_builtins" = [ "dep:compiler_builtins" ]; - "core" = [ "dep:core" ]; - "default" = [ "std" "general" "errno" ]; - "rustc-dep-of-std" = [ "core" "compiler_builtins" "no_std" ]; - }; - resolvedDefaultFeatures = [ "elf" "errno" "general" "ioctl" "no_std" ]; - }; "litemap" = rec { crateName = "litemap"; - version = "0.8.0"; + version = "0.8.1"; edition = "2021"; - sha256 = "0mlrlskwwhirxk3wsz9psh6nxcy491n0dh8zl02qgj0jzpssw7i4"; + sha256 = "0xsy8pfp9s802rsj1bq2ys2kbk1g36w5dr3gkfip7gphb5x60wv3"; authors = [ "The ICU4X Project Developers" ]; features = { "databake" = [ "dep:databake" ]; "default" = [ "alloc" ]; - "serde" = [ "dep:serde" "alloc" ]; + "serde" = [ "dep:serde_core" "alloc" ]; "testing" = [ "alloc" ]; "yoke" = [ "dep:yoke" ]; }; - resolvedDefaultFeatures = [ "alloc" ]; }; "litrs" = rec { crateName = "litrs"; - version = "0.4.2"; - edition = "2018"; - sha256 = "1v8bxsrkm0w2k9nmbp8hsspy9i1lawajywqdw4hx87rjzqv41rgm"; + version = "1.0.0"; + edition = "2021"; + sha256 = "14p0kzzkavnngvybl88nvfwv031cc2qx4vaxpfwsiifm8grdglqi"; authors = [ "Lukas Kalbertodt " ]; features = { "check_suffix" = [ "unicode-xid" ]; - "default" = [ "proc-macro2" ]; "proc-macro2" = [ "dep:proc-macro2" ]; "unicode-xid" = [ "dep:unicode-xid" ]; }; @@ -6759,9 +6926,9 @@ rec { }; "log" = rec { crateName = "log"; - version = "0.4.28"; + version = "0.4.29"; edition = "2021"; - sha256 = "0cklpzrpxafbaq1nyxarhnmcw9z3xcjrad3ch55mmr58xw2ha21l"; + sha256 = "15q8j9c8g5zpkcw0hnd6cf2z7fxqnvsjh3rw5mv5q10r83i34l2y"; authors = [ "The Rust Project Developers" ]; @@ -6773,7 +6940,8 @@ rec { "kv_unstable_serde" = [ "kv_serde" "kv_unstable_std" ]; "kv_unstable_std" = [ "kv_std" "kv_unstable" ]; "kv_unstable_sval" = [ "kv_sval" "kv_unstable" ]; - "serde" = [ "dep:serde" ]; + "serde" = [ "serde_core" ]; + "serde_core" = [ "dep:serde_core" ]; "sval" = [ "dep:sval" ]; "sval_ref" = [ "dep:sval_ref" ]; "value-bag" = [ "dep:value-bag" ]; @@ -6811,19 +6979,7 @@ rec { "unicode" = [ "regex-automata/unicode" ]; }; }; - "matchit 0.7.3" = rec { - crateName = "matchit"; - version = "0.7.3"; - edition = "2021"; - sha256 = "156bgdmmlv4crib31qhgg49nsjk88dxkdqp80ha2pk2rk6n6ax0f"; - authors = [ - "Ibraheem Ahmed " - ]; - features = { - }; - resolvedDefaultFeatures = [ "default" ]; - }; - "matchit 0.8.4" = rec { + "matchit" = rec { crateName = "matchit"; version = "0.8.4"; edition = "2021"; @@ -6837,9 +6993,9 @@ rec { }; "memchr" = rec { crateName = "memchr"; - version = "2.7.6"; + version = "2.8.0"; edition = "2021"; - sha256 = "0wy29kf6pb4fbhfksjbs05jy2f32r2f3r1ga6qkmpz31k79h0azm"; + sha256 = "0y9zzxcqxvdqg6wyag7vc3h0blhdn7hkq164bxyx2vph8zs5ijpq"; authors = [ "Andrew Gallant " "bluss" @@ -6943,9 +7099,9 @@ rec { }; "mio" = rec { crateName = "mio"; - version = "1.1.0"; + version = "1.1.1"; edition = "2021"; - sha256 = "0wr816q3jrjwiajvw807lgi540i9s6r78a5fx4ycz3nwhq03pn39"; + sha256 = "1z2phpalqbdgihrcjp8y09l3kgq6309jnhnr6h11l9s7mnqcm6x6"; authors = [ "Carl Lerche " "Thomas de Zeeuw " @@ -6986,69 +7142,6 @@ rec { }; resolvedDefaultFeatures = [ "net" "os-ext" "os-poll" ]; }; - "multer" = rec { - crateName = "multer"; - version = "3.1.0"; - edition = "2018"; - sha256 = "0jr2snfay5fjz50yvdja4vbnddlj1iriiqjym88pbj3daiv7gs43"; - authors = [ - "Rousan Ali " - ]; - dependencies = [ - { - name = "bytes"; - packageId = "bytes"; - } - { - name = "encoding_rs"; - packageId = "encoding_rs"; - } - { - name = "futures-util"; - packageId = "futures-util"; - usesDefaultFeatures = false; - } - { - name = "http"; - packageId = "http"; - } - { - name = "httparse"; - packageId = "httparse"; - } - { - name = "memchr"; - packageId = "memchr"; - } - { - name = "mime"; - packageId = "mime"; - } - { - name = "spin"; - packageId = "spin"; - usesDefaultFeatures = false; - features = [ "spin_mutex" ]; - } - ]; - buildDependencies = [ - { - name = "version_check"; - packageId = "version_check"; - } - ]; - features = { - "all" = [ "json" ]; - "json" = [ "serde" "serde_json" ]; - "log" = [ "dep:log" ]; - "serde" = [ "dep:serde" ]; - "serde_json" = [ "dep:serde_json" ]; - "tokio" = [ "dep:tokio" ]; - "tokio-io" = [ "tokio" "tokio-util" ]; - "tokio-util" = [ "dep:tokio-util" ]; - }; - resolvedDefaultFeatures = [ "default" ]; - }; "nom" = rec { crateName = "nom"; version = "7.1.3"; @@ -7105,9 +7198,9 @@ rec { }; "num-conv" = rec { crateName = "num-conv"; - version = "0.1.0"; + version = "0.2.0"; edition = "2021"; - sha256 = "1ndiyg82q73783jq18isi71a7mjh56wxrk52rlvyx0mi5z9ibmai"; + sha256 = "0l4hj7lp8zbb9am4j3p7vlcv47y9bbazinvnxx9zjhiwkibyr5yg"; libName = "num_conv"; authors = [ "Jacob Pratt " @@ -7135,80 +7228,6 @@ rec { }; resolvedDefaultFeatures = [ "std" ]; }; - "num_enum" = rec { - crateName = "num_enum"; - version = "0.7.4"; - edition = "2021"; - sha256 = "0ykvfah4ddfi2dwjcksc33j34i84kb7plycxwr6dijp69kjb8wx9"; - authors = [ - "Daniel Wagner-Hall " - "Daniel Henry-Mantilla " - "Vincent Esche " - ]; - dependencies = [ - { - name = "num_enum_derive"; - packageId = "num_enum_derive"; - usesDefaultFeatures = false; - } - { - name = "rustversion"; - packageId = "rustversion"; - } - ]; - features = { - "complex-expressions" = [ "num_enum_derive/complex-expressions" ]; - "default" = [ "std" ]; - "std" = [ "num_enum_derive/std" ]; - }; - resolvedDefaultFeatures = [ "default" "std" ]; - }; - "num_enum_derive" = rec { - crateName = "num_enum_derive"; - version = "0.7.4"; - edition = "2021"; - sha256 = "03gr5218x4rs52kx4srx3jn1c6vmx3drd506vl0axax88v47is3p"; - procMacro = true; - authors = [ - "Daniel Wagner-Hall " - "Daniel Henry-Mantilla " - "Vincent Esche " - ]; - dependencies = [ - { - name = "proc-macro-crate"; - packageId = "proc-macro-crate"; - optional = true; - } - { - name = "proc-macro2"; - packageId = "proc-macro2"; - } - { - name = "quote"; - packageId = "quote"; - } - { - name = "syn"; - packageId = "syn 2.0.106"; - features = [ "parsing" ]; - } - ]; - devDependencies = [ - { - name = "syn"; - packageId = "syn 2.0.106"; - features = [ "extra-traits" "parsing" ]; - } - ]; - features = { - "complex-expressions" = [ "syn/full" ]; - "default" = [ "std" ]; - "proc-macro-crate" = [ "dep:proc-macro-crate" ]; - "std" = [ "proc-macro-crate" ]; - }; - resolvedDefaultFeatures = [ "proc-macro-crate" "std" ]; - }; "numtoa" = rec { crateName = "numtoa"; version = "0.2.4"; @@ -7240,18 +7259,18 @@ rec { }; "once_cell_polyfill" = rec { crateName = "once_cell_polyfill"; - version = "1.70.1"; + version = "1.70.2"; edition = "2021"; - sha256 = "1bg0w99srq8h4mkl68l1mza2n2f2hvrg0n8vfa3izjr5nism32d4"; + sha256 = "1zmla628f0sk3fhjdjqzgxhalr2xrfna958s632z65bjsfv8ljrq"; features = { }; resolvedDefaultFeatures = [ "default" ]; }; "openssl-probe" = rec { crateName = "openssl-probe"; - version = "0.1.6"; + version = "0.2.1"; edition = "2021"; - sha256 = "0bl52x55laalqb707k009h8kfawliwp992rlsvkzy49n47p2fpnh"; + sha256 = "1gpwpb7smfhkscwvbri8xzbab39wcnby1jgz1s49vf1aqgsdx1vw"; libName = "openssl_probe"; authors = [ "Alex Crichton " @@ -7260,9 +7279,9 @@ rec { }; "opentelemetry" = rec { crateName = "opentelemetry"; - version = "0.28.0"; + version = "0.31.0"; edition = "2021"; - sha256 = "09k43sgaarw3zx5j434ngq1canpcjibsbxaqqa8dyp0acxxncvi3"; + sha256 = "18629xsj4rsyiby9aj511q6wcw6s9m09gx3ymw1yjcvix1mcsjxq"; dependencies = [ { name = "futures-core"; @@ -7286,7 +7305,7 @@ rec { } { name = "thiserror"; - packageId = "thiserror 2.0.17"; + packageId = "thiserror 2.0.18"; optional = true; usesDefaultFeatures = false; } @@ -7298,7 +7317,8 @@ rec { } ]; features = { - "default" = [ "trace" "metrics" "logs" "internal-logs" ]; + "default" = [ "trace" "metrics" "logs" "internal-logs" "futures" ]; + "futures" = [ "futures-core" "futures-sink" "pin-project-lite" ]; "futures-core" = [ "dep:futures-core" ]; "futures-sink" = [ "dep:futures-sink" ]; "internal-logs" = [ "tracing" ]; @@ -7306,21 +7326,22 @@ rec { "spec_unstable_logs_enabled" = [ "logs" ]; "testing" = [ "trace" ]; "thiserror" = [ "dep:thiserror" ]; - "trace" = [ "pin-project-lite" "futures-sink" "futures-core" "thiserror" ]; + "trace" = [ "futures" "thiserror" ]; "tracing" = [ "dep:tracing" ]; }; - resolvedDefaultFeatures = [ "default" "futures-core" "futures-sink" "internal-logs" "logs" "metrics" "pin-project-lite" "spec_unstable_logs_enabled" "thiserror" "trace" "tracing" ]; + resolvedDefaultFeatures = [ "default" "futures" "futures-core" "futures-sink" "internal-logs" "logs" "metrics" "pin-project-lite" "spec_unstable_logs_enabled" "thiserror" "trace" "tracing" ]; }; "opentelemetry-appender-tracing" = rec { crateName = "opentelemetry-appender-tracing"; - version = "0.28.1"; + version = "0.31.1"; edition = "2021"; - sha256 = "1h6x4pwk225yi8mxl3sqkhg5ya93z57i68267lzi2c7c7fpwf4y5"; + sha256 = "1hnwizzgfhpjfnvml638yy846py8hf2gl1n3p1igbk1srb2ilspg"; libName = "opentelemetry_appender_tracing"; dependencies = [ { name = "opentelemetry"; packageId = "opentelemetry"; + usesDefaultFeatures = false; features = [ "logs" ]; } { @@ -7342,11 +7363,17 @@ rec { } ]; devDependencies = [ + { + name = "tracing"; + packageId = "tracing"; + usesDefaultFeatures = false; + features = [ "std" ]; + } { name = "tracing-subscriber"; packageId = "tracing-subscriber"; usesDefaultFeatures = false; - features = [ "registry" "std" "env-filter" ]; + features = [ "env-filter" "registry" "std" "fmt" ]; } ]; features = { @@ -7360,9 +7387,9 @@ rec { }; "opentelemetry-http" = rec { crateName = "opentelemetry-http"; - version = "0.28.0"; + version = "0.31.0"; edition = "2021"; - sha256 = "0lv2sbsdr7b8bxnly92zzhlm1wzjbynib1xlkw9hs0qh56pkz1m8"; + sha256 = "0pc5nw1ds8v8w0nvyall39m92v8m1xl1p3vwvxk6nkhrffdd19np"; libName = "opentelemetry_http"; dependencies = [ { @@ -7382,18 +7409,12 @@ rec { { name = "opentelemetry"; packageId = "opentelemetry"; + usesDefaultFeatures = false; features = [ "trace" ]; } { name = "reqwest"; - packageId = "reqwest"; - optional = true; - usesDefaultFeatures = false; - features = [ "blocking" ]; - } - { - name = "tracing"; - packageId = "tracing"; + packageId = "reqwest 0.12.28"; optional = true; usesDefaultFeatures = false; } @@ -7401,29 +7422,21 @@ rec { features = { "default" = [ "internal-logs" ]; "hyper" = [ "dep:http-body-util" "dep:hyper" "dep:hyper-util" "dep:tokio" ]; - "internal-logs" = [ "tracing" "opentelemetry/internal-logs" ]; + "internal-logs" = [ "opentelemetry/internal-logs" ]; "reqwest" = [ "dep:reqwest" ]; - "reqwest-rustls" = [ "reqwest" "reqwest/rustls-tls-native-roots" ]; - "reqwest-rustls-webpki-roots" = [ "reqwest" "reqwest/rustls-tls-webpki-roots" ]; - "tracing" = [ "dep:tracing" ]; + "reqwest-blocking" = [ "dep:reqwest" "reqwest/blocking" ]; + "reqwest-rustls" = [ "dep:reqwest" "reqwest/rustls-tls-native-roots" ]; + "reqwest-rustls-webpki-roots" = [ "dep:reqwest" "reqwest/rustls-tls-webpki-roots" ]; }; - resolvedDefaultFeatures = [ "default" "internal-logs" "reqwest" "tracing" ]; + resolvedDefaultFeatures = [ "internal-logs" "reqwest" "reqwest-blocking" ]; }; "opentelemetry-otlp" = rec { crateName = "opentelemetry-otlp"; - version = "0.28.0"; + version = "0.31.0"; edition = "2021"; - sha256 = "148xq13ar11bvmk7pxbslrhh5pgf40bv83n6dlysigj1dm613vsv"; + sha256 = "1gv3h75z8c0p9b85mbq7f1rgsi18wip1xlfa6g82lkfa5pdnc8vs"; libName = "opentelemetry_otlp"; dependencies = [ - { - name = "async-trait"; - packageId = "async-trait"; - } - { - name = "futures-core"; - packageId = "futures-core"; - } { name = "http"; packageId = "http"; @@ -7440,6 +7453,7 @@ rec { name = "opentelemetry-http"; packageId = "opentelemetry-http"; optional = true; + usesDefaultFeatures = false; } { name = "opentelemetry-proto"; @@ -7458,13 +7472,13 @@ rec { } { name = "reqwest"; - packageId = "reqwest"; + packageId = "reqwest 0.12.28"; optional = true; usesDefaultFeatures = false; } { name = "thiserror"; - packageId = "thiserror 2.0.17"; + packageId = "thiserror 2.0.18"; usesDefaultFeatures = false; } { @@ -7488,51 +7502,67 @@ rec { } ]; devDependencies = [ + { + name = "opentelemetry_sdk"; + packageId = "opentelemetry_sdk"; + usesDefaultFeatures = false; + features = [ "trace" "testing" ]; + } { name = "tokio"; packageId = "tokio"; usesDefaultFeatures = false; features = [ "macros" "rt-multi-thread" ]; } + { + name = "tonic"; + packageId = "tonic"; + usesDefaultFeatures = false; + features = [ "router" "server" ]; + } ]; features = { "default" = [ "http-proto" "reqwest-blocking-client" "trace" "metrics" "logs" "internal-logs" ]; + "flate2" = [ "dep:flate2" ]; "grpc-tonic" = [ "tonic" "prost" "http" "tokio" "opentelemetry-proto/gen-tonic" ]; + "gzip-http" = [ "flate2" ]; "gzip-tonic" = [ "tonic/gzip" ]; "http" = [ "dep:http" ]; "http-json" = [ "serde_json" "prost" "opentelemetry-http" "opentelemetry-proto/gen-tonic-messages" "opentelemetry-proto/with-serde" "http" "trace" "metrics" ]; "http-proto" = [ "prost" "opentelemetry-http" "opentelemetry-proto/gen-tonic-messages" "http" "trace" "metrics" ]; "hyper-client" = [ "opentelemetry-http/hyper" ]; "integration-testing" = [ "tonic" "prost" "tokio/full" "trace" "logs" ]; - "internal-logs" = [ "tracing" "opentelemetry/internal-logs" ]; + "internal-logs" = [ "tracing" "opentelemetry_sdk/internal-logs" "opentelemetry-http/internal-logs" ]; "logs" = [ "opentelemetry/logs" "opentelemetry_sdk/logs" "opentelemetry-proto/logs" ]; "metrics" = [ "opentelemetry/metrics" "opentelemetry_sdk/metrics" "opentelemetry-proto/metrics" ]; "opentelemetry-http" = [ "dep:opentelemetry-http" ]; "prost" = [ "dep:prost" ]; "reqwest" = [ "dep:reqwest" ]; - "reqwest-blocking-client" = [ "reqwest/blocking" "opentelemetry-http/reqwest" ]; + "reqwest-blocking-client" = [ "reqwest/blocking" "opentelemetry-http/reqwest-blocking" ]; "reqwest-client" = [ "reqwest" "opentelemetry-http/reqwest" ]; "reqwest-rustls" = [ "reqwest" "opentelemetry-http/reqwest-rustls" ]; "reqwest-rustls-webpki-roots" = [ "reqwest" "opentelemetry-http/reqwest-rustls-webpki-roots" ]; "serde" = [ "dep:serde" ]; "serde_json" = [ "dep:serde_json" ]; "serialize" = [ "serde" "serde_json" ]; - "tls" = [ "tonic/tls" ]; - "tls-roots" = [ "tls" "tonic/tls-roots" ]; + "tls" = [ "tonic/tls-ring" ]; + "tls-roots" = [ "tls" "tonic/tls-native-roots" ]; "tls-webpki-roots" = [ "tls" "tonic/tls-webpki-roots" ]; "tokio" = [ "dep:tokio" ]; "tonic" = [ "dep:tonic" ]; "trace" = [ "opentelemetry/trace" "opentelemetry_sdk/trace" "opentelemetry-proto/trace" ]; "tracing" = [ "dep:tracing" ]; + "zstd" = [ "dep:zstd" ]; + "zstd-http" = [ "zstd" ]; "zstd-tonic" = [ "tonic/zstd" ]; }; resolvedDefaultFeatures = [ "default" "grpc-tonic" "gzip-tonic" "http" "http-proto" "internal-logs" "logs" "metrics" "opentelemetry-http" "prost" "reqwest" "reqwest-blocking-client" "tokio" "tonic" "trace" "tracing" ]; }; "opentelemetry-proto" = rec { crateName = "opentelemetry-proto"; - version = "0.28.0"; + version = "0.31.0"; edition = "2021"; - sha256 = "0vbl4si1mny87pmqxxg6wday45pcc8bvpcrf46cpwwi4606qgy2n"; + sha256 = "03xkjsjrsm7zkkx5gascqd9bg2z20wymm06l16cyxsp5dpq5s5x7"; libName = "opentelemetry_proto"; dependencies = [ { @@ -7555,43 +7585,62 @@ rec { packageId = "tonic"; optional = true; usesDefaultFeatures = false; - features = [ "codegen" "prost" ]; + features = [ "codegen" ]; + } + { + name = "tonic-prost"; + packageId = "tonic-prost"; + optional = true; + } + ]; + devDependencies = [ + { + name = "opentelemetry"; + packageId = "opentelemetry"; + usesDefaultFeatures = false; + features = [ "testing" ]; } ]; features = { "base64" = [ "dep:base64" ]; + "const-hex" = [ "dep:const-hex" ]; "default" = [ "full" ]; "full" = [ "gen-tonic" "trace" "logs" "metrics" "zpages" "with-serde" "internal-logs" ]; - "gen-tonic" = [ "gen-tonic-messages" "tonic/transport" ]; - "gen-tonic-messages" = [ "tonic" "prost" ]; - "hex" = [ "dep:hex" ]; - "internal-logs" = [ "tracing" ]; + "gen-tonic" = [ "gen-tonic-messages" "tonic/channel" ]; + "gen-tonic-messages" = [ "tonic" "tonic-prost" "prost" ]; + "internal-logs" = [ "opentelemetry/internal-logs" ]; "logs" = [ "opentelemetry/logs" "opentelemetry_sdk/logs" ]; "metrics" = [ "opentelemetry/metrics" "opentelemetry_sdk/metrics" ]; "prost" = [ "dep:prost" ]; "schemars" = [ "dep:schemars" ]; "serde" = [ "dep:serde" ]; + "serde_json" = [ "dep:serde_json" ]; "testing" = [ "opentelemetry/testing" ]; "tonic" = [ "dep:tonic" ]; + "tonic-prost" = [ "dep:tonic-prost" ]; "trace" = [ "opentelemetry/trace" "opentelemetry_sdk/trace" ]; - "tracing" = [ "dep:tracing" ]; "with-schemars" = [ "schemars" ]; - "with-serde" = [ "serde" "hex" "base64" ]; + "with-serde" = [ "serde" "const-hex" "base64" "serde_json" ]; "zpages" = [ "trace" ]; }; - resolvedDefaultFeatures = [ "gen-tonic" "gen-tonic-messages" "logs" "metrics" "prost" "tonic" "trace" ]; + resolvedDefaultFeatures = [ "gen-tonic" "gen-tonic-messages" "logs" "metrics" "prost" "tonic" "tonic-prost" "trace" ]; + }; + "opentelemetry-semantic-conventions" = rec { + crateName = "opentelemetry-semantic-conventions"; + version = "0.31.0"; + edition = "2021"; + sha256 = "0in8plv2l2ar7anzi7lrbll0fjfvaymkg5vc5bnvibs1w3gjjbp6"; + libName = "opentelemetry_semantic_conventions"; + features = { + }; + resolvedDefaultFeatures = [ "default" ]; }; "opentelemetry_sdk" = rec { crateName = "opentelemetry_sdk"; - version = "0.28.0"; + version = "0.31.0"; edition = "2021"; - sha256 = "0w4mycm070f4knvi1x5v199apd1fvi0712qiyv0pz70889havpw4"; + sha256 = "1gbjsggdxfpjbanjvaxa3nq32vfa37i3v13dvx4gsxhrk7sy8jp1"; dependencies = [ - { - name = "async-trait"; - packageId = "async-trait"; - optional = true; - } { name = "futures-channel"; packageId = "futures-channel"; @@ -7606,14 +7655,10 @@ rec { usesDefaultFeatures = false; features = [ "std" "sink" "async-await-macro" ]; } - { - name = "glob"; - packageId = "glob"; - optional = true; - } { name = "opentelemetry"; packageId = "opentelemetry"; + usesDefaultFeatures = false; } { name = "percent-encoding"; @@ -7622,19 +7667,14 @@ rec { } { name = "rand"; - packageId = "rand 0.8.5"; + packageId = "rand 0.9.2"; optional = true; usesDefaultFeatures = false; - features = [ "std" "std_rng" "small_rng" ]; - } - { - name = "serde_json"; - packageId = "serde_json"; - optional = true; + features = [ "std" "std_rng" "small_rng" "os_rng" "thread_rng" ]; } { name = "thiserror"; - packageId = "thiserror 2.0.17"; + packageId = "thiserror 2.0.18"; usesDefaultFeatures = false; } { @@ -7642,52 +7682,42 @@ rec { packageId = "tokio"; optional = true; usesDefaultFeatures = false; - features = [ "rt" "time" ]; } { name = "tokio-stream"; packageId = "tokio-stream"; optional = true; } - { - name = "tracing"; - packageId = "tracing"; - optional = true; - usesDefaultFeatures = false; - } ]; features = { - "async-std" = [ "dep:async-std" ]; - "async-trait" = [ "dep:async-trait" ]; "default" = [ "trace" "metrics" "logs" "internal-logs" ]; - "experimental_logs_batch_log_processor_with_async_runtime" = [ "logs" ]; + "experimental_logs_batch_log_processor_with_async_runtime" = [ "logs" "experimental_async_runtime" ]; + "experimental_logs_concurrent_log_processor" = [ "logs" ]; + "experimental_metrics_custom_reader" = [ "metrics" ]; "experimental_metrics_disable_name_validation" = [ "metrics" ]; - "experimental_metrics_periodicreader_with_async_runtime" = [ "metrics" ]; - "experimental_trace_batch_span_processor_with_async_runtime" = [ "trace" ]; - "glob" = [ "dep:glob" ]; + "experimental_metrics_periodicreader_with_async_runtime" = [ "metrics" "experimental_async_runtime" ]; + "experimental_trace_batch_span_processor_with_async_runtime" = [ "tokio/sync" "trace" "experimental_async_runtime" ]; "http" = [ "dep:http" ]; - "internal-logs" = [ "tracing" ]; - "jaeger_remote_sampler" = [ "trace" "opentelemetry-http" "http" "serde" "serde_json" "url" ]; - "logs" = [ "opentelemetry/logs" "serde_json" ]; - "metrics" = [ "opentelemetry/metrics" "glob" "async-trait" ]; + "internal-logs" = [ "opentelemetry/internal-logs" ]; + "jaeger_remote_sampler" = [ "trace" "opentelemetry-http" "http" "serde" "serde_json" "url" "experimental_async_runtime" ]; + "logs" = [ "opentelemetry/logs" ]; + "metrics" = [ "opentelemetry/metrics" ]; "opentelemetry-http" = [ "dep:opentelemetry-http" ]; "percent-encoding" = [ "dep:percent-encoding" ]; "rand" = [ "dep:rand" ]; - "rt-async-std" = [ "async-std" "experimental_async_runtime" ]; - "rt-tokio" = [ "tokio" "tokio-stream" "experimental_async_runtime" ]; - "rt-tokio-current-thread" = [ "tokio" "tokio-stream" "experimental_async_runtime" ]; + "rt-tokio" = [ "tokio/rt" "tokio/time" "tokio-stream" "experimental_async_runtime" ]; + "rt-tokio-current-thread" = [ "tokio/rt" "tokio/time" "tokio-stream" "experimental_async_runtime" ]; "serde" = [ "dep:serde" ]; "serde_json" = [ "dep:serde_json" ]; "spec_unstable_logs_enabled" = [ "logs" "opentelemetry/spec_unstable_logs_enabled" ]; "spec_unstable_metrics_views" = [ "metrics" ]; - "testing" = [ "opentelemetry/testing" "trace" "metrics" "logs" "rt-async-std" "rt-tokio" "rt-tokio-current-thread" "tokio/macros" "tokio/rt-multi-thread" ]; + "testing" = [ "opentelemetry/testing" "trace" "metrics" "logs" "rt-tokio" "rt-tokio-current-thread" "tokio/macros" "tokio/rt-multi-thread" ]; "tokio" = [ "dep:tokio" ]; "tokio-stream" = [ "dep:tokio-stream" ]; "trace" = [ "opentelemetry/trace" "rand" "percent-encoding" ]; - "tracing" = [ "dep:tracing" ]; "url" = [ "dep:url" ]; }; - resolvedDefaultFeatures = [ "async-trait" "default" "experimental_async_runtime" "glob" "internal-logs" "logs" "metrics" "percent-encoding" "rand" "rt-tokio" "serde_json" "spec_unstable_logs_enabled" "tokio" "tokio-stream" "trace" "tracing" ]; + resolvedDefaultFeatures = [ "default" "experimental_async_runtime" "internal-logs" "logs" "metrics" "percent-encoding" "rand" "rt-tokio" "spec_unstable_logs_enabled" "tokio" "tokio-stream" "trace" ]; }; "option-ext" = rec { crateName = "option-ext"; @@ -7799,7 +7829,7 @@ rec { } { name = "windows-link"; - packageId = "windows-link 0.2.1"; + packageId = "windows-link"; target = { target, features }: (target."windows" or false); } ]; @@ -7871,9 +7901,9 @@ rec { }; "pest" = rec { crateName = "pest"; - version = "2.8.3"; + version = "2.8.6"; edition = "2021"; - sha256 = "1x3xc1s5vhwswmmr51i60kfbcnp1zgdblsxbqd8dxvs0l0hpb7lq"; + sha256 = "0qm6kpqsbn2p6vkd7v4j3g7wsjby2ip6di1h6kx7vlq921h8r170"; authors = [ "Dragoș Tiselice " ]; @@ -7900,9 +7930,9 @@ rec { }; "pest_derive" = rec { crateName = "pest_derive"; - version = "2.8.3"; + version = "2.8.6"; edition = "2021"; - sha256 = "1pp2g39k2vjdyzr89k8zx5y7pp3np4iv635jpyxzmfhd0fisjz8q"; + sha256 = "0xzysvcyfs0pkn2801rg811y83jx2rvpqnjxs47c3ri1xbqqdx0i"; procMacro = true; authors = [ "Dragoș Tiselice " @@ -7929,9 +7959,9 @@ rec { }; "pest_generator" = rec { crateName = "pest_generator"; - version = "2.8.3"; + version = "2.8.6"; edition = "2021"; - sha256 = "0hr80m5xzzrhzjvnmbawk72cxvn0ssc5j216gblynmspizch3d29"; + sha256 = "0kzrcik2ww0qh84jlv8xqc0zmzgl3xy41vf1cfli1chkgdjc8h40"; authors = [ "Dragoș Tiselice " ]; @@ -7955,7 +7985,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.106"; + packageId = "syn 2.0.117"; } ]; features = { @@ -7968,9 +7998,9 @@ rec { }; "pest_meta" = rec { crateName = "pest_meta"; - version = "2.8.3"; + version = "2.8.6"; edition = "2021"; - sha256 = "0nh6w1mv8hx0p1jli8s12j2w62ia2apsbyl69nf07yg9zqn7mwkj"; + sha256 = "08126skq2lxysinp6v917niszhnnh6d6a9kg2i0a28b0sdlmr0c9"; authors = [ "Dragoș Tiselice " ]; @@ -7992,7 +8022,7 @@ rec { }; resolvedDefaultFeatures = [ "default" ]; }; - "phf" = rec { + "phf 0.11.3" = rec { crateName = "phf"; version = "0.11.3"; edition = "2021"; @@ -8003,7 +8033,7 @@ rec { dependencies = [ { name = "phf_shared"; - packageId = "phf_shared"; + packageId = "phf_shared 0.11.3"; usesDefaultFeatures = false; } ]; @@ -8016,29 +8046,80 @@ rec { "uncased" = [ "phf_shared/uncased" ]; "unicase" = [ "phf_macros?/unicase" "phf_shared/unicase" ]; }; - resolvedDefaultFeatures = [ "default" "std" ]; }; - "phf_codegen" = rec { - crateName = "phf_codegen"; - version = "0.11.3"; + "phf 0.13.1" = rec { + crateName = "phf"; + version = "0.13.1"; edition = "2021"; - sha256 = "0si1n6zr93kzjs3wah04ikw8z6npsr39jw4dam8yi9czg2609y5f"; + sha256 = "1pzswx5gdglgjgp4azyzwyr4gh031r0kcnpqq6jblga72z3jsmn1"; authors = [ "Steven Fackler " ]; dependencies = [ { - name = "phf_generator"; - packageId = "phf_generator"; + name = "phf_shared"; + packageId = "phf_shared 0.13.1"; + usesDefaultFeatures = false; + } + { + name = "serde"; + packageId = "serde"; + optional = true; + usesDefaultFeatures = false; + } + ]; + features = { + "default" = [ "std" ]; + "macros" = [ "phf_macros" ]; + "phf_macros" = [ "dep:phf_macros" ]; + "serde" = [ "dep:serde" ]; + "std" = [ "phf_shared/std" "serde?/std" ]; + "uncased" = [ "phf_macros?/uncased" "phf_shared/uncased" ]; + "unicase" = [ "phf_macros?/unicase" "phf_shared/unicase" ]; + }; + resolvedDefaultFeatures = [ "default" "std" ]; + }; + "phf_codegen 0.11.3" = rec { + crateName = "phf_codegen"; + version = "0.11.3"; + edition = "2021"; + sha256 = "0si1n6zr93kzjs3wah04ikw8z6npsr39jw4dam8yi9czg2609y5f"; + authors = [ + "Steven Fackler " + ]; + dependencies = [ + { + name = "phf_generator"; + packageId = "phf_generator 0.11.3"; + } + { + name = "phf_shared"; + packageId = "phf_shared 0.11.3"; + } + ]; + + }; + "phf_codegen 0.13.1" = rec { + crateName = "phf_codegen"; + version = "0.13.1"; + edition = "2021"; + sha256 = "1qfnsl2hiny0yg4lwn888xla5iwccszgxnx8dhbwl6s2h2fpzaj9"; + authors = [ + "Steven Fackler " + ]; + dependencies = [ + { + name = "phf_generator"; + packageId = "phf_generator 0.13.1"; } { name = "phf_shared"; - packageId = "phf_shared"; + packageId = "phf_shared 0.13.1"; } ]; }; - "phf_generator" = rec { + "phf_generator 0.11.3" = rec { crateName = "phf_generator"; version = "0.11.3"; edition = "2021"; @@ -8050,7 +8131,7 @@ rec { dependencies = [ { name = "phf_shared"; - packageId = "phf_shared"; + packageId = "phf_shared 0.11.3"; usesDefaultFeatures = false; } { @@ -8064,7 +8145,30 @@ rec { "criterion" = [ "dep:criterion" ]; }; }; - "phf_shared" = rec { + "phf_generator 0.13.1" = rec { + crateName = "phf_generator"; + version = "0.13.1"; + edition = "2021"; + crateBin = []; + sha256 = "0dwpp11l41dy9mag4phkyyvhpf66lwbp79q3ik44wmhyfqxcwnhk"; + authors = [ + "Steven Fackler " + ]; + dependencies = [ + { + name = "fastrand"; + packageId = "fastrand"; + usesDefaultFeatures = false; + } + { + name = "phf_shared"; + packageId = "phf_shared 0.13.1"; + usesDefaultFeatures = false; + } + ]; + + }; + "phf_shared 0.11.3" = rec { crateName = "phf_shared"; version = "0.11.3"; edition = "2021"; @@ -8085,11 +8189,32 @@ rec { }; resolvedDefaultFeatures = [ "default" "std" ]; }; + "phf_shared 0.13.1" = rec { + crateName = "phf_shared"; + version = "0.13.1"; + edition = "2021"; + sha256 = "0rpjchnswm0x5l4mz9xqfpw0j4w68sjvyqrdrv13h7lqqmmyyzz5"; + authors = [ + "Steven Fackler " + ]; + dependencies = [ + { + name = "siphasher"; + packageId = "siphasher"; + } + ]; + features = { + "default" = [ "std" ]; + "uncased" = [ "dep:uncased" ]; + "unicase" = [ "dep:unicase" ]; + }; + resolvedDefaultFeatures = [ "default" "std" ]; + }; "pin-project" = rec { crateName = "pin-project"; - version = "1.1.10"; + version = "1.1.11"; edition = "2021"; - sha256 = "12kadbnfm1f43cyadw9gsbyln1cy7vj764wz5c8wxaiza3filzv7"; + sha256 = "05zm3y3bl83ypsr6favxvny2kys4i19jiz1y18ylrbxwsiz9qx7i"; libName = "pin_project"; dependencies = [ { @@ -8101,9 +8226,9 @@ rec { }; "pin-project-internal" = rec { crateName = "pin-project-internal"; - version = "1.1.10"; + version = "1.1.11"; edition = "2021"; - sha256 = "0qgqzfl0f4lzaz7yl5llhbg97g68r15kljzihaw9wm64z17qx4bf"; + sha256 = "1ik4mpb92da75inmjvxf2qm61vrnwml3x24wddvrjlqh1z9hxcnr"; procMacro = true; libName = "pin_project_internal"; dependencies = [ @@ -8117,7 +8242,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.106"; + packageId = "syn 2.0.117"; usesDefaultFeatures = false; features = [ "parsing" "printing" "clone-impls" "proc-macro" "full" "visit-mut" ]; } @@ -8126,9 +8251,9 @@ rec { }; "pin-project-lite" = rec { crateName = "pin-project-lite"; - version = "0.2.16"; + version = "0.2.17"; edition = "2018"; - sha256 = "16wzc7z7dfkf9bmjin22f5282783f6mdksnr0nv0j5ym5f9gyg1v"; + sha256 = "1kfmwvs271si96zay4mm8887v5khw0c27jc9srw1a75ykvgj54x8"; libName = "pin_project_lite"; }; @@ -8145,22 +8270,41 @@ rec { }; "portable-atomic" = rec { crateName = "portable-atomic"; - version = "1.11.1"; + version = "1.13.1"; edition = "2018"; - sha256 = "10s4cx9y3jvw0idip09ar52s2kymq8rq9a668f793shn1ar6fhpq"; + sha256 = "0j8vlar3n5acyigq8q6f4wjx3k3s5yz0rlpqrv76j73gi5qr8fn3"; libName = "portable_atomic"; features = { "critical-section" = [ "dep:critical-section" ]; "default" = [ "fallback" ]; "serde" = [ "dep:serde" ]; }; - resolvedDefaultFeatures = [ "default" "fallback" ]; + resolvedDefaultFeatures = [ "default" "fallback" "require-cas" ]; + }; + "portable-atomic-util" = rec { + crateName = "portable-atomic-util"; + version = "0.2.5"; + edition = "2018"; + sha256 = "1xcm0ia8756k6hdgafx4g3lx3fw0hvz2zqswq7c2sy58gxnvk7bs"; + libName = "portable_atomic_util"; + dependencies = [ + { + name = "portable-atomic"; + packageId = "portable-atomic"; + usesDefaultFeatures = false; + features = [ "require-cas" ]; + } + ]; + features = { + "std" = [ "alloc" ]; + }; + resolvedDefaultFeatures = [ "alloc" ]; }; "potential_utf" = rec { crateName = "potential_utf"; - version = "0.1.3"; + version = "0.1.4"; edition = "2021"; - sha256 = "12mhwvhpvvim6xqp6ifgkh1sniv9j2cmid6axn10fnjvpsnikpw4"; + sha256 = "0xxg0pkfpq299wvwln409z4fk80rbv55phh3f1jhjajy5x1ljfdp"; authors = [ "The ICU4X Project Developers" ]; @@ -8173,10 +8317,11 @@ rec { } ]; features = { - "alloc" = [ "serde?/alloc" "zerovec?/alloc" ]; + "alloc" = [ "serde_core?/alloc" "writeable/alloc" "zerovec?/alloc" ]; "databake" = [ "dep:databake" ]; - "serde" = [ "dep:serde" ]; - "writeable" = [ "dep:writeable" "alloc" ]; + "default" = [ "alloc" ]; + "serde" = [ "dep:serde_core" ]; + "writeable" = [ "dep:writeable" ]; "zerovec" = [ "dep:zerovec" ]; }; resolvedDefaultFeatures = [ "zerovec" ]; @@ -8233,7 +8378,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.106"; + packageId = "syn 2.0.117"; usesDefaultFeatures = false; features = [ "full" ]; } @@ -8246,7 +8391,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.106"; + packageId = "syn 2.0.117"; usesDefaultFeatures = false; features = [ "clone-impls" "extra-traits" "parsing" "printing" "visit-mut" ]; } @@ -8258,9 +8403,9 @@ rec { }; "proc-macro-crate" = rec { crateName = "proc-macro-crate"; - version = "3.4.0"; + version = "3.5.0"; edition = "2021"; - sha256 = "10v9qi51n4phn1lrj5r94kjq7yhci9jrkqnn6wpan05yjsgb3711"; + sha256 = "0kv1g1d1zjwxlgcaba2qlshzyy32j03xic8rskqlcr5mnblsfyz6"; libName = "proc_macro_crate"; authors = [ "Bastian Köcher " @@ -8274,82 +8419,12 @@ rec { } ]; - }; - "proc-macro-error" = rec { - crateName = "proc-macro-error"; - version = "1.0.4"; - edition = "2018"; - sha256 = "1373bhxaf0pagd8zkyd03kkx6bchzf6g0dkwrwzsnal9z47lj9fs"; - libName = "proc_macro_error"; - authors = [ - "CreepySkeleton " - ]; - dependencies = [ - { - name = "proc-macro-error-attr"; - packageId = "proc-macro-error-attr"; - } - { - name = "proc-macro2"; - packageId = "proc-macro2"; - } - { - name = "quote"; - packageId = "quote"; - } - { - name = "syn"; - packageId = "syn 1.0.109"; - optional = true; - usesDefaultFeatures = false; - } - ]; - buildDependencies = [ - { - name = "version_check"; - packageId = "version_check"; - } - ]; - features = { - "default" = [ "syn-error" ]; - "syn" = [ "dep:syn" ]; - "syn-error" = [ "syn" ]; - }; - resolvedDefaultFeatures = [ "default" "syn" "syn-error" ]; - }; - "proc-macro-error-attr" = rec { - crateName = "proc-macro-error-attr"; - version = "1.0.4"; - edition = "2018"; - sha256 = "0sgq6m5jfmasmwwy8x4mjygx5l7kp8s4j60bv25ckv2j1qc41gm1"; - procMacro = true; - libName = "proc_macro_error_attr"; - authors = [ - "CreepySkeleton " - ]; - dependencies = [ - { - name = "proc-macro2"; - packageId = "proc-macro2"; - } - { - name = "quote"; - packageId = "quote"; - } - ]; - buildDependencies = [ - { - name = "version_check"; - packageId = "version_check"; - } - ]; - }; "proc-macro2" = rec { crateName = "proc-macro2"; - version = "1.0.101"; + version = "1.0.106"; edition = "2021"; - sha256 = "1pijhychkpl7rcyf1h7mfk6gjfii1ywf5n0snmnqs5g4hvyl7bl9"; + sha256 = "0d09nczyaj67x4ihqr5p7gxbkz38gxhk4asc0k8q23g9n85hzl4g"; libName = "proc_macro2"; authors = [ "David Tolnay " @@ -8368,13 +8443,13 @@ rec { }; "product-config" = rec { crateName = "product-config"; - version = "0.7.0"; + version = "0.8.0"; edition = "2021"; workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/product-config.git"; - rev = "d61d4c7542c942da2ba0e9af4e5e3c3113abb0cf"; - sha256 = "0gjsm80g6r75pm3824dcyiz4ysq1ka4c1if6k1mjm9cnd5ym0gny"; + rev = "678fb7cf30af7d7b516c9a46698a1b661120d54a"; + sha256 = "1dz70kapm2wdqcr7ndyjji0lhsl98bsq95gnb2lw487wf6yr7987"; }; libName = "product_config"; authors = [ @@ -8415,17 +8490,17 @@ rec { packageId = "snafu 0.8.9"; } { - name = "xml-rs"; - packageId = "xml-rs"; + name = "xml"; + packageId = "xml"; } ]; }; "prost" = rec { crateName = "prost"; - version = "0.13.5"; + version = "0.14.3"; edition = "2021"; - sha256 = "1r8yi6zxxwv9gq5ia9p55nspgwmchs94sqpp64x33v5k3njgm5i7"; + sha256 = "0s057z9nzggzy7x4bbsiar852hg7zb81f4z4phcdb0ig99971snj"; authors = [ "Dan Burkert " "Lucio Franco " @@ -8447,15 +8522,14 @@ rec { features = { "default" = [ "derive" "std" ]; "derive" = [ "dep:prost-derive" ]; - "prost-derive" = [ "derive" ]; }; resolvedDefaultFeatures = [ "default" "derive" "std" ]; }; "prost-derive" = rec { crateName = "prost-derive"; - version = "0.13.5"; + version = "0.14.3"; edition = "2021"; - sha256 = "0kgc9gbzsa998xixblfi3kfydka64zqf6rmpm53b761cjxbxfmla"; + sha256 = "02zvva6kb0pfvlyc4nac6gd37ncjrs8jq5scxcq4nbqkc8wh5ii7"; procMacro = true; libName = "prost_derive"; authors = [ @@ -8483,7 +8557,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.106"; + packageId = "syn 2.0.117"; features = [ "extra-traits" ]; } ]; @@ -8518,7 +8592,7 @@ rec { } { name = "rustc-hash"; - packageId = "rustc-hash 2.1.1"; + packageId = "rustc-hash"; } { name = "rustls"; @@ -8529,12 +8603,12 @@ rec { } { name = "socket2"; - packageId = "socket2 0.6.1"; + packageId = "socket2"; target = { target, features }: (!((builtins.elem "wasm" target."family") && ("unknown" == target."os" or null))); } { name = "thiserror"; - packageId = "thiserror 2.0.17"; + packageId = "thiserror 2.0.18"; } { name = "tokio"; @@ -8588,15 +8662,21 @@ rec { "rustls-ring" = [ "dep:rustls" "ring" "proto/rustls-ring" "proto/ring" ]; "smol" = [ "dep:smol" ]; }; - resolvedDefaultFeatures = [ "ring" "runtime-tokio" "rustls" "rustls-ring" ]; + resolvedDefaultFeatures = [ "aws-lc-rs" "runtime-tokio" "rustls-aws-lc-rs" ]; }; "quinn-proto" = rec { crateName = "quinn-proto"; - version = "0.11.13"; + version = "0.11.14"; edition = "2021"; - sha256 = "0cca3mgja9p4w66f6sl1kfhj8rdf4mwsg1jxzssh9g63n14np47i"; + sha256 = "1660jkxhzi1pnywzs13ifczwrlv6ds9qds111vsnxjciqpz44js3"; libName = "quinn_proto"; dependencies = [ + { + name = "aws-lc-rs"; + packageId = "aws-lc-rs"; + optional = true; + usesDefaultFeatures = false; + } { name = "bytes"; packageId = "bytes"; @@ -8629,7 +8709,7 @@ rec { } { name = "rustc-hash"; - packageId = "rustc-hash 2.1.1"; + packageId = "rustc-hash"; } { name = "rustls"; @@ -8650,7 +8730,7 @@ rec { } { name = "thiserror"; - packageId = "thiserror 2.0.17"; + packageId = "thiserror 2.0.18"; } { name = "tinyvec"; @@ -8685,7 +8765,7 @@ rec { "rustls-log" = [ "rustls?/logging" ]; "rustls-ring" = [ "dep:rustls" "rustls?/ring" "ring" ]; }; - resolvedDefaultFeatures = [ "ring" "rustls-ring" ]; + resolvedDefaultFeatures = [ "aws-lc-rs" "rustls-aws-lc-rs" ]; }; "quinn-udp" = rec { crateName = "quinn-udp"; @@ -8705,7 +8785,7 @@ rec { } { name = "socket2"; - packageId = "socket2 0.6.1"; + packageId = "socket2"; target = { target, features }: (!((builtins.elem "wasm" target."family") && ("unknown" == target."os" or null))); } { @@ -8738,9 +8818,9 @@ rec { }; "quote" = rec { crateName = "quote"; - version = "1.0.41"; - edition = "2018"; - sha256 = "1lg108nb57lwbqlnpsii89cchk6i8pkcvrv88xh1p7a9gdz7c9ff"; + version = "1.0.45"; + edition = "2021"; + sha256 = "095rb5rg7pbnwdp6v8w5jw93wndwyijgci1b5lw8j1h5cscn3wj1"; authors = [ "David Tolnay " ]; @@ -8757,7 +8837,7 @@ rec { }; resolvedDefaultFeatures = [ "default" "proc-macro" ]; }; - "r-efi" = rec { + "r-efi 5.3.0" = rec { crateName = "r-efi"; version = "5.3.0"; edition = "2018"; @@ -8769,6 +8849,57 @@ rec { "rustc-dep-of-std" = [ "core" ]; }; }; + "r-efi 6.0.0" = rec { + crateName = "r-efi"; + version = "6.0.0"; + edition = "2018"; + sha256 = "1gyrl2k5fyzj9k7kchg2n296z5881lg7070msabid09asp3wkp7q"; + libName = "r_efi"; + features = { + "core" = [ "dep:core" ]; + "rustc-dep-of-std" = [ "core" ]; + }; + }; + "rand 0.10.0" = rec { + crateName = "rand"; + version = "0.10.0"; + edition = "2024"; + sha256 = "1y7g1zddjzhzwg0k1nddsfyfaq89a7igpcf7q44mqv6z2frnw9mw"; + authors = [ + "The Rand Project Developers" + "The Rust Project Developers" + ]; + dependencies = [ + { + name = "chacha20"; + packageId = "chacha20"; + optional = true; + usesDefaultFeatures = false; + features = [ "rng" ]; + } + { + name = "getrandom"; + packageId = "getrandom 0.4.2"; + optional = true; + } + { + name = "rand_core"; + packageId = "rand_core 0.10.0"; + usesDefaultFeatures = false; + } + ]; + features = { + "chacha" = [ "dep:chacha20" ]; + "default" = [ "std" "std_rng" "sys_rng" "thread_rng" ]; + "log" = [ "dep:log" ]; + "serde" = [ "dep:serde" ]; + "std" = [ "alloc" "getrandom?/std" ]; + "std_rng" = [ "dep:chacha20" ]; + "sys_rng" = [ "dep:getrandom" "getrandom/sys_rng" ]; + "thread_rng" = [ "std" "std_rng" "sys_rng" ]; + }; + resolvedDefaultFeatures = [ "alloc" "default" "std" "std_rng" "sys_rng" "thread_rng" ]; + }; "rand 0.8.5" = rec { crateName = "rand"; version = "0.8.5"; @@ -8831,7 +8962,7 @@ rec { } { name = "rand_core"; - packageId = "rand_core 0.9.3"; + packageId = "rand_core 0.9.5"; usesDefaultFeatures = false; } ]; @@ -8895,13 +9026,13 @@ rec { } { name = "rand_core"; - packageId = "rand_core 0.9.3"; + packageId = "rand_core 0.9.5"; } ]; devDependencies = [ { name = "rand_core"; - packageId = "rand_core 0.9.3"; + packageId = "rand_core 0.9.5"; features = [ "os_rng" ]; } ]; @@ -8913,6 +9044,16 @@ rec { }; resolvedDefaultFeatures = [ "std" ]; }; + "rand_core 0.10.0" = rec { + crateName = "rand_core"; + version = "0.10.0"; + edition = "2024"; + sha256 = "1flazfw1q1hbvadwzmaliplz0xnnjijdnbmzxnzdqplhfzb0z38c"; + authors = [ + "The Rand Project Developers" + ]; + + }; "rand_core 0.6.4" = rec { crateName = "rand_core"; version = "0.6.4"; @@ -8925,7 +9066,7 @@ rec { dependencies = [ { name = "getrandom"; - packageId = "getrandom 0.2.16"; + packageId = "getrandom 0.2.17"; optional = true; } ]; @@ -8937,11 +9078,11 @@ rec { }; resolvedDefaultFeatures = [ "alloc" "getrandom" "std" ]; }; - "rand_core 0.9.3" = rec { + "rand_core 0.9.5" = rec { crateName = "rand_core"; - version = "0.9.3"; + version = "0.9.5"; edition = "2021"; - sha256 = "0f3xhf16yks5ic6kmgxcpv1ngdhp48mmfy4ag82i1wnwh8ws3ncr"; + sha256 = "0g6qc5r3f0hdmz9b11nripyp9qqrzb0xqk9piip8w8qlvqkcibvn"; authors = [ "The Rand Project Developers" "The Rust Project Developers" @@ -8982,21 +9123,11 @@ rec { }; resolvedDefaultFeatures = [ "default" "userspace" ]; }; - "redox_termios" = rec { - crateName = "redox_termios"; - version = "0.1.3"; - edition = "2021"; - sha256 = "1jzifsj7fqyksz4325l3azfzpyv027kjabf93zcmass3p9q5c510"; - authors = [ - "Jeremy Soller " - ]; - - }; "redox_users" = rec { crateName = "redox_users"; - version = "0.4.6"; + version = "0.5.2"; edition = "2021"; - sha256 = "0hya2cxx6hxmjfxzv9n8rjl5igpychav7zfi1f81pz6i4krry05s"; + sha256 = "1b17q7gf7w8b1vvl53bxna24xl983yn7bd00gfbii74bcg30irm4"; authors = [ "Jose Narvaez " "Wesley Hershberger " @@ -9004,7 +9135,7 @@ rec { dependencies = [ { name = "getrandom"; - packageId = "getrandom 0.2.16"; + packageId = "getrandom 0.2.17"; features = [ "std" ]; } { @@ -9015,7 +9146,7 @@ rec { } { name = "thiserror"; - packageId = "thiserror 1.0.69"; + packageId = "thiserror 2.0.18"; } ]; features = { @@ -9025,11 +9156,54 @@ rec { "zeroize" = [ "dep:zeroize" ]; }; }; + "ref-cast" = rec { + crateName = "ref-cast"; + version = "1.0.25"; + edition = "2021"; + sha256 = "0zdzc34qjva9xxgs889z5iz787g81hznk12zbk4g2xkgwq530m7k"; + libName = "ref_cast"; + authors = [ + "David Tolnay " + ]; + dependencies = [ + { + name = "ref-cast-impl"; + packageId = "ref-cast-impl"; + } + ]; + + }; + "ref-cast-impl" = rec { + crateName = "ref-cast-impl"; + version = "1.0.25"; + edition = "2021"; + sha256 = "1nkhn1fklmn342z5c4mzfzlxddv3x8yhxwwk02cj06djvh36065p"; + procMacro = true; + libName = "ref_cast_impl"; + authors = [ + "David Tolnay " + ]; + dependencies = [ + { + name = "proc-macro2"; + packageId = "proc-macro2"; + } + { + name = "quote"; + packageId = "quote"; + } + { + name = "syn"; + packageId = "syn 2.0.117"; + } + ]; + + }; "regex" = rec { crateName = "regex"; - version = "1.12.2"; + version = "1.12.3"; edition = "2021"; - sha256 = "1m14zkg6xmkb0q5ah3y39cmggclsjdr1wpxfa4kf5wvm3wcw0fw4"; + sha256 = "0xp2q0x7ybmpa5zlgaz00p8zswcirj9h8nry3rxxsdwi9fhm81z1"; authors = [ "The Rust Project Developers" "Andrew Gallant " @@ -9085,9 +9259,9 @@ rec { }; "regex-automata" = rec { crateName = "regex-automata"; - version = "0.4.13"; + version = "0.4.14"; edition = "2021"; - sha256 = "070z0j23pjfidqz0z89id1fca4p572wxpcr20a0qsv68bbrclxjj"; + sha256 = "13xf7hhn4qmgfh784llcp2kzrvljd13lb2b1ca0mwnf15w9d87bf"; libName = "regex_automata"; authors = [ "The Rust Project Developers" @@ -9146,9 +9320,9 @@ rec { }; "regex-syntax" = rec { crateName = "regex-syntax"; - version = "0.8.8"; + version = "0.8.10"; edition = "2021"; - sha256 = "0n7ggnpk0r32rzgnycy5xrc1yp2kq19m6pz98ch3c6dkaxw9hbbs"; + sha256 = "02jx311ka0daxxc7v45ikzhcl3iydjbbb0mdrpc1xgg8v7c7v2fw"; libName = "regex_syntax"; authors = [ "The Rust Project Developers" @@ -9175,11 +9349,11 @@ rec { }; resolvedDefaultFeatures = [ "default" ]; }; - "reqwest" = rec { + "reqwest 0.12.28" = rec { crateName = "reqwest"; - version = "0.12.24"; + version = "0.12.28"; edition = "2021"; - sha256 = "0vx3f2n6hfnv81y66v5wayrqh6jlzz4gakky88m0hywz1d0lc2cx"; + sha256 = "0iqidijghgqbzl3bjg5hb4zmigwa4r612bgi0yiq0c90b6jkrpgd"; authors = [ "Sean McArthur " ]; @@ -9230,16 +9404,8 @@ rec { features = [ "http1" "client" ]; } { - name = "hyper-rustls"; - packageId = "hyper-rustls"; - optional = true; - usesDefaultFeatures = false; - target = { target, features }: (!("wasm32" == target."arch" or null)); - features = [ "http1" "tls12" ]; - } - { - name = "hyper-util"; - packageId = "hyper-util"; + name = "hyper-util"; + packageId = "hyper-util"; target = { target, features }: (!("wasm32" == target."arch" or null)); features = [ "http1" "client" "client-legacy" "client-proxy" "tokio" ]; } @@ -9263,35 +9429,6 @@ rec { packageId = "pin-project-lite"; target = { target, features }: (!("wasm32" == target."arch" or null)); } - { - name = "quinn"; - packageId = "quinn"; - optional = true; - usesDefaultFeatures = false; - target = { target, features }: (!("wasm32" == target."arch" or null)); - features = [ "rustls" "runtime-tokio" ]; - } - { - name = "rustls"; - packageId = "rustls"; - optional = true; - usesDefaultFeatures = false; - target = { target, features }: (!("wasm32" == target."arch" or null)); - features = [ "std" "tls12" ]; - } - { - name = "rustls-native-certs"; - packageId = "rustls-native-certs 0.8.2"; - optional = true; - target = { target, features }: (!("wasm32" == target."arch" or null)); - } - { - name = "rustls-pki-types"; - packageId = "rustls-pki-types"; - optional = true; - target = { target, features }: (!("wasm32" == target."arch" or null)); - features = [ "std" ]; - } { name = "serde"; packageId = "serde"; @@ -9322,24 +9459,16 @@ rec { target = { target, features }: (!("wasm32" == target."arch" or null)); features = [ "net" "time" ]; } - { - name = "tokio-rustls"; - packageId = "tokio-rustls"; - optional = true; - usesDefaultFeatures = false; - target = { target, features }: (!("wasm32" == target."arch" or null)); - features = [ "tls12" ]; - } { name = "tower"; - packageId = "tower 0.5.2"; + packageId = "tower"; usesDefaultFeatures = false; target = { target, features }: (!("wasm32" == target."arch" or null)); features = [ "retry" "timeout" "util" ]; } { name = "tower-http"; - packageId = "tower-http 0.6.6"; + packageId = "tower-http"; usesDefaultFeatures = false; target = { target, features }: (!("wasm32" == target."arch" or null)); features = [ "follow-redirect" ]; @@ -9369,57 +9498,51 @@ rec { target = { target, features }: ("wasm32" == target."arch" or null); features = [ "AbortController" "AbortSignal" "Headers" "Request" "RequestInit" "RequestMode" "Response" "Window" "FormData" "Blob" "BlobPropertyBag" "ServiceWorkerGlobalScope" "RequestCredentials" "File" "ReadableStream" "RequestCache" ]; } - { - name = "webpki-roots"; - packageId = "webpki-roots"; - optional = true; - target = { target, features }: (!("wasm32" == target."arch" or null)); - } ]; devDependencies = [ { name = "futures-util"; packageId = "futures-util"; usesDefaultFeatures = false; - target = {target, features}: (!("wasm32" == target."arch" or null)); + target = { target, features }: (!("wasm32" == target."arch" or null)); features = [ "std" "alloc" ]; } { name = "hyper"; packageId = "hyper"; usesDefaultFeatures = false; - target = {target, features}: (!("wasm32" == target."arch" or null)); + target = { target, features }: (!("wasm32" == target."arch" or null)); features = [ "http1" "http2" "client" "server" ]; } { name = "hyper-util"; packageId = "hyper-util"; - target = {target, features}: (!("wasm32" == target."arch" or null)); + target = { target, features }: (!("wasm32" == target."arch" or null)); features = [ "http1" "http2" "client" "client-legacy" "server-auto" "server-graceful" "tokio" ]; } { name = "serde"; packageId = "serde"; - target = {target, features}: (!("wasm32" == target."arch" or null)); + target = { target, features }: (!("wasm32" == target."arch" or null)); features = [ "derive" ]; } { name = "tokio"; packageId = "tokio"; usesDefaultFeatures = false; - target = {target, features}: (!("wasm32" == target."arch" or null)); + target = { target, features }: (!("wasm32" == target."arch" or null)); features = [ "macros" "rt-multi-thread" ]; } { name = "tower"; - packageId = "tower 0.5.2"; + packageId = "tower"; usesDefaultFeatures = false; features = [ "limit" ]; } { name = "wasm-bindgen"; packageId = "wasm-bindgen"; - target = {target, features}: ("wasm32" == target."arch" or null); + target = { target, features }: ("wasm32" == target."arch" or null); features = [ "serde-serialize" ]; } ]; @@ -9428,13 +9551,13 @@ rec { "__rustls-ring" = [ "hyper-rustls?/ring" "tokio-rustls?/ring" "rustls?/ring" "quinn?/ring" ]; "__tls" = [ "dep:rustls-pki-types" "tokio/io-util" ]; "blocking" = [ "dep:futures-channel" "futures-channel?/sink" "dep:futures-util" "futures-util?/io" "futures-util?/sink" "tokio/sync" ]; - "brotli" = [ "dep:async-compression" "async-compression?/brotli" "dep:futures-util" "dep:tokio-util" ]; + "brotli" = [ "tower-http/decompression-br" ]; "charset" = [ "dep:encoding_rs" "dep:mime" ]; "cookies" = [ "dep:cookie_crate" "dep:cookie_store" ]; "default" = [ "default-tls" "charset" "http2" "system-proxy" ]; "default-tls" = [ "dep:hyper-tls" "dep:native-tls-crate" "__tls" "dep:tokio-native-tls" ]; - "deflate" = [ "dep:async-compression" "async-compression?/zlib" "dep:futures-util" "dep:tokio-util" ]; - "gzip" = [ "dep:async-compression" "async-compression?/gzip" "dep:futures-util" "dep:tokio-util" ]; + "deflate" = [ "tower-http/decompression-deflate" ]; + "gzip" = [ "tower-http/decompression-gzip" ]; "h2" = [ "dep:h2" ]; "hickory-dns" = [ "dep:hickory-resolver" "dep:once_cell" ]; "http2" = [ "h2" "hyper/http2" "hyper-util/http2" "hyper-rustls?/http2" ]; @@ -9455,193 +9578,435 @@ rec { "rustls-tls-webpki-roots-no-provider" = [ "dep:webpki-roots" "hyper-rustls?/webpki-tokio" "__rustls" ]; "stream" = [ "tokio/fs" "dep:futures-util" "dep:tokio-util" "dep:wasm-streams" ]; "system-proxy" = [ "hyper-util/client-proxy-system" ]; - "zstd" = [ "dep:async-compression" "async-compression?/zstd" "dep:futures-util" "dep:tokio-util" ]; + "zstd" = [ "tower-http/decompression-zstd" ]; }; - resolvedDefaultFeatures = [ "__rustls" "__rustls-ring" "__tls" "blocking" "json" "rustls-tls" "rustls-tls-native-roots" "rustls-tls-native-roots-no-provider" "rustls-tls-webpki-roots" "rustls-tls-webpki-roots-no-provider" ]; + resolvedDefaultFeatures = [ "blocking" ]; }; - "ring" = rec { - crateName = "ring"; - version = "0.17.14"; + "reqwest 0.13.2" = rec { + crateName = "reqwest"; + version = "0.13.2"; edition = "2021"; - links = "ring_core_0_17_14_"; - sha256 = "1dw32gv19ccq4hsx3ribhpdzri1vnrlcfqb2vj41xn4l49n9ws54"; + sha256 = "00d8xyrbcp0519rr9rhl685ymb6hi3lv0i2bca5lic9s53il6gxb"; + authors = [ + "Sean McArthur " + ]; dependencies = [ { - name = "cfg-if"; - packageId = "cfg-if"; - usesDefaultFeatures = false; + name = "base64"; + packageId = "base64"; } { - name = "getrandom"; - packageId = "getrandom 0.2.16"; + name = "bytes"; + packageId = "bytes"; } { - name = "libc"; - packageId = "libc"; + name = "futures-core"; + packageId = "futures-core"; usesDefaultFeatures = false; - target = { target, features }: ((("aarch64" == target."arch" or null) && ("little" == target."endian" or null)) && ("apple" == target."vendor" or null) && (("ios" == target."os" or null) || ("macos" == target."os" or null) || ("tvos" == target."os" or null) || ("visionos" == target."os" or null) || ("watchos" == target."os" or null))); } { - name = "libc"; - packageId = "libc"; - usesDefaultFeatures = false; - target = { target, features }: (((("aarch64" == target."arch" or null) && ("little" == target."endian" or null)) || (("arm" == target."arch" or null) && ("little" == target."endian" or null))) && (("android" == target."os" or null) || ("linux" == target."os" or null))); + name = "http"; + packageId = "http"; } { - name = "untrusted"; - packageId = "untrusted"; + name = "http-body"; + packageId = "http-body"; + target = { target, features }: (!("wasm32" == target."arch" or null)); } { - name = "windows-sys"; - packageId = "windows-sys 0.52.0"; - target = { target, features }: ((("aarch64" == target."arch" or null) && ("little" == target."endian" or null)) && ("windows" == target."os" or null)); - features = [ "Win32_Foundation" "Win32_System_Threading" ]; + name = "http-body-util"; + packageId = "http-body-util"; + target = { target, features }: (!("wasm32" == target."arch" or null)); } - ]; - buildDependencies = [ { - name = "cc"; - packageId = "cc"; - usesDefaultFeatures = false; + name = "hyper"; + packageId = "hyper"; + target = { target, features }: (!("wasm32" == target."arch" or null)); + features = [ "http1" "client" ]; } - ]; - devDependencies = [ { - name = "libc"; - packageId = "libc"; + name = "hyper-rustls"; + packageId = "hyper-rustls"; + optional = true; usesDefaultFeatures = false; - target = {target, features}: ((target."unix" or false) || (target."windows" or false) || ("wasi" == target."os" or null)); + target = { target, features }: (!("wasm32" == target."arch" or null)); + features = [ "http1" "tls12" ]; } - ]; - features = { - "default" = [ "alloc" "dev_urandom_fallback" ]; - "std" = [ "alloc" ]; - "wasm32_unknown_unknown_js" = [ "getrandom/js" ]; - }; - resolvedDefaultFeatures = [ "alloc" "default" "dev_urandom_fallback" "wasm32_unknown_unknown_js" ]; - }; - "roff" = rec { - crateName = "roff"; - version = "0.2.2"; - edition = "2021"; - sha256 = "1wyqz6m0pm4p6wzhwhahvcidfm7nwb38zl4q7ha940pn3w66dy48"; - - }; - "rstest" = rec { - crateName = "rstest"; - version = "0.22.0"; - edition = "2021"; - sha256 = "0dlrn6y4z5xgsvf6ky3lrjwsxpvi13sizlkwnqs1gmmxc873yhkv"; - authors = [ - "Michele d'Amico " - ]; - dependencies = [ { - name = "futures"; - packageId = "futures"; - optional = true; + name = "hyper-util"; + packageId = "hyper-util"; + target = { target, features }: (!("wasm32" == target."arch" or null)); + features = [ "http1" "client" "client-legacy" "client-proxy" "tokio" ]; } { - name = "futures-timer"; - packageId = "futures-timer"; - optional = true; + name = "js-sys"; + packageId = "js-sys"; + target = { target, features }: ("wasm32" == target."arch" or null); } { - name = "rstest_macros"; - packageId = "rstest_macros"; - usesDefaultFeatures = false; + name = "log"; + packageId = "log"; + target = { target, features }: (!("wasm32" == target."arch" or null)); } - ]; - buildDependencies = [ { - name = "rustc_version"; - packageId = "rustc_version"; + name = "percent-encoding"; + packageId = "percent-encoding"; + target = { target, features }: (!("wasm32" == target."arch" or null)); } - ]; - features = { - "async-timeout" = [ "dep:futures" "dep:futures-timer" "rstest_macros/async-timeout" ]; - "crate-name" = [ "rstest_macros/crate-name" ]; - "default" = [ "async-timeout" "crate-name" ]; - }; - resolvedDefaultFeatures = [ "async-timeout" "crate-name" "default" ]; - }; - "rstest_macros" = rec { - crateName = "rstest_macros"; - version = "0.22.0"; - edition = "2021"; - sha256 = "0hiba8l3d20ajkifd3kz5rzzpxsy311ca4c4ll94pxqlglg73qf5"; - procMacro = true; - authors = [ - "Michele d'Amico " - ]; - dependencies = [ { - name = "cfg-if"; - packageId = "cfg-if"; + name = "pin-project-lite"; + packageId = "pin-project-lite"; + target = { target, features }: (!("wasm32" == target."arch" or null)); } { - name = "glob"; - packageId = "glob"; + name = "quinn"; + packageId = "quinn"; + optional = true; + usesDefaultFeatures = false; + target = { target, features }: (!("wasm32" == target."arch" or null)); + features = [ "runtime-tokio" ]; } { - name = "proc-macro-crate"; - packageId = "proc-macro-crate"; + name = "rustls"; + packageId = "rustls"; optional = true; + usesDefaultFeatures = false; + target = { target, features }: (!("wasm32" == target."arch" or null)); + features = [ "std" "tls12" ]; } { - name = "proc-macro2"; - packageId = "proc-macro2"; + name = "rustls-pki-types"; + packageId = "rustls-pki-types"; + optional = true; + target = { target, features }: (!("wasm32" == target."arch" or null)); + features = [ "std" ]; } { - name = "quote"; - packageId = "quote"; + name = "rustls-platform-verifier"; + packageId = "rustls-platform-verifier"; + optional = true; + target = { target, features }: (!("wasm32" == target."arch" or null)); } { - name = "regex"; - packageId = "regex"; + name = "serde"; + packageId = "serde"; + optional = true; } { - name = "relative-path"; - packageId = "relative-path"; + name = "serde_json"; + packageId = "serde_json"; + optional = true; } { - name = "syn"; - packageId = "syn 2.0.106"; - features = [ "full" "parsing" "extra-traits" "visit" "visit-mut" ]; + name = "sync_wrapper"; + packageId = "sync_wrapper"; + features = [ "futures" ]; } { - name = "unicode-ident"; - packageId = "unicode-ident"; + name = "tokio"; + packageId = "tokio"; + usesDefaultFeatures = false; + target = { target, features }: (!("wasm32" == target."arch" or null)); + features = [ "net" "time" ]; } - ]; - buildDependencies = [ { - name = "rustc_version"; - packageId = "rustc_version"; + name = "tokio-rustls"; + packageId = "tokio-rustls"; + optional = true; + usesDefaultFeatures = false; + target = { target, features }: (!("wasm32" == target."arch" or null)); + features = [ "tls12" ]; } - ]; - features = { - "crate-name" = [ "dep:proc-macro-crate" ]; - "default" = [ "async-timeout" "crate-name" ]; - }; - resolvedDefaultFeatures = [ "async-timeout" "crate-name" ]; - }; - "rust-embed" = rec { - crateName = "rust-embed"; - version = "8.7.2"; - edition = "2018"; - sha256 = "12hprnl569f1pg2sn960gfla913mk1mxdwpn2a6vl9iad2w0hn82"; - libName = "rust_embed"; - authors = [ - "pyrossh" - ]; - dependencies = [ { - name = "rust-embed-impl"; - packageId = "rust-embed-impl"; + name = "tower"; + packageId = "tower"; + usesDefaultFeatures = false; + target = { target, features }: (!("wasm32" == target."arch" or null)); + features = [ "retry" "timeout" "util" ]; } { - name = "rust-embed-utils"; + name = "tower-http"; + packageId = "tower-http"; + usesDefaultFeatures = false; + target = { target, features }: (!("wasm32" == target."arch" or null)); + features = [ "follow-redirect" ]; + } + { + name = "tower-service"; + packageId = "tower-service"; + target = { target, features }: (!("wasm32" == target."arch" or null)); + } + { + name = "url"; + packageId = "url"; + } + { + name = "wasm-bindgen"; + packageId = "wasm-bindgen"; + target = { target, features }: ("wasm32" == target."arch" or null); + } + { + name = "wasm-bindgen-futures"; + packageId = "wasm-bindgen-futures"; + target = { target, features }: ("wasm32" == target."arch" or null); + } + { + name = "web-sys"; + packageId = "web-sys"; + target = { target, features }: ("wasm32" == target."arch" or null); + features = [ "AbortController" "AbortSignal" "Headers" "Request" "RequestInit" "RequestMode" "Response" "Window" "FormData" "Blob" "BlobPropertyBag" "ServiceWorkerGlobalScope" "RequestCredentials" "File" "ReadableStream" "RequestCache" ]; + } + ]; + devDependencies = [ + { + name = "hyper"; + packageId = "hyper"; + usesDefaultFeatures = false; + target = { target, features }: (!("wasm32" == target."arch" or null)); + features = [ "http1" "http2" "client" "server" ]; + } + { + name = "hyper-util"; + packageId = "hyper-util"; + target = { target, features }: (!("wasm32" == target."arch" or null)); + features = [ "http1" "http2" "client" "client-legacy" "server-auto" "server-graceful" "tokio" ]; + } + { + name = "serde"; + packageId = "serde"; + target = { target, features }: (!("wasm32" == target."arch" or null)); + features = [ "derive" ]; + } + { + name = "tokio"; + packageId = "tokio"; + usesDefaultFeatures = false; + target = { target, features }: (!("wasm32" == target."arch" or null)); + features = [ "macros" "rt-multi-thread" ]; + } + { + name = "tower"; + packageId = "tower"; + usesDefaultFeatures = false; + features = [ "limit" ]; + } + { + name = "wasm-bindgen"; + packageId = "wasm-bindgen"; + target = { target, features }: ("wasm32" == target."arch" or null); + features = [ "serde-serialize" ]; + } + ]; + features = { + "__native-tls" = [ "dep:hyper-tls" "dep:native-tls-crate" "__tls" "dep:tokio-native-tls" ]; + "__native-tls-alpn" = [ "native-tls-crate?/alpn" "hyper-tls?/alpn" ]; + "__rustls" = [ "dep:hyper-rustls" "dep:tokio-rustls" "dep:rustls" "__tls" ]; + "__rustls-aws-lc-rs" = [ "hyper-rustls?/aws-lc-rs" "tokio-rustls?/aws-lc-rs" "rustls?/aws-lc-rs" "quinn?/rustls-aws-lc-rs" ]; + "__tls" = [ "dep:rustls-pki-types" "tokio/io-util" ]; + "blocking" = [ "dep:futures-channel" "futures-channel?/sink" "dep:futures-util" "futures-util?/io" "futures-util?/sink" "tokio/sync" ]; + "brotli" = [ "tower-http/decompression-br" ]; + "charset" = [ "dep:encoding_rs" "dep:mime" ]; + "cookies" = [ "dep:cookie_crate" "dep:cookie_store" ]; + "default" = [ "default-tls" "charset" "http2" "system-proxy" ]; + "default-tls" = [ "rustls" ]; + "deflate" = [ "tower-http/decompression-deflate" ]; + "form" = [ "dep:serde" "dep:serde_urlencoded" ]; + "gzip" = [ "tower-http/decompression-gzip" ]; + "hickory-dns" = [ "dep:hickory-resolver" "dep:once_cell" ]; + "http2" = [ "dep:h2" "hyper/http2" "hyper-util/http2" "hyper-rustls?/http2" ]; + "http3" = [ "rustls" "dep:h3" "dep:h3-quinn" "dep:quinn" "tokio/macros" ]; + "json" = [ "dep:serde" "dep:serde_json" ]; + "multipart" = [ "dep:mime_guess" "dep:futures-util" ]; + "native-tls" = [ "__native-tls" "__native-tls-alpn" ]; + "native-tls-no-alpn" = [ "__native-tls" ]; + "native-tls-vendored" = [ "__native-tls" "native-tls-crate?/vendored" "__native-tls-alpn" ]; + "native-tls-vendored-no-alpn" = [ "__native-tls" "native-tls-crate?/vendored" ]; + "query" = [ "dep:serde" "dep:serde_urlencoded" ]; + "rustls" = [ "__rustls-aws-lc-rs" "dep:rustls-platform-verifier" "__rustls" ]; + "rustls-no-provider" = [ "dep:rustls-platform-verifier" "__rustls" ]; + "stream" = [ "tokio/fs" "dep:futures-util" "dep:tokio-util" "dep:wasm-streams" ]; + "system-proxy" = [ "hyper-util/client-proxy-system" ]; + "zstd" = [ "tower-http/decompression-zstd" ]; + }; + resolvedDefaultFeatures = [ "__rustls" "__rustls-aws-lc-rs" "__tls" "json" "rustls" ]; + }; + "ring" = rec { + crateName = "ring"; + version = "0.17.14"; + edition = "2021"; + links = "ring_core_0_17_14_"; + sha256 = "1dw32gv19ccq4hsx3ribhpdzri1vnrlcfqb2vj41xn4l49n9ws54"; + dependencies = [ + { + name = "cfg-if"; + packageId = "cfg-if"; + usesDefaultFeatures = false; + } + { + name = "getrandom"; + packageId = "getrandom 0.2.17"; + } + { + name = "libc"; + packageId = "libc"; + usesDefaultFeatures = false; + target = { target, features }: ((("aarch64" == target."arch" or null) && ("little" == target."endian" or null)) && ("apple" == target."vendor" or null) && (("ios" == target."os" or null) || ("macos" == target."os" or null) || ("tvos" == target."os" or null) || ("visionos" == target."os" or null) || ("watchos" == target."os" or null))); + } + { + name = "libc"; + packageId = "libc"; + usesDefaultFeatures = false; + target = { target, features }: (((("aarch64" == target."arch" or null) && ("little" == target."endian" or null)) || (("arm" == target."arch" or null) && ("little" == target."endian" or null))) && (("android" == target."os" or null) || ("linux" == target."os" or null))); + } + { + name = "untrusted"; + packageId = "untrusted"; + } + { + name = "windows-sys"; + packageId = "windows-sys 0.52.0"; + target = { target, features }: ((("aarch64" == target."arch" or null) && ("little" == target."endian" or null)) && ("windows" == target."os" or null)); + features = [ "Win32_Foundation" "Win32_System_Threading" ]; + } + ]; + buildDependencies = [ + { + name = "cc"; + packageId = "cc"; + usesDefaultFeatures = false; + } + ]; + devDependencies = [ + { + name = "libc"; + packageId = "libc"; + usesDefaultFeatures = false; + target = { target, features }: ((target."unix" or false) || (target."windows" or false) || ("wasi" == target."os" or null)); + } + ]; + features = { + "default" = [ "alloc" "dev_urandom_fallback" ]; + "std" = [ "alloc" ]; + "wasm32_unknown_unknown_js" = [ "getrandom/js" ]; + }; + resolvedDefaultFeatures = [ "alloc" "default" "dev_urandom_fallback" "wasm32_unknown_unknown_js" ]; + }; + "roff" = rec { + crateName = "roff"; + version = "0.2.2"; + edition = "2021"; + sha256 = "1wyqz6m0pm4p6wzhwhahvcidfm7nwb38zl4q7ha940pn3w66dy48"; + + }; + "rstest" = rec { + crateName = "rstest"; + version = "0.26.1"; + edition = "2021"; + sha256 = "0jcxhg9mxlr2p9an14algbcq6ax7r0sk1w1kbals5aiv0qy1k8zm"; + authors = [ + "Michele d'Amico " + ]; + dependencies = [ + { + name = "futures-timer"; + packageId = "futures-timer"; + optional = true; + } + { + name = "futures-util"; + packageId = "futures-util"; + optional = true; + } + { + name = "rstest_macros"; + packageId = "rstest_macros"; + usesDefaultFeatures = false; + } + ]; + features = { + "async-timeout" = [ "dep:futures-timer" "dep:futures-util" "rstest_macros/async-timeout" ]; + "crate-name" = [ "rstest_macros/crate-name" ]; + "default" = [ "async-timeout" "crate-name" ]; + }; + resolvedDefaultFeatures = [ "async-timeout" "crate-name" "default" ]; + }; + "rstest_macros" = rec { + crateName = "rstest_macros"; + version = "0.26.1"; + edition = "2021"; + sha256 = "185v185wn2x3llp3nn1i7h44vi5ffnnsj8b1a32m2ygzy08m714w"; + procMacro = true; + authors = [ + "Michele d'Amico " + ]; + dependencies = [ + { + name = "cfg-if"; + packageId = "cfg-if"; + } + { + name = "glob"; + packageId = "glob"; + } + { + name = "proc-macro-crate"; + packageId = "proc-macro-crate"; + optional = true; + } + { + name = "proc-macro2"; + packageId = "proc-macro2"; + } + { + name = "quote"; + packageId = "quote"; + } + { + name = "regex"; + packageId = "regex"; + } + { + name = "relative-path"; + packageId = "relative-path"; + } + { + name = "syn"; + packageId = "syn 2.0.117"; + features = [ "full" "parsing" "extra-traits" "visit" "visit-mut" ]; + } + { + name = "unicode-ident"; + packageId = "unicode-ident"; + } + ]; + buildDependencies = [ + { + name = "rustc_version"; + packageId = "rustc_version"; + } + ]; + features = { + "crate-name" = [ "dep:proc-macro-crate" ]; + "default" = [ "async-timeout" "crate-name" ]; + }; + resolvedDefaultFeatures = [ "async-timeout" "crate-name" ]; + }; + "rust-embed" = rec { + crateName = "rust-embed"; + version = "8.11.0"; + edition = "2018"; + sha256 = "09wdk33zavfn2w3id20jidywvf4abfjg1wbfy21psdss6nwkq484"; + libName = "rust_embed"; + authors = [ + "pyrossh" + ]; + dependencies = [ + { + name = "rust-embed-impl"; + packageId = "rust-embed-impl"; + } + { + name = "rust-embed-utils"; packageId = "rust-embed-utils"; } { @@ -9675,9 +10040,9 @@ rec { }; "rust-embed-impl" = rec { crateName = "rust-embed-impl"; - version = "8.7.2"; + version = "8.11.0"; edition = "2018"; - sha256 = "171lshvdh122ypbf23gmhvrqnhbk0q9g27gaq6g82w9b76jg2rb0"; + sha256 = "1ancyg87vx07w5m39538bwvj3hlizk8fd15kk8argsf8qzj042fs"; procMacro = true; libName = "rust_embed_impl"; authors = [ @@ -9698,7 +10063,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.106"; + packageId = "syn 2.0.117"; usesDefaultFeatures = false; features = [ "derive" "parsing" "proc-macro" "printing" ]; } @@ -9716,9 +10081,9 @@ rec { }; "rust-embed-utils" = rec { crateName = "rust-embed-utils"; - version = "8.7.2"; + version = "8.11.0"; edition = "2018"; - sha256 = "151m1966qk75y10msazdp0xj4fqw1khcry0z946bf84bcj0hrk7n"; + sha256 = "1cf3wmwdivxqzizav813y42ln9r9jya3q1xi6finyzzywq5yzkav"; libName = "rust_embed_utils"; authors = [ "pyrossh" @@ -9740,32 +10105,18 @@ rec { "mime_guess" = [ "dep:mime_guess" ]; }; }; - "rustc-hash 1.1.0" = rec { + "rustc-hash" = rec { crateName = "rustc-hash"; - version = "1.1.0"; - edition = "2015"; - sha256 = "1qkc5khrmv5pqi5l5ca9p5nl5hs742cagrndhbrlk3dhlrx3zm08"; + version = "2.1.1"; + edition = "2021"; + sha256 = "03gz5lvd9ghcwsal022cgkq67dmimcgdjghfb5yb5d352ga06xrm"; libName = "rustc_hash"; authors = [ "The Rust Project Developers" ]; features = { "default" = [ "std" ]; - }; - resolvedDefaultFeatures = [ "default" "std" ]; - }; - "rustc-hash 2.1.1" = rec { - crateName = "rustc-hash"; - version = "2.1.1"; - edition = "2021"; - sha256 = "03gz5lvd9ghcwsal022cgkq67dmimcgdjghfb5yb5d352ga06xrm"; - libName = "rustc_hash"; - authors = [ - "The Rust Project Developers" - ]; - features = { - "default" = [ "std" ]; - "rand" = [ "dep:rand" "std" ]; + "rand" = [ "dep:rand" "std" ]; }; resolvedDefaultFeatures = [ "default" "std" ]; }; @@ -9782,122 +10133,11 @@ rec { ]; }; - "rustix 0.38.44" = rec { - crateName = "rustix"; - version = "0.38.44"; - edition = "2021"; - sha256 = "0m61v0h15lf5rrnbjhcb9306bgqrhskrqv7i1n0939dsw8dbrdgx"; - authors = [ - "Dan Gohman " - "Jakub Konka " - ]; - dependencies = [ - { - name = "bitflags"; - packageId = "bitflags"; - usesDefaultFeatures = false; - } - { - name = "errno"; - packageId = "errno"; - rename = "libc_errno"; - optional = true; - usesDefaultFeatures = false; - target = { target, features }: ((!(target."rustix_use_libc" or false)) && (!(target."miri" or false)) && ("linux" == target."os" or null) && (("little" == target."endian" or null) || ("s390x" == target."arch" or null)) && (("arm" == target."arch" or null) || (("aarch64" == target."arch" or null) && ("64" == target."pointer_width" or null)) || ("riscv64" == target."arch" or null) || ((target."rustix_use_experimental_asm" or false) && ("powerpc64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("s390x" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips32r6" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64r6" == target."arch" or null)) || ("x86" == target."arch" or null) || (("x86_64" == target."arch" or null) && ("64" == target."pointer_width" or null)))); - } - { - name = "errno"; - packageId = "errno"; - rename = "libc_errno"; - usesDefaultFeatures = false; - target = { target, features }: ((!(target."windows" or false)) && ((target."rustix_use_libc" or false) || (target."miri" or false) || (!(("linux" == target."os" or null) && (("little" == target."endian" or null) || ("s390x" == target."arch" or null)) && (("arm" == target."arch" or null) || (("aarch64" == target."arch" or null) && ("64" == target."pointer_width" or null)) || ("riscv64" == target."arch" or null) || ((target."rustix_use_experimental_asm" or false) && ("powerpc64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("s390x" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips32r6" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64r6" == target."arch" or null)) || ("x86" == target."arch" or null) || (("x86_64" == target."arch" or null) && ("64" == target."pointer_width" or null))))))); - } - { - name = "errno"; - packageId = "errno"; - rename = "libc_errno"; - usesDefaultFeatures = false; - target = { target, features }: (target."windows" or false); - } - { - name = "libc"; - packageId = "libc"; - optional = true; - usesDefaultFeatures = false; - target = { target, features }: ((!(target."rustix_use_libc" or false)) && (!(target."miri" or false)) && ("linux" == target."os" or null) && (("little" == target."endian" or null) || ("s390x" == target."arch" or null)) && (("arm" == target."arch" or null) || (("aarch64" == target."arch" or null) && ("64" == target."pointer_width" or null)) || ("riscv64" == target."arch" or null) || ((target."rustix_use_experimental_asm" or false) && ("powerpc64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("s390x" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips32r6" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64r6" == target."arch" or null)) || ("x86" == target."arch" or null) || (("x86_64" == target."arch" or null) && ("64" == target."pointer_width" or null)))); - } - { - name = "libc"; - packageId = "libc"; - usesDefaultFeatures = false; - target = { target, features }: ((!(target."windows" or false)) && ((target."rustix_use_libc" or false) || (target."miri" or false) || (!(("linux" == target."os" or null) && (("little" == target."endian" or null) || ("s390x" == target."arch" or null)) && (("arm" == target."arch" or null) || (("aarch64" == target."arch" or null) && ("64" == target."pointer_width" or null)) || ("riscv64" == target."arch" or null) || ((target."rustix_use_experimental_asm" or false) && ("powerpc64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("s390x" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips32r6" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64r6" == target."arch" or null)) || ("x86" == target."arch" or null) || (("x86_64" == target."arch" or null) && ("64" == target."pointer_width" or null))))))); - } - { - name = "linux-raw-sys"; - packageId = "linux-raw-sys 0.4.15"; - usesDefaultFeatures = false; - target = { target, features }: ((("android" == target."os" or null) || ("linux" == target."os" or null)) && ((target."rustix_use_libc" or false) || (target."miri" or false) || (!(("linux" == target."os" or null) && (("little" == target."endian" or null) || ("s390x" == target."arch" or null)) && (("arm" == target."arch" or null) || (("aarch64" == target."arch" or null) && ("64" == target."pointer_width" or null)) || ("riscv64" == target."arch" or null) || ((target."rustix_use_experimental_asm" or false) && ("powerpc64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("s390x" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips32r6" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64r6" == target."arch" or null)) || ("x86" == target."arch" or null) || (("x86_64" == target."arch" or null) && ("64" == target."pointer_width" or null))))))); - features = [ "general" "ioctl" "no_std" ]; - } - { - name = "linux-raw-sys"; - packageId = "linux-raw-sys 0.4.15"; - usesDefaultFeatures = false; - target = { target, features }: ((!(target."rustix_use_libc" or false)) && (!(target."miri" or false)) && ("linux" == target."os" or null) && (("little" == target."endian" or null) || ("s390x" == target."arch" or null)) && (("arm" == target."arch" or null) || (("aarch64" == target."arch" or null) && ("64" == target."pointer_width" or null)) || ("riscv64" == target."arch" or null) || ((target."rustix_use_experimental_asm" or false) && ("powerpc64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("s390x" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips32r6" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64r6" == target."arch" or null)) || ("x86" == target."arch" or null) || (("x86_64" == target."arch" or null) && ("64" == target."pointer_width" or null)))); - features = [ "general" "errno" "ioctl" "no_std" "elf" ]; - } - { - name = "windows-sys"; - packageId = "windows-sys 0.59.0"; - target = { target, features }: (target."windows" or false); - features = [ "Win32_Foundation" "Win32_Networking_WinSock" "Win32_NetworkManagement_IpHelper" "Win32_System_Threading" ]; - } - ]; - devDependencies = [ - { - name = "errno"; - packageId = "errno"; - rename = "libc_errno"; - usesDefaultFeatures = false; - } - { - name = "libc"; - packageId = "libc"; - } - ]; - features = { - "all-apis" = [ "event" "fs" "io_uring" "mm" "mount" "net" "param" "pipe" "process" "procfs" "pty" "rand" "runtime" "shm" "stdio" "system" "termios" "thread" "time" ]; - "compiler_builtins" = [ "dep:compiler_builtins" ]; - "core" = [ "dep:core" ]; - "default" = [ "std" "use-libc-auxv" ]; - "io_uring" = [ "event" "fs" "net" "linux-raw-sys/io_uring" ]; - "itoa" = [ "dep:itoa" ]; - "libc" = [ "dep:libc" ]; - "libc-extra-traits" = [ "libc?/extra_traits" ]; - "libc_errno" = [ "dep:libc_errno" ]; - "linux_latest" = [ "linux_4_11" ]; - "net" = [ "linux-raw-sys/net" "linux-raw-sys/netlink" "linux-raw-sys/if_ether" "linux-raw-sys/xdp" ]; - "once_cell" = [ "dep:once_cell" ]; - "param" = [ "fs" ]; - "process" = [ "linux-raw-sys/prctl" ]; - "procfs" = [ "once_cell" "itoa" "fs" ]; - "pty" = [ "itoa" "fs" ]; - "runtime" = [ "linux-raw-sys/prctl" ]; - "rustc-dep-of-std" = [ "core" "rustc-std-workspace-alloc" "compiler_builtins" "linux-raw-sys/rustc-dep-of-std" "bitflags/rustc-dep-of-std" "compiler_builtins?/rustc-dep-of-std" ]; - "rustc-std-workspace-alloc" = [ "dep:rustc-std-workspace-alloc" ]; - "shm" = [ "fs" ]; - "std" = [ "bitflags/std" "alloc" "libc?/std" "libc_errno?/std" "libc-extra-traits" ]; - "system" = [ "linux-raw-sys/system" ]; - "thread" = [ "linux-raw-sys/prctl" ]; - "use-libc" = [ "libc_errno" "libc" "libc-extra-traits" ]; - }; - resolvedDefaultFeatures = [ "alloc" "fs" "libc-extra-traits" "std" ]; - }; - "rustix 1.1.2" = rec { + "rustix" = rec { crateName = "rustix"; - version = "1.1.2"; + version = "1.1.4"; edition = "2021"; - sha256 = "0gpz343xfzx16x82s1x336n0kr49j02cvhgxdvaq86jmqnigh5fd"; + sha256 = "14511f9yjqh0ix07xjrjpllah3325774gfwi9zpq72sip5jlbzmn"; authors = [ "Dan Gohman " "Jakub Konka " @@ -9945,14 +10185,14 @@ rec { } { name = "linux-raw-sys"; - packageId = "linux-raw-sys 0.11.0"; + packageId = "linux-raw-sys"; usesDefaultFeatures = false; - target = { target, features }: ((("linux" == target."os" or null)) && ((target."rustix_use_libc" or false) || (target."miri" or false) || (!(("linux" == target."os" or null) && (("little" == target."endian" or null) || (("s390x" == target."arch" or null) || ("powerpc" == target."arch" or null))) && (("arm" == target."arch" or null) || (("aarch64" == target."arch" or null) && ("64" == target."pointer_width" or null)) || ("riscv64" == target."arch" or null) || ((target."rustix_use_experimental_asm" or false) && ("powerpc" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("powerpc64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("s390x" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips32r6" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64r6" == target."arch" or null)) || ("x86" == target."arch" or null) || (("x86_64" == target."arch" or null) && ("64" == target."pointer_width" or null))))))); + target = { target, features }: ((("linux" == target."os" or null) || ("android" == target."os" or null)) && ((target."rustix_use_libc" or false) || (target."miri" or false) || (!(("linux" == target."os" or null) && (("little" == target."endian" or null) || (("s390x" == target."arch" or null) || ("powerpc" == target."arch" or null))) && (("arm" == target."arch" or null) || (("aarch64" == target."arch" or null) && ("64" == target."pointer_width" or null)) || ("riscv64" == target."arch" or null) || ((target."rustix_use_experimental_asm" or false) && ("powerpc" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("powerpc64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("s390x" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips32r6" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64r6" == target."arch" or null)) || ("x86" == target."arch" or null) || (("x86_64" == target."arch" or null) && ("64" == target."pointer_width" or null))))))); features = [ "general" "ioctl" "no_std" ]; } { name = "linux-raw-sys"; - packageId = "linux-raw-sys 0.11.0"; + packageId = "linux-raw-sys"; usesDefaultFeatures = false; target = { target, features }: ((!(target."rustix_use_libc" or false)) && (!(target."miri" or false)) && ("linux" == target."os" or null) && (("little" == target."endian" or null) || (("s390x" == target."arch" or null) || ("powerpc" == target."arch" or null))) && (("arm" == target."arch" or null) || (("aarch64" == target."arch" or null) && ("64" == target."pointer_width" or null)) || ("riscv64" == target."arch" or null) || ((target."rustix_use_experimental_asm" or false) && ("powerpc" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("powerpc64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("s390x" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips32r6" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64" == target."arch" or null)) || ((target."rustix_use_experimental_asm" or false) && ("mips64r6" == target."arch" or null)) || ("x86" == target."arch" or null) || (("x86_64" == target."arch" or null) && ("64" == target."pointer_width" or null)))); features = [ "auxvec" "general" "errno" "ioctl" "no_std" "elf" ]; @@ -10002,10 +10242,16 @@ rec { }; "rustls" = rec { crateName = "rustls"; - version = "0.23.33"; + version = "0.23.37"; edition = "2021"; - sha256 = "0b7qwspimfxf18mammg1yammlsyn4f6iahz0lnbvn06ajsj087km"; + sha256 = "193k5h0wcih6ghvkrxyzwncivr1bd3a8yw3lzp13pzfcbz5jb03m"; dependencies = [ + { + name = "aws-lc-rs"; + packageId = "aws-lc-rs"; + optional = true; + usesDefaultFeatures = false; + } { name = "log"; packageId = "log"; @@ -10067,47 +10313,13 @@ rec { "std" = [ "webpki/std" "pki-types/std" "once_cell/std" ]; "zlib" = [ "dep:zlib-rs" ]; }; - resolvedDefaultFeatures = [ "log" "logging" "ring" "std" "tls12" ]; - }; - "rustls-native-certs 0.7.3" = rec { - crateName = "rustls-native-certs"; - version = "0.7.3"; - edition = "2021"; - sha256 = "1r9ib5gwkfci2wbqnbh44nigvrfgxs4n1x89js82w97dxsab7gz5"; - libName = "rustls_native_certs"; - dependencies = [ - { - name = "openssl-probe"; - packageId = "openssl-probe"; - target = { target, features }: ((target."unix" or false) && (!("macos" == target."os" or null))); - } - { - name = "rustls-pemfile"; - packageId = "rustls-pemfile"; - } - { - name = "rustls-pki-types"; - packageId = "rustls-pki-types"; - rename = "pki-types"; - } - { - name = "schannel"; - packageId = "schannel"; - target = { target, features }: (target."windows" or false); - } - { - name = "security-framework"; - packageId = "security-framework 2.11.1"; - target = { target, features }: ("macos" == target."os" or null); - } - ]; - + resolvedDefaultFeatures = [ "aws-lc-rs" "aws_lc_rs" "default" "log" "logging" "prefer-post-quantum" "ring" "std" "tls12" ]; }; - "rustls-native-certs 0.8.2" = rec { + "rustls-native-certs" = rec { crateName = "rustls-native-certs"; - version = "0.8.2"; + version = "0.8.3"; edition = "2021"; - sha256 = "08vr6gyz78c4zmbi8r307pybyrs7hf81wl5s35hm7h5hxcbxk04r"; + sha256 = "0qrajg2n90bcr3bcq6j95gjm7a9lirfkkdmjj32419dyyzan0931"; libName = "rustls_native_certs"; dependencies = [ { @@ -10128,36 +10340,17 @@ rec { } { name = "security-framework"; - packageId = "security-framework 3.5.1"; + packageId = "security-framework"; target = { target, features }: ("macos" == target."os" or null); } ]; }; - "rustls-pemfile" = rec { - crateName = "rustls-pemfile"; - version = "2.2.0"; - edition = "2018"; - sha256 = "0l3f3mrfkgdjrava7ibwzgwc4h3dljw3pdkbsi9rkwz3zvji9qyw"; - libName = "rustls_pemfile"; - dependencies = [ - { - name = "rustls-pki-types"; - packageId = "rustls-pki-types"; - rename = "pki-types"; - } - ]; - features = { - "default" = [ "std" ]; - "std" = [ "pki-types/std" ]; - }; - resolvedDefaultFeatures = [ "default" "std" ]; - }; "rustls-pki-types" = rec { crateName = "rustls-pki-types"; - version = "1.12.0"; + version = "1.14.0"; edition = "2021"; - sha256 = "0yawbdpix8jif6s8zj1p2hbyb7y3bj66fhx0y7hyf4qh4964m6i2"; + sha256 = "1p9zsgslvwzzkzhm6bqicffqndr4jpx67992b0vl0pi21a5hy15y"; libName = "rustls_pki_types"; dependencies = [ { @@ -10181,13 +10374,152 @@ rec { }; resolvedDefaultFeatures = [ "alloc" "default" "std" "web" "web-time" ]; }; + "rustls-platform-verifier" = rec { + crateName = "rustls-platform-verifier"; + version = "0.6.2"; + edition = "2021"; + sha256 = "110pqkn3px9115pb6h6a23cq738v29gbp559dfvpmbibqzmzx68x"; + libName = "rustls_platform_verifier"; + dependencies = [ + { + name = "core-foundation"; + packageId = "core-foundation"; + target = { target, features }: (("apple" == target."vendor" or null)); + } + { + name = "core-foundation-sys"; + packageId = "core-foundation-sys"; + target = { target, features }: (("apple" == target."vendor" or null)); + } + { + name = "jni"; + packageId = "jni"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "jni"; + packageId = "jni"; + usesDefaultFeatures = false; + target = { target, features }: ("android" == target."os" or null); + } + { + name = "log"; + packageId = "log"; + } + { + name = "once_cell"; + packageId = "once_cell"; + optional = true; + } + { + name = "once_cell"; + packageId = "once_cell"; + target = { target, features }: ("android" == target."os" or null); + } + { + name = "rustls"; + packageId = "rustls"; + usesDefaultFeatures = false; + features = [ "std" ]; + } + { + name = "rustls-native-certs"; + packageId = "rustls-native-certs"; + target = { target, features }: ((target."unix" or false) && (!("android" == target."os" or null)) && (!("apple" == target."vendor" or null)) && (!("wasm32" == target."arch" or null))); + } + { + name = "rustls-platform-verifier-android"; + packageId = "rustls-platform-verifier-android"; + target = { target, features }: ("android" == target."os" or null); + } + { + name = "rustls-webpki"; + packageId = "rustls-webpki"; + rename = "webpki"; + usesDefaultFeatures = false; + target = { target, features }: ((target."unix" or false) && (!("android" == target."os" or null)) && (!("apple" == target."vendor" or null)) && (!("wasm32" == target."arch" or null))); + } + { + name = "rustls-webpki"; + packageId = "rustls-webpki"; + rename = "webpki"; + usesDefaultFeatures = false; + target = { target, features }: ("wasm32" == target."arch" or null); + } + { + name = "rustls-webpki"; + packageId = "rustls-webpki"; + rename = "webpki"; + usesDefaultFeatures = false; + target = { target, features }: ("android" == target."os" or null); + } + { + name = "security-framework"; + packageId = "security-framework"; + target = { target, features }: (("apple" == target."vendor" or null)); + } + { + name = "security-framework-sys"; + packageId = "security-framework-sys"; + target = { target, features }: (("apple" == target."vendor" or null)); + } + { + name = "webpki-root-certs"; + packageId = "webpki-root-certs"; + target = { target, features }: ("wasm32" == target."arch" or null); + } + { + name = "windows-sys"; + packageId = "windows-sys 0.61.2"; + usesDefaultFeatures = false; + target = { target, features }: (target."windows" or false); + features = [ "Win32_Foundation" "Win32_Security_Cryptography" ]; + } + ]; + devDependencies = [ + { + name = "rustls"; + packageId = "rustls"; + usesDefaultFeatures = false; + features = [ "ring" ]; + } + { + name = "webpki-root-certs"; + packageId = "webpki-root-certs"; + } + ]; + features = { + "android_logger" = [ "dep:android_logger" ]; + "base64" = [ "dep:base64" ]; + "cert-logging" = [ "base64" ]; + "docsrs" = [ "jni" "once_cell" ]; + "ffi-testing" = [ "android_logger" "rustls/ring" ]; + "jni" = [ "dep:jni" ]; + "once_cell" = [ "dep:once_cell" ]; + }; + }; + "rustls-platform-verifier-android" = rec { + crateName = "rustls-platform-verifier-android"; + version = "0.1.1"; + edition = "2021"; + sha256 = "13vq6sxsgz9547xm2zbdxiw8x7ad1g8n8ax6xvxsjqszk7q6awgq"; + libName = "rustls_platform_verifier_android"; + + }; "rustls-webpki" = rec { crateName = "rustls-webpki"; - version = "0.103.7"; + version = "0.103.9"; edition = "2021"; - sha256 = "1gqlsd0yqiqch97g0wbsnbmyrp75j6nbzfpf8dmhxa78j50ky2z1"; + sha256 = "0lwg1nnyv7pp2lfwwjhy81bxm233am99jnsp3iymdhd6k8827pyp"; libName = "webpki"; dependencies = [ + { + name = "aws-lc-rs"; + packageId = "aws-lc-rs"; + optional = true; + usesDefaultFeatures = false; + } { name = "ring"; packageId = "ring"; @@ -10214,7 +10546,7 @@ rec { "ring" = [ "dep:ring" ]; "std" = [ "alloc" "pki-types/std" ]; }; - resolvedDefaultFeatures = [ "alloc" "ring" "std" ]; + resolvedDefaultFeatures = [ "alloc" "aws-lc-rs" "ring" "std" ]; }; "rustversion" = rec { crateName = "rustversion"; @@ -10230,9 +10562,9 @@ rec { }; "ryu" = rec { crateName = "ryu"; - version = "1.0.20"; - edition = "2018"; - sha256 = "07s855l8sb333h6bpn24pka5sp7hjk2w667xy6a0khkf6sqv5lr8"; + version = "1.0.23"; + edition = "2021"; + sha256 = "0zs70sg00l2fb9jwrf6cbkdyscjs53anrvai2hf7npyyfi5blx4p"; authors = [ "David Tolnay " ]; @@ -10285,9 +10617,9 @@ rec { }; "schemars" = rec { crateName = "schemars"; - version = "0.8.22"; + version = "1.2.1"; edition = "2021"; - sha256 = "05an9nbi18ynyxv1rjmwbg6j08j0496hd64mjggh53mwp3hjmgrz"; + sha256 = "1k16qzpdpy6p9hrh18q2l6cwawxzyqi25f8masa13l0wm8v2zd52"; authors = [ "Graham Esau " ]; @@ -10296,6 +10628,10 @@ rec { name = "dyn-clone"; packageId = "dyn-clone"; } + { + name = "ref-cast"; + packageId = "ref-cast"; + } { name = "schemars_derive"; packageId = "schemars_derive"; @@ -10304,56 +10640,65 @@ rec { { name = "serde"; packageId = "serde"; - features = [ "derive" ]; + usesDefaultFeatures = false; + features = [ "alloc" ]; } { name = "serde_json"; packageId = "serde_json"; + usesDefaultFeatures = false; + features = [ "alloc" ]; } { name = "url"; packageId = "url"; + rename = "url2"; optional = true; usesDefaultFeatures = false; } ]; + devDependencies = [ + { + name = "serde"; + packageId = "serde"; + features = [ "derive" ]; + } + { + name = "url"; + packageId = "url"; + rename = "url2"; + usesDefaultFeatures = false; + features = [ "serde" "std" ]; + } + ]; features = { - "arrayvec" = [ "arrayvec05" ]; - "arrayvec05" = [ "dep:arrayvec05" ]; "arrayvec07" = [ "dep:arrayvec07" ]; - "bigdecimal" = [ "bigdecimal03" ]; - "bigdecimal03" = [ "dep:bigdecimal03" ]; "bigdecimal04" = [ "dep:bigdecimal04" ]; - "bytes" = [ "dep:bytes" ]; - "chrono" = [ "dep:chrono" ]; - "default" = [ "derive" ]; + "bytes1" = [ "dep:bytes1" ]; + "chrono04" = [ "dep:chrono04" ]; + "default" = [ "derive" "std" ]; "derive" = [ "schemars_derive" ]; - "derive_json_schema" = [ "impl_json_schema" ]; - "either" = [ "dep:either" ]; - "enumset" = [ "dep:enumset" ]; - "impl_json_schema" = [ "derive" ]; - "indexmap" = [ "dep:indexmap" ]; - "indexmap1" = [ "indexmap" ]; + "either1" = [ "dep:either1" ]; "indexmap2" = [ "dep:indexmap2" ]; - "preserve_order" = [ "indexmap" ]; + "jiff02" = [ "dep:jiff02" ]; + "preserve_order" = [ "serde_json/preserve_order" ]; "raw_value" = [ "serde_json/raw_value" ]; - "rust_decimal" = [ "dep:rust_decimal" ]; + "rust_decimal1" = [ "dep:rust_decimal1" ]; "schemars_derive" = [ "dep:schemars_derive" ]; - "semver" = [ "dep:semver" ]; - "smallvec" = [ "dep:smallvec" ]; - "smol_str" = [ "dep:smol_str" ]; - "url" = [ "dep:url" ]; - "uuid" = [ "uuid08" ]; - "uuid08" = [ "dep:uuid08" ]; + "semver1" = [ "dep:semver1" ]; + "smallvec1" = [ "dep:smallvec1" ]; + "smol_str02" = [ "dep:smol_str02" ]; + "smol_str03" = [ "dep:smol_str03" ]; + "url2" = [ "dep:url2" ]; "uuid1" = [ "dep:uuid1" ]; }; - resolvedDefaultFeatures = [ "default" "derive" "schemars_derive" "url" ]; + resolvedDefaultFeatures = [ "default" "derive" "schemars_derive" "std" "url2" ]; }; "schemars_derive" = rec { crateName = "schemars_derive"; - version = "0.8.22"; + version = "1.2.1"; edition = "2021"; - sha256 = "0kakyzrp5801s4i043l4ilv96lzimnlh01pap958h66n99w6bqij"; + sha256 = "0zrh1ckcc63sqy5hyhnh2lbxh4vmbij2z4f1g5za1vmayi85n4bx"; procMacro = true; authors = [ "Graham Esau " @@ -10373,7 +10718,13 @@ rec { } { name = "syn"; - packageId = "syn 2.0.106"; + packageId = "syn 2.0.117"; + } + ]; + devDependencies = [ + { + name = "syn"; + packageId = "syn 2.0.117"; features = [ "extra-traits" ]; } ]; @@ -10411,58 +10762,11 @@ rec { "serde" = [ "dep:serde" ]; }; }; - "security-framework 2.11.1" = rec { - crateName = "security-framework"; - version = "2.11.1"; - edition = "2021"; - sha256 = "00ldclwx78dm61v7wkach9lcx76awlrv0fdgjdwch4dmy12j4yw9"; - libName = "security_framework"; - authors = [ - "Steven Fackler " - "Kornel " - ]; - dependencies = [ - { - name = "bitflags"; - packageId = "bitflags"; - } - { - name = "core-foundation"; - packageId = "core-foundation 0.9.4"; - } - { - name = "core-foundation-sys"; - packageId = "core-foundation-sys"; - } - { - name = "libc"; - packageId = "libc"; - } - { - name = "security-framework-sys"; - packageId = "security-framework-sys"; - usesDefaultFeatures = false; - } - ]; - features = { - "OSX_10_10" = [ "OSX_10_9" "security-framework-sys/OSX_10_10" ]; - "OSX_10_11" = [ "OSX_10_10" "security-framework-sys/OSX_10_11" ]; - "OSX_10_12" = [ "OSX_10_11" "security-framework-sys/OSX_10_12" ]; - "OSX_10_13" = [ "OSX_10_12" "security-framework-sys/OSX_10_13" "alpn" "session-tickets" "serial-number-bigint" ]; - "OSX_10_14" = [ "OSX_10_13" "security-framework-sys/OSX_10_14" ]; - "OSX_10_15" = [ "OSX_10_14" "security-framework-sys/OSX_10_15" ]; - "OSX_10_9" = [ "security-framework-sys/OSX_10_9" ]; - "default" = [ "OSX_10_12" ]; - "log" = [ "dep:log" ]; - "serial-number-bigint" = [ "dep:num-bigint" ]; - }; - resolvedDefaultFeatures = [ "OSX_10_10" "OSX_10_11" "OSX_10_12" "OSX_10_9" "default" ]; - }; - "security-framework 3.5.1" = rec { + "security-framework" = rec { crateName = "security-framework"; - version = "3.5.1"; - edition = "2021"; - sha256 = "1vz6pf5qjgx8s0hg805hq6qbcqnll6fs63irvrpgcc7qx91p6adk"; + version = "3.7.0"; + edition = "2024"; + sha256 = "07fd0j29j8yczb3hd430vwz784lx9knb5xwbvqna1nbkbivvrx5p"; libName = "security_framework"; authors = [ "Steven Fackler " @@ -10475,7 +10779,7 @@ rec { } { name = "core-foundation"; - packageId = "core-foundation 0.10.1"; + packageId = "core-foundation"; } { name = "core-foundation-sys"; @@ -10492,21 +10796,19 @@ rec { } ]; features = { - "OSX_10_12" = [ "security-framework-sys/OSX_10_12" ]; - "OSX_10_13" = [ "OSX_10_12" "security-framework-sys/OSX_10_13" "alpn" "session-tickets" ]; - "OSX_10_14" = [ "OSX_10_13" "security-framework-sys/OSX_10_14" ]; - "OSX_10_15" = [ "OSX_10_14" "security-framework-sys/OSX_10_15" ]; - "default" = [ "OSX_10_12" ]; + "OSX_10_15" = [ "security-framework-sys/OSX_10_15" ]; + "default" = [ "OSX_10_14" "alpn" "session-tickets" ]; "log" = [ "dep:log" ]; + "macos-12" = [ "security-framework-sys/macos-12" ]; "sync-keychain" = [ "OSX_10_13" ]; }; - resolvedDefaultFeatures = [ "OSX_10_12" "default" ]; + resolvedDefaultFeatures = [ "OSX_10_14" "alpn" "default" "session-tickets" ]; }; "security-framework-sys" = rec { crateName = "security-framework-sys"; - version = "2.15.0"; + version = "2.17.0"; edition = "2021"; - sha256 = "1h6mijxnfrwvl1y4dzwn3m877j6dqp9qn3g37i954j5czazhq7yc"; + sha256 = "1qr0w0y9iwvmv3hwg653q1igngnc5b74xcf0679cbv23z0fnkqkc"; libName = "security_framework_sys"; authors = [ "Steven Fackler " @@ -10523,15 +10825,9 @@ rec { } ]; features = { - "OSX_10_10" = [ "OSX_10_9" ]; - "OSX_10_11" = [ "OSX_10_10" ]; - "OSX_10_12" = [ "OSX_10_11" ]; - "OSX_10_13" = [ "OSX_10_12" ]; - "OSX_10_14" = [ "OSX_10_13" ]; - "OSX_10_15" = [ "OSX_10_14" ]; - "default" = [ "OSX_10_12" ]; + "default" = [ "OSX_10_13" ]; }; - resolvedDefaultFeatures = [ "OSX_10_10" "OSX_10_11" "OSX_10_12" "OSX_10_9" ]; + resolvedDefaultFeatures = [ "OSX_10_13" "default" ]; }; "semver" = rec { crateName = "semver"; @@ -10594,7 +10890,7 @@ rec { "std" = [ "serde_core/std" ]; "unstable" = [ "serde_core/unstable" ]; }; - resolvedDefaultFeatures = [ "alloc" "default" "derive" "serde_derive" "std" ]; + resolvedDefaultFeatures = [ "alloc" "default" "derive" "rc" "serde_derive" "std" ]; }; "serde-value" = rec { crateName = "serde-value"; @@ -10642,7 +10938,7 @@ rec { features = { "default" = [ "std" "result" ]; }; - resolvedDefaultFeatures = [ "alloc" "default" "result" "std" ]; + resolvedDefaultFeatures = [ "alloc" "default" "rc" "result" "std" ]; }; "serde_derive" = rec { crateName = "serde_derive"; @@ -10669,7 +10965,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.106"; + packageId = "syn 2.0.117"; usesDefaultFeatures = false; features = [ "clone-impls" "derive" "parsing" "printing" "proc-macro" ]; } @@ -10701,7 +10997,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.106"; + packageId = "syn 2.0.117"; usesDefaultFeatures = false; features = [ "clone-impls" "derive" "parsing" "printing" ]; } @@ -10710,9 +11006,9 @@ rec { }; "serde_json" = rec { crateName = "serde_json"; - version = "1.0.145"; + version = "1.0.149"; edition = "2021"; - sha256 = "1767y6kxjf7gwpbv8bkhgwc50nhg46mqwm9gy9n122f7v1k6yaj0"; + sha256 = "11jdx4vilzrjjd1dpgy67x5lgzr0laplz30dhv75lnf5ffa07z43"; authors = [ "Erick Tryzelaar " "David Tolnay " @@ -10727,10 +11023,6 @@ rec { packageId = "memchr"; usesDefaultFeatures = false; } - { - name = "ryu"; - packageId = "ryu"; - } { name = "serde"; packageId = "serde"; @@ -10742,6 +11034,10 @@ rec { packageId = "serde_core"; usesDefaultFeatures = false; } + { + name = "zmij"; + packageId = "zmij"; + } ]; devDependencies = [ { @@ -10795,9 +11091,9 @@ rec { }; "serde_spanned" = rec { crateName = "serde_spanned"; - version = "1.0.3"; + version = "1.0.4"; edition = "2021"; - sha256 = "14j32cqcs6jjdl1c111lz6s0hr913dnmy2kpfd75k2761ym4ahz2"; + sha256 = "0xkp0qdzams5sqwndbw3xrhf4c0bb5r46w2ywkp1aqsdb8ggkfzq"; dependencies = [ { name = "serde_core"; @@ -10853,7 +11149,7 @@ rec { dependencies = [ { name = "indexmap"; - packageId = "indexmap 2.11.4"; + packageId = "indexmap"; } { name = "itoa"; @@ -10889,7 +11185,7 @@ rec { } { name = "cpufeatures"; - packageId = "cpufeatures"; + packageId = "cpufeatures 0.2.17"; target = { target, features }: (("aarch64" == target."arch" or null) || ("x86" == target."arch" or null) || ("x86_64" == target."arch" or null)); } { @@ -10928,7 +11224,7 @@ rec { } { name = "cpufeatures"; - packageId = "cpufeatures"; + packageId = "cpufeatures 0.2.17"; target = { target, features }: (("aarch64" == target."arch" or null) || ("x86_64" == target."arch" or null) || ("x86" == target."arch" or null)); } { @@ -10992,15 +11288,19 @@ rec { }; "signal-hook-registry" = rec { crateName = "signal-hook-registry"; - version = "1.4.6"; + version = "1.4.8"; edition = "2015"; - sha256 = "12y2v1ms5z111fymaw1v8k93m5chnkp21h0jknrydkj8zydp395j"; + sha256 = "06vc7pmnki6lmxar3z31gkyg9cw7py5x9g7px70gy2hil75nkny4"; libName = "signal_hook_registry"; authors = [ "Michal 'vorner' Vaner " "Masaki Hara " ]; dependencies = [ + { + name = "errno"; + packageId = "errno"; + } { name = "libc"; packageId = "libc"; @@ -11010,9 +11310,9 @@ rec { }; "simd-adler32" = rec { crateName = "simd-adler32"; - version = "0.3.7"; + version = "0.3.8"; edition = "2018"; - sha256 = "1zkq40c3iajcnr5936gjp9jjh1lpzhy44p3dq3fiw75iwr1w2vfn"; + sha256 = "18lx2gdgislabbvlgw5q3j5ssrr77v8kmkrxaanp3liimp2sc873"; libName = "simd_adler32"; authors = [ "Marvin Countryman " @@ -11020,12 +11320,13 @@ rec { features = { "default" = [ "std" "const-generics" ]; }; + resolvedDefaultFeatures = [ "std" ]; }; "siphasher" = rec { crateName = "siphasher"; - version = "1.0.1"; + version = "1.0.2"; edition = "2018"; - sha256 = "17f35782ma3fn6sh21c027kjmd227xyrx06ffi8gw4xzv9yry6an"; + sha256 = "13k7cfbpcm8qgj9p2n8dwg9skv9s0hxk5my30j5chy1p4l78bamj"; authors = [ "Frank Denis " ]; @@ -11040,9 +11341,9 @@ rec { }; "slab" = rec { crateName = "slab"; - version = "0.4.11"; + version = "0.4.12"; edition = "2018"; - sha256 = "12bm4s88rblq02jjbi1dw31984w61y2ldn13ifk5gsqgy97f8aks"; + sha256 = "1xcwik6s6zbd3lf51kkrcicdq2j4c1fw0yjdai2apy9467i0sy8c"; authors = [ "Carl Lerche " ]; @@ -11136,6 +11437,37 @@ rec { authors = [ "Jake Goulding " ]; + dependencies = [ + { + name = "snafu-derive"; + packageId = "snafu-derive 0.8.9"; + } + ]; + features = { + "backtrace" = [ "dep:backtrace" ]; + "backtraces-impl-backtrace-crate" = [ "backtrace" ]; + "default" = [ "std" "rust_1_65" ]; + "futures" = [ "futures-core-crate" "pin-project" ]; + "futures-core-crate" = [ "dep:futures-core-crate" ]; + "futures-crate" = [ "dep:futures-crate" ]; + "internal-dev-dependencies" = [ "futures-crate" ]; + "pin-project" = [ "dep:pin-project" ]; + "rust_1_61" = [ "snafu-derive/rust_1_61" ]; + "rust_1_65" = [ "rust_1_61" ]; + "rust_1_81" = [ "rust_1_65" ]; + "std" = [ "alloc" ]; + "unstable-provider-api" = [ "snafu-derive/unstable-provider-api" ]; + }; + resolvedDefaultFeatures = [ "alloc" "default" "rust_1_61" "rust_1_65" "std" ]; + }; + "snafu 0.9.0" = rec { + crateName = "snafu"; + version = "0.9.0"; + edition = "2018"; + sha256 = "1ii9r99x5qcn754m624yzgb9hzvkqkrcygf0aqh0pyb9dbnvrm6i"; + authors = [ + "Jake Goulding " + ]; dependencies = [ { name = "futures-core"; @@ -11152,25 +11484,22 @@ rec { } { name = "snafu-derive"; - packageId = "snafu-derive 0.8.9"; + packageId = "snafu-derive 0.9.0"; } ]; features = { "backtrace" = [ "dep:backtrace" ]; "backtraces-impl-backtrace-crate" = [ "backtrace" ]; - "default" = [ "std" "rust_1_65" ]; + "default" = [ "std" "rust_1_81" ]; "futures" = [ "futures-core-crate" "pin-project" ]; "futures-core-crate" = [ "dep:futures-core-crate" ]; "futures-crate" = [ "dep:futures-crate" ]; "internal-dev-dependencies" = [ "futures-crate" ]; "pin-project" = [ "dep:pin-project" ]; - "rust_1_61" = [ "snafu-derive/rust_1_61" ]; - "rust_1_65" = [ "rust_1_61" ]; - "rust_1_81" = [ "rust_1_65" ]; "std" = [ "alloc" ]; "unstable-provider-api" = [ "snafu-derive/unstable-provider-api" ]; }; - resolvedDefaultFeatures = [ "alloc" "default" "futures" "futures-core-crate" "pin-project" "rust_1_61" "rust_1_65" "std" ]; + resolvedDefaultFeatures = [ "alloc" "default" "futures" "futures-core-crate" "pin-project" "rust_1_81" "std" ]; }; "snafu-derive 0.6.10" = rec { crateName = "snafu-derive"; @@ -11226,7 +11555,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.106"; + packageId = "syn 2.0.117"; features = [ "full" ]; } ]; @@ -11234,37 +11563,47 @@ rec { }; resolvedDefaultFeatures = [ "rust_1_61" ]; }; - "socket2 0.5.10" = rec { - crateName = "socket2"; - version = "0.5.10"; - edition = "2021"; - sha256 = "0y067ki5q946w91xlz2sb175pnfazizva6fi3kfp639mxnmpc8z2"; + "snafu-derive 0.9.0" = rec { + crateName = "snafu-derive"; + version = "0.9.0"; + edition = "2018"; + sha256 = "0h0x61kyj4fvilcr2nj02l85shw1ika64vq9brf2gyna662ln9al"; + procMacro = true; + libName = "snafu_derive"; authors = [ - "Alex Crichton " - "Thomas de Zeeuw " + "Jake Goulding " ]; dependencies = [ { - name = "libc"; - packageId = "libc"; - target = { target, features }: (target."unix" or false); + name = "heck"; + packageId = "heck"; + usesDefaultFeatures = false; } { - name = "windows-sys"; - packageId = "windows-sys 0.52.0"; - target = { target, features }: (target."windows" or false); - features = [ "Win32_Foundation" "Win32_Networking_WinSock" "Win32_System_IO" "Win32_System_Threading" "Win32_System_WindowsProgramming" ]; + name = "proc-macro2"; + packageId = "proc-macro2"; + usesDefaultFeatures = false; + } + { + name = "quote"; + packageId = "quote"; + usesDefaultFeatures = false; + } + { + name = "syn"; + packageId = "syn 2.0.117"; + usesDefaultFeatures = false; + features = [ "clone-impls" "derive" "full" "parsing" "printing" "proc-macro" ]; } ]; features = { }; - resolvedDefaultFeatures = [ "all" ]; }; - "socket2 0.6.1" = rec { + "socket2" = rec { crateName = "socket2"; - version = "0.6.1"; + version = "0.6.3"; edition = "2021"; - sha256 = "109qn0kjhqi5zds84qyqi5wn72g8azjhmf4b04fkgkrkd48rw4hp"; + sha256 = "0gkjjcyn69hqhhlh5kl8byk5m0d7hyrp2aqwzbs3d33q208nwxis"; authors = [ "Alex Crichton " "Thomas de Zeeuw " @@ -11273,11 +11612,11 @@ rec { { name = "libc"; packageId = "libc"; - target = { target, features }: (target."unix" or false); + target = { target, features }: ((target."unix" or false) || ("wasi" == target."os" or null)); } { name = "windows-sys"; - packageId = "windows-sys 0.60.2"; + packageId = "windows-sys 0.61.2"; target = { target, features }: (target."windows" or false); features = [ "Win32_Foundation" "Win32_Networking_WinSock" "Win32_System_IO" "Win32_System_Threading" "Win32_System_WindowsProgramming" ]; } @@ -11286,31 +11625,6 @@ rec { }; resolvedDefaultFeatures = [ "all" ]; }; - "spin" = rec { - crateName = "spin"; - version = "0.9.8"; - edition = "2015"; - sha256 = "0rvam5r0p3a6qhc18scqpvpgb3ckzyqxpgdfyjnghh8ja7byi039"; - authors = [ - "Mathijs van de Nes " - "John Ericson " - "Joshua Barretto " - ]; - features = { - "barrier" = [ "mutex" ]; - "default" = [ "lock_api" "mutex" "spin_mutex" "rwlock" "once" "lazy" "barrier" ]; - "fair_mutex" = [ "mutex" ]; - "lazy" = [ "once" ]; - "lock_api" = [ "lock_api_crate" ]; - "lock_api_crate" = [ "dep:lock_api_crate" ]; - "portable-atomic" = [ "dep:portable-atomic" ]; - "portable_atomic" = [ "portable-atomic" ]; - "spin_mutex" = [ "mutex" ]; - "ticket_mutex" = [ "mutex" ]; - "use_ticket_mutex" = [ "mutex" "ticket_mutex" ]; - }; - resolvedDefaultFeatures = [ "mutex" "spin_mutex" ]; - }; "stable_deref_trait" = rec { crateName = "stable_deref_trait"; version = "1.2.1"; @@ -11323,7 +11637,6 @@ rec { "default" = [ "std" ]; "std" = [ "alloc" ]; }; - resolvedDefaultFeatures = [ "alloc" ]; }; "stackable-cockpit" = rec { crateName = "stackable-cockpit"; @@ -11354,34 +11667,22 @@ rec { } { name = "indexmap"; - packageId = "indexmap 2.11.4"; + packageId = "indexmap"; features = [ "serde" ]; } { name = "indicatif"; packageId = "indicatif"; } - { - name = "k8s-openapi"; - packageId = "k8s-openapi"; - usesDefaultFeatures = false; - features = [ "v1_32" ]; - } - { - name = "kube"; - packageId = "kube"; - usesDefaultFeatures = false; - features = [ "client" "rustls-tls" "ws" "socks5" "http-proxy" ]; - } { name = "rand"; - packageId = "rand 0.8.5"; + packageId = "rand 0.10.0"; } { name = "reqwest"; - packageId = "reqwest"; + packageId = "reqwest 0.13.2"; usesDefaultFeatures = false; - features = [ "json" "rustls-tls-native-roots" ]; + features = [ "json" "rustls" ]; } { name = "semver"; @@ -11407,13 +11708,14 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.9"; + packageId = "snafu 0.9.0"; features = [ "futures" ]; } { name = "stackable-operator"; packageId = "stackable-operator"; usesDefaultFeatures = false; + features = [ "crds" "kube-ws" ]; } { name = "tera"; @@ -11472,13 +11774,13 @@ rec { dependencies = [ { name = "phf"; - packageId = "phf"; + packageId = "phf 0.13.1"; } ]; buildDependencies = [ { name = "phf_codegen"; - packageId = "phf_codegen"; + packageId = "phf_codegen 0.13.1"; } ]; @@ -11502,7 +11804,7 @@ rec { dependencies = [ { name = "axum"; - packageId = "axum 0.7.9"; + packageId = "axum"; features = [ "http2" ]; } { @@ -11523,12 +11825,6 @@ rec { name = "futures"; packageId = "futures"; } - { - name = "k8s-openapi"; - packageId = "k8s-openapi"; - usesDefaultFeatures = false; - features = [ "v1_32" ]; - } { name = "serde"; packageId = "serde"; @@ -11536,7 +11832,7 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.9"; + packageId = "snafu 0.9.0"; features = [ "futures" ]; } { @@ -11556,7 +11852,7 @@ rec { } { name = "tower-http"; - packageId = "tower-http 0.5.2"; + packageId = "tower-http"; features = [ "validate-request" ]; } { @@ -11590,24 +11886,19 @@ rec { }; "stackable-operator" = rec { crateName = "stackable-operator"; - version = "0.92.0"; + version = "0.107.0"; edition = "2024"; workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; - rev = "5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1"; - sha256 = "0li9smdrz7danqz17lfkl0j9zl2i84csgc7d01lxs5qi8jcs9fzw"; + rev = "a16cafb151202948e79925a58662b14b8b004cd7"; + sha256 = "01krcfa4jfhrvl2skgmq35a9fx9zrjm82ymmplr6fsp354fqdzdq"; }; libName = "stackable_operator"; authors = [ "Stackable GmbH " ]; dependencies = [ - { - name = "chrono"; - packageId = "chrono"; - usesDefaultFeatures = false; - } { name = "clap"; packageId = "clap"; @@ -11639,9 +11930,17 @@ rec { name = "futures"; packageId = "futures"; } + { + name = "http"; + packageId = "http"; + } { name = "indexmap"; - packageId = "indexmap 2.11.4"; + packageId = "indexmap"; + } + { + name = "jiff"; + packageId = "jiff"; } { name = "json-patch"; @@ -11651,13 +11950,13 @@ rec { name = "k8s-openapi"; packageId = "k8s-openapi"; usesDefaultFeatures = false; - features = [ "schemars" "v1_32" ]; + features = [ "schemars" "v1_35" ]; } { name = "kube"; packageId = "kube"; usesDefaultFeatures = false; - features = [ "client" "jsonpatch" "runtime" "derive" "rustls-tls" "ring" ]; + features = [ "client" "jsonpatch" "runtime" "derive" "admission" "rustls-tls" "ring" ]; } { name = "product-config"; @@ -11670,7 +11969,7 @@ rec { { name = "schemars"; packageId = "schemars"; - features = [ "url" ]; + features = [ "url2" ]; } { name = "semver"; @@ -11700,6 +11999,7 @@ rec { { name = "stackable-shared"; packageId = "stackable-shared"; + features = [ "jiff" ]; } { name = "stackable-telemetry"; @@ -11709,7 +12009,7 @@ rec { { name = "stackable-versioned"; packageId = "stackable-versioned"; - features = [ "k8s" ]; + optional = true; } { name = "strum"; @@ -11741,10 +12041,15 @@ rec { } ]; features = { - "default" = [ "telemetry" "versioned" ]; - "full" = [ "time" "telemetry" "versioned" ]; - "time" = [ "dep:time" ]; + "certs" = [ "dep:stackable-certs" ]; + "crds" = [ "dep:stackable-versioned" ]; + "default" = [ "crds" ]; + "full" = [ "crds" "certs" "time" "webhook" "kube-ws" ]; + "kube-ws" = [ "kube/ws" ]; + "time" = [ "stackable-shared/time" ]; + "webhook" = [ "dep:stackable-webhook" ]; }; + resolvedDefaultFeatures = [ "crds" "kube-ws" ]; }; "stackable-operator-derive" = rec { crateName = "stackable-operator-derive"; @@ -11753,8 +12058,8 @@ rec { workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; - rev = "5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1"; - sha256 = "0li9smdrz7danqz17lfkl0j9zl2i84csgc7d01lxs5qi8jcs9fzw"; + rev = "a16cafb151202948e79925a58662b14b8b004cd7"; + sha256 = "01krcfa4jfhrvl2skgmq35a9fx9zrjm82ymmplr6fsp354fqdzdq"; }; procMacro = true; libName = "stackable_operator_derive"; @@ -11776,31 +12081,47 @@ rec { } { name = "syn"; - packageId = "syn 2.0.106"; + packageId = "syn 2.0.117"; } ]; }; "stackable-shared" = rec { crateName = "stackable-shared"; - version = "0.0.1"; + version = "0.1.0"; edition = "2024"; workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; - rev = "5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1"; - sha256 = "0li9smdrz7danqz17lfkl0j9zl2i84csgc7d01lxs5qi8jcs9fzw"; + rev = "a16cafb151202948e79925a58662b14b8b004cd7"; + sha256 = "01krcfa4jfhrvl2skgmq35a9fx9zrjm82ymmplr6fsp354fqdzdq"; }; libName = "stackable_shared"; authors = [ "Stackable GmbH " ]; dependencies = [ + { + name = "jiff"; + packageId = "jiff"; + optional = true; + } + { + name = "k8s-openapi"; + packageId = "k8s-openapi"; + usesDefaultFeatures = false; + features = [ "schemars" "v1_35" ]; + } { name = "kube"; packageId = "kube"; usesDefaultFeatures = false; - features = [ "client" "jsonpatch" "runtime" "derive" "rustls-tls" "ring" ]; + features = [ "client" "jsonpatch" "runtime" "derive" "admission" "rustls-tls" "ring" ]; + } + { + name = "schemars"; + packageId = "schemars"; + features = [ "url2" ]; } { name = "semver"; @@ -11819,18 +12140,42 @@ rec { name = "snafu"; packageId = "snafu 0.8.9"; } + { + name = "strum"; + packageId = "strum"; + features = [ "derive" ]; + } + { + name = "time"; + packageId = "time"; + optional = true; + } ]; - + devDependencies = [ + { + name = "k8s-openapi"; + packageId = "k8s-openapi"; + usesDefaultFeatures = false; + features = [ "schemars" "v1_35" ]; + } + ]; + features = { + "default" = [ "time" ]; + "full" = [ "jiff" "time" ]; + "jiff" = [ "dep:jiff" ]; + "time" = [ "dep:time" ]; + }; + resolvedDefaultFeatures = [ "default" "jiff" "time" ]; }; "stackable-telemetry" = rec { crateName = "stackable-telemetry"; - version = "0.6.0"; + version = "0.6.2"; edition = "2024"; workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; - rev = "5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1"; - sha256 = "0li9smdrz7danqz17lfkl0j9zl2i84csgc7d01lxs5qi8jcs9fzw"; + rev = "a16cafb151202948e79925a58662b14b8b004cd7"; + sha256 = "01krcfa4jfhrvl2skgmq35a9fx9zrjm82ymmplr6fsp354fqdzdq"; }; libName = "stackable_telemetry"; authors = [ @@ -11839,7 +12184,8 @@ rec { dependencies = [ { name = "axum"; - packageId = "axum 0.8.6"; + packageId = "axum"; + features = [ "http2" ]; } { name = "clap"; @@ -11865,6 +12211,10 @@ rec { packageId = "opentelemetry-otlp"; features = [ "grpc-tonic" "gzip-tonic" "logs" ]; } + { + name = "opentelemetry-semantic-conventions"; + packageId = "opentelemetry-semantic-conventions"; + } { name = "opentelemetry_sdk"; packageId = "opentelemetry_sdk"; @@ -11890,7 +12240,7 @@ rec { } { name = "tower"; - packageId = "tower 0.5.2"; + packageId = "tower"; features = [ "util" ]; } { @@ -11929,39 +12279,57 @@ rec { }; "stackable-versioned" = rec { crateName = "stackable-versioned"; - version = "0.7.1"; + version = "0.8.3"; edition = "2024"; workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; - rev = "5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1"; - sha256 = "0li9smdrz7danqz17lfkl0j9zl2i84csgc7d01lxs5qi8jcs9fzw"; + rev = "a16cafb151202948e79925a58662b14b8b004cd7"; + sha256 = "01krcfa4jfhrvl2skgmq35a9fx9zrjm82ymmplr6fsp354fqdzdq"; }; libName = "stackable_versioned"; authors = [ "Stackable GmbH " ]; dependencies = [ + { + name = "schemars"; + packageId = "schemars"; + features = [ "url2" ]; + } + { + name = "serde"; + packageId = "serde"; + features = [ "derive" ]; + } + { + name = "serde_json"; + packageId = "serde_json"; + } + { + name = "serde_yaml"; + packageId = "serde_yaml"; + } + { + name = "snafu"; + packageId = "snafu 0.8.9"; + } { name = "stackable-versioned-macros"; packageId = "stackable-versioned-macros"; } ]; - features = { - "full" = [ "k8s" ]; - "k8s" = [ "stackable-versioned-macros/k8s" ]; - }; - resolvedDefaultFeatures = [ "k8s" ]; + }; "stackable-versioned-macros" = rec { crateName = "stackable-versioned-macros"; - version = "0.7.1"; + version = "0.8.3"; edition = "2024"; workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; - rev = "5fdc47a10de685e4eea49fd0a3f6c3a15a4966c1"; - sha256 = "0li9smdrz7danqz17lfkl0j9zl2i84csgc7d01lxs5qi8jcs9fzw"; + rev = "a16cafb151202948e79925a58662b14b8b004cd7"; + sha256 = "01krcfa4jfhrvl2skgmq35a9fx9zrjm82ymmplr6fsp354fqdzdq"; }; procMacro = true; libName = "stackable_versioned_macros"; @@ -11973,10 +12341,18 @@ rec { name = "convert_case"; packageId = "convert_case"; } + { + name = "convert_case_extras"; + packageId = "convert_case_extras"; + } { name = "darling"; packageId = "darling"; } + { + name = "indoc"; + packageId = "indoc"; + } { name = "itertools"; packageId = "itertools 0.14.0"; @@ -11984,9 +12360,8 @@ rec { { name = "k8s-openapi"; packageId = "k8s-openapi"; - optional = true; usesDefaultFeatures = false; - features = [ "schemars" "v1_32" ]; + features = [ "schemars" "v1_35" ]; } { name = "k8s-version"; @@ -11996,9 +12371,8 @@ rec { { name = "kube"; packageId = "kube"; - optional = true; usesDefaultFeatures = false; - features = [ "client" "jsonpatch" "runtime" "derive" "rustls-tls" "ring" ]; + features = [ "client" "jsonpatch" "runtime" "derive" "admission" "rustls-tls" "ring" ]; } { name = "proc-macro2"; @@ -12010,22 +12384,10 @@ rec { } { name = "syn"; - packageId = "syn 2.0.106"; - } - ]; - devDependencies = [ - { - name = "k8s-openapi"; - packageId = "k8s-openapi"; - usesDefaultFeatures = false; - features = [ "schemars" "v1_32" ]; + packageId = "syn 2.0.117"; } ]; - features = { - "full" = [ "k8s" ]; - "k8s" = [ "dep:kube" "dep:k8s-openapi" ]; - }; - resolvedDefaultFeatures = [ "k8s" ]; + }; "stackablectl" = rec { crateName = "stackablectl"; @@ -12075,7 +12437,7 @@ rec { } { name = "indexmap"; - packageId = "indexmap 2.11.4"; + packageId = "indexmap"; features = [ "serde" ]; } { @@ -12092,13 +12454,17 @@ rec { } { name = "rand"; - packageId = "rand 0.8.5"; + packageId = "rand 0.10.0"; } { name = "reqwest"; - packageId = "reqwest"; + packageId = "reqwest 0.13.2"; usesDefaultFeatures = false; - features = [ "json" "rustls-tls-native-roots" ]; + features = [ "json" "rustls" ]; + } + { + name = "rustls"; + packageId = "rustls"; } { name = "semver"; @@ -12120,7 +12486,7 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.9"; + packageId = "snafu 0.9.0"; features = [ "futures" ]; } { @@ -12132,6 +12498,7 @@ rec { name = "stackable-operator"; packageId = "stackable-operator"; usesDefaultFeatures = false; + features = [ "crds" "kube-ws" ]; } { name = "tera"; @@ -12189,9 +12556,9 @@ rec { }; "strum" = rec { crateName = "strum"; - version = "0.27.2"; + version = "0.28.0"; edition = "2021"; - sha256 = "1ksb9jssw4bg9kmv9nlgp2jqa4vnsa3y4q9zkppvl952q7vdc8xg"; + sha256 = "1ggr0if083c1mz9w33hkdjsp0iqk2fz9n49bvb73knwihydxwa4n"; authors = [ "Peter Glotfelty " ]; @@ -12212,9 +12579,9 @@ rec { }; "strum_macros" = rec { crateName = "strum_macros"; - version = "0.27.2"; + version = "0.28.0"; edition = "2021"; - sha256 = "19xwikxma0yi70fxkcy1yxcv0ica8gf3jnh5gj936jza8lwcx5bn"; + sha256 = "0r7n6v5b3x85m52isyc8wq78irmr22g0hmj1xn3pbq8f4yhfx1db"; procMacro = true; authors = [ "Peter Glotfelty " @@ -12234,7 +12601,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.106"; + packageId = "syn 2.0.117"; features = [ "parsing" ]; } ]; @@ -12287,11 +12654,11 @@ rec { }; resolvedDefaultFeatures = [ "clone-impls" "default" "derive" "full" "parsing" "printing" "proc-macro" "quote" ]; }; - "syn 2.0.106" = rec { + "syn 2.0.117" = rec { crateName = "syn"; - version = "2.0.106"; + version = "2.0.117"; edition = "2021"; - sha256 = "19mddxp1ia00hfdzimygqmr1jqdvyl86k48427bkci4d08wc9rzd"; + sha256 = "16cv7c0wbn8amxc54n4w15kxlx5ypdmla8s0gxr2l7bv7s0bhrg6"; authors = [ "David Tolnay " ]; @@ -12363,7 +12730,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.106"; + packageId = "syn 2.0.117"; usesDefaultFeatures = false; features = [ "derive" "parsing" "printing" "clone-impls" "visit" "extra-traits" ]; } @@ -12376,9 +12743,9 @@ rec { }; "tera" = rec { crateName = "tera"; - version = "1.20.0"; + version = "1.20.1"; edition = "2018"; - sha256 = "1vnj9imw2h9szkd1izsrhwrc9jvazvdsp84x65wg2rg88ldqb7db"; + sha256 = "08k743nwb2mykpbwnipa1k3v8b1igg39pmdc7ggk4b8z5354n078"; authors = [ "Vincent Prouillet " ]; @@ -12444,8 +12811,8 @@ rec { optional = true; } { - name = "unic-segment"; - packageId = "unic-segment"; + name = "unicode-segmentation"; + packageId = "unicode-segmentation"; } ]; features = { @@ -12465,9 +12832,9 @@ rec { }; "termion" = rec { crateName = "termion"; - version = "4.0.5"; + version = "4.0.6"; edition = "2015"; - sha256 = "1fr2q51grjia1ysl9q3vsixx6b3ybzsi79ss38rdd6b7wafscs9n"; + sha256 = "1jsy8zakr7gjy4wddb1m1hrsfkgg2wjxh121y81gbw08mslkhhgl"; authors = [ "ticki " "gycos " @@ -12478,22 +12845,11 @@ rec { { name = "libc"; packageId = "libc"; - target = { target, features }: (!("redox" == target."os" or null)); - } - { - name = "libredox"; - packageId = "libredox"; - target = { target, features }: ("redox" == target."os" or null); } { name = "numtoa"; packageId = "numtoa"; } - { - name = "redox_termios"; - packageId = "redox_termios"; - target = { target, features }: ("redox" == target."os" or null); - } ]; features = { "serde" = [ "dep:serde" ]; @@ -12515,18 +12871,18 @@ rec { ]; }; - "thiserror 2.0.17" = rec { + "thiserror 2.0.18" = rec { crateName = "thiserror"; - version = "2.0.17"; + version = "2.0.18"; edition = "2021"; - sha256 = "1j2gixhm2c3s6g96vd0b01v0i0qz1101vfmw0032mdqj1z58fdgn"; + sha256 = "1i7vcmw9900bvsmay7mww04ahahab7wmr8s925xc083rpjybb222"; authors = [ "David Tolnay " ]; dependencies = [ { name = "thiserror-impl"; - packageId = "thiserror-impl 2.0.17"; + packageId = "thiserror-impl 2.0.18"; } ]; features = { @@ -12555,16 +12911,16 @@ rec { } { name = "syn"; - packageId = "syn 2.0.106"; + packageId = "syn 2.0.117"; } ]; }; - "thiserror-impl 2.0.17" = rec { + "thiserror-impl 2.0.18" = rec { crateName = "thiserror-impl"; - version = "2.0.17"; + version = "2.0.18"; edition = "2021"; - sha256 = "04y92yjwg1a4piwk9nayzjfs07sps8c4vq9jnsfq9qvxrn75rw9z"; + sha256 = "1mf1vrbbimj1g6dvhdgzjmn6q09yflz2b92zs1j9n3k7cxzyxi7b"; procMacro = true; libName = "thiserror_impl"; authors = [ @@ -12581,7 +12937,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.106"; + packageId = "syn 2.0.117"; } ]; @@ -12605,9 +12961,9 @@ rec { }; "time" = rec { crateName = "time"; - version = "0.3.44"; - edition = "2021"; - sha256 = "179awlwb36zly3nmz5h9awai1h4pbf1d83g2pmvlw4v1pgixkrwi"; + version = "0.3.47"; + edition = "2024"; + sha256 = "0b7g9ly2iabrlgizliz6v5x23yq5d6bpp0mqz6407z1s526d8fvl"; authors = [ "Jacob Pratt " "Time contributors" @@ -12633,8 +12989,8 @@ rec { usesDefaultFeatures = false; } { - name = "serde"; - packageId = "serde"; + name = "serde_core"; + packageId = "serde_core"; optional = true; usesDefaultFeatures = false; } @@ -12653,22 +13009,16 @@ rec { name = "num-conv"; packageId = "num-conv"; } - { - name = "serde"; - packageId = "serde"; - usesDefaultFeatures = false; - features = [ "derive" ]; - } { name = "time-macros"; packageId = "time-macros"; } ]; features = { - "alloc" = [ "serde?/alloc" ]; + "alloc" = [ "serde_core?/alloc" ]; "default" = [ "std" ]; "formatting" = [ "dep:itoa" "std" "time-macros?/formatting" ]; - "large-dates" = [ "time-macros?/large-dates" ]; + "large-dates" = [ "time-core/large-dates" "time-macros?/large-dates" ]; "local-offset" = [ "std" "dep:libc" "dep:num_threads" ]; "macros" = [ "dep:time-macros" ]; "parsing" = [ "time-macros?/parsing" ]; @@ -12676,31 +13026,32 @@ rec { "rand" = [ "rand08" "rand09" ]; "rand08" = [ "dep:rand08" "deranged/rand08" ]; "rand09" = [ "dep:rand09" "deranged/rand09" ]; - "serde" = [ "dep:serde" "time-macros?/serde" "deranged/serde" ]; + "serde" = [ "dep:serde_core" "time-macros?/serde" "deranged/serde" ]; "serde-human-readable" = [ "serde" "formatting" "parsing" ]; "serde-well-known" = [ "serde" "formatting" "parsing" ]; "std" = [ "alloc" ]; "wasm-bindgen" = [ "dep:js-sys" ]; }; - resolvedDefaultFeatures = [ "alloc" "formatting" "parsing" "std" ]; + resolvedDefaultFeatures = [ "alloc" "default" "formatting" "parsing" "std" ]; }; "time-core" = rec { crateName = "time-core"; - version = "0.1.6"; - edition = "2021"; - sha256 = "0sqwhg7n47gbffyr0zhipqcnskxgcgzz1ix8wirqs2rg3my8x1j0"; + version = "0.1.8"; + edition = "2024"; + sha256 = "1jidl426mw48i7hjj4hs9vxgd9lwqq4vyalm4q8d7y4iwz7y353n"; libName = "time_core"; authors = [ "Jacob Pratt " "Time contributors" ]; - + features = { + }; }; "time-macros" = rec { crateName = "time-macros"; - version = "0.2.24"; - edition = "2021"; - sha256 = "1wzb6hnl35856f58cx259q7ijc4c7yis0qsnydvw5n8jbw9b1krh"; + version = "0.2.27"; + edition = "2024"; + sha256 = "058ja265waq275wxvnfwavbz9r1hd4dgwpfn7a1a9a70l32y8w1f"; procMacro = true; libName = "time_macros"; authors = [ @@ -12723,9 +13074,9 @@ rec { }; "tinystr" = rec { crateName = "tinystr"; - version = "0.8.1"; + version = "0.8.2"; edition = "2021"; - sha256 = "12sc6h3hnn6x78iycm5v6wrs2xhxph0ydm43yyn7gdfw8l8nsksx"; + sha256 = "0sa8z88axdsf088hgw5p4xcyi6g3w3sgbb6qdp81bph9bk2fkls2"; authors = [ "The ICU4X Project Developers" ]; @@ -12743,13 +13094,13 @@ rec { } ]; features = { - "alloc" = [ "zerovec?/alloc" ]; + "alloc" = [ "serde_core?/alloc" "zerovec?/alloc" ]; "databake" = [ "dep:databake" ]; "default" = [ "alloc" ]; - "serde" = [ "dep:serde" ]; + "serde" = [ "dep:serde_core" ]; "zerovec" = [ "dep:zerovec" ]; }; - resolvedDefaultFeatures = [ "alloc" "zerovec" ]; + resolvedDefaultFeatures = [ "zerovec" ]; }; "tinyvec" = rec { crateName = "tinyvec"; @@ -12792,9 +13143,9 @@ rec { }; "tokio" = rec { crateName = "tokio"; - version = "1.48.0"; + version = "1.50.0"; edition = "2021"; - sha256 = "0244qva5pksy8gam6llf7bd6wbk2vkab9lx26yyf08dix810wdpz"; + sha256 = "0bc2c5kd57p2xd4l6hagb0bkrp798k5vw0f3xzzwy0sf6ws5xb97"; authors = [ "Tokio Contributors " ]; @@ -12842,7 +13193,7 @@ rec { } { name = "socket2"; - packageId = "socket2 0.6.1"; + packageId = "socket2"; optional = true; target = { target, features }: (!(builtins.elem "wasm" target."family")); features = [ "all" ]; @@ -12863,17 +13214,17 @@ rec { { name = "libc"; packageId = "libc"; - target = {target, features}: (target."unix" or false); + target = { target, features }: (target."unix" or false); } { name = "socket2"; - packageId = "socket2 0.6.1"; - target = {target, features}: (!(builtins.elem "wasm" target."family")); + packageId = "socket2"; + target = { target, features }: (!(builtins.elem "wasm" target."family")); } { name = "windows-sys"; packageId = "windows-sys 0.61.2"; - target = {target, features}: (target."windows" or false); + target = { target, features }: (target."windows" or false); features = [ "Win32_Foundation" "Win32_Security_Authorization" ]; } ]; @@ -12902,9 +13253,9 @@ rec { }; "tokio-macros" = rec { crateName = "tokio-macros"; - version = "2.6.0"; + version = "2.6.1"; edition = "2021"; - sha256 = "19czvgliginbzyhhfbmj77wazqn2y8g27y2nirfajdlm41bphh5g"; + sha256 = "172nwz3s7mmh266hb8l5xdnc7v9kqahisppqhinfd75nz3ps4maw"; procMacro = true; libName = "tokio_macros"; authors = [ @@ -12921,7 +13272,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.106"; + packageId = "syn 2.0.117"; features = [ "full" ]; } ]; @@ -12963,13 +13314,13 @@ rec { "tls12" = [ "rustls/tls12" ]; "zlib" = [ "rustls/zlib" ]; }; - resolvedDefaultFeatures = [ "logging" "ring" "tls12" ]; + resolvedDefaultFeatures = [ "aws-lc-rs" "aws_lc_rs" "logging" "tls12" ]; }; "tokio-stream" = rec { crateName = "tokio-stream"; - version = "0.1.17"; + version = "0.1.18"; edition = "2021"; - sha256 = "0ix0770hfp4x5rh5bl7vsnr3d4iz4ms43i522xw70xaap9xqv9gc"; + sha256 = "0w3cj33605ab58wqd382gnla5pnd9hnr00xgg333np5bka04knij"; libName = "tokio_stream"; authors = [ "Tokio Contributors " @@ -13007,13 +13358,13 @@ rec { "time" = [ "tokio/time" ]; "tokio-util" = [ "dep:tokio-util" ]; }; - resolvedDefaultFeatures = [ "default" "net" "time" ]; + resolvedDefaultFeatures = [ "default" "time" ]; }; "tokio-tungstenite" = rec { crateName = "tokio-tungstenite"; - version = "0.26.2"; + version = "0.28.0"; edition = "2018"; - sha256 = "117hwxfwmpxazxks076w5i73xj7cgv5iqs7x2rnbzln60zvaz7bs"; + sha256 = "0mzqgc94csy5ai6kx5yxj548shppq2kwdbyrsdsilhycvmn40nnj"; libName = "tokio_tungstenite"; authors = [ "Daniel Abramov " @@ -13072,9 +13423,9 @@ rec { }; "tokio-util" = rec { crateName = "tokio-util"; - version = "0.7.16"; + version = "0.7.18"; edition = "2021"; - sha256 = "1r9wdrg1k5hna3m0kc8kcb8jdb6n52g7vnw93kw2xxw4cyc7qc0l"; + sha256 = "1600rd47pylwn7cap1k7s5nvdaa9j7w8kqigzp1qy7mh0p4cxscs"; libName = "tokio_util"; authors = [ "Tokio Contributors " @@ -13133,13 +13484,13 @@ rec { }; "toml" = rec { crateName = "toml"; - version = "0.9.8"; + version = "1.0.6+spec-1.1.0"; edition = "2021"; - sha256 = "1n569s0dgdmqjy21wf85df7kx3vb1zgin3pc2rvy4j8lnqgqpp7h"; + sha256 = "1z3gd04jal7r2jhnww4qvln5g4h1wlhvlsqwhdk6gqf9lcj136rr"; dependencies = [ { name = "indexmap"; - packageId = "indexmap 2.11.4"; + packageId = "indexmap"; optional = true; usesDefaultFeatures = false; } @@ -13197,9 +13548,9 @@ rec { }; "toml_datetime" = rec { crateName = "toml_datetime"; - version = "0.7.3"; + version = "1.0.0+spec-1.1.0"; edition = "2021"; - sha256 = "0cs5f8y4rdsmmwipjclmq97lrwppjy2qa3vja4f9d5xwxcwvdkgj"; + sha256 = "0gpiaddhignli6whj52ysjxwmmy82r8qxihckzss8y4md5f5bhij"; dependencies = [ { name = "serde_core"; @@ -13218,13 +13569,13 @@ rec { }; "toml_edit" = rec { crateName = "toml_edit"; - version = "0.23.7"; + version = "0.25.4+spec-1.1.0"; edition = "2021"; - sha256 = "13cgp4y6prad1lh18bbg64zkq48hafq7xzs4fb0hwpcv1mnyz1b4"; + sha256 = "1whkik77grpr5qw8q0zhqx1admghpkdm2hzm6xh9dp2krv8cp4vi"; dependencies = [ { name = "indexmap"; - packageId = "indexmap 2.11.4"; + packageId = "indexmap"; features = [ "std" ]; } { @@ -13253,9 +13604,9 @@ rec { }; "toml_parser" = rec { crateName = "toml_parser"; - version = "1.0.4"; + version = "1.0.9+spec-1.1.0"; edition = "2021"; - sha256 = "03l0750d1cyliij9vac4afpp1syh1a6yhbbalnslpnsvsdlf5jy0"; + sha256 = "1i54qpvvcppy8ybdn9gssas81vfzq0kmgkcnxzhyf8w9w0al8bbh"; dependencies = [ { name = "winnow"; @@ -13273,9 +13624,9 @@ rec { }; "toml_writer" = rec { crateName = "toml_writer"; - version = "1.0.4"; + version = "1.0.6+spec-1.1.0"; edition = "2021"; - sha256 = "1wkvcdy1ymp2qfipmb74fv3xa7m7qz7ps9hndllasx1nfda2p2yz"; + sha256 = "01r6x42d1p8p5kzfsi1fm4dakm3w53vi69f2ivyqpvi1xm5g25mb"; features = { "default" = [ "std" ]; "std" = [ "alloc" ]; @@ -13284,29 +13635,18 @@ rec { }; "tonic" = rec { crateName = "tonic"; - version = "0.12.3"; + version = "0.14.5"; edition = "2021"; - sha256 = "0ljd1lfjpw0vrm5wbv15x6nq2i38llsanls5rkzmdn2n0wrmnz47"; + sha256 = "1v4k7aa28m7722gz9qak2jiy7lis1ycm4fdmq63iip4m0qdcdizy"; authors = [ "Lucio Franco " ]; dependencies = [ - { - name = "async-stream"; - packageId = "async-stream"; - optional = true; - } { name = "async-trait"; packageId = "async-trait"; optional = true; } - { - name = "axum"; - packageId = "axum 0.7.9"; - optional = true; - usesDefaultFeatures = false; - } { name = "base64"; packageId = "base64"; @@ -13320,11 +13660,6 @@ rec { packageId = "flate2"; optional = true; } - { - name = "h2"; - packageId = "h2"; - optional = true; - } { name = "http"; packageId = "http"; @@ -13363,17 +13698,8 @@ rec { packageId = "pin-project"; } { - name = "prost"; - packageId = "prost"; - optional = true; - usesDefaultFeatures = false; - features = [ "std" ]; - } - { - name = "socket2"; - packageId = "socket2 0.5.10"; - optional = true; - features = [ "all" ]; + name = "sync_wrapper"; + packageId = "sync_wrapper"; } { name = "tokio"; @@ -13388,7 +13714,7 @@ rec { } { name = "tower"; - packageId = "tower 0.4.13"; + packageId = "tower"; optional = true; usesDefaultFeatures = false; } @@ -13409,157 +13735,64 @@ rec { { name = "tokio"; packageId = "tokio"; - features = [ "rt" "macros" ]; + features = [ "rt-multi-thread" "macros" "test-util" ]; } { name = "tower"; - packageId = "tower 0.4.13"; - features = [ "full" ]; + packageId = "tower"; + features = [ "load-shed" "timeout" ]; } ]; features = { - "channel" = [ "dep:hyper" "hyper?/client" "dep:hyper-util" "hyper-util?/client-legacy" "dep:tower" "tower?/balance" "tower?/buffer" "tower?/discover" "tower?/limit" "tower?/util" "dep:tokio" "tokio?/time" "dep:hyper-timeout" ]; + "_tls-any" = [ "dep:tokio" "tokio?/rt" "tokio?/macros" "tls-connect-info" ]; + "channel" = [ "dep:hyper" "hyper?/client" "dep:hyper-util" "hyper-util?/client-legacy" "dep:tower" "tower?/balance" "tower?/buffer" "tower?/discover" "tower?/limit" "tower?/load-shed" "tower?/util" "dep:tokio" "tokio?/time" "dep:hyper-timeout" ]; "codegen" = [ "dep:async-trait" ]; - "default" = [ "transport" "codegen" "prost" ]; + "default" = [ "router" "transport" "codegen" ]; + "deflate" = [ "dep:flate2" ]; "gzip" = [ "dep:flate2" ]; - "prost" = [ "dep:prost" ]; "router" = [ "dep:axum" "dep:tower" "tower?/util" ]; - "server" = [ "router" "dep:async-stream" "dep:h2" "dep:hyper" "hyper?/server" "dep:hyper-util" "hyper-util?/service" "hyper-util?/server-auto" "dep:socket2" "dep:tokio" "tokio?/macros" "tokio?/net" "tokio?/time" "tokio-stream/net" "dep:tower" "tower?/util" "tower?/limit" ]; - "tls" = [ "dep:rustls-pemfile" "dep:tokio-rustls" "dep:tokio" "tokio?/rt" "tokio?/macros" ]; - "tls-native-roots" = [ "tls" "channel" "dep:rustls-native-certs" ]; - "tls-roots" = [ "tls-native-roots" ]; - "tls-webpki-roots" = [ "tls" "channel" "dep:webpki-roots" ]; + "server" = [ "dep:h2" "dep:hyper" "hyper?/server" "dep:hyper-util" "hyper-util?/service" "hyper-util?/server-auto" "dep:socket2" "dep:tokio" "tokio?/macros" "tokio?/net" "tokio?/time" "tokio-stream/net" "dep:tower" "tower?/util" "tower?/limit" "tower?/load-shed" ]; + "tls-aws-lc" = [ "_tls-any" "tokio-rustls/aws-lc-rs" ]; + "tls-connect-info" = [ "dep:tokio-rustls" ]; + "tls-native-roots" = [ "_tls-any" "channel" "dep:rustls-native-certs" ]; + "tls-ring" = [ "_tls-any" "tokio-rustls/ring" ]; + "tls-webpki-roots" = [ "_tls-any" "channel" "dep:webpki-roots" ]; "transport" = [ "server" "channel" ]; "zstd" = [ "dep:zstd" ]; }; - resolvedDefaultFeatures = [ "channel" "codegen" "gzip" "prost" "router" "server" "transport" ]; + resolvedDefaultFeatures = [ "channel" "codegen" "gzip" ]; }; - "tower 0.4.13" = rec { - crateName = "tower"; - version = "0.4.13"; - edition = "2018"; - sha256 = "073wncyqav4sak1p755hf6vl66njgfc1z1g1di9rxx3cvvh9pymq"; + "tonic-prost" = rec { + crateName = "tonic-prost"; + version = "0.14.5"; + edition = "2021"; + sha256 = "02fkg2bv87q0yds2wz3w0s7i1x6qcgbrl00dy6ipajdapfh7clx5"; + libName = "tonic_prost"; authors = [ - "Tower Maintainers " + "Lucio Franco " ]; dependencies = [ { - name = "futures-core"; - packageId = "futures-core"; - optional = true; - } - { - name = "futures-util"; - packageId = "futures-util"; - optional = true; - usesDefaultFeatures = false; - features = [ "alloc" ]; - } - { - name = "indexmap"; - packageId = "indexmap 1.9.3"; - optional = true; - } - { - name = "pin-project"; - packageId = "pin-project"; - optional = true; - } - { - name = "pin-project-lite"; - packageId = "pin-project-lite"; - optional = true; - } - { - name = "rand"; - packageId = "rand 0.8.5"; - optional = true; - features = [ "small_rng" ]; - } - { - name = "slab"; - packageId = "slab"; - optional = true; - } - { - name = "tokio"; - packageId = "tokio"; - optional = true; - features = [ "sync" ]; - } - { - name = "tokio-util"; - packageId = "tokio-util"; - optional = true; - usesDefaultFeatures = false; - } - { - name = "tower-layer"; - packageId = "tower-layer"; + name = "bytes"; + packageId = "bytes"; } { - name = "tower-service"; - packageId = "tower-service"; + name = "prost"; + packageId = "prost"; } { - name = "tracing"; - packageId = "tracing"; - optional = true; + name = "tonic"; + packageId = "tonic"; usesDefaultFeatures = false; - features = [ "std" ]; - } - ]; - devDependencies = [ - { - name = "pin-project-lite"; - packageId = "pin-project-lite"; - } - { - name = "tokio"; - packageId = "tokio"; - features = [ "macros" "sync" "test-util" "rt-multi-thread" ]; } ]; - features = { - "__common" = [ "futures-core" "pin-project-lite" ]; - "balance" = [ "discover" "load" "ready-cache" "make" "rand" "slab" ]; - "buffer" = [ "__common" "tokio/sync" "tokio/rt" "tokio-util" "tracing" ]; - "default" = [ "log" ]; - "discover" = [ "__common" ]; - "filter" = [ "__common" "futures-util" ]; - "full" = [ "balance" "buffer" "discover" "filter" "hedge" "limit" "load" "load-shed" "make" "ready-cache" "reconnect" "retry" "spawn-ready" "steer" "timeout" "util" ]; - "futures-core" = [ "dep:futures-core" ]; - "futures-util" = [ "dep:futures-util" ]; - "hdrhistogram" = [ "dep:hdrhistogram" ]; - "hedge" = [ "util" "filter" "futures-util" "hdrhistogram" "tokio/time" "tracing" ]; - "indexmap" = [ "dep:indexmap" ]; - "limit" = [ "__common" "tokio/time" "tokio/sync" "tokio-util" "tracing" ]; - "load" = [ "__common" "tokio/time" "tracing" ]; - "load-shed" = [ "__common" ]; - "log" = [ "tracing/log" ]; - "make" = [ "futures-util" "pin-project-lite" "tokio/io-std" ]; - "pin-project" = [ "dep:pin-project" ]; - "pin-project-lite" = [ "dep:pin-project-lite" ]; - "rand" = [ "dep:rand" ]; - "ready-cache" = [ "futures-core" "futures-util" "indexmap" "tokio/sync" "tracing" "pin-project-lite" ]; - "reconnect" = [ "make" "tokio/io-std" "tracing" ]; - "retry" = [ "__common" "tokio/time" ]; - "slab" = [ "dep:slab" ]; - "spawn-ready" = [ "__common" "futures-util" "tokio/sync" "tokio/rt" "util" "tracing" ]; - "timeout" = [ "pin-project-lite" "tokio/time" ]; - "tokio" = [ "dep:tokio" ]; - "tokio-stream" = [ "dep:tokio-stream" ]; - "tokio-util" = [ "dep:tokio-util" ]; - "tracing" = [ "dep:tracing" ]; - "util" = [ "__common" "futures-util" "pin-project" ]; - }; - resolvedDefaultFeatures = [ "__common" "balance" "buffer" "discover" "futures-core" "futures-util" "indexmap" "limit" "load" "make" "pin-project" "pin-project-lite" "rand" "ready-cache" "slab" "tokio" "tokio-util" "tracing" "util" ]; + }; - "tower 0.5.2" = rec { + "tower" = rec { crateName = "tower"; - version = "0.5.2"; + version = "0.5.3"; edition = "2018"; - sha256 = "1ybmd59nm4abl9bsvy6rx31m4zvzp5rja2slzpn712y9b68ssffh"; + sha256 = "1m5i3a2z1sgs8nnz1hgfq2nr4clpdmizlp1d9qsg358ma5iyzrgb"; authors = [ "Tower Maintainers " ]; @@ -13576,11 +13809,21 @@ rec { usesDefaultFeatures = false; features = [ "alloc" ]; } + { + name = "indexmap"; + packageId = "indexmap"; + optional = true; + } { name = "pin-project-lite"; packageId = "pin-project-lite"; optional = true; } + { + name = "slab"; + packageId = "slab"; + optional = true; + } { name = "sync_wrapper"; packageId = "sync_wrapper"; @@ -13590,7 +13833,6 @@ rec { name = "tokio"; packageId = "tokio"; optional = true; - features = [ "sync" ]; } { name = "tokio-util"; @@ -13616,8 +13858,10 @@ rec { ]; devDependencies = [ { - name = "pin-project-lite"; - packageId = "pin-project-lite"; + name = "futures-util"; + packageId = "futures-util"; + usesDefaultFeatures = false; + features = [ "async-await-macro" ]; } { name = "tokio"; @@ -13632,48 +13876,51 @@ rec { } ]; features = { - "__common" = [ "futures-core" "pin-project-lite" ]; "balance" = [ "discover" "load" "ready-cache" "make" "slab" "util" ]; - "buffer" = [ "__common" "tokio/sync" "tokio/rt" "tokio-util" "tracing" ]; - "discover" = [ "__common" ]; - "filter" = [ "__common" "futures-util" ]; + "buffer" = [ "tokio/sync" "tokio/rt" "tokio-util" "tracing" "pin-project-lite" ]; + "discover" = [ "futures-core" "pin-project-lite" ]; + "filter" = [ "futures-util" "pin-project-lite" ]; "full" = [ "balance" "buffer" "discover" "filter" "hedge" "limit" "load" "load-shed" "make" "ready-cache" "reconnect" "retry" "spawn-ready" "steer" "timeout" "util" ]; "futures-core" = [ "dep:futures-core" ]; "futures-util" = [ "dep:futures-util" ]; "hdrhistogram" = [ "dep:hdrhistogram" ]; "hedge" = [ "util" "filter" "futures-util" "hdrhistogram" "tokio/time" "tracing" ]; "indexmap" = [ "dep:indexmap" ]; - "limit" = [ "__common" "tokio/time" "tokio/sync" "tokio-util" "tracing" ]; - "load" = [ "__common" "tokio/time" "tracing" ]; - "load-shed" = [ "__common" ]; + "limit" = [ "tokio/time" "tokio/sync" "tokio-util" "tracing" "pin-project-lite" ]; + "load" = [ "tokio/time" "tracing" "pin-project-lite" ]; + "load-shed" = [ "pin-project-lite" ]; "log" = [ "tracing/log" ]; - "make" = [ "futures-util" "pin-project-lite" "tokio/io-std" ]; + "make" = [ "pin-project-lite" "tokio" ]; "pin-project-lite" = [ "dep:pin-project-lite" ]; "ready-cache" = [ "futures-core" "futures-util" "indexmap" "tokio/sync" "tracing" "pin-project-lite" ]; - "reconnect" = [ "make" "tokio/io-std" "tracing" ]; - "retry" = [ "__common" "tokio/time" "util" ]; + "reconnect" = [ "make" "tracing" ]; + "retry" = [ "tokio/time" "util" ]; "slab" = [ "dep:slab" ]; - "spawn-ready" = [ "__common" "futures-util" "tokio/sync" "tokio/rt" "util" "tracing" ]; + "spawn-ready" = [ "futures-util" "tokio/sync" "tokio/rt" "util" "tracing" ]; "sync_wrapper" = [ "dep:sync_wrapper" ]; "timeout" = [ "pin-project-lite" "tokio/time" ]; "tokio" = [ "dep:tokio" ]; - "tokio-stream" = [ "dep:tokio-stream" ]; "tokio-util" = [ "dep:tokio-util" ]; "tracing" = [ "dep:tracing" ]; - "util" = [ "__common" "futures-util" "pin-project-lite" "sync_wrapper" ]; + "util" = [ "futures-core" "futures-util" "pin-project-lite" "sync_wrapper" ]; }; - resolvedDefaultFeatures = [ "__common" "buffer" "filter" "futures-core" "futures-util" "log" "make" "pin-project-lite" "retry" "sync_wrapper" "timeout" "tokio" "tokio-util" "tracing" "util" ]; + resolvedDefaultFeatures = [ "balance" "buffer" "discover" "filter" "futures-core" "futures-util" "indexmap" "limit" "load" "load-shed" "log" "make" "pin-project-lite" "ready-cache" "retry" "slab" "sync_wrapper" "timeout" "tokio" "tokio-util" "tracing" "util" ]; }; - "tower-http 0.5.2" = rec { + "tower-http" = rec { crateName = "tower-http"; - version = "0.5.2"; + version = "0.6.8"; edition = "2018"; - sha256 = "1xakj3x0anp55gjqibiwvzma5iz0w9pcjsr7qk97sx4qm4sd970y"; + sha256 = "1y514jwzbyrmrkbaajpwmss4rg0mak82k16d6588w9ncaffmbrnl"; libName = "tower_http"; authors = [ "Tower Maintainers " ]; dependencies = [ + { + name = "base64"; + packageId = "base64"; + optional = true; + } { name = "bitflags"; packageId = "bitflags"; @@ -13682,6 +13929,12 @@ rec { name = "bytes"; packageId = "bytes"; } + { + name = "futures-util"; + packageId = "futures-util"; + optional = true; + usesDefaultFeatures = false; + } { name = "http"; packageId = "http"; @@ -13689,10 +13942,12 @@ rec { { name = "http-body"; packageId = "http-body"; + optional = true; } { - name = "http-body-util"; - packageId = "http-body-util"; + name = "iri-string"; + packageId = "iri-string"; + optional = true; } { name = "mime"; @@ -13704,6 +13959,11 @@ rec { name = "pin-project-lite"; packageId = "pin-project-lite"; } + { + name = "tower"; + packageId = "tower"; + optional = true; + } { name = "tower-layer"; packageId = "tower-layer"; @@ -13711,124 +13971,12 @@ rec { { name = "tower-service"; packageId = "tower-service"; - } - ]; - devDependencies = [ - { - name = "bytes"; - packageId = "bytes"; - } - ]; - features = { - "async-compression" = [ "dep:async-compression" ]; - "auth" = [ "base64" "validate-request" ]; - "base64" = [ "dep:base64" ]; - "catch-panic" = [ "tracing" "futures-util/std" ]; - "compression-br" = [ "async-compression/brotli" "futures-core" "tokio-util" "tokio" ]; - "compression-deflate" = [ "async-compression/zlib" "futures-core" "tokio-util" "tokio" ]; - "compression-full" = [ "compression-br" "compression-deflate" "compression-gzip" "compression-zstd" ]; - "compression-gzip" = [ "async-compression/gzip" "futures-core" "tokio-util" "tokio" ]; - "compression-zstd" = [ "async-compression/zstd" "futures-core" "tokio-util" "tokio" ]; - "decompression-br" = [ "async-compression/brotli" "futures-core" "tokio-util" "tokio" ]; - "decompression-deflate" = [ "async-compression/zlib" "futures-core" "tokio-util" "tokio" ]; - "decompression-full" = [ "decompression-br" "decompression-deflate" "decompression-gzip" "decompression-zstd" ]; - "decompression-gzip" = [ "async-compression/gzip" "futures-core" "tokio-util" "tokio" ]; - "decompression-zstd" = [ "async-compression/zstd" "futures-core" "tokio-util" "tokio" ]; - "follow-redirect" = [ "futures-util" "iri-string" "tower/util" ]; - "fs" = [ "futures-util" "tokio/fs" "tokio-util/io" "tokio/io-util" "dep:http-range-header" "mime_guess" "mime" "percent-encoding" "httpdate" "set-status" "futures-util/alloc" "tracing" ]; - "full" = [ "add-extension" "auth" "catch-panic" "compression-full" "cors" "decompression-full" "follow-redirect" "fs" "limit" "map-request-body" "map-response-body" "metrics" "normalize-path" "propagate-header" "redirect" "request-id" "sensitive-headers" "set-header" "set-status" "timeout" "trace" "util" "validate-request" ]; - "futures-core" = [ "dep:futures-core" ]; - "futures-util" = [ "dep:futures-util" ]; - "httpdate" = [ "dep:httpdate" ]; - "iri-string" = [ "dep:iri-string" ]; - "metrics" = [ "tokio/time" ]; - "mime" = [ "dep:mime" ]; - "mime_guess" = [ "dep:mime_guess" ]; - "percent-encoding" = [ "dep:percent-encoding" ]; - "request-id" = [ "uuid" ]; - "timeout" = [ "tokio/time" ]; - "tokio" = [ "dep:tokio" ]; - "tokio-util" = [ "dep:tokio-util" ]; - "tower" = [ "dep:tower" ]; - "trace" = [ "tracing" ]; - "tracing" = [ "dep:tracing" ]; - "util" = [ "tower" ]; - "uuid" = [ "dep:uuid" ]; - "validate-request" = [ "mime" ]; - }; - resolvedDefaultFeatures = [ "default" "mime" "validate-request" ]; - }; - "tower-http 0.6.6" = rec { - crateName = "tower-http"; - version = "0.6.6"; - edition = "2018"; - sha256 = "1wh51y4rf03f91c6rvli6nwzsarx7097yx6sqlm75ag27pbjzj5d"; - libName = "tower_http"; - authors = [ - "Tower Maintainers " - ]; - dependencies = [ - { - name = "base64"; - packageId = "base64"; - optional = true; - } - { - name = "bitflags"; - packageId = "bitflags"; - } - { - name = "bytes"; - packageId = "bytes"; - } - { - name = "futures-util"; - packageId = "futures-util"; - optional = true; - usesDefaultFeatures = false; - } - { - name = "http"; - packageId = "http"; - } - { - name = "http-body"; - packageId = "http-body"; - optional = true; - } - { - name = "iri-string"; - packageId = "iri-string"; - optional = true; - } - { - name = "mime"; - packageId = "mime"; - optional = true; - usesDefaultFeatures = false; - } - { - name = "pin-project-lite"; - packageId = "pin-project-lite"; - } - { - name = "tower"; - packageId = "tower 0.5.2"; - optional = true; - } - { - name = "tower-layer"; - packageId = "tower-layer"; - } - { - name = "tower-service"; - packageId = "tower-service"; - } - { - name = "tracing"; - packageId = "tracing"; - optional = true; - usesDefaultFeatures = false; + } + { + name = "tracing"; + packageId = "tracing"; + optional = true; + usesDefaultFeatures = false; } ]; devDependencies = [ @@ -13846,7 +13994,7 @@ rec { } { name = "tower"; - packageId = "tower 0.5.2"; + packageId = "tower"; features = [ "buffer" "util" "retry" "make" "timeout" ]; } ]; @@ -13888,7 +14036,7 @@ rec { "uuid" = [ "dep:uuid" ]; "validate-request" = [ "mime" ]; }; - resolvedDefaultFeatures = [ "auth" "base64" "default" "follow-redirect" "futures-util" "iri-string" "map-response-body" "mime" "tower" "trace" "tracing" "validate-request" ]; + resolvedDefaultFeatures = [ "auth" "base64" "default" "follow-redirect" "futures-util" "iri-string" "map-response-body" "mime" "tower" "trace" "tracing" "util" "validate-request" ]; }; "tower-layer" = rec { crateName = "tower-layer"; @@ -13914,9 +14062,9 @@ rec { }; "tracing" = rec { crateName = "tracing"; - version = "0.1.41"; + version = "0.1.44"; edition = "2018"; - sha256 = "1l5xrzyjfyayrwhvhldfnwdyligi1mpqm8mzbi2m1d6y6p2hlkkq"; + sha256 = "006ilqkg1lmfdh3xhg3z762izfwmxcvz0w7m4qx2qajbz9i1drv3"; authors = [ "Eliza Weisman " "Tokio Contributors " @@ -13961,9 +14109,9 @@ rec { }; "tracing-appender" = rec { crateName = "tracing-appender"; - version = "0.2.3"; + version = "0.2.4"; edition = "2018"; - sha256 = "1kq69qyjvb4dxch5c9zgii6cqhy9nkk81z0r4pj3y2nc537fhrim"; + sha256 = "1bxf7xvsr89glbq174cx0b9pinaacbhlmc85y1ssniv2rq5lhvbq"; libName = "tracing_appender"; authors = [ "Zeki Sherif " @@ -13976,7 +14124,7 @@ rec { } { name = "thiserror"; - packageId = "thiserror 1.0.69"; + packageId = "thiserror 2.0.18"; } { name = "time"; @@ -13997,9 +14145,9 @@ rec { }; "tracing-attributes" = rec { crateName = "tracing-attributes"; - version = "0.1.30"; + version = "0.1.31"; edition = "2018"; - sha256 = "00v9bhfgfg3v101nmmy7s3vdwadb7ngc8c1iw6wai9vj9sv3lf41"; + sha256 = "1np8d77shfvz0n7camx2bsf1qw0zg331lra0hxb4cdwnxjjwz43l"; procMacro = true; libName = "tracing_attributes"; authors = [ @@ -14018,7 +14166,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.106"; + packageId = "syn 2.0.117"; usesDefaultFeatures = false; features = [ "full" "parsing" "printing" "visit-mut" "clone-impls" "extra-traits" "proc-macro" ]; } @@ -14028,9 +14176,9 @@ rec { }; "tracing-core" = rec { crateName = "tracing-core"; - version = "0.1.34"; + version = "0.1.36"; edition = "2018"; - sha256 = "0y3nc4mpnr79rzkrcylv5f5bnjjp19lsxwis9l4kzs97ya0jbldr"; + sha256 = "16mpbz6p8vd6j7sf925k9k8wzvm9vdfsjbynbmaxxyq6v7wwm5yv"; libName = "tracing_core"; authors = [ "Tokio Contributors " @@ -14059,9 +14207,9 @@ rec { }; "tracing-indicatif" = rec { crateName = "tracing-indicatif"; - version = "0.3.13"; + version = "0.3.14"; edition = "2024"; - sha256 = "0gc2s800fnz7j2ya4zw6i32cvzjmad1yj9vzlhjyzb171qgf3m04"; + sha256 = "0zn4m71shnxa37hxvzfxnnh724b3js728wq513q4k1s3w286kvz1"; libName = "tracing_indicatif"; dependencies = [ { @@ -14118,9 +14266,9 @@ rec { }; "tracing-opentelemetry" = rec { crateName = "tracing-opentelemetry"; - version = "0.29.0"; + version = "0.32.1"; edition = "2021"; - sha256 = "0dnca0b7bxbp6gd64skkvzy3p58yjh35kvnxpggz7sfwd4jjs7vj"; + sha256 = "1z2jjmxbkm1qawlb3bm99x8xwf4g8wjkbcknm9z4fv1w14nqzhhs"; libName = "tracing_opentelemetry"; dependencies = [ { @@ -14128,22 +14276,12 @@ rec { packageId = "js-sys"; target = { target, features }: (("wasm32" == target."arch" or null) && (!("wasi" == target."os" or null))); } - { - name = "once_cell"; - packageId = "once_cell"; - } { name = "opentelemetry"; packageId = "opentelemetry"; usesDefaultFeatures = false; features = [ "trace" ]; } - { - name = "opentelemetry_sdk"; - packageId = "opentelemetry_sdk"; - usesDefaultFeatures = false; - features = [ "trace" ]; - } { name = "smallvec"; packageId = "smallvec"; @@ -14183,12 +14321,6 @@ rec { packageId = "opentelemetry"; features = [ "trace" "metrics" ]; } - { - name = "opentelemetry_sdk"; - packageId = "opentelemetry_sdk"; - usesDefaultFeatures = false; - features = [ "trace" "rt-tokio" ]; - } { name = "tracing"; packageId = "tracing"; @@ -14203,14 +14335,10 @@ rec { } ]; features = { - "async-trait" = [ "dep:async-trait" ]; "default" = [ "tracing-log" "metrics" ]; - "futures-util" = [ "dep:futures-util" ]; "lazy_static" = [ "dep:lazy_static" ]; - "metrics" = [ "opentelemetry/metrics" "opentelemetry_sdk/metrics" "smallvec" ]; + "metrics" = [ "opentelemetry/metrics" "smallvec" ]; "smallvec" = [ "dep:smallvec" ]; - "thiserror" = [ "dep:thiserror" ]; - "thiserror-1" = [ "dep:thiserror-1" ]; "tracing-log" = [ "dep:tracing-log" ]; }; resolvedDefaultFeatures = [ "default" "metrics" "smallvec" "tracing-log" ]; @@ -14242,9 +14370,9 @@ rec { }; "tracing-subscriber" = rec { crateName = "tracing-subscriber"; - version = "0.3.20"; + version = "0.3.22"; edition = "2018"; - sha256 = "1m9447bxq7236avgl6n5yb2aqwplrghm61dgipw03mh7ad7s2m10"; + sha256 = "07hz575a0p1c2i4xw3gs3hkrykhndnkbfhyqdwjhvayx4ww18c1g"; libName = "tracing_subscriber"; authors = [ "Eliza Weisman " @@ -14375,9 +14503,9 @@ rec { }; "tungstenite" = rec { crateName = "tungstenite"; - version = "0.26.2"; + version = "0.28.0"; edition = "2021"; - sha256 = "04rwwcxx95m3avi46rmn0kmpb6nynqimnla3v2qwn3k8argcp4s7"; + sha256 = "0hll4l62lk77zqzgps04689skpk555lcpmi3hhyyn2as9v4dqa46"; authors = [ "Alexey Galakhov" "Daniel Abramov" @@ -14417,7 +14545,7 @@ rec { } { name = "thiserror"; - packageId = "thiserror 2.0.17"; + packageId = "thiserror 2.0.18"; } { name = "utf-8"; @@ -14479,115 +14607,11 @@ rec { }; resolvedDefaultFeatures = [ "std" ]; }; - "unic-char-property" = rec { - crateName = "unic-char-property"; - version = "0.9.0"; - edition = "2018"; - sha256 = "08g21dn3wwix3ycfl0vrbahn0835nv2q3swm8wms0vwvgm07mid8"; - libName = "unic_char_property"; - authors = [ - "The UNIC Project Developers" - ]; - dependencies = [ - { - name = "unic-char-range"; - packageId = "unic-char-range"; - } - ]; - - }; - "unic-char-range" = rec { - crateName = "unic-char-range"; - version = "0.9.0"; - edition = "2018"; - sha256 = "1g0z7iwvjhqspi6194zsff8vy6i3921hpqcrp3v1813hbwnh5603"; - libName = "unic_char_range"; - authors = [ - "The UNIC Project Developers" - ]; - features = { - "rayon" = [ "dep:rayon" ]; - "unstable" = [ "exact-size-is-empty" "fused" "trusted-len" ]; - }; - resolvedDefaultFeatures = [ "default" ]; - }; - "unic-common" = rec { - crateName = "unic-common"; - version = "0.9.0"; - edition = "2018"; - sha256 = "1g1mm954m0zr497dl4kx3vr09yaly290zs33bbl4wrbaba1gzmw0"; - libName = "unic_common"; - authors = [ - "The UNIC Project Developers" - ]; - features = { - }; - resolvedDefaultFeatures = [ "default" ]; - }; - "unic-segment" = rec { - crateName = "unic-segment"; - version = "0.9.0"; - edition = "2018"; - sha256 = "08wgz2q6vrdvmbd23kf9pbg8cyzm5q8hq9spc4blzy2ppqk5vvg4"; - libName = "unic_segment"; - authors = [ - "The UNIC Project Developers" - ]; - dependencies = [ - { - name = "unic-ucd-segment"; - packageId = "unic-ucd-segment"; - } - ]; - - }; - "unic-ucd-segment" = rec { - crateName = "unic-ucd-segment"; - version = "0.9.0"; - edition = "2018"; - sha256 = "0027lczcg0r401g6fnzm2bq9fxhgxvri1nlryhhv8192lqic2y90"; - libName = "unic_ucd_segment"; - authors = [ - "The UNIC Project Developers" - ]; - dependencies = [ - { - name = "unic-char-property"; - packageId = "unic-char-property"; - } - { - name = "unic-char-range"; - packageId = "unic-char-range"; - } - { - name = "unic-ucd-version"; - packageId = "unic-ucd-version"; - } - ]; - - }; - "unic-ucd-version" = rec { - crateName = "unic-ucd-version"; - version = "0.9.0"; - edition = "2018"; - sha256 = "1i5hnzpfnxkp4ijfk8kvhpvj84bij575ybqx1b6hyigy6wi2zgcn"; - libName = "unic_ucd_version"; - authors = [ - "The UNIC Project Developers" - ]; - dependencies = [ - { - name = "unic-common"; - packageId = "unic-common"; - } - ]; - - }; "unicase" = rec { crateName = "unicase"; - version = "2.8.1"; + version = "2.9.0"; edition = "2018"; - sha256 = "0fd5ddbhpva7wrln2iah054ar2pc1drqjcll0f493vj3fv8l9f3m"; + sha256 = "0hh1wrfd7807mfph2q67jsxqgw8hm82xg2fb8ln8cvblkwxbri6v"; authors = [ "Sean McArthur " ]; @@ -14596,9 +14620,9 @@ rec { }; "unicode-ident" = rec { crateName = "unicode-ident"; - version = "1.0.19"; - edition = "2018"; - sha256 = "17bx1j1zf6b9j3kpyf74mraary7ava3984km0n8kh499h5a58fpn"; + version = "1.0.24"; + edition = "2021"; + sha256 = "0xfs8y1g7syl2iykji8zk5hgfi5jw819f5zsrbaxmlzwsly33r76"; libName = "unicode_ident"; authors = [ "David Tolnay " @@ -14618,26 +14642,7 @@ rec { features = { }; }; - "unicode-width 0.1.14" = rec { - crateName = "unicode-width"; - version = "0.1.14"; - edition = "2021"; - sha256 = "1bzn2zv0gp8xxbxbhifw778a7fc93pa6a1kj24jgg9msj07f7mkx"; - libName = "unicode_width"; - authors = [ - "kwantam " - "Manish Goregaokar " - ]; - features = { - "compiler_builtins" = [ "dep:compiler_builtins" ]; - "core" = [ "dep:core" ]; - "default" = [ "cjk" ]; - "rustc-dep-of-std" = [ "std" "core" "compiler_builtins" ]; - "std" = [ "dep:std" ]; - }; - resolvedDefaultFeatures = [ "cjk" "default" ]; - }; - "unicode-width 0.2.2" = rec { + "unicode-width" = rec { crateName = "unicode-width"; version = "0.2.2"; edition = "2021"; @@ -14672,9 +14677,9 @@ rec { }; "unit-prefix" = rec { crateName = "unit-prefix"; - version = "0.5.1"; + version = "0.5.2"; edition = "2018"; - sha256 = "05rq0asf2f1q5vrcv4bwf0c3y6q20asqkiqpr8wqyrfxyb7h4d1j"; + sha256 = "18xr6yhdvlxrv51y6js9npa3qhkzc5b1z4skr5kfzn7kkd449rc1"; libName = "unit_prefix"; authors = [ "Fabio Valentini " @@ -14709,9 +14714,9 @@ rec { }; "url" = rec { crateName = "url"; - version = "2.5.7"; + version = "2.5.8"; edition = "2018"; - sha256 = "0nzghdv0kcksyvri0npxbjzyx2ihprks5k590y77bld355m17g08"; + sha256 = "1v8f7nx3hpr1qh76if0a04sj08k86amsq4h8cvpw6wvk76jahrzz"; authors = [ "The rust-url developers" ]; @@ -14739,20 +14744,28 @@ rec { packageId = "serde"; optional = true; usesDefaultFeatures = false; - features = [ "derive" ]; + } + { + name = "serde_derive"; + packageId = "serde_derive"; + optional = true; + usesDefaultFeatures = false; } ]; devDependencies = [ { name = "serde"; packageId = "serde"; - features = [ "derive" ]; + } + { + name = "serde_derive"; + packageId = "serde_derive"; } ]; features = { "default" = [ "std" ]; - "serde" = [ "dep:serde" ]; - "std" = [ "idna/std" "percent-encoding/std" "form_urlencoded/std" "serde/std" ]; + "serde" = [ "dep:serde" "dep:serde_derive" ]; + "std" = [ "idna/std" "percent-encoding/std" "form_urlencoded/std" "serde?/std" ]; }; resolvedDefaultFeatures = [ "default" "serde" "std" ]; }; @@ -14803,16 +14816,16 @@ rec { }; "utoipa" = rec { crateName = "utoipa"; - version = "4.2.3"; + version = "5.4.0"; edition = "2021"; - sha256 = "08xbxz3an28g0rv9agmqs1qix4nrrzppylw24r8clz901skb3by5"; + sha256 = "14z9ciwyxa3vca86hq3bsxxabnzxsyr142by4841dhr11k42kk1g"; authors = [ "Juha Kukkonen " ]; dependencies = [ { name = "indexmap"; - packageId = "indexmap 2.11.4"; + packageId = "indexmap"; features = [ "serde" ]; } { @@ -14827,46 +14840,47 @@ rec { { name = "utoipa-gen"; packageId = "utoipa-gen"; + optional = true; } ]; features = { - "actix_extras" = [ "utoipa-gen/actix_extras" ]; - "auto_into_responses" = [ "utoipa-gen/auto_into_responses" ]; - "axum_extras" = [ "utoipa-gen/axum_extras" ]; - "chrono" = [ "utoipa-gen/chrono" ]; - "debug" = [ "utoipa-gen/debug" ]; - "decimal" = [ "utoipa-gen/decimal" ]; - "decimal_float" = [ "utoipa-gen/decimal_float" ]; - "indexmap" = [ "utoipa-gen/indexmap" ]; - "non_strict_integers" = [ "utoipa-gen/non_strict_integers" ]; - "rc_schema" = [ "utoipa-gen/rc_schema" ]; - "repr" = [ "utoipa-gen/repr" ]; - "rocket_extras" = [ "utoipa-gen/rocket_extras" ]; - "serde_yaml" = [ "dep:serde_yaml" ]; - "smallvec" = [ "utoipa-gen/smallvec" ]; - "time" = [ "utoipa-gen/time" ]; - "ulid" = [ "utoipa-gen/ulid" ]; - "url" = [ "utoipa-gen/url" ]; - "uuid" = [ "utoipa-gen/uuid" ]; - "yaml" = [ "serde_yaml" "utoipa-gen/yaml" ]; - }; - resolvedDefaultFeatures = [ "default" "indexmap" ]; + "actix_extras" = [ "utoipa-gen?/actix_extras" ]; + "auto_into_responses" = [ "utoipa-gen?/auto_into_responses" ]; + "axum_extras" = [ "utoipa-gen?/axum_extras" ]; + "chrono" = [ "utoipa-gen?/chrono" ]; + "config" = [ "utoipa-gen?/config" ]; + "debug" = [ "utoipa-gen?/debug" ]; + "decimal" = [ "utoipa-gen?/decimal" ]; + "decimal_float" = [ "utoipa-gen?/decimal_float" ]; + "default" = [ "macros" ]; + "indexmap" = [ "utoipa-gen?/indexmap" ]; + "jiff_0_2" = [ "utoipa-gen?/jiff_0_2" ]; + "macros" = [ "dep:utoipa-gen" ]; + "non_strict_integers" = [ "utoipa-gen?/non_strict_integers" ]; + "rc_schema" = [ "utoipa-gen?/rc_schema" ]; + "repr" = [ "utoipa-gen?/repr" ]; + "rocket_extras" = [ "utoipa-gen?/rocket_extras" ]; + "serde_norway" = [ "dep:serde_norway" ]; + "smallvec" = [ "utoipa-gen?/smallvec" ]; + "time" = [ "utoipa-gen?/time" ]; + "ulid" = [ "utoipa-gen?/ulid" ]; + "url" = [ "utoipa-gen?/url" ]; + "uuid" = [ "utoipa-gen?/uuid" ]; + "yaml" = [ "serde_norway" "utoipa-gen?/yaml" ]; + }; + resolvedDefaultFeatures = [ "default" "indexmap" "macros" ]; }; "utoipa-gen" = rec { crateName = "utoipa-gen"; - version = "4.3.1"; + version = "5.4.0"; edition = "2021"; - sha256 = "14j3bim9igkqpzmgxc6i2rj1wq1mandx68mdd9sfxycgns54xhi0"; + sha256 = "12x0gisjn21dvxy9khdb3l7imxp3gb221nm6x32z92mbja6x0ybd"; procMacro = true; libName = "utoipa_gen"; authors = [ "Juha Kukkonen " ]; dependencies = [ - { - name = "proc-macro-error"; - packageId = "proc-macro-error"; - } { name = "proc-macro2"; packageId = "proc-macro2"; @@ -14877,13 +14891,14 @@ rec { } { name = "syn"; - packageId = "syn 2.0.106"; + packageId = "syn 2.0.117"; features = [ "full" "extra-traits" ]; } ]; features = { "actix_extras" = [ "regex" "syn/extra-traits" ]; "axum_extras" = [ "regex" "syn/extra-traits" ]; + "config" = [ "dep:utoipa-config" "dep:once_cell" ]; "debug" = [ "syn/extra-traits" ]; "regex" = [ "dep:regex" ]; "rocket_extras" = [ "regex" "syn/extra-traits" ]; @@ -14895,9 +14910,9 @@ rec { }; "utoipa-swagger-ui" = rec { crateName = "utoipa-swagger-ui"; - version = "7.1.0"; + version = "9.0.2"; edition = "2021"; - sha256 = "17hql6gyara5a6wh7faay72v4jh7gi6klrnm1x0pvmf60vv0ygll"; + sha256 = "0m9ssjii758b96rjg1k6lx07yrj5d49xpikd5xy26rav3f7laiyh"; libName = "utoipa_swagger_ui"; authors = [ "Juha Kukkonen " @@ -14905,11 +14920,15 @@ rec { dependencies = [ { name = "axum"; - packageId = "axum 0.7.9"; + packageId = "axum"; optional = true; usesDefaultFeatures = false; features = [ "json" ]; } + { + name = "base64"; + packageId = "base64"; + } { name = "mime_guess"; packageId = "mime_guess"; @@ -14921,7 +14940,7 @@ rec { { name = "serde"; packageId = "serde"; - features = [ "derive" ]; + features = [ "derive" "rc" ]; } { name = "serde_json"; @@ -14930,6 +14949,8 @@ rec { { name = "utoipa"; packageId = "utoipa"; + usesDefaultFeatures = false; + features = [ "macros" ]; } ]; buildDependencies = [ @@ -14937,20 +14958,6 @@ rec { name = "regex"; packageId = "regex"; } - { - name = "reqwest"; - packageId = "reqwest"; - optional = true; - usesDefaultFeatures = false; - features = [ "blocking" "rustls-tls" ]; - } - { - name = "reqwest"; - packageId = "reqwest"; - usesDefaultFeatures = false; - target = {target, features}: (target."windows" or false); - features = [ "blocking" "rustls-tls" ]; - } { name = "url"; packageId = "url"; @@ -14966,6 +14973,7 @@ rec { features = { "actix-web" = [ "dep:actix-web" ]; "axum" = [ "dep:axum" ]; + "cache" = [ "dep:dirs" "dep:sha2" ]; "debug-embed" = [ "rust-embed/debug-embed" ]; "default" = [ "url" ]; "reqwest" = [ "dep:reqwest" ]; @@ -14977,9 +14985,9 @@ rec { }; "uuid" = rec { crateName = "uuid"; - version = "1.18.1"; - edition = "2018"; - sha256 = "18kh01qmfayn4psap52x8xdjkzw2q8bcbpnhhxjs05dr22mbi1rg"; + version = "1.22.0"; + edition = "2021"; + sha256 = "0dvsfn44sddhyhlhk7m3i559wyb125h86799fm5abky0067kr3d6"; authors = [ "Ashley Mannix" "Dylan DPC" @@ -14988,7 +14996,7 @@ rec { dependencies = [ { name = "getrandom"; - packageId = "getrandom 0.3.4"; + packageId = "getrandom 0.4.2"; optional = true; target = { target, features }: (!(("wasm32" == target."arch" or null) && (("unknown" == target."os" or null) || ("none" == target."os" or null)))); } @@ -15012,7 +15020,7 @@ rec { { name = "wasm-bindgen"; packageId = "wasm-bindgen"; - target = {target, features}: (("wasm32" == target."arch" or null) && (("unknown" == target."os" or null) || ("none" == target."os" or null))); + target = { target, features }: (("wasm32" == target."arch" or null) && (("unknown" == target."os" or null) || ("none" == target."os" or null))); } ]; features = { @@ -15023,12 +15031,11 @@ rec { "default" = [ "std" ]; "fast-rng" = [ "rng" "dep:rand" ]; "js" = [ "dep:wasm-bindgen" "dep:js-sys" ]; - "macro-diagnostics" = [ "dep:uuid-macro-internal" ]; "md5" = [ "dep:md-5" ]; "rng" = [ "dep:getrandom" ]; "rng-getrandom" = [ "rng" "dep:getrandom" "uuid-rng-internal-lib" "uuid-rng-internal-lib/getrandom" ]; "rng-rand" = [ "rng" "dep:rand" "uuid-rng-internal-lib" "uuid-rng-internal-lib/rand" ]; - "serde" = [ "dep:serde" ]; + "serde" = [ "dep:serde_core" ]; "sha1" = [ "dep:sha1_smol" ]; "slog" = [ "dep:slog" ]; "std" = [ "wasm-bindgen?/std" "js-sys?/std" ]; @@ -15068,9 +15075,9 @@ rec { }; "vt100" = rec { crateName = "vt100"; - version = "0.15.2"; + version = "0.16.2"; edition = "2021"; - sha256 = "1pklc8y984axmxr0cd363srr2d27wd5rj15xlcmkjznvy0xqdkc4"; + sha256 = "1nbgsgamgibyx6y4xiyk6nkz7zggzbs6s445wq4yd0zsp1gzfkq5"; authors = [ "Jesse Luehrs " ]; @@ -15079,32 +15086,22 @@ rec { name = "itoa"; packageId = "itoa"; } - { - name = "log"; - packageId = "log"; - } { name = "unicode-width"; - packageId = "unicode-width 0.1.14"; - } - { - name = "vte"; - packageId = "vte 0.11.1"; + packageId = "unicode-width"; } - ]; - devDependencies = [ { name = "vte"; - packageId = "vte 0.11.1"; + packageId = "vte 0.15.0"; } ]; }; - "vte 0.11.1" = rec { + "vte 0.14.1" = rec { crateName = "vte"; - version = "0.11.1"; + version = "0.14.1"; edition = "2021"; - sha256 = "15r1ff4j8ndqj9vsyil3wqwxhhl7jsz5g58f31n0h1wlpxgjn0pm"; + sha256 = "0xy01fgkzb2080prh2ncd8949hm2248fc5wf1lryhdrhxzbxq7r3"; authors = [ "Joe Wilm " "Christian Duerr " @@ -15117,30 +15114,27 @@ rec { usesDefaultFeatures = false; } { - name = "utf8parse"; - packageId = "utf8parse"; - } - { - name = "vte_generate_state_changes"; - packageId = "vte_generate_state_changes"; + name = "memchr"; + packageId = "memchr"; } ]; features = { - "ansi" = [ "log" ]; + "ansi" = [ "log" "cursor-icon" "bitflags" ]; "arrayvec" = [ "dep:arrayvec" ]; + "bitflags" = [ "dep:bitflags" ]; + "cursor-icon" = [ "dep:cursor-icon" ]; "default" = [ "no_std" ]; "log" = [ "dep:log" ]; - "nightly" = [ "utf8parse/nightly" ]; "no_std" = [ "arrayvec" ]; "serde" = [ "dep:serde" ]; }; resolvedDefaultFeatures = [ "arrayvec" "default" "no_std" ]; }; - "vte 0.14.1" = rec { + "vte 0.15.0" = rec { crateName = "vte"; - version = "0.14.1"; + version = "0.15.0"; edition = "2021"; - sha256 = "0xy01fgkzb2080prh2ncd8949hm2248fc5wf1lryhdrhxzbxq7r3"; + sha256 = "1g9xgnw7q7zdwgfqa6zfcfsp92wn0j0h13kzsqy0dq3c80c414m5"; authors = [ "Joe Wilm " "Christian Duerr " @@ -15149,46 +15143,24 @@ rec { { name = "arrayvec"; packageId = "arrayvec"; - optional = true; usesDefaultFeatures = false; } { name = "memchr"; packageId = "memchr"; + usesDefaultFeatures = false; } ]; features = { "ansi" = [ "log" "cursor-icon" "bitflags" ]; - "arrayvec" = [ "dep:arrayvec" ]; "bitflags" = [ "dep:bitflags" ]; "cursor-icon" = [ "dep:cursor-icon" ]; - "default" = [ "no_std" ]; + "default" = [ "std" ]; "log" = [ "dep:log" ]; - "no_std" = [ "arrayvec" ]; "serde" = [ "dep:serde" ]; + "std" = [ "memchr/std" ]; }; - resolvedDefaultFeatures = [ "arrayvec" "default" "no_std" ]; - }; - "vte_generate_state_changes" = rec { - crateName = "vte_generate_state_changes"; - version = "0.1.2"; - edition = "2018"; - sha256 = "0biwgpcji3w4llz7h4bi8c2rwqchm9gmyr7dnjki1m853gp9ndif"; - procMacro = true; - authors = [ - "Christian Duerr " - ]; - dependencies = [ - { - name = "proc-macro2"; - packageId = "proc-macro2"; - } - { - name = "quote"; - packageId = "quote"; - } - ]; - + resolvedDefaultFeatures = [ "default" "std" ]; }; "walkdir" = rec { crateName = "walkdir"; @@ -15245,9 +15217,9 @@ rec { }; "wasip2" = rec { crateName = "wasip2"; - version = "1.0.1+wasi-0.2.4"; + version = "1.0.2+wasi-0.2.9"; edition = "2021"; - sha256 = "1rsqmpspwy0zja82xx7kbkbg9fv34a4a2if3sbd76dy64a244qh5"; + sha256 = "1xdw7v08jpfjdg94sp4lbdgzwa587m5ifpz6fpdnkh02kwizj5wm"; dependencies = [ { name = "wit-bindgen"; @@ -15263,11 +15235,36 @@ rec { "rustc-dep-of-std" = [ "core" "alloc" "wit-bindgen/rustc-dep-of-std" ]; }; }; + "wasip3" = rec { + crateName = "wasip3"; + version = "0.4.0+wasi-0.3.0-rc-2026-01-06"; + edition = "2021"; + sha256 = "19dc8p0y2mfrvgk3qw3c3240nfbylv22mvyxz84dqpgai2zzha2l"; + dependencies = [ + { + name = "wit-bindgen"; + packageId = "wit-bindgen"; + usesDefaultFeatures = false; + features = [ "async" ]; + } + ]; + devDependencies = [ + { + name = "wit-bindgen"; + packageId = "wit-bindgen"; + usesDefaultFeatures = false; + features = [ "async-spawn" ]; + } + ]; + features = { + "http-compat" = [ "dep:bytes" "dep:http-body" "dep:http" "dep:thiserror" "wit-bindgen/async-spawn" ]; + }; + }; "wasm-bindgen" = rec { crateName = "wasm-bindgen"; - version = "0.2.104"; + version = "0.2.114"; edition = "2021"; - sha256 = "0b8f4l6pqm0bz0lj5xgwmchb6977n71vmh7srd0axwg93b011nn1"; + sha256 = "13nkhw552hpllrrmkd2x9y4bmcxr82kdpky2n667kqzcq6jzjck5"; libName = "wasm_bindgen"; authors = [ "The wasm-bindgen Developers" @@ -15314,51 +15311,11 @@ rec { }; resolvedDefaultFeatures = [ "default" "msrv" "std" ]; }; - "wasm-bindgen-backend" = rec { - crateName = "wasm-bindgen-backend"; - version = "0.2.104"; - edition = "2021"; - sha256 = "069vnhhn2j4w2gwd8rch6g8d3iwkrgi45fas6i3qm7glcrd9l737"; - libName = "wasm_bindgen_backend"; - authors = [ - "The wasm-bindgen Developers" - ]; - dependencies = [ - { - name = "bumpalo"; - packageId = "bumpalo"; - } - { - name = "log"; - packageId = "log"; - } - { - name = "proc-macro2"; - packageId = "proc-macro2"; - } - { - name = "quote"; - packageId = "quote"; - } - { - name = "syn"; - packageId = "syn 2.0.106"; - features = [ "full" ]; - } - { - name = "wasm-bindgen-shared"; - packageId = "wasm-bindgen-shared"; - } - ]; - features = { - "extra-traits" = [ "syn/extra-traits" ]; - }; - }; "wasm-bindgen-futures" = rec { crateName = "wasm-bindgen-futures"; - version = "0.4.54"; + version = "0.4.64"; edition = "2021"; - sha256 = "0p5c10vfd7p7c607x3cgyfw9h77z1k33d6zzw2x77k3qwi0qs0vy"; + sha256 = "1f3xnr40wwims4zhvh119dhwmffz4h4x82cffi118ri878mm5ig9"; libName = "wasm_bindgen_futures"; authors = [ "The wasm-bindgen Developers" @@ -15368,6 +15325,13 @@ rec { name = "cfg-if"; packageId = "cfg-if"; } + { + name = "futures-util"; + packageId = "futures-util"; + optional = true; + usesDefaultFeatures = false; + features = [ "std" ]; + } { name = "js-sys"; packageId = "js-sys"; @@ -15395,15 +15359,16 @@ rec { "default" = [ "std" ]; "futures-core" = [ "dep:futures-core" ]; "futures-core-03-stream" = [ "futures-core" ]; - "std" = [ "wasm-bindgen/std" "js-sys/std" "web-sys/std" ]; + "futures-util" = [ "dep:futures-util" ]; + "std" = [ "wasm-bindgen/std" "js-sys/std" "web-sys/std" "futures-util" ]; }; - resolvedDefaultFeatures = [ "default" "std" ]; + resolvedDefaultFeatures = [ "default" "futures-util" "std" ]; }; "wasm-bindgen-macro" = rec { crateName = "wasm-bindgen-macro"; - version = "0.2.104"; + version = "0.2.114"; edition = "2021"; - sha256 = "06d1m5bg272h6jabq0snm7c50fifjz6r20f5hqlmz7y5wivh99kw"; + sha256 = "1rhq9kkl7n0zjrag9p25xsi4aabpgfkyf02zn4xv6pqhrw7xb8hq"; procMacro = true; libName = "wasm_bindgen_macro"; authors = [ @@ -15425,14 +15390,18 @@ rec { }; "wasm-bindgen-macro-support" = rec { crateName = "wasm-bindgen-macro-support"; - version = "0.2.104"; + version = "0.2.114"; edition = "2021"; - sha256 = "1mr18kx7ima1pmsqlkk982q4a0vf3r8s1x6901jb59sd1prd41wz"; + sha256 = "1qriqqjpn922kv5c7f7627fj823k5aifv06j2gvwsiy5map4rkh3"; libName = "wasm_bindgen_macro_support"; authors = [ "The wasm-bindgen Developers" ]; dependencies = [ + { + name = "bumpalo"; + packageId = "bumpalo"; + } { name = "proc-macro2"; packageId = "proc-macro2"; @@ -15443,12 +15412,8 @@ rec { } { name = "syn"; - packageId = "syn 2.0.106"; - features = [ "visit" "visit-mut" "full" ]; - } - { - name = "wasm-bindgen-backend"; - packageId = "wasm-bindgen-backend"; + packageId = "syn 2.0.117"; + features = [ "visit" "visit-mut" "full" "extra-traits" ]; } { name = "wasm-bindgen-shared"; @@ -15461,10 +15426,10 @@ rec { }; "wasm-bindgen-shared" = rec { crateName = "wasm-bindgen-shared"; - version = "0.2.104"; + version = "0.2.114"; edition = "2021"; links = "wasm_bindgen"; - sha256 = "1la1xj9v3gmawnlyi7lc3mb3xi447r6frb98hi2fb9m1nb47vmms"; + sha256 = "05lc6w64jxlk4wk8rjci4z61lhx2ams90la27a41gvi3qaw2d8vm"; libName = "wasm_bindgen_shared"; authors = [ "The wasm-bindgen Developers" @@ -15477,11 +15442,121 @@ rec { ]; }; + "wasm-encoder" = rec { + crateName = "wasm-encoder"; + version = "0.244.0"; + edition = "2021"; + sha256 = "06c35kv4h42vk3k51xjz1x6hn3mqwfswycmr6ziky033zvr6a04r"; + libName = "wasm_encoder"; + authors = [ + "Nick Fitzgerald " + ]; + dependencies = [ + { + name = "leb128fmt"; + packageId = "leb128fmt"; + usesDefaultFeatures = false; + } + { + name = "wasmparser"; + packageId = "wasmparser"; + optional = true; + usesDefaultFeatures = false; + features = [ "simd" "simd" ]; + } + ]; + features = { + "component-model" = [ "wasmparser?/component-model" ]; + "default" = [ "std" "component-model" ]; + "std" = [ "wasmparser?/std" ]; + "wasmparser" = [ "dep:wasmparser" ]; + }; + resolvedDefaultFeatures = [ "component-model" "std" "wasmparser" ]; + }; + "wasm-metadata" = rec { + crateName = "wasm-metadata"; + version = "0.244.0"; + edition = "2021"; + sha256 = "02f9dhlnryd2l7zf03whlxai5sv26x4spfibjdvc3g9gd8z3a3mv"; + libName = "wasm_metadata"; + dependencies = [ + { + name = "anyhow"; + packageId = "anyhow"; + } + { + name = "indexmap"; + packageId = "indexmap"; + usesDefaultFeatures = false; + features = [ "serde" ]; + } + { + name = "wasm-encoder"; + packageId = "wasm-encoder"; + usesDefaultFeatures = false; + features = [ "std" "component-model" ]; + } + { + name = "wasmparser"; + packageId = "wasmparser"; + usesDefaultFeatures = false; + features = [ "simd" "std" "component-model" "hash-collections" ]; + } + ]; + features = { + "clap" = [ "dep:clap" ]; + "default" = [ "oci" "serde" ]; + "oci" = [ "dep:auditable-serde" "dep:flate2" "dep:url" "dep:spdx" "dep:serde_json" "serde" ]; + "serde" = [ "dep:serde_derive" "dep:serde" ]; + }; + }; + "wasmparser" = rec { + crateName = "wasmparser"; + version = "0.244.0"; + edition = "2021"; + sha256 = "1zi821hrlsxfhn39nqpmgzc0wk7ax3dv6vrs5cw6kb0v5v3hgf27"; + authors = [ + "Yury Delendik " + ]; + dependencies = [ + { + name = "bitflags"; + packageId = "bitflags"; + } + { + name = "hashbrown"; + packageId = "hashbrown 0.15.5"; + optional = true; + usesDefaultFeatures = false; + features = [ "default-hasher" ]; + } + { + name = "indexmap"; + packageId = "indexmap"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "semver"; + packageId = "semver"; + optional = true; + usesDefaultFeatures = false; + } + ]; + features = { + "component-model" = [ "dep:semver" ]; + "default" = [ "std" "validate" "serde" "features" "component-model" "hash-collections" "simd" ]; + "hash-collections" = [ "dep:hashbrown" "dep:indexmap" ]; + "serde" = [ "dep:serde" "indexmap?/serde" "hashbrown?/serde" ]; + "std" = [ "indexmap?/std" ]; + }; + resolvedDefaultFeatures = [ "component-model" "features" "hash-collections" "simd" "std" "validate" ]; + }; "web-sys" = rec { crateName = "web-sys"; - version = "0.3.81"; + version = "0.3.91"; edition = "2021"; - sha256 = "0871ifd79ni9813sp5amk7wb3avznkijlsly2ap4r9r4m4bw8rwk"; + sha256 = "1y91r8f4dy4iqgrr03swdzqffz6wmllrgninp8kgpaq4n5xs2jw5"; libName = "web_sys"; authors = [ "The wasm-bindgen Developers" @@ -15507,7 +15582,9 @@ rec { "Attr" = [ "EventTarget" "Node" ]; "AudioBufferSourceNode" = [ "AudioNode" "AudioScheduledSourceNode" "EventTarget" ]; "AudioContext" = [ "BaseAudioContext" "EventTarget" ]; + "AudioDecoder" = [ "EventTarget" ]; "AudioDestinationNode" = [ "AudioNode" "EventTarget" ]; + "AudioEncoder" = [ "EventTarget" ]; "AudioNode" = [ "EventTarget" ]; "AudioProcessingEvent" = [ "Event" ]; "AudioScheduledSourceNode" = [ "AudioNode" "EventTarget" ]; @@ -15540,10 +15617,13 @@ rec { "Clipboard" = [ "EventTarget" ]; "ClipboardEvent" = [ "Event" ]; "CloseEvent" = [ "Event" ]; + "CommandEvent" = [ "Event" ]; "Comment" = [ "CharacterData" "EventTarget" "Node" ]; "CompositionEvent" = [ "Event" "UiEvent" ]; "ConstantSourceNode" = [ "AudioNode" "AudioScheduledSourceNode" "EventTarget" ]; "ConvolverNode" = [ "AudioNode" "EventTarget" ]; + "CookieChangeEvent" = [ "Event" ]; + "CookieStore" = [ "EventTarget" ]; "CssAnimation" = [ "Animation" "EventTarget" ]; "CssConditionRule" = [ "CssGroupingRule" "CssRule" ]; "CssCounterStyleRule" = [ "CssRule" ]; @@ -15580,6 +15660,7 @@ rec { "Element" = [ "EventTarget" "Node" ]; "ErrorEvent" = [ "Event" ]; "EventSource" = [ "EventTarget" ]; + "ExtendableCookieChangeEvent" = [ "Event" "ExtendableEvent" ]; "ExtendableEvent" = [ "Event" ]; "ExtendableMessageEvent" = [ "Event" "ExtendableEvent" ]; "FetchEvent" = [ "Event" "ExtendableEvent" ]; @@ -15694,7 +15775,6 @@ rec { "IdbVersionChangeEvent" = [ "Event" ]; "IirFilterNode" = [ "AudioNode" "EventTarget" ]; "ImageCaptureErrorEvent" = [ "Event" ]; - "ImageTrack" = [ "EventTarget" ]; "InputDeviceInfo" = [ "MediaDeviceInfo" ]; "InputEvent" = [ "Event" "UiEvent" ]; "KeyFrameRequestEvent" = [ "Event" ]; @@ -15768,6 +15848,7 @@ rec { "PublicKeyCredential" = [ "Credential" ]; "PushEvent" = [ "Event" "ExtendableEvent" ]; "RadioNodeList" = [ "NodeList" ]; + "Range" = [ "AbstractRange" ]; "RtcDataChannel" = [ "EventTarget" ]; "RtcDataChannelEvent" = [ "Event" ]; "RtcPeerConnection" = [ "EventTarget" ]; @@ -15781,6 +15862,8 @@ rec { "SFrameTransform" = [ "EventTarget" ]; "SFrameTransformErrorEvent" = [ "Event" ]; "Screen" = [ "EventTarget" ]; + "ScreenDetailed" = [ "EventTarget" "Screen" ]; + "ScreenDetails" = [ "EventTarget" ]; "ScreenOrientation" = [ "EventTarget" ]; "ScriptProcessorNode" = [ "AudioNode" "EventTarget" ]; "ScrollAreaEvent" = [ "Event" "UiEvent" ]; @@ -15803,6 +15886,7 @@ rec { "SpeechSynthesisErrorEvent" = [ "Event" "SpeechSynthesisEvent" ]; "SpeechSynthesisEvent" = [ "Event" ]; "SpeechSynthesisUtterance" = [ "EventTarget" ]; + "StaticRange" = [ "AbstractRange" ]; "StereoPannerNode" = [ "AudioNode" "EventTarget" ]; "StorageEvent" = [ "Event" ]; "SubmitEvent" = [ "Event" ]; @@ -15919,6 +16003,8 @@ rec { "UsbPermissionResult" = [ "EventTarget" "PermissionStatus" ]; "UserProximityEvent" = [ "Event" ]; "ValueEvent" = [ "Event" ]; + "VideoDecoder" = [ "EventTarget" ]; + "VideoEncoder" = [ "EventTarget" ]; "VideoStreamTrack" = [ "EventTarget" "MediaStreamTrack" ]; "VideoTrackList" = [ "EventTarget" ]; "VisualViewport" = [ "EventTarget" ]; @@ -15985,12 +16071,12 @@ rec { "serde" = [ "dep:serde" ]; }; }; - "webpki-roots" = rec { - crateName = "webpki-roots"; - version = "1.0.3"; + "webpki-root-certs" = rec { + crateName = "webpki-root-certs"; + version = "1.0.6"; edition = "2021"; - sha256 = "1f49w0s7f3fgczvjri179wh2a9g8jpkmdi5bi5l8p7ylsb031c9j"; - libName = "webpki_roots"; + sha256 = "1jm844z3caldlsb4ycb2h7q6vw4awfdgmddmx2sgyxi6mjj1hkw0"; + libName = "webpki_root_certs"; dependencies = [ { name = "rustls-pki-types"; @@ -16003,554 +16089,236 @@ rec { }; "which" = rec { crateName = "which"; - version = "6.0.3"; + version = "8.0.2"; edition = "2021"; - sha256 = "07yg74dsq644hq5a35546c9mja6rsjdsg92rykr9hkflxf7r5vml"; + sha256 = "0nf4c067qvw5zzk0lr9iadzfnaprr9kkrj0cgmxf8smgmapmz6c1"; authors = [ - "Harry Fei " + "Harry Fei , Jacob Kiesel " ]; dependencies = [ { - name = "either"; - packageId = "either"; - } - { - name = "home"; - packageId = "home"; - target = { target, features }: ((target."windows" or false) || (target."unix" or false) || ("redox" == target."os" or null)); - } - { - name = "rustix"; - packageId = "rustix 0.38.44"; - usesDefaultFeatures = false; + name = "libc"; + packageId = "libc"; + optional = true; target = { target, features }: ((target."unix" or false) || ("wasi" == target."os" or null) || ("redox" == target."os" or null)); - features = [ "fs" "std" ]; - } - { - name = "winsafe"; - packageId = "winsafe"; - target = { target, features }: (target."windows" or false); - features = [ "kernel" ]; } ]; features = { + "default" = [ "real-sys" ]; + "real-sys" = [ "dep:libc" ]; "regex" = [ "dep:regex" ]; "tracing" = [ "dep:tracing" ]; }; + resolvedDefaultFeatures = [ "default" "real-sys" ]; }; "winapi" = rec { crateName = "winapi"; - version = "0.3.9"; - edition = "2015"; - sha256 = "06gl025x418lchw1wxj64ycr7gha83m44cjr5sarhynd9xkrm0sw"; - authors = [ - "Peter Atashian " - ]; - dependencies = [ - { - name = "winapi-i686-pc-windows-gnu"; - packageId = "winapi-i686-pc-windows-gnu"; - target = { target, features }: (stdenv.hostPlatform.rust.rustcTarget == "i686-pc-windows-gnu"); - } - { - name = "winapi-x86_64-pc-windows-gnu"; - packageId = "winapi-x86_64-pc-windows-gnu"; - target = { target, features }: (stdenv.hostPlatform.rust.rustcTarget == "x86_64-pc-windows-gnu"); - } - ]; - features = { - "debug" = [ "impl-debug" ]; - }; - resolvedDefaultFeatures = [ "consoleapi" "handleapi" "impl-default" "processenv" "synchapi" "winbase" "winerror" "winuser" ]; - }; - "winapi-i686-pc-windows-gnu" = rec { - crateName = "winapi-i686-pc-windows-gnu"; - version = "0.4.0"; - edition = "2015"; - sha256 = "1dmpa6mvcvzz16zg6d5vrfy4bxgg541wxrcip7cnshi06v38ffxc"; - libName = "winapi_i686_pc_windows_gnu"; - authors = [ - "Peter Atashian " - ]; - - }; - "winapi-util" = rec { - crateName = "winapi-util"; - version = "0.1.11"; - edition = "2021"; - sha256 = "08hdl7mkll7pz8whg869h58c1r9y7in0w0pk8fm24qc77k0b39y2"; - libName = "winapi_util"; - authors = [ - "Andrew Gallant " - ]; - dependencies = [ - { - name = "windows-sys"; - packageId = "windows-sys 0.61.2"; - target = { target, features }: (target."windows" or false); - features = [ "Win32_Foundation" "Win32_Storage_FileSystem" "Win32_System_Console" "Win32_System_SystemInformation" ]; - } - ]; - - }; - "winapi-x86_64-pc-windows-gnu" = rec { - crateName = "winapi-x86_64-pc-windows-gnu"; - version = "0.4.0"; - edition = "2015"; - sha256 = "0gqq64czqb64kskjryj8isp62m2sgvx25yyj3kpc2myh85w24bki"; - libName = "winapi_x86_64_pc_windows_gnu"; - authors = [ - "Peter Atashian " - ]; - - }; - "windows-core" = rec { - crateName = "windows-core"; - version = "0.62.2"; - edition = "2021"; - sha256 = "1swxpv1a8qvn3bkxv8cn663238h2jccq35ff3nsj61jdsca3ms5q"; - libName = "windows_core"; - dependencies = [ - { - name = "windows-implement"; - packageId = "windows-implement"; - usesDefaultFeatures = false; - } - { - name = "windows-interface"; - packageId = "windows-interface"; - usesDefaultFeatures = false; - } - { - name = "windows-link"; - packageId = "windows-link 0.2.1"; - usesDefaultFeatures = false; - } - { - name = "windows-result"; - packageId = "windows-result"; - usesDefaultFeatures = false; - } - { - name = "windows-strings"; - packageId = "windows-strings"; - usesDefaultFeatures = false; - } - ]; - features = { - "default" = [ "std" ]; - "std" = [ "windows-result/std" "windows-strings/std" ]; - }; - resolvedDefaultFeatures = [ "default" "std" ]; - }; - "windows-implement" = rec { - crateName = "windows-implement"; - version = "0.60.2"; - edition = "2021"; - sha256 = "1psxhmklzcf3wjs4b8qb42qb6znvc142cb5pa74rsyxm1822wgh5"; - procMacro = true; - libName = "windows_implement"; - dependencies = [ - { - name = "proc-macro2"; - packageId = "proc-macro2"; - usesDefaultFeatures = false; - } - { - name = "quote"; - packageId = "quote"; - usesDefaultFeatures = false; - } - { - name = "syn"; - packageId = "syn 2.0.106"; - usesDefaultFeatures = false; - features = [ "parsing" "proc-macro" "printing" "full" "clone-impls" ]; - } - ]; - - }; - "windows-interface" = rec { - crateName = "windows-interface"; - version = "0.59.3"; - edition = "2021"; - sha256 = "0n73cwrn4247d0axrk7gjp08p34x1723483jxjxjdfkh4m56qc9z"; - procMacro = true; - libName = "windows_interface"; - dependencies = [ - { - name = "proc-macro2"; - packageId = "proc-macro2"; - usesDefaultFeatures = false; - } - { - name = "quote"; - packageId = "quote"; - usesDefaultFeatures = false; - } - { - name = "syn"; - packageId = "syn 2.0.106"; - usesDefaultFeatures = false; - features = [ "parsing" "proc-macro" "printing" "full" "clone-impls" ]; - } - ]; - - }; - "windows-link 0.1.3" = rec { - crateName = "windows-link"; - version = "0.1.3"; - edition = "2021"; - sha256 = "12kr1p46dbhpijr4zbwr2spfgq8i8c5x55mvvfmyl96m01cx4sjy"; - libName = "windows_link"; - authors = [ - "Microsoft" - ]; - - }; - "windows-link 0.2.1" = rec { - crateName = "windows-link"; - version = "0.2.1"; - edition = "2021"; - sha256 = "1rag186yfr3xx7piv5rg8b6im2dwcf8zldiflvb22xbzwli5507h"; - libName = "windows_link"; - - }; - "windows-result" = rec { - crateName = "windows-result"; - version = "0.4.1"; - edition = "2021"; - sha256 = "1d9yhmrmmfqh56zlj751s5wfm9a2aa7az9rd7nn5027nxa4zm0bp"; - libName = "windows_result"; - dependencies = [ - { - name = "windows-link"; - packageId = "windows-link 0.2.1"; - usesDefaultFeatures = false; - } - ]; - features = { - "default" = [ "std" ]; - }; - resolvedDefaultFeatures = [ "std" ]; - }; - "windows-strings" = rec { - crateName = "windows-strings"; - version = "0.5.1"; - edition = "2021"; - sha256 = "14bhng9jqv4fyl7lqjz3az7vzh8pw0w4am49fsqgcz67d67x0dvq"; - libName = "windows_strings"; - dependencies = [ - { - name = "windows-link"; - packageId = "windows-link 0.2.1"; - usesDefaultFeatures = false; - } - ]; - features = { - "default" = [ "std" ]; - }; - resolvedDefaultFeatures = [ "std" ]; - }; - "windows-sys 0.48.0" = rec { - crateName = "windows-sys"; - version = "0.48.0"; - edition = "2018"; - sha256 = "1aan23v5gs7gya1lc46hqn9mdh8yph3fhxmhxlw36pn6pqc28zb7"; - libName = "windows_sys"; - authors = [ - "Microsoft" - ]; - dependencies = [ - { - name = "windows-targets"; - packageId = "windows-targets 0.48.5"; - } - ]; - features = { - "Wdk_System" = [ "Wdk" ]; - "Wdk_System_OfflineRegistry" = [ "Wdk_System" ]; - "Win32_Data" = [ "Win32" ]; - "Win32_Data_HtmlHelp" = [ "Win32_Data" ]; - "Win32_Data_RightsManagement" = [ "Win32_Data" ]; - "Win32_Data_Xml" = [ "Win32_Data" ]; - "Win32_Data_Xml_MsXml" = [ "Win32_Data_Xml" ]; - "Win32_Data_Xml_XmlLite" = [ "Win32_Data_Xml" ]; - "Win32_Devices" = [ "Win32" ]; - "Win32_Devices_AllJoyn" = [ "Win32_Devices" ]; - "Win32_Devices_BiometricFramework" = [ "Win32_Devices" ]; - "Win32_Devices_Bluetooth" = [ "Win32_Devices" ]; - "Win32_Devices_Communication" = [ "Win32_Devices" ]; - "Win32_Devices_DeviceAccess" = [ "Win32_Devices" ]; - "Win32_Devices_DeviceAndDriverInstallation" = [ "Win32_Devices" ]; - "Win32_Devices_DeviceQuery" = [ "Win32_Devices" ]; - "Win32_Devices_Display" = [ "Win32_Devices" ]; - "Win32_Devices_Enumeration" = [ "Win32_Devices" ]; - "Win32_Devices_Enumeration_Pnp" = [ "Win32_Devices_Enumeration" ]; - "Win32_Devices_Fax" = [ "Win32_Devices" ]; - "Win32_Devices_FunctionDiscovery" = [ "Win32_Devices" ]; - "Win32_Devices_Geolocation" = [ "Win32_Devices" ]; - "Win32_Devices_HumanInterfaceDevice" = [ "Win32_Devices" ]; - "Win32_Devices_ImageAcquisition" = [ "Win32_Devices" ]; - "Win32_Devices_PortableDevices" = [ "Win32_Devices" ]; - "Win32_Devices_Properties" = [ "Win32_Devices" ]; - "Win32_Devices_Pwm" = [ "Win32_Devices" ]; - "Win32_Devices_Sensors" = [ "Win32_Devices" ]; - "Win32_Devices_SerialCommunication" = [ "Win32_Devices" ]; - "Win32_Devices_Tapi" = [ "Win32_Devices" ]; - "Win32_Devices_Usb" = [ "Win32_Devices" ]; - "Win32_Devices_WebServicesOnDevices" = [ "Win32_Devices" ]; - "Win32_Foundation" = [ "Win32" ]; - "Win32_Gaming" = [ "Win32" ]; - "Win32_Globalization" = [ "Win32" ]; - "Win32_Graphics" = [ "Win32" ]; - "Win32_Graphics_Dwm" = [ "Win32_Graphics" ]; - "Win32_Graphics_Gdi" = [ "Win32_Graphics" ]; - "Win32_Graphics_Hlsl" = [ "Win32_Graphics" ]; - "Win32_Graphics_OpenGL" = [ "Win32_Graphics" ]; - "Win32_Graphics_Printing" = [ "Win32_Graphics" ]; - "Win32_Graphics_Printing_PrintTicket" = [ "Win32_Graphics_Printing" ]; - "Win32_Management" = [ "Win32" ]; - "Win32_Management_MobileDeviceManagementRegistration" = [ "Win32_Management" ]; - "Win32_Media" = [ "Win32" ]; - "Win32_Media_Audio" = [ "Win32_Media" ]; - "Win32_Media_Audio_Apo" = [ "Win32_Media_Audio" ]; - "Win32_Media_Audio_DirectMusic" = [ "Win32_Media_Audio" ]; - "Win32_Media_Audio_Endpoints" = [ "Win32_Media_Audio" ]; - "Win32_Media_Audio_XAudio2" = [ "Win32_Media_Audio" ]; - "Win32_Media_DeviceManager" = [ "Win32_Media" ]; - "Win32_Media_DxMediaObjects" = [ "Win32_Media" ]; - "Win32_Media_KernelStreaming" = [ "Win32_Media" ]; - "Win32_Media_LibrarySharingServices" = [ "Win32_Media" ]; - "Win32_Media_MediaPlayer" = [ "Win32_Media" ]; - "Win32_Media_Multimedia" = [ "Win32_Media" ]; - "Win32_Media_Speech" = [ "Win32_Media" ]; - "Win32_Media_Streaming" = [ "Win32_Media" ]; - "Win32_Media_WindowsMediaFormat" = [ "Win32_Media" ]; - "Win32_NetworkManagement" = [ "Win32" ]; - "Win32_NetworkManagement_Dhcp" = [ "Win32_NetworkManagement" ]; - "Win32_NetworkManagement_Dns" = [ "Win32_NetworkManagement" ]; - "Win32_NetworkManagement_InternetConnectionWizard" = [ "Win32_NetworkManagement" ]; - "Win32_NetworkManagement_IpHelper" = [ "Win32_NetworkManagement" ]; - "Win32_NetworkManagement_MobileBroadband" = [ "Win32_NetworkManagement" ]; - "Win32_NetworkManagement_Multicast" = [ "Win32_NetworkManagement" ]; - "Win32_NetworkManagement_Ndis" = [ "Win32_NetworkManagement" ]; - "Win32_NetworkManagement_NetBios" = [ "Win32_NetworkManagement" ]; - "Win32_NetworkManagement_NetManagement" = [ "Win32_NetworkManagement" ]; - "Win32_NetworkManagement_NetShell" = [ "Win32_NetworkManagement" ]; - "Win32_NetworkManagement_NetworkDiagnosticsFramework" = [ "Win32_NetworkManagement" ]; - "Win32_NetworkManagement_NetworkPolicyServer" = [ "Win32_NetworkManagement" ]; - "Win32_NetworkManagement_P2P" = [ "Win32_NetworkManagement" ]; - "Win32_NetworkManagement_QoS" = [ "Win32_NetworkManagement" ]; - "Win32_NetworkManagement_Rras" = [ "Win32_NetworkManagement" ]; - "Win32_NetworkManagement_Snmp" = [ "Win32_NetworkManagement" ]; - "Win32_NetworkManagement_WNet" = [ "Win32_NetworkManagement" ]; - "Win32_NetworkManagement_WebDav" = [ "Win32_NetworkManagement" ]; - "Win32_NetworkManagement_WiFi" = [ "Win32_NetworkManagement" ]; - "Win32_NetworkManagement_WindowsConnectNow" = [ "Win32_NetworkManagement" ]; - "Win32_NetworkManagement_WindowsConnectionManager" = [ "Win32_NetworkManagement" ]; - "Win32_NetworkManagement_WindowsFilteringPlatform" = [ "Win32_NetworkManagement" ]; - "Win32_NetworkManagement_WindowsFirewall" = [ "Win32_NetworkManagement" ]; - "Win32_NetworkManagement_WindowsNetworkVirtualization" = [ "Win32_NetworkManagement" ]; - "Win32_Networking" = [ "Win32" ]; - "Win32_Networking_ActiveDirectory" = [ "Win32_Networking" ]; - "Win32_Networking_BackgroundIntelligentTransferService" = [ "Win32_Networking" ]; - "Win32_Networking_Clustering" = [ "Win32_Networking" ]; - "Win32_Networking_HttpServer" = [ "Win32_Networking" ]; - "Win32_Networking_Ldap" = [ "Win32_Networking" ]; - "Win32_Networking_NetworkListManager" = [ "Win32_Networking" ]; - "Win32_Networking_RemoteDifferentialCompression" = [ "Win32_Networking" ]; - "Win32_Networking_WebSocket" = [ "Win32_Networking" ]; - "Win32_Networking_WinHttp" = [ "Win32_Networking" ]; - "Win32_Networking_WinInet" = [ "Win32_Networking" ]; - "Win32_Networking_WinSock" = [ "Win32_Networking" ]; - "Win32_Networking_WindowsWebServices" = [ "Win32_Networking" ]; - "Win32_Security" = [ "Win32" ]; - "Win32_Security_AppLocker" = [ "Win32_Security" ]; - "Win32_Security_Authentication" = [ "Win32_Security" ]; - "Win32_Security_Authentication_Identity" = [ "Win32_Security_Authentication" ]; - "Win32_Security_Authentication_Identity_Provider" = [ "Win32_Security_Authentication_Identity" ]; - "Win32_Security_Authorization" = [ "Win32_Security" ]; - "Win32_Security_Authorization_UI" = [ "Win32_Security_Authorization" ]; - "Win32_Security_ConfigurationSnapin" = [ "Win32_Security" ]; - "Win32_Security_Credentials" = [ "Win32_Security" ]; - "Win32_Security_Cryptography" = [ "Win32_Security" ]; - "Win32_Security_Cryptography_Catalog" = [ "Win32_Security_Cryptography" ]; - "Win32_Security_Cryptography_Certificates" = [ "Win32_Security_Cryptography" ]; - "Win32_Security_Cryptography_Sip" = [ "Win32_Security_Cryptography" ]; - "Win32_Security_Cryptography_UI" = [ "Win32_Security_Cryptography" ]; - "Win32_Security_DiagnosticDataQuery" = [ "Win32_Security" ]; - "Win32_Security_DirectoryServices" = [ "Win32_Security" ]; - "Win32_Security_EnterpriseData" = [ "Win32_Security" ]; - "Win32_Security_ExtensibleAuthenticationProtocol" = [ "Win32_Security" ]; - "Win32_Security_Isolation" = [ "Win32_Security" ]; - "Win32_Security_LicenseProtection" = [ "Win32_Security" ]; - "Win32_Security_NetworkAccessProtection" = [ "Win32_Security" ]; - "Win32_Security_Tpm" = [ "Win32_Security" ]; - "Win32_Security_WinTrust" = [ "Win32_Security" ]; - "Win32_Security_WinWlx" = [ "Win32_Security" ]; - "Win32_Storage" = [ "Win32" ]; - "Win32_Storage_Cabinets" = [ "Win32_Storage" ]; - "Win32_Storage_CloudFilters" = [ "Win32_Storage" ]; - "Win32_Storage_Compression" = [ "Win32_Storage" ]; - "Win32_Storage_DataDeduplication" = [ "Win32_Storage" ]; - "Win32_Storage_DistributedFileSystem" = [ "Win32_Storage" ]; - "Win32_Storage_EnhancedStorage" = [ "Win32_Storage" ]; - "Win32_Storage_FileHistory" = [ "Win32_Storage" ]; - "Win32_Storage_FileServerResourceManager" = [ "Win32_Storage" ]; - "Win32_Storage_FileSystem" = [ "Win32_Storage" ]; - "Win32_Storage_Imapi" = [ "Win32_Storage" ]; - "Win32_Storage_IndexServer" = [ "Win32_Storage" ]; - "Win32_Storage_InstallableFileSystems" = [ "Win32_Storage" ]; - "Win32_Storage_IscsiDisc" = [ "Win32_Storage" ]; - "Win32_Storage_Jet" = [ "Win32_Storage" ]; - "Win32_Storage_OfflineFiles" = [ "Win32_Storage" ]; - "Win32_Storage_OperationRecorder" = [ "Win32_Storage" ]; - "Win32_Storage_Packaging" = [ "Win32_Storage" ]; - "Win32_Storage_Packaging_Appx" = [ "Win32_Storage_Packaging" ]; - "Win32_Storage_Packaging_Opc" = [ "Win32_Storage_Packaging" ]; - "Win32_Storage_ProjectedFileSystem" = [ "Win32_Storage" ]; - "Win32_Storage_StructuredStorage" = [ "Win32_Storage" ]; - "Win32_Storage_Vhd" = [ "Win32_Storage" ]; - "Win32_Storage_VirtualDiskService" = [ "Win32_Storage" ]; - "Win32_Storage_Vss" = [ "Win32_Storage" ]; - "Win32_Storage_Xps" = [ "Win32_Storage" ]; - "Win32_Storage_Xps_Printing" = [ "Win32_Storage_Xps" ]; - "Win32_System" = [ "Win32" ]; - "Win32_System_AddressBook" = [ "Win32_System" ]; - "Win32_System_Antimalware" = [ "Win32_System" ]; - "Win32_System_ApplicationInstallationAndServicing" = [ "Win32_System" ]; - "Win32_System_ApplicationVerifier" = [ "Win32_System" ]; - "Win32_System_AssessmentTool" = [ "Win32_System" ]; - "Win32_System_ClrHosting" = [ "Win32_System" ]; - "Win32_System_Com" = [ "Win32_System" ]; - "Win32_System_Com_CallObj" = [ "Win32_System_Com" ]; - "Win32_System_Com_ChannelCredentials" = [ "Win32_System_Com" ]; - "Win32_System_Com_Events" = [ "Win32_System_Com" ]; - "Win32_System_Com_Marshal" = [ "Win32_System_Com" ]; - "Win32_System_Com_StructuredStorage" = [ "Win32_System_Com" ]; - "Win32_System_Com_UI" = [ "Win32_System_Com" ]; - "Win32_System_Com_Urlmon" = [ "Win32_System_Com" ]; - "Win32_System_ComponentServices" = [ "Win32_System" ]; - "Win32_System_Console" = [ "Win32_System" ]; - "Win32_System_Contacts" = [ "Win32_System" ]; - "Win32_System_CorrelationVector" = [ "Win32_System" ]; - "Win32_System_DataExchange" = [ "Win32_System" ]; - "Win32_System_DeploymentServices" = [ "Win32_System" ]; - "Win32_System_DesktopSharing" = [ "Win32_System" ]; - "Win32_System_DeveloperLicensing" = [ "Win32_System" ]; - "Win32_System_Diagnostics" = [ "Win32_System" ]; - "Win32_System_Diagnostics_Ceip" = [ "Win32_System_Diagnostics" ]; - "Win32_System_Diagnostics_ClrProfiling" = [ "Win32_System_Diagnostics" ]; - "Win32_System_Diagnostics_Debug" = [ "Win32_System_Diagnostics" ]; - "Win32_System_Diagnostics_Debug_ActiveScript" = [ "Win32_System_Diagnostics_Debug" ]; - "Win32_System_Diagnostics_Debug_Extensions" = [ "Win32_System_Diagnostics_Debug" ]; - "Win32_System_Diagnostics_Etw" = [ "Win32_System_Diagnostics" ]; - "Win32_System_Diagnostics_ProcessSnapshotting" = [ "Win32_System_Diagnostics" ]; - "Win32_System_Diagnostics_ToolHelp" = [ "Win32_System_Diagnostics" ]; - "Win32_System_DistributedTransactionCoordinator" = [ "Win32_System" ]; - "Win32_System_Environment" = [ "Win32_System" ]; - "Win32_System_ErrorReporting" = [ "Win32_System" ]; - "Win32_System_EventCollector" = [ "Win32_System" ]; - "Win32_System_EventLog" = [ "Win32_System" ]; - "Win32_System_EventNotificationService" = [ "Win32_System" ]; - "Win32_System_GroupPolicy" = [ "Win32_System" ]; - "Win32_System_HostCompute" = [ "Win32_System" ]; - "Win32_System_HostComputeNetwork" = [ "Win32_System" ]; - "Win32_System_HostComputeSystem" = [ "Win32_System" ]; - "Win32_System_Hypervisor" = [ "Win32_System" ]; - "Win32_System_IO" = [ "Win32_System" ]; - "Win32_System_Iis" = [ "Win32_System" ]; - "Win32_System_Ioctl" = [ "Win32_System" ]; - "Win32_System_JobObjects" = [ "Win32_System" ]; - "Win32_System_Js" = [ "Win32_System" ]; - "Win32_System_Kernel" = [ "Win32_System" ]; - "Win32_System_LibraryLoader" = [ "Win32_System" ]; - "Win32_System_Mailslots" = [ "Win32_System" ]; - "Win32_System_Mapi" = [ "Win32_System" ]; - "Win32_System_Memory" = [ "Win32_System" ]; - "Win32_System_Memory_NonVolatile" = [ "Win32_System_Memory" ]; - "Win32_System_MessageQueuing" = [ "Win32_System" ]; - "Win32_System_MixedReality" = [ "Win32_System" ]; - "Win32_System_Mmc" = [ "Win32_System" ]; - "Win32_System_Ole" = [ "Win32_System" ]; - "Win32_System_ParentalControls" = [ "Win32_System" ]; - "Win32_System_PasswordManagement" = [ "Win32_System" ]; - "Win32_System_Performance" = [ "Win32_System" ]; - "Win32_System_Performance_HardwareCounterProfiling" = [ "Win32_System_Performance" ]; - "Win32_System_Pipes" = [ "Win32_System" ]; - "Win32_System_Power" = [ "Win32_System" ]; - "Win32_System_ProcessStatus" = [ "Win32_System" ]; - "Win32_System_RealTimeCommunications" = [ "Win32_System" ]; - "Win32_System_Recovery" = [ "Win32_System" ]; - "Win32_System_Registry" = [ "Win32_System" ]; - "Win32_System_RemoteAssistance" = [ "Win32_System" ]; - "Win32_System_RemoteDesktop" = [ "Win32_System" ]; - "Win32_System_RemoteManagement" = [ "Win32_System" ]; - "Win32_System_RestartManager" = [ "Win32_System" ]; - "Win32_System_Restore" = [ "Win32_System" ]; - "Win32_System_Rpc" = [ "Win32_System" ]; - "Win32_System_Search" = [ "Win32_System" ]; - "Win32_System_Search_Common" = [ "Win32_System_Search" ]; - "Win32_System_SecurityCenter" = [ "Win32_System" ]; - "Win32_System_ServerBackup" = [ "Win32_System" ]; - "Win32_System_Services" = [ "Win32_System" ]; - "Win32_System_SettingsManagementInfrastructure" = [ "Win32_System" ]; - "Win32_System_SetupAndMigration" = [ "Win32_System" ]; - "Win32_System_Shutdown" = [ "Win32_System" ]; - "Win32_System_StationsAndDesktops" = [ "Win32_System" ]; - "Win32_System_SubsystemForLinux" = [ "Win32_System" ]; - "Win32_System_SystemInformation" = [ "Win32_System" ]; - "Win32_System_SystemServices" = [ "Win32_System" ]; - "Win32_System_TaskScheduler" = [ "Win32_System" ]; - "Win32_System_Threading" = [ "Win32_System" ]; - "Win32_System_Time" = [ "Win32_System" ]; - "Win32_System_TpmBaseServices" = [ "Win32_System" ]; - "Win32_System_UpdateAgent" = [ "Win32_System" ]; - "Win32_System_UpdateAssessment" = [ "Win32_System" ]; - "Win32_System_UserAccessLogging" = [ "Win32_System" ]; - "Win32_System_VirtualDosMachines" = [ "Win32_System" ]; - "Win32_System_WindowsProgramming" = [ "Win32_System" ]; - "Win32_System_WindowsSync" = [ "Win32_System" ]; - "Win32_System_Wmi" = [ "Win32_System" ]; - "Win32_UI" = [ "Win32" ]; - "Win32_UI_Accessibility" = [ "Win32_UI" ]; - "Win32_UI_Animation" = [ "Win32_UI" ]; - "Win32_UI_ColorSystem" = [ "Win32_UI" ]; - "Win32_UI_Controls" = [ "Win32_UI" ]; - "Win32_UI_Controls_Dialogs" = [ "Win32_UI_Controls" ]; - "Win32_UI_Controls_RichEdit" = [ "Win32_UI_Controls" ]; - "Win32_UI_HiDpi" = [ "Win32_UI" ]; - "Win32_UI_Input" = [ "Win32_UI" ]; - "Win32_UI_Input_Ime" = [ "Win32_UI_Input" ]; - "Win32_UI_Input_Ink" = [ "Win32_UI_Input" ]; - "Win32_UI_Input_KeyboardAndMouse" = [ "Win32_UI_Input" ]; - "Win32_UI_Input_Pointer" = [ "Win32_UI_Input" ]; - "Win32_UI_Input_Radial" = [ "Win32_UI_Input" ]; - "Win32_UI_Input_Touch" = [ "Win32_UI_Input" ]; - "Win32_UI_Input_XboxController" = [ "Win32_UI_Input" ]; - "Win32_UI_InteractionContext" = [ "Win32_UI" ]; - "Win32_UI_LegacyWindowsEnvironmentFeatures" = [ "Win32_UI" ]; - "Win32_UI_Magnification" = [ "Win32_UI" ]; - "Win32_UI_Notifications" = [ "Win32_UI" ]; - "Win32_UI_Ribbon" = [ "Win32_UI" ]; - "Win32_UI_Shell" = [ "Win32_UI" ]; - "Win32_UI_Shell_Common" = [ "Win32_UI_Shell" ]; - "Win32_UI_Shell_PropertiesSystem" = [ "Win32_UI_Shell" ]; - "Win32_UI_TabletPC" = [ "Win32_UI" ]; - "Win32_UI_TextServices" = [ "Win32_UI" ]; - "Win32_UI_WindowsAndMessaging" = [ "Win32_UI" ]; - "Win32_UI_Wpf" = [ "Win32_UI" ]; - "Win32_Web" = [ "Win32" ]; - "Win32_Web_InternetExplorer" = [ "Win32_Web" ]; + version = "0.3.9"; + edition = "2015"; + sha256 = "06gl025x418lchw1wxj64ycr7gha83m44cjr5sarhynd9xkrm0sw"; + authors = [ + "Peter Atashian " + ]; + dependencies = [ + { + name = "winapi-i686-pc-windows-gnu"; + packageId = "winapi-i686-pc-windows-gnu"; + target = { target, features }: (target.name == "i686-pc-windows-gnu"); + } + { + name = "winapi-x86_64-pc-windows-gnu"; + packageId = "winapi-x86_64-pc-windows-gnu"; + target = { target, features }: (target.name == "x86_64-pc-windows-gnu"); + } + ]; + features = { + "debug" = [ "impl-debug" ]; }; - resolvedDefaultFeatures = [ "Win32" "Win32_Foundation" "Win32_Globalization" "Win32_System" "Win32_System_Com" "Win32_UI" "Win32_UI_Shell" "default" ]; + resolvedDefaultFeatures = [ "consoleapi" "handleapi" "impl-default" "processenv" "synchapi" "winbase" "winerror" "winuser" ]; }; - "windows-sys 0.52.0" = rec { - crateName = "windows-sys"; - version = "0.52.0"; + "winapi-i686-pc-windows-gnu" = rec { + crateName = "winapi-i686-pc-windows-gnu"; + version = "0.4.0"; + edition = "2015"; + sha256 = "1dmpa6mvcvzz16zg6d5vrfy4bxgg541wxrcip7cnshi06v38ffxc"; + libName = "winapi_i686_pc_windows_gnu"; + authors = [ + "Peter Atashian " + ]; + + }; + "winapi-util" = rec { + crateName = "winapi-util"; + version = "0.1.11"; edition = "2021"; - sha256 = "0gd3v4ji88490zgb6b5mq5zgbvwv7zx1ibn8v3x83rwcdbryaar8"; + sha256 = "08hdl7mkll7pz8whg869h58c1r9y7in0w0pk8fm24qc77k0b39y2"; + libName = "winapi_util"; + authors = [ + "Andrew Gallant " + ]; + dependencies = [ + { + name = "windows-sys"; + packageId = "windows-sys 0.61.2"; + target = { target, features }: (target."windows" or false); + features = [ "Win32_Foundation" "Win32_Storage_FileSystem" "Win32_System_Console" "Win32_System_SystemInformation" ]; + } + ]; + + }; + "winapi-x86_64-pc-windows-gnu" = rec { + crateName = "winapi-x86_64-pc-windows-gnu"; + version = "0.4.0"; + edition = "2015"; + sha256 = "0gqq64czqb64kskjryj8isp62m2sgvx25yyj3kpc2myh85w24bki"; + libName = "winapi_x86_64_pc_windows_gnu"; + authors = [ + "Peter Atashian " + ]; + + }; + "windows-core" = rec { + crateName = "windows-core"; + version = "0.62.2"; + edition = "2021"; + sha256 = "1swxpv1a8qvn3bkxv8cn663238h2jccq35ff3nsj61jdsca3ms5q"; + libName = "windows_core"; + dependencies = [ + { + name = "windows-implement"; + packageId = "windows-implement"; + usesDefaultFeatures = false; + } + { + name = "windows-interface"; + packageId = "windows-interface"; + usesDefaultFeatures = false; + } + { + name = "windows-link"; + packageId = "windows-link"; + usesDefaultFeatures = false; + } + { + name = "windows-result"; + packageId = "windows-result"; + usesDefaultFeatures = false; + } + { + name = "windows-strings"; + packageId = "windows-strings"; + usesDefaultFeatures = false; + } + ]; + features = { + "default" = [ "std" ]; + "std" = [ "windows-result/std" "windows-strings/std" ]; + }; + resolvedDefaultFeatures = [ "default" "std" ]; + }; + "windows-implement" = rec { + crateName = "windows-implement"; + version = "0.60.2"; + edition = "2021"; + sha256 = "1psxhmklzcf3wjs4b8qb42qb6znvc142cb5pa74rsyxm1822wgh5"; + procMacro = true; + libName = "windows_implement"; + dependencies = [ + { + name = "proc-macro2"; + packageId = "proc-macro2"; + usesDefaultFeatures = false; + } + { + name = "quote"; + packageId = "quote"; + usesDefaultFeatures = false; + } + { + name = "syn"; + packageId = "syn 2.0.117"; + usesDefaultFeatures = false; + features = [ "parsing" "proc-macro" "printing" "full" "clone-impls" ]; + } + ]; + + }; + "windows-interface" = rec { + crateName = "windows-interface"; + version = "0.59.3"; + edition = "2021"; + sha256 = "0n73cwrn4247d0axrk7gjp08p34x1723483jxjxjdfkh4m56qc9z"; + procMacro = true; + libName = "windows_interface"; + dependencies = [ + { + name = "proc-macro2"; + packageId = "proc-macro2"; + usesDefaultFeatures = false; + } + { + name = "quote"; + packageId = "quote"; + usesDefaultFeatures = false; + } + { + name = "syn"; + packageId = "syn 2.0.117"; + usesDefaultFeatures = false; + features = [ "parsing" "proc-macro" "printing" "full" "clone-impls" ]; + } + ]; + + }; + "windows-link" = rec { + crateName = "windows-link"; + version = "0.2.1"; + edition = "2021"; + sha256 = "1rag186yfr3xx7piv5rg8b6im2dwcf8zldiflvb22xbzwli5507h"; + libName = "windows_link"; + + }; + "windows-result" = rec { + crateName = "windows-result"; + version = "0.4.1"; + edition = "2021"; + sha256 = "1d9yhmrmmfqh56zlj751s5wfm9a2aa7az9rd7nn5027nxa4zm0bp"; + libName = "windows_result"; + dependencies = [ + { + name = "windows-link"; + packageId = "windows-link"; + usesDefaultFeatures = false; + } + ]; + features = { + "default" = [ "std" ]; + }; + resolvedDefaultFeatures = [ "std" ]; + }; + "windows-strings" = rec { + crateName = "windows-strings"; + version = "0.5.1"; + edition = "2021"; + sha256 = "14bhng9jqv4fyl7lqjz3az7vzh8pw0w4am49fsqgcz67d67x0dvq"; + libName = "windows_strings"; + dependencies = [ + { + name = "windows-link"; + packageId = "windows-link"; + usesDefaultFeatures = false; + } + ]; + features = { + "default" = [ "std" ]; + }; + resolvedDefaultFeatures = [ "std" ]; + }; + "windows-sys 0.45.0" = rec { + crateName = "windows-sys"; + version = "0.45.0"; + edition = "2018"; + sha256 = "1l36bcqm4g89pknfp8r9rl1w4bn017q6a8qlx8viv0xjxzjkna3m"; libName = "windows_sys"; authors = [ "Microsoft" @@ -16558,38 +16326,33 @@ rec { dependencies = [ { name = "windows-targets"; - packageId = "windows-targets 0.52.6"; + packageId = "windows-targets 0.42.2"; + target = { target, features }: (!(target."windows_raw_dylib" or false)); } ]; features = { - "Wdk_Foundation" = [ "Wdk" ]; - "Wdk_Graphics" = [ "Wdk" ]; - "Wdk_Graphics_Direct3D" = [ "Wdk_Graphics" ]; - "Wdk_Storage" = [ "Wdk" ]; - "Wdk_Storage_FileSystem" = [ "Wdk_Storage" ]; - "Wdk_Storage_FileSystem_Minifilters" = [ "Wdk_Storage_FileSystem" ]; - "Wdk_System" = [ "Wdk" ]; - "Wdk_System_IO" = [ "Wdk_System" ]; - "Wdk_System_OfflineRegistry" = [ "Wdk_System" ]; - "Wdk_System_Registry" = [ "Wdk_System" ]; - "Wdk_System_SystemInformation" = [ "Wdk_System" ]; - "Wdk_System_SystemServices" = [ "Wdk_System" ]; - "Wdk_System_Threading" = [ "Wdk_System" ]; "Win32_Data" = [ "Win32" ]; "Win32_Data_HtmlHelp" = [ "Win32_Data" ]; "Win32_Data_RightsManagement" = [ "Win32_Data" ]; + "Win32_Data_Xml" = [ "Win32_Data" ]; + "Win32_Data_Xml_MsXml" = [ "Win32_Data_Xml" ]; + "Win32_Data_Xml_XmlLite" = [ "Win32_Data_Xml" ]; "Win32_Devices" = [ "Win32" ]; "Win32_Devices_AllJoyn" = [ "Win32_Devices" ]; "Win32_Devices_BiometricFramework" = [ "Win32_Devices" ]; "Win32_Devices_Bluetooth" = [ "Win32_Devices" ]; "Win32_Devices_Communication" = [ "Win32_Devices" ]; + "Win32_Devices_DeviceAccess" = [ "Win32_Devices" ]; "Win32_Devices_DeviceAndDriverInstallation" = [ "Win32_Devices" ]; "Win32_Devices_DeviceQuery" = [ "Win32_Devices" ]; "Win32_Devices_Display" = [ "Win32_Devices" ]; "Win32_Devices_Enumeration" = [ "Win32_Devices" ]; "Win32_Devices_Enumeration_Pnp" = [ "Win32_Devices_Enumeration" ]; "Win32_Devices_Fax" = [ "Win32_Devices" ]; + "Win32_Devices_FunctionDiscovery" = [ "Win32_Devices" ]; + "Win32_Devices_Geolocation" = [ "Win32_Devices" ]; "Win32_Devices_HumanInterfaceDevice" = [ "Win32_Devices" ]; + "Win32_Devices_ImageAcquisition" = [ "Win32_Devices" ]; "Win32_Devices_PortableDevices" = [ "Win32_Devices" ]; "Win32_Devices_Properties" = [ "Win32_Devices" ]; "Win32_Devices_Pwm" = [ "Win32_Devices" ]; @@ -16604,7 +16367,6 @@ rec { "Win32_Graphics" = [ "Win32" ]; "Win32_Graphics_Dwm" = [ "Win32_Graphics" ]; "Win32_Graphics_Gdi" = [ "Win32_Graphics" ]; - "Win32_Graphics_GdiPlus" = [ "Win32_Graphics" ]; "Win32_Graphics_Hlsl" = [ "Win32_Graphics" ]; "Win32_Graphics_OpenGL" = [ "Win32_Graphics" ]; "Win32_Graphics_Printing" = [ "Win32_Graphics" ]; @@ -16613,9 +16375,17 @@ rec { "Win32_Management_MobileDeviceManagementRegistration" = [ "Win32_Management" ]; "Win32_Media" = [ "Win32" ]; "Win32_Media_Audio" = [ "Win32_Media" ]; + "Win32_Media_Audio_Apo" = [ "Win32_Media_Audio" ]; + "Win32_Media_Audio_DirectMusic" = [ "Win32_Media_Audio" ]; + "Win32_Media_Audio_Endpoints" = [ "Win32_Media_Audio" ]; + "Win32_Media_Audio_XAudio2" = [ "Win32_Media_Audio" ]; + "Win32_Media_DeviceManager" = [ "Win32_Media" ]; "Win32_Media_DxMediaObjects" = [ "Win32_Media" ]; "Win32_Media_KernelStreaming" = [ "Win32_Media" ]; + "Win32_Media_LibrarySharingServices" = [ "Win32_Media" ]; + "Win32_Media_MediaPlayer" = [ "Win32_Media" ]; "Win32_Media_Multimedia" = [ "Win32_Media" ]; + "Win32_Media_Speech" = [ "Win32_Media" ]; "Win32_Media_Streaming" = [ "Win32_Media" ]; "Win32_Media_WindowsMediaFormat" = [ "Win32_Media" ]; "Win32_NetworkManagement" = [ "Win32" ]; @@ -16623,12 +16393,14 @@ rec { "Win32_NetworkManagement_Dns" = [ "Win32_NetworkManagement" ]; "Win32_NetworkManagement_InternetConnectionWizard" = [ "Win32_NetworkManagement" ]; "Win32_NetworkManagement_IpHelper" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_MobileBroadband" = [ "Win32_NetworkManagement" ]; "Win32_NetworkManagement_Multicast" = [ "Win32_NetworkManagement" ]; "Win32_NetworkManagement_Ndis" = [ "Win32_NetworkManagement" ]; "Win32_NetworkManagement_NetBios" = [ "Win32_NetworkManagement" ]; "Win32_NetworkManagement_NetManagement" = [ "Win32_NetworkManagement" ]; "Win32_NetworkManagement_NetShell" = [ "Win32_NetworkManagement" ]; "Win32_NetworkManagement_NetworkDiagnosticsFramework" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_NetworkPolicyServer" = [ "Win32_NetworkManagement" ]; "Win32_NetworkManagement_P2P" = [ "Win32_NetworkManagement" ]; "Win32_NetworkManagement_QoS" = [ "Win32_NetworkManagement" ]; "Win32_NetworkManagement_Rras" = [ "Win32_NetworkManagement" ]; @@ -16636,15 +16408,19 @@ rec { "Win32_NetworkManagement_WNet" = [ "Win32_NetworkManagement" ]; "Win32_NetworkManagement_WebDav" = [ "Win32_NetworkManagement" ]; "Win32_NetworkManagement_WiFi" = [ "Win32_NetworkManagement" ]; + "Win32_NetworkManagement_WindowsConnectNow" = [ "Win32_NetworkManagement" ]; "Win32_NetworkManagement_WindowsConnectionManager" = [ "Win32_NetworkManagement" ]; "Win32_NetworkManagement_WindowsFilteringPlatform" = [ "Win32_NetworkManagement" ]; "Win32_NetworkManagement_WindowsFirewall" = [ "Win32_NetworkManagement" ]; "Win32_NetworkManagement_WindowsNetworkVirtualization" = [ "Win32_NetworkManagement" ]; "Win32_Networking" = [ "Win32" ]; "Win32_Networking_ActiveDirectory" = [ "Win32_Networking" ]; + "Win32_Networking_BackgroundIntelligentTransferService" = [ "Win32_Networking" ]; "Win32_Networking_Clustering" = [ "Win32_Networking" ]; "Win32_Networking_HttpServer" = [ "Win32_Networking" ]; "Win32_Networking_Ldap" = [ "Win32_Networking" ]; + "Win32_Networking_NetworkListManager" = [ "Win32_Networking" ]; + "Win32_Networking_RemoteDifferentialCompression" = [ "Win32_Networking" ]; "Win32_Networking_WebSocket" = [ "Win32_Networking" ]; "Win32_Networking_WinHttp" = [ "Win32_Networking" ]; "Win32_Networking_WinInet" = [ "Win32_Networking" ]; @@ -16654,7 +16430,10 @@ rec { "Win32_Security_AppLocker" = [ "Win32_Security" ]; "Win32_Security_Authentication" = [ "Win32_Security" ]; "Win32_Security_Authentication_Identity" = [ "Win32_Security_Authentication" ]; + "Win32_Security_Authentication_Identity_Provider" = [ "Win32_Security_Authentication_Identity" ]; "Win32_Security_Authorization" = [ "Win32_Security" ]; + "Win32_Security_Authorization_UI" = [ "Win32_Security_Authorization" ]; + "Win32_Security_ConfigurationSnapin" = [ "Win32_Security" ]; "Win32_Security_Credentials" = [ "Win32_Security" ]; "Win32_Security_Cryptography" = [ "Win32_Security" ]; "Win32_Security_Cryptography_Catalog" = [ "Win32_Security_Cryptography" ]; @@ -16668,49 +16447,61 @@ rec { "Win32_Security_Isolation" = [ "Win32_Security" ]; "Win32_Security_LicenseProtection" = [ "Win32_Security" ]; "Win32_Security_NetworkAccessProtection" = [ "Win32_Security" ]; + "Win32_Security_Tpm" = [ "Win32_Security" ]; "Win32_Security_WinTrust" = [ "Win32_Security" ]; "Win32_Security_WinWlx" = [ "Win32_Security" ]; "Win32_Storage" = [ "Win32" ]; "Win32_Storage_Cabinets" = [ "Win32_Storage" ]; "Win32_Storage_CloudFilters" = [ "Win32_Storage" ]; "Win32_Storage_Compression" = [ "Win32_Storage" ]; + "Win32_Storage_DataDeduplication" = [ "Win32_Storage" ]; "Win32_Storage_DistributedFileSystem" = [ "Win32_Storage" ]; + "Win32_Storage_EnhancedStorage" = [ "Win32_Storage" ]; "Win32_Storage_FileHistory" = [ "Win32_Storage" ]; + "Win32_Storage_FileServerResourceManager" = [ "Win32_Storage" ]; "Win32_Storage_FileSystem" = [ "Win32_Storage" ]; "Win32_Storage_Imapi" = [ "Win32_Storage" ]; "Win32_Storage_IndexServer" = [ "Win32_Storage" ]; "Win32_Storage_InstallableFileSystems" = [ "Win32_Storage" ]; "Win32_Storage_IscsiDisc" = [ "Win32_Storage" ]; "Win32_Storage_Jet" = [ "Win32_Storage" ]; - "Win32_Storage_Nvme" = [ "Win32_Storage" ]; "Win32_Storage_OfflineFiles" = [ "Win32_Storage" ]; "Win32_Storage_OperationRecorder" = [ "Win32_Storage" ]; "Win32_Storage_Packaging" = [ "Win32_Storage" ]; "Win32_Storage_Packaging_Appx" = [ "Win32_Storage_Packaging" ]; + "Win32_Storage_Packaging_Opc" = [ "Win32_Storage_Packaging" ]; "Win32_Storage_ProjectedFileSystem" = [ "Win32_Storage" ]; "Win32_Storage_StructuredStorage" = [ "Win32_Storage" ]; "Win32_Storage_Vhd" = [ "Win32_Storage" ]; + "Win32_Storage_VirtualDiskService" = [ "Win32_Storage" ]; + "Win32_Storage_Vss" = [ "Win32_Storage" ]; "Win32_Storage_Xps" = [ "Win32_Storage" ]; + "Win32_Storage_Xps_Printing" = [ "Win32_Storage_Xps" ]; "Win32_System" = [ "Win32" ]; "Win32_System_AddressBook" = [ "Win32_System" ]; "Win32_System_Antimalware" = [ "Win32_System" ]; "Win32_System_ApplicationInstallationAndServicing" = [ "Win32_System" ]; "Win32_System_ApplicationVerifier" = [ "Win32_System" ]; - "Win32_System_ClrHosting" = [ "Win32_System" ]; + "Win32_System_AssessmentTool" = [ "Win32_System" ]; "Win32_System_Com" = [ "Win32_System" ]; + "Win32_System_Com_CallObj" = [ "Win32_System_Com" ]; + "Win32_System_Com_ChannelCredentials" = [ "Win32_System_Com" ]; + "Win32_System_Com_Events" = [ "Win32_System_Com" ]; "Win32_System_Com_Marshal" = [ "Win32_System_Com" ]; "Win32_System_Com_StructuredStorage" = [ "Win32_System_Com" ]; + "Win32_System_Com_UI" = [ "Win32_System_Com" ]; "Win32_System_Com_Urlmon" = [ "Win32_System_Com" ]; "Win32_System_ComponentServices" = [ "Win32_System" ]; "Win32_System_Console" = [ "Win32_System" ]; + "Win32_System_Contacts" = [ "Win32_System" ]; "Win32_System_CorrelationVector" = [ "Win32_System" ]; "Win32_System_DataExchange" = [ "Win32_System" ]; "Win32_System_DeploymentServices" = [ "Win32_System" ]; + "Win32_System_DesktopSharing" = [ "Win32_System" ]; "Win32_System_DeveloperLicensing" = [ "Win32_System" ]; "Win32_System_Diagnostics" = [ "Win32_System" ]; "Win32_System_Diagnostics_Ceip" = [ "Win32_System_Diagnostics" ]; "Win32_System_Diagnostics_Debug" = [ "Win32_System_Diagnostics" ]; - "Win32_System_Diagnostics_Debug_Extensions" = [ "Win32_System_Diagnostics_Debug" ]; "Win32_System_Diagnostics_Etw" = [ "Win32_System_Diagnostics" ]; "Win32_System_Diagnostics_ProcessSnapshotting" = [ "Win32_System_Diagnostics" ]; "Win32_System_Diagnostics_ToolHelp" = [ "Win32_System_Diagnostics" ]; @@ -16738,15 +16529,19 @@ rec { "Win32_System_Memory_NonVolatile" = [ "Win32_System_Memory" ]; "Win32_System_MessageQueuing" = [ "Win32_System" ]; "Win32_System_MixedReality" = [ "Win32_System" ]; + "Win32_System_Mmc" = [ "Win32_System" ]; "Win32_System_Ole" = [ "Win32_System" ]; + "Win32_System_ParentalControls" = [ "Win32_System" ]; "Win32_System_PasswordManagement" = [ "Win32_System" ]; "Win32_System_Performance" = [ "Win32_System" ]; "Win32_System_Performance_HardwareCounterProfiling" = [ "Win32_System_Performance" ]; "Win32_System_Pipes" = [ "Win32_System" ]; "Win32_System_Power" = [ "Win32_System" ]; "Win32_System_ProcessStatus" = [ "Win32_System" ]; + "Win32_System_RealTimeCommunications" = [ "Win32_System" ]; "Win32_System_Recovery" = [ "Win32_System" ]; "Win32_System_Registry" = [ "Win32_System" ]; + "Win32_System_RemoteAssistance" = [ "Win32_System" ]; "Win32_System_RemoteDesktop" = [ "Win32_System" ]; "Win32_System_RemoteManagement" = [ "Win32_System" ]; "Win32_System_RestartManager" = [ "Win32_System" ]; @@ -16755,50 +16550,62 @@ rec { "Win32_System_Search" = [ "Win32_System" ]; "Win32_System_Search_Common" = [ "Win32_System_Search" ]; "Win32_System_SecurityCenter" = [ "Win32_System" ]; + "Win32_System_ServerBackup" = [ "Win32_System" ]; "Win32_System_Services" = [ "Win32_System" ]; + "Win32_System_SettingsManagementInfrastructure" = [ "Win32_System" ]; "Win32_System_SetupAndMigration" = [ "Win32_System" ]; "Win32_System_Shutdown" = [ "Win32_System" ]; "Win32_System_StationsAndDesktops" = [ "Win32_System" ]; "Win32_System_SubsystemForLinux" = [ "Win32_System" ]; "Win32_System_SystemInformation" = [ "Win32_System" ]; "Win32_System_SystemServices" = [ "Win32_System" ]; + "Win32_System_TaskScheduler" = [ "Win32_System" ]; "Win32_System_Threading" = [ "Win32_System" ]; "Win32_System_Time" = [ "Win32_System" ]; "Win32_System_TpmBaseServices" = [ "Win32_System" ]; + "Win32_System_UpdateAgent" = [ "Win32_System" ]; + "Win32_System_UpdateAssessment" = [ "Win32_System" ]; "Win32_System_UserAccessLogging" = [ "Win32_System" ]; - "Win32_System_Variant" = [ "Win32_System" ]; "Win32_System_VirtualDosMachines" = [ "Win32_System" ]; "Win32_System_WindowsProgramming" = [ "Win32_System" ]; + "Win32_System_WindowsSync" = [ "Win32_System" ]; "Win32_System_Wmi" = [ "Win32_System" ]; "Win32_UI" = [ "Win32" ]; "Win32_UI_Accessibility" = [ "Win32_UI" ]; + "Win32_UI_Animation" = [ "Win32_UI" ]; "Win32_UI_ColorSystem" = [ "Win32_UI" ]; "Win32_UI_Controls" = [ "Win32_UI" ]; "Win32_UI_Controls_Dialogs" = [ "Win32_UI_Controls" ]; + "Win32_UI_Controls_RichEdit" = [ "Win32_UI_Controls" ]; "Win32_UI_HiDpi" = [ "Win32_UI" ]; "Win32_UI_Input" = [ "Win32_UI" ]; "Win32_UI_Input_Ime" = [ "Win32_UI_Input" ]; + "Win32_UI_Input_Ink" = [ "Win32_UI_Input" ]; "Win32_UI_Input_KeyboardAndMouse" = [ "Win32_UI_Input" ]; "Win32_UI_Input_Pointer" = [ "Win32_UI_Input" ]; + "Win32_UI_Input_Radial" = [ "Win32_UI_Input" ]; "Win32_UI_Input_Touch" = [ "Win32_UI_Input" ]; "Win32_UI_Input_XboxController" = [ "Win32_UI_Input" ]; "Win32_UI_InteractionContext" = [ "Win32_UI" ]; + "Win32_UI_LegacyWindowsEnvironmentFeatures" = [ "Win32_UI" ]; "Win32_UI_Magnification" = [ "Win32_UI" ]; + "Win32_UI_Notifications" = [ "Win32_UI" ]; + "Win32_UI_Ribbon" = [ "Win32_UI" ]; "Win32_UI_Shell" = [ "Win32_UI" ]; + "Win32_UI_Shell_Common" = [ "Win32_UI_Shell" ]; "Win32_UI_Shell_PropertiesSystem" = [ "Win32_UI_Shell" ]; "Win32_UI_TabletPC" = [ "Win32_UI" ]; "Win32_UI_TextServices" = [ "Win32_UI" ]; "Win32_UI_WindowsAndMessaging" = [ "Win32_UI" ]; - "Win32_Web" = [ "Win32" ]; - "Win32_Web_InternetExplorer" = [ "Win32_Web" ]; + "Win32_UI_Wpf" = [ "Win32_UI" ]; }; - resolvedDefaultFeatures = [ "Win32" "Win32_Foundation" "Win32_Networking" "Win32_Networking_WinSock" "Win32_System" "Win32_System_IO" "Win32_System_Threading" "Win32_System_WindowsProgramming" "default" ]; + resolvedDefaultFeatures = [ "Win32" "Win32_Globalization" "default" ]; }; - "windows-sys 0.59.0" = rec { + "windows-sys 0.52.0" = rec { crateName = "windows-sys"; - version = "0.59.0"; + version = "0.52.0"; edition = "2021"; - sha256 = "0fw5672ziw8b3zpmnbp9pdv1famk74f1l9fcbc3zsrzdg56vqf0y"; + sha256 = "0gd3v4ji88490zgb6b5mq5zgbvwv7zx1ibn8v3x83rwcdbryaar8"; libName = "windows_sys"; authors = [ "Microsoft" @@ -16810,28 +16617,19 @@ rec { } ]; features = { - "Wdk" = [ "Win32_Foundation" ]; - "Wdk_Devices" = [ "Wdk" ]; - "Wdk_Devices_Bluetooth" = [ "Wdk_Devices" ]; - "Wdk_Devices_HumanInterfaceDevice" = [ "Wdk_Devices" ]; "Wdk_Foundation" = [ "Wdk" ]; "Wdk_Graphics" = [ "Wdk" ]; "Wdk_Graphics_Direct3D" = [ "Wdk_Graphics" ]; - "Wdk_NetworkManagement" = [ "Wdk" ]; - "Wdk_NetworkManagement_Ndis" = [ "Wdk_NetworkManagement" ]; - "Wdk_NetworkManagement_WindowsFilteringPlatform" = [ "Wdk_NetworkManagement" ]; "Wdk_Storage" = [ "Wdk" ]; "Wdk_Storage_FileSystem" = [ "Wdk_Storage" ]; "Wdk_Storage_FileSystem_Minifilters" = [ "Wdk_Storage_FileSystem" ]; "Wdk_System" = [ "Wdk" ]; "Wdk_System_IO" = [ "Wdk_System" ]; - "Wdk_System_Memory" = [ "Wdk_System" ]; "Wdk_System_OfflineRegistry" = [ "Wdk_System" ]; "Wdk_System_Registry" = [ "Wdk_System" ]; "Wdk_System_SystemInformation" = [ "Wdk_System" ]; "Wdk_System_SystemServices" = [ "Wdk_System" ]; "Wdk_System_Threading" = [ "Wdk_System" ]; - "Win32" = [ "Win32_Foundation" ]; "Win32_Data" = [ "Win32" ]; "Win32_Data_HtmlHelp" = [ "Win32_Data" ]; "Win32_Data_RightsManagement" = [ "Win32_Data" ]; @@ -16971,7 +16769,6 @@ rec { "Win32_System_Diagnostics_Etw" = [ "Win32_System_Diagnostics" ]; "Win32_System_Diagnostics_ProcessSnapshotting" = [ "Win32_System_Diagnostics" ]; "Win32_System_Diagnostics_ToolHelp" = [ "Win32_System_Diagnostics" ]; - "Win32_System_Diagnostics_TraceLogging" = [ "Win32_System_Diagnostics" ]; "Win32_System_DistributedTransactionCoordinator" = [ "Win32_System" ]; "Win32_System_Environment" = [ "Win32_System" ]; "Win32_System_ErrorReporting" = [ "Win32_System" ]; @@ -17043,7 +16840,6 @@ rec { "Win32_UI_InteractionContext" = [ "Win32_UI" ]; "Win32_UI_Magnification" = [ "Win32_UI" ]; "Win32_UI_Shell" = [ "Win32_UI" ]; - "Win32_UI_Shell_Common" = [ "Win32_UI_Shell" ]; "Win32_UI_Shell_PropertiesSystem" = [ "Win32_UI_Shell" ]; "Win32_UI_TabletPC" = [ "Win32_UI" ]; "Win32_UI_TextServices" = [ "Win32_UI" ]; @@ -17051,7 +16847,7 @@ rec { "Win32_Web" = [ "Win32" ]; "Win32_Web_InternetExplorer" = [ "Win32_Web" ]; }; - resolvedDefaultFeatures = [ "Win32" "Win32_Foundation" "Win32_NetworkManagement" "Win32_NetworkManagement_IpHelper" "Win32_Networking" "Win32_Networking_WinSock" "Win32_System" "Win32_System_Com" "Win32_System_Threading" "Win32_UI" "Win32_UI_Shell" "default" ]; + resolvedDefaultFeatures = [ "Win32" "Win32_Foundation" "Win32_System" "Win32_System_Threading" "default" ]; }; "windows-sys 0.60.2" = rec { crateName = "windows-sys"; @@ -17316,7 +17112,7 @@ rec { "Win32_Web" = [ "Win32" ]; "Win32_Web_InternetExplorer" = [ "Win32_Web" ]; }; - resolvedDefaultFeatures = [ "Win32" "Win32_Foundation" "Win32_Networking" "Win32_Networking_WinSock" "Win32_System" "Win32_System_Console" "Win32_System_IO" "Win32_System_Threading" "Win32_System_WindowsProgramming" "default" ]; + resolvedDefaultFeatures = [ "Win32" "Win32_Foundation" "Win32_Networking" "Win32_Networking_WinSock" "Win32_System" "Win32_System_IO" "default" ]; }; "windows-sys 0.61.2" = rec { crateName = "windows-sys"; @@ -17327,7 +17123,7 @@ rec { dependencies = [ { name = "windows-link"; - packageId = "windows-link 0.2.1"; + packageId = "windows-link"; usesDefaultFeatures = false; } ]; @@ -17578,13 +17374,13 @@ rec { "Win32_Web" = [ "Win32" ]; "Win32_Web_InternetExplorer" = [ "Win32_Web" ]; }; - resolvedDefaultFeatures = [ "Wdk" "Wdk_Foundation" "Wdk_Storage" "Wdk_Storage_FileSystem" "Wdk_System" "Wdk_System_IO" "Win32" "Win32_Foundation" "Win32_Networking" "Win32_Networking_WinSock" "Win32_Security" "Win32_Security_Authentication" "Win32_Security_Authentication_Identity" "Win32_Security_Credentials" "Win32_Security_Cryptography" "Win32_Storage" "Win32_Storage_FileSystem" "Win32_System" "Win32_System_Console" "Win32_System_Diagnostics" "Win32_System_Diagnostics_Debug" "Win32_System_IO" "Win32_System_LibraryLoader" "Win32_System_Memory" "Win32_System_Pipes" "Win32_System_SystemInformation" "Win32_System_SystemServices" "Win32_System_Threading" "Win32_System_WindowsProgramming" "Win32_UI" "Win32_UI_Input" "Win32_UI_Input_KeyboardAndMouse" "default" ]; + resolvedDefaultFeatures = [ "Wdk" "Wdk_Foundation" "Wdk_Storage" "Wdk_Storage_FileSystem" "Wdk_System" "Wdk_System_IO" "Win32" "Win32_Foundation" "Win32_Globalization" "Win32_Networking" "Win32_Networking_WinSock" "Win32_Security" "Win32_Security_Authentication" "Win32_Security_Authentication_Identity" "Win32_Security_Credentials" "Win32_Security_Cryptography" "Win32_Storage" "Win32_Storage_FileSystem" "Win32_System" "Win32_System_Com" "Win32_System_Console" "Win32_System_Diagnostics" "Win32_System_Diagnostics_Debug" "Win32_System_IO" "Win32_System_LibraryLoader" "Win32_System_Memory" "Win32_System_Pipes" "Win32_System_SystemInformation" "Win32_System_SystemServices" "Win32_System_Threading" "Win32_System_Time" "Win32_System_WindowsProgramming" "Win32_UI" "Win32_UI_Input" "Win32_UI_Input_KeyboardAndMouse" "Win32_UI_Shell" "default" ]; }; - "windows-targets 0.48.5" = rec { + "windows-targets 0.42.2" = rec { crateName = "windows-targets"; - version = "0.48.5"; + version = "0.42.2"; edition = "2018"; - sha256 = "034ljxqshifs1lan89xwpcy1hp0lhdh4b5n0d2z4fwjx2piacbws"; + sha256 = "0wfhnib2fisxlx8c507dbmh97kgij4r6kcxdi0f9nk6l1k080lcf"; libName = "windows_targets"; authors = [ "Microsoft" @@ -17592,38 +17388,63 @@ rec { dependencies = [ { name = "windows_aarch64_gnullvm"; - packageId = "windows_aarch64_gnullvm 0.48.5"; - target = { target, features }: (stdenv.hostPlatform.rust.rustcTarget == "aarch64-pc-windows-gnullvm"); + packageId = "windows_aarch64_gnullvm 0.42.2"; + target = { target, features }: (target.name == "aarch64-pc-windows-gnullvm"); } { name = "windows_aarch64_msvc"; - packageId = "windows_aarch64_msvc 0.48.5"; - target = { target, features }: (("aarch64" == target."arch" or null) && ("msvc" == target."env" or null) && (!(target."windows_raw_dylib" or false))); + packageId = "windows_aarch64_msvc 0.42.2"; + target = { target, features }: (target.name == "aarch64-pc-windows-msvc"); + } + { + name = "windows_aarch64_msvc"; + packageId = "windows_aarch64_msvc 0.42.2"; + target = { target, features }: (target.name == "aarch64-uwp-windows-msvc"); + } + { + name = "windows_i686_gnu"; + packageId = "windows_i686_gnu 0.42.2"; + target = { target, features }: (target.name == "i686-pc-windows-gnu"); } { name = "windows_i686_gnu"; - packageId = "windows_i686_gnu 0.48.5"; - target = { target, features }: (("x86" == target."arch" or null) && ("gnu" == target."env" or null) && (!(target."windows_raw_dylib" or false))); + packageId = "windows_i686_gnu 0.42.2"; + target = { target, features }: (target.name == "i686-uwp-windows-gnu"); } { name = "windows_i686_msvc"; - packageId = "windows_i686_msvc 0.48.5"; - target = { target, features }: (("x86" == target."arch" or null) && ("msvc" == target."env" or null) && (!(target."windows_raw_dylib" or false))); + packageId = "windows_i686_msvc 0.42.2"; + target = { target, features }: (target.name == "i686-pc-windows-msvc"); + } + { + name = "windows_i686_msvc"; + packageId = "windows_i686_msvc 0.42.2"; + target = { target, features }: (target.name == "i686-uwp-windows-msvc"); } { name = "windows_x86_64_gnu"; - packageId = "windows_x86_64_gnu 0.48.5"; - target = { target, features }: (("x86_64" == target."arch" or null) && ("gnu" == target."env" or null) && (!("llvm" == target."abi" or null)) && (!(target."windows_raw_dylib" or false))); + packageId = "windows_x86_64_gnu 0.42.2"; + target = { target, features }: (target.name == "x86_64-pc-windows-gnu"); + } + { + name = "windows_x86_64_gnu"; + packageId = "windows_x86_64_gnu 0.42.2"; + target = { target, features }: (target.name == "x86_64-uwp-windows-gnu"); } { name = "windows_x86_64_gnullvm"; - packageId = "windows_x86_64_gnullvm 0.48.5"; - target = { target, features }: (stdenv.hostPlatform.rust.rustcTarget == "x86_64-pc-windows-gnullvm"); + packageId = "windows_x86_64_gnullvm 0.42.2"; + target = { target, features }: (target.name == "x86_64-pc-windows-gnullvm"); } { name = "windows_x86_64_msvc"; - packageId = "windows_x86_64_msvc 0.48.5"; - target = { target, features }: (("x86_64" == target."arch" or null) && ("msvc" == target."env" or null) && (!(target."windows_raw_dylib" or false))); + packageId = "windows_x86_64_msvc 0.42.2"; + target = { target, features }: (target.name == "x86_64-pc-windows-msvc"); + } + { + name = "windows_x86_64_msvc"; + packageId = "windows_x86_64_msvc 0.42.2"; + target = { target, features }: (target.name == "x86_64-uwp-windows-msvc"); } ]; @@ -17641,7 +17462,7 @@ rec { { name = "windows_aarch64_gnullvm"; packageId = "windows_aarch64_gnullvm 0.52.6"; - target = { target, features }: (stdenv.hostPlatform.rust.rustcTarget == "aarch64-pc-windows-gnullvm"); + target = { target, features }: (target.name == "aarch64-pc-windows-gnullvm"); } { name = "windows_aarch64_msvc"; @@ -17656,7 +17477,7 @@ rec { { name = "windows_i686_gnullvm"; packageId = "windows_i686_gnullvm 0.52.6"; - target = { target, features }: (stdenv.hostPlatform.rust.rustcTarget == "i686-pc-windows-gnullvm"); + target = { target, features }: (target.name == "i686-pc-windows-gnullvm"); } { name = "windows_i686_msvc"; @@ -17671,7 +17492,7 @@ rec { { name = "windows_x86_64_gnullvm"; packageId = "windows_x86_64_gnullvm 0.52.6"; - target = { target, features }: (stdenv.hostPlatform.rust.rustcTarget == "x86_64-pc-windows-gnullvm"); + target = { target, features }: (target.name == "x86_64-pc-windows-gnullvm"); } { name = "windows_x86_64_msvc"; @@ -17690,14 +17511,14 @@ rec { dependencies = [ { name = "windows-link"; - packageId = "windows-link 0.2.1"; + packageId = "windows-link"; usesDefaultFeatures = false; target = { target, features }: (target."windows_raw_dylib" or false); } { name = "windows_aarch64_gnullvm"; packageId = "windows_aarch64_gnullvm 0.53.1"; - target = { target, features }: (stdenv.hostPlatform.rust.rustcTarget == "aarch64-pc-windows-gnullvm"); + target = { target, features }: (target.name == "aarch64-pc-windows-gnullvm"); } { name = "windows_aarch64_msvc"; @@ -17712,7 +17533,7 @@ rec { { name = "windows_i686_gnullvm"; packageId = "windows_i686_gnullvm 0.53.1"; - target = { target, features }: (stdenv.hostPlatform.rust.rustcTarget == "i686-pc-windows-gnullvm"); + target = { target, features }: (target.name == "i686-pc-windows-gnullvm"); } { name = "windows_i686_msvc"; @@ -17727,7 +17548,7 @@ rec { { name = "windows_x86_64_gnullvm"; packageId = "windows_x86_64_gnullvm 0.53.1"; - target = { target, features }: (stdenv.hostPlatform.rust.rustcTarget == "x86_64-pc-windows-gnullvm"); + target = { target, features }: (target.name == "x86_64-pc-windows-gnullvm"); } { name = "windows_x86_64_msvc"; @@ -17737,11 +17558,11 @@ rec { ]; }; - "windows_aarch64_gnullvm 0.48.5" = rec { + "windows_aarch64_gnullvm 0.42.2" = rec { crateName = "windows_aarch64_gnullvm"; - version = "0.48.5"; + version = "0.42.2"; edition = "2018"; - sha256 = "1n05v7qblg1ci3i567inc7xrkmywczxrs1z3lj3rkkxw18py6f1b"; + sha256 = "1y4q0qmvl0lvp7syxvfykafvmwal5hrjb4fmv04bqs0bawc52yjr"; authors = [ "Microsoft" ]; @@ -17764,11 +17585,11 @@ rec { sha256 = "0lqvdm510mka9w26vmga7hbkmrw9glzc90l4gya5qbxlm1pl3n59"; }; - "windows_aarch64_msvc 0.48.5" = rec { + "windows_aarch64_msvc 0.42.2" = rec { crateName = "windows_aarch64_msvc"; - version = "0.48.5"; + version = "0.42.2"; edition = "2018"; - sha256 = "1g5l4ry968p73g6bg6jgyvy9lb8fyhcs54067yzxpcpkf44k2dfw"; + sha256 = "0hsdikjl5sa1fva5qskpwlxzpc5q9l909fpl1w6yy1hglrj8i3p0"; authors = [ "Microsoft" ]; @@ -17791,11 +17612,11 @@ rec { sha256 = "01jh2adlwx043rji888b22whx4bm8alrk3khjpik5xn20kl85mxr"; }; - "windows_i686_gnu 0.48.5" = rec { + "windows_i686_gnu 0.42.2" = rec { crateName = "windows_i686_gnu"; - version = "0.48.5"; + version = "0.42.2"; edition = "2018"; - sha256 = "0gklnglwd9ilqx7ac3cn8hbhkraqisd0n83jxzf9837nvvkiand7"; + sha256 = "0kx866dfrby88lqs9v1vgmrkk1z6af9lhaghh5maj7d4imyr47f6"; authors = [ "Microsoft" ]; @@ -17835,11 +17656,11 @@ rec { sha256 = "030qaxqc4salz6l4immfb6sykc6gmhyir9wzn2w8mxj8038mjwzs"; }; - "windows_i686_msvc 0.48.5" = rec { + "windows_i686_msvc 0.42.2" = rec { crateName = "windows_i686_msvc"; - version = "0.48.5"; + version = "0.42.2"; edition = "2018"; - sha256 = "01m4rik437dl9rdf0ndnm2syh10hizvq0dajdkv2fjqcywrw4mcg"; + sha256 = "0q0h9m2aq1pygc199pa5jgc952qhcnf0zn688454i7v4xjv41n24"; authors = [ "Microsoft" ]; @@ -17862,11 +17683,11 @@ rec { sha256 = "1hi6scw3mn2pbdl30ji5i4y8vvspb9b66l98kkz350pig58wfyhy"; }; - "windows_x86_64_gnu 0.48.5" = rec { + "windows_x86_64_gnu 0.42.2" = rec { crateName = "windows_x86_64_gnu"; - version = "0.48.5"; + version = "0.42.2"; edition = "2018"; - sha256 = "13kiqqcvz2vnyxzydjh73hwgigsdr2z1xpzx313kxll34nyhmm2k"; + sha256 = "0dnbf2xnp3xrvy8v9mgs3var4zq9v9yh9kv79035rdgyp2w15scd"; authors = [ "Microsoft" ]; @@ -17889,11 +17710,11 @@ rec { sha256 = "16d4yiysmfdlsrghndr97y57gh3kljkwhfdbcs05m1jasz6l4f4w"; }; - "windows_x86_64_gnullvm 0.48.5" = rec { + "windows_x86_64_gnullvm 0.42.2" = rec { crateName = "windows_x86_64_gnullvm"; - version = "0.48.5"; + version = "0.42.2"; edition = "2018"; - sha256 = "1k24810wfbgz8k48c2yknqjmiigmql6kk3knmddkv8k8g1v54yqb"; + sha256 = "18wl9r8qbsl475j39zvawlidp1bsbinliwfymr43fibdld31pm16"; authors = [ "Microsoft" ]; @@ -17916,11 +17737,11 @@ rec { sha256 = "1qbspgv4g3q0vygkg8rnql5c6z3caqv38japiynyivh75ng1gyhg"; }; - "windows_x86_64_msvc 0.48.5" = rec { + "windows_x86_64_msvc 0.42.2" = rec { crateName = "windows_x86_64_msvc"; - version = "0.48.5"; + version = "0.42.2"; edition = "2018"; - sha256 = "0f4mdp895kkjh9zv8dxvn4pc10xr7839lf5pa9l0193i2pkgr57d"; + sha256 = "1w5r0q0yzx827d10dpjza2ww0j8iajqhmb54s735hhaj66imvv4s"; authors = [ "Microsoft" ]; @@ -17945,9 +17766,9 @@ rec { }; "winnow" = rec { crateName = "winnow"; - version = "0.7.13"; + version = "0.7.15"; edition = "2021"; - sha256 = "1krrjc1wj2vx0r57m9nwnlc1zrhga3fq41d8w9hysvvqb5mj7811"; + sha256 = "0i9rkl2rqpbnnxlgs20gmkj3nd0b2k8q55mjmpc2ybb84xwxjyfz"; dependencies = [ { name = "memchr"; @@ -17965,70 +17786,338 @@ rec { }; resolvedDefaultFeatures = [ "alloc" "default" "std" ]; }; - "winsafe" = rec { - crateName = "winsafe"; - version = "0.0.19"; + "wit-bindgen" = rec { + crateName = "wit-bindgen"; + version = "0.51.0"; + edition = "2024"; + sha256 = "19fazgch8sq5cvjv3ynhhfh5d5x08jq2pkw8jfb05vbcyqcr496p"; + libName = "wit_bindgen"; + authors = [ + "Alex Crichton " + ]; + dependencies = [ + { + name = "wit-bindgen-rust-macro"; + packageId = "wit-bindgen-rust-macro"; + optional = true; + } + ]; + features = { + "async" = [ "std" "wit-bindgen-rust-macro?/async" ]; + "async-spawn" = [ "async" "dep:futures" ]; + "bitflags" = [ "dep:bitflags" ]; + "default" = [ "macros" "realloc" "async" "std" "bitflags" ]; + "inter-task-wakeup" = [ "async" ]; + "macros" = [ "dep:wit-bindgen-rust-macro" ]; + "rustc-dep-of-std" = [ "dep:core" "dep:alloc" ]; + }; + resolvedDefaultFeatures = [ "async" "std" ]; + }; + "wit-bindgen-core" = rec { + crateName = "wit-bindgen-core"; + version = "0.51.0"; + edition = "2024"; + sha256 = "1p2jszqsqbx8k7y8nwvxg65wqzxjm048ba5phaq8r9iy9ildwqga"; + libName = "wit_bindgen_core"; + authors = [ + "Alex Crichton " + ]; + dependencies = [ + { + name = "anyhow"; + packageId = "anyhow"; + } + { + name = "heck"; + packageId = "heck"; + } + { + name = "wit-parser"; + packageId = "wit-parser"; + } + ]; + features = { + "clap" = [ "dep:clap" ]; + "serde" = [ "dep:serde" ]; + }; + }; + "wit-bindgen-rust" = rec { + crateName = "wit-bindgen-rust"; + version = "0.51.0"; + edition = "2024"; + sha256 = "08bzn5fsvkb9x9wyvyx98qglknj2075xk1n7c5jxv15jykh6didp"; + libName = "wit_bindgen_rust"; + authors = [ + "Alex Crichton " + ]; + dependencies = [ + { + name = "anyhow"; + packageId = "anyhow"; + } + { + name = "heck"; + packageId = "heck"; + } + { + name = "indexmap"; + packageId = "indexmap"; + } + { + name = "prettyplease"; + packageId = "prettyplease"; + } + { + name = "syn"; + packageId = "syn 2.0.117"; + features = [ "printing" ]; + } + { + name = "wasm-metadata"; + packageId = "wasm-metadata"; + usesDefaultFeatures = false; + } + { + name = "wit-bindgen-core"; + packageId = "wit-bindgen-core"; + } + { + name = "wit-component"; + packageId = "wit-component"; + } + ]; + features = { + "clap" = [ "dep:clap" "wit-bindgen-core/clap" ]; + "serde" = [ "dep:serde" "wit-bindgen-core/serde" ]; + }; + }; + "wit-bindgen-rust-macro" = rec { + crateName = "wit-bindgen-rust-macro"; + version = "0.51.0"; + edition = "2024"; + sha256 = "0ymizapzv2id89igxsz2n587y2hlfypf6n8kyp68x976fzyrn3qc"; + procMacro = true; + libName = "wit_bindgen_rust_macro"; + authors = [ + "Alex Crichton " + ]; + dependencies = [ + { + name = "anyhow"; + packageId = "anyhow"; + } + { + name = "prettyplease"; + packageId = "prettyplease"; + } + { + name = "proc-macro2"; + packageId = "proc-macro2"; + } + { + name = "quote"; + packageId = "quote"; + } + { + name = "syn"; + packageId = "syn 2.0.117"; + features = [ "printing" ]; + } + { + name = "wit-bindgen-core"; + packageId = "wit-bindgen-core"; + } + { + name = "wit-bindgen-rust"; + packageId = "wit-bindgen-rust"; + } + ]; + features = { + }; + resolvedDefaultFeatures = [ "async" ]; + }; + "wit-component" = rec { + crateName = "wit-component"; + version = "0.244.0"; edition = "2021"; - sha256 = "0169xy9mjma8dys4m8v4x0xhw2gkbhv2v1wsbvcjl9bhnxxd2dfi"; + sha256 = "1clwxgsgdns3zj2fqnrjcp8y5gazwfa1k0sy5cbk0fsmx4hflrlx"; + libName = "wit_component"; authors = [ - "Rodrigo Cesar de Freitas Dias " + "Peter Huene " + ]; + dependencies = [ + { + name = "anyhow"; + packageId = "anyhow"; + } + { + name = "bitflags"; + packageId = "bitflags"; + } + { + name = "indexmap"; + packageId = "indexmap"; + usesDefaultFeatures = false; + } + { + name = "log"; + packageId = "log"; + } + { + name = "serde"; + packageId = "serde"; + usesDefaultFeatures = false; + features = [ "alloc" ]; + } + { + name = "serde_derive"; + packageId = "serde_derive"; + } + { + name = "serde_json"; + packageId = "serde_json"; + } + { + name = "wasm-encoder"; + packageId = "wasm-encoder"; + usesDefaultFeatures = false; + features = [ "std" "wasmparser" ]; + } + { + name = "wasm-metadata"; + packageId = "wasm-metadata"; + usesDefaultFeatures = false; + } + { + name = "wasmparser"; + packageId = "wasmparser"; + usesDefaultFeatures = false; + features = [ "simd" "std" "component-model" "simd" ]; + } + { + name = "wit-parser"; + packageId = "wit-parser"; + features = [ "decoding" "serde" ]; + } + ]; + devDependencies = [ + { + name = "wasm-metadata"; + packageId = "wasm-metadata"; + usesDefaultFeatures = false; + features = [ "oci" ]; + } + { + name = "wasmparser"; + packageId = "wasmparser"; + usesDefaultFeatures = false; + features = [ "simd" "std" "component-model" "features" ]; + } ]; features = { - "comctl" = [ "ole" ]; - "dshow" = [ "oleaut" ]; - "dwm" = [ "uxtheme" ]; - "dxgi" = [ "ole" ]; - "gdi" = [ "user" ]; - "gui" = [ "comctl" "shell" "uxtheme" ]; - "mf" = [ "oleaut" ]; - "ole" = [ "user" ]; - "oleaut" = [ "ole" ]; - "shell" = [ "oleaut" ]; - "taskschd" = [ "oleaut" ]; - "user" = [ "kernel" ]; - "uxtheme" = [ "gdi" "ole" ]; - "version" = [ "kernel" ]; + "dummy-module" = [ "dep:wat" ]; + "semver-check" = [ "dummy-module" ]; + "wat" = [ "dep:wast" "dep:wat" ]; }; - resolvedDefaultFeatures = [ "kernel" ]; }; - "wit-bindgen" = rec { - crateName = "wit-bindgen"; - version = "0.46.0"; + "wit-parser" = rec { + crateName = "wit-parser"; + version = "0.244.0"; edition = "2021"; - sha256 = "0ngysw50gp2wrrfxbwgp6dhw1g6sckknsn3wm7l00vaf7n48aypi"; - libName = "wit_bindgen"; + sha256 = "0dm7avvdxryxd5b02l0g5h6933z1cw5z0d4wynvq2cywq55srj7c"; + libName = "wit_parser"; authors = [ "Alex Crichton " ]; + dependencies = [ + { + name = "anyhow"; + packageId = "anyhow"; + } + { + name = "id-arena"; + packageId = "id-arena"; + } + { + name = "indexmap"; + packageId = "indexmap"; + usesDefaultFeatures = false; + features = [ "std" ]; + } + { + name = "log"; + packageId = "log"; + } + { + name = "semver"; + packageId = "semver"; + usesDefaultFeatures = false; + } + { + name = "serde"; + packageId = "serde"; + optional = true; + usesDefaultFeatures = false; + features = [ "alloc" ]; + } + { + name = "serde_derive"; + packageId = "serde_derive"; + optional = true; + } + { + name = "serde_json"; + packageId = "serde_json"; + optional = true; + } + { + name = "unicode-xid"; + packageId = "unicode-xid"; + } + { + name = "wasmparser"; + packageId = "wasmparser"; + optional = true; + usesDefaultFeatures = false; + features = [ "simd" "std" "validate" "component-model" "features" ]; + } + ]; + devDependencies = [ + { + name = "serde_json"; + packageId = "serde_json"; + } + ]; features = { - "async" = [ "macros" "std" "dep:futures" "dep:once_cell" "wit-bindgen-rust-macro/async" ]; - "bitflags" = [ "dep:bitflags" ]; - "default" = [ "macros" "realloc" "async" "std" "bitflags" ]; - "macros" = [ "dep:wit-bindgen-rust-macro" ]; - "rustc-dep-of-std" = [ "dep:core" "dep:alloc" ]; + "decoding" = [ "dep:wasmparser" ]; + "default" = [ "serde" "decoding" ]; + "serde" = [ "dep:serde" "dep:serde_derive" "indexmap/serde" "serde_json" ]; + "serde_json" = [ "dep:serde_json" ]; + "wat" = [ "decoding" "dep:wat" ]; }; + resolvedDefaultFeatures = [ "decoding" "default" "serde" "serde_json" ]; }; "writeable" = rec { crateName = "writeable"; - version = "0.6.1"; + version = "0.6.2"; edition = "2021"; - sha256 = "1fx29zncvbrqzgz7li88vzdm8zvgwgwy2r9bnjqxya09pfwi0bza"; + sha256 = "1fg08y97n6vk7l0rnjggw3xyrii6dcqg54wqaxldrlk98zdy1pcy"; authors = [ "The ICU4X Project Developers" ]; features = { + "default" = [ "alloc" ]; "either" = [ "dep:either" ]; }; }; - "xml-rs" = rec { - crateName = "xml-rs"; - version = "0.8.27"; + "xml" = rec { + crateName = "xml"; + version = "1.2.1"; edition = "2021"; - crateBin = []; - sha256 = "1irplg223x6w3lvj0yig6czbiwci06495wc9xg3660kh6cvl1n3g"; - libName = "xml"; + sha256 = "0ak4k990faralbli5a0rb8kvwihccb2rp0r94d4azfy94a6lkamq"; authors = [ "Vladimir Matveev " + "Kornel (https://github.com/kornelski)" ]; }; @@ -18076,7 +18165,7 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.9"; + packageId = "snafu 0.9.0"; features = [ "futures" ]; } { @@ -18096,19 +18185,13 @@ rec { }; "yoke" = rec { crateName = "yoke"; - version = "0.8.0"; + version = "0.8.1"; edition = "2021"; - sha256 = "1k4mfr48vgi7wh066y11b7v1ilakghlnlhw9snzz8vi2p00vnhaz"; + sha256 = "0m29dm0bf5iakxgma0bj6dbmc3b8qi9b1vaw9sa76kdqmz3fbmkj"; authors = [ "Manish Goregaokar " ]; dependencies = [ - { - name = "serde"; - packageId = "serde"; - optional = true; - usesDefaultFeatures = false; - } { name = "stable_deref_trait"; packageId = "stable_deref_trait"; @@ -18127,27 +18210,19 @@ rec { usesDefaultFeatures = false; } ]; - devDependencies = [ - { - name = "serde"; - packageId = "serde"; - usesDefaultFeatures = false; - } - ]; features = { - "alloc" = [ "stable_deref_trait/alloc" "serde?/alloc" "zerofrom/alloc" ]; + "alloc" = [ "stable_deref_trait/alloc" "zerofrom/alloc" ]; "default" = [ "alloc" "zerofrom" ]; "derive" = [ "dep:yoke-derive" "zerofrom/derive" ]; - "serde" = [ "dep:serde" ]; "zerofrom" = [ "dep:zerofrom" ]; }; - resolvedDefaultFeatures = [ "alloc" "derive" "zerofrom" ]; + resolvedDefaultFeatures = [ "derive" "zerofrom" ]; }; "yoke-derive" = rec { crateName = "yoke-derive"; - version = "0.8.0"; + version = "0.8.1"; edition = "2021"; - sha256 = "1dha5jrjz9jaq8kmxq1aag86b98zbnm9lyjrihy5sv716sbkrniq"; + sha256 = "0pbyja133jnng4mrhimzdq4a0y26421g734ybgz8wsgbfhl0andn"; procMacro = true; libName = "yoke_derive"; authors = [ @@ -18164,7 +18239,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.106"; + packageId = "syn 2.0.117"; features = [ "fold" ]; } { @@ -18176,9 +18251,9 @@ rec { }; "zerocopy" = rec { crateName = "zerocopy"; - version = "0.8.27"; + version = "0.8.41"; edition = "2021"; - sha256 = "0b1870gf2zzlckca69v2k4mqwmf8yh2li37qldnzvvd3by58g508"; + sha256 = "0k95f1hszgda7s7drfdcz6wpvigk8igrmi9n10jzckbkh72kpqcn"; authors = [ "Joshua Liebow-Feeser " "Jack Wrenn " @@ -18212,9 +18287,9 @@ rec { }; "zerocopy-derive" = rec { crateName = "zerocopy-derive"; - version = "0.8.27"; + version = "0.8.41"; edition = "2021"; - sha256 = "0c9qrylm2p55dvaplxsl24ma48add9qk4y0d6kjbkllaqvcvill8"; + sha256 = "075cbz826mip7jhgbph7j0cx6vsmq5a9pngwm6xvjanihsgfli9m"; procMacro = true; libName = "zerocopy_derive"; authors = [ @@ -18232,10 +18307,17 @@ rec { } { name = "syn"; - packageId = "syn 2.0.106"; + packageId = "syn 2.0.117"; features = [ "full" ]; } ]; + devDependencies = [ + { + name = "syn"; + packageId = "syn 2.0.117"; + features = [ "visit" ]; + } + ]; }; "zerofrom" = rec { @@ -18258,7 +18340,7 @@ rec { "default" = [ "alloc" ]; "derive" = [ "dep:zerofrom-derive" ]; }; - resolvedDefaultFeatures = [ "alloc" "derive" ]; + resolvedDefaultFeatures = [ "derive" ]; }; "zerofrom-derive" = rec { crateName = "zerofrom-derive"; @@ -18281,7 +18363,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.106"; + packageId = "syn 2.0.117"; features = [ "fold" ]; } { @@ -18310,9 +18392,9 @@ rec { }; "zerotrie" = rec { crateName = "zerotrie"; - version = "0.2.2"; + version = "0.2.3"; edition = "2021"; - sha256 = "15gmka7vw5k0d24s0vxgymr2j6zn2iwl12wpmpnpjgsqg3abpw1n"; + sha256 = "0lbqznlqazmrwwzslw0ci7p3pqxykrbfhq29npj0gmb2amxc2n9a"; authors = [ "The ICU4X Project Developers" ]; @@ -18339,7 +18421,7 @@ rec { features = { "databake" = [ "dep:databake" "zerovec?/databake" ]; "litemap" = [ "dep:litemap" "alloc" ]; - "serde" = [ "dep:serde" "dep:litemap" "alloc" "litemap/serde" "zerovec?/serde" ]; + "serde" = [ "dep:serde_core" "dep:litemap" "alloc" "litemap/serde" "zerovec?/serde" ]; "yoke" = [ "dep:yoke" ]; "zerofrom" = [ "dep:zerofrom" ]; "zerovec" = [ "dep:zerovec" ]; @@ -18348,9 +18430,9 @@ rec { }; "zerovec" = rec { crateName = "zerovec"; - version = "0.11.4"; + version = "0.11.5"; edition = "2021"; - sha256 = "0fz7j1ns8d86m2fqg2a4bzi5gnh5892bxv4kcr9apwc6a3ajpap7"; + sha256 = "00m0p47k2g9mkv505hky5xh3r6ps7v8qc0dy4pspg542jj972a3c"; authors = [ "The ICU4X Project Developers" ]; @@ -18373,28 +18455,21 @@ rec { usesDefaultFeatures = false; } ]; - devDependencies = [ - { - name = "yoke"; - packageId = "yoke"; - usesDefaultFeatures = false; - features = [ "derive" ]; - } - ]; features = { + "alloc" = [ "serde?/alloc" ]; "databake" = [ "dep:databake" ]; "derive" = [ "dep:zerovec-derive" ]; "hashmap" = [ "dep:twox-hash" "alloc" ]; - "serde" = [ "dep:serde" "alloc" ]; + "serde" = [ "dep:serde" ]; "yoke" = [ "dep:yoke" ]; }; - resolvedDefaultFeatures = [ "alloc" "derive" "yoke" ]; + resolvedDefaultFeatures = [ "derive" "yoke" ]; }; "zerovec-derive" = rec { crateName = "zerovec-derive"; - version = "0.11.1"; + version = "0.11.2"; edition = "2021"; - sha256 = "13zms8hj7vzpfswypwggyfr4ckmyc7v3di49pmj8r1qcz9z275jv"; + sha256 = "1wsig4h5j7a1scd5hrlnragnazjny9qjc44hancb6p6a76ay7p7a"; procMacro = true; libName = "zerovec_derive"; authors = [ @@ -18411,7 +18486,7 @@ rec { } { name = "syn"; - packageId = "syn 2.0.106"; + packageId = "syn 2.0.117"; features = [ "extra-traits" ]; } ]; @@ -18419,10 +18494,9 @@ rec { }; "zip" = rec { crateName = "zip"; - version = "1.1.4"; + version = "3.0.0"; edition = "2021"; - sha256 = "0r3i97b6lrqkxzgp1l0ibhfhkfwc438kllz49cvs0kbz7023rhlw"; - build = "src/build.rs"; + sha256 = "024kvq5znpyaqggfkz2807h43m23dww1r53zc1gi1l1fa098hn8j"; authors = [ "Mathijs van de Nes " "Marli Frost " @@ -18440,16 +18514,6 @@ rec { name = "crc32fast"; packageId = "crc32fast"; } - { - name = "crossbeam-utils"; - packageId = "crossbeam-utils"; - target = { target, features }: ((("arm" == target."arch" or null) && ("32" == target."pointer_width" or null)) || ("mips" == target."arch" or null) || ("powerpc" == target."arch" or null)); - } - { - name = "displaydoc"; - packageId = "displaydoc"; - usesDefaultFeatures = false; - } { name = "flate2"; packageId = "flate2"; @@ -18458,41 +18522,113 @@ rec { } { name = "indexmap"; - packageId = "indexmap 2.11.4"; + packageId = "indexmap"; } { - name = "num_enum"; - packageId = "num_enum"; + name = "memchr"; + packageId = "memchr"; } { - name = "thiserror"; - packageId = "thiserror 1.0.69"; + name = "zopfli"; + packageId = "zopfli"; + optional = true; } ]; features = { "aes" = [ "dep:aes" ]; - "aes-crypto" = [ "aes" "constant_time_eq" "hmac" "pbkdf2" "sha1" ]; + "aes-crypto" = [ "aes" "constant_time_eq" "hmac" "pbkdf2" "sha1" "getrandom" "zeroize" ]; "bzip2" = [ "dep:bzip2" ]; "chrono" = [ "chrono/default" ]; "constant_time_eq" = [ "dep:constant_time_eq" ]; - "default" = [ "aes-crypto" "bzip2" "deflate" "deflate64" "deflate-zlib-ng" "deflate-zopfli" "lzma" "time" "zstd" ]; - "deflate" = [ "flate2/rust_backend" "_deflate-any" ]; - "deflate-miniz" = [ "deflate" "_deflate-any" ]; - "deflate-zlib" = [ "flate2/zlib" "_deflate-any" ]; - "deflate-zlib-ng" = [ "flate2/zlib-ng" "_deflate-any" ]; + "default" = [ "aes-crypto" "bzip2" "deflate64" "deflate" "lzma" "time" "zstd" "xz" ]; + "deflate" = [ "deflate-zopfli" "deflate-flate2-zlib-rs" ]; + "deflate-flate2" = [ "_deflate-any" "dep:flate2" ]; + "deflate-flate2-zlib" = [ "deflate-flate2" "flate2/zlib" ]; + "deflate-flate2-zlib-rs" = [ "deflate-flate2" "flate2/zlib-rs" ]; "deflate-zopfli" = [ "zopfli" "_deflate-any" ]; "deflate64" = [ "dep:deflate64" ]; - "flate2" = [ "dep:flate2" ]; + "getrandom" = [ "dep:getrandom" ]; "hmac" = [ "dep:hmac" ]; + "jiff-02" = [ "dep:jiff" ]; "lzma" = [ "lzma-rs/stream" ]; "lzma-rs" = [ "dep:lzma-rs" ]; + "nt-time" = [ "dep:nt-time" ]; "pbkdf2" = [ "dep:pbkdf2" ]; "sha1" = [ "dep:sha1" ]; "time" = [ "dep:time" ]; + "xz" = [ "dep:xz2" ]; + "zeroize" = [ "dep:zeroize" ]; "zopfli" = [ "dep:zopfli" ]; "zstd" = [ "dep:zstd" ]; }; - resolvedDefaultFeatures = [ "_deflate-any" "deflate" "flate2" ]; + resolvedDefaultFeatures = [ "_deflate-any" "deflate" "deflate-flate2" "deflate-flate2-zlib-rs" "deflate-zopfli" "zopfli" ]; + }; + "zlib-rs" = rec { + crateName = "zlib-rs"; + version = "0.6.3"; + edition = "2021"; + sha256 = "04qmv85amq6sv73bzqgvnlsk9mnrl97rygzf2v4zjcx1807d9qrv"; + libName = "zlib_rs"; + features = { + "__internal-fuzz" = [ "arbitrary" ]; + "__internal-test" = [ "quickcheck" ]; + "arbitrary" = [ "dep:arbitrary" ]; + "avx512" = [ "vpclmulqdq" ]; + "default" = [ "std" "c-allocator" ]; + "quickcheck" = [ "dep:quickcheck" ]; + "std" = [ "rust-allocator" ]; + }; + resolvedDefaultFeatures = [ "rust-allocator" "std" ]; + }; + "zmij" = rec { + crateName = "zmij"; + version = "1.0.21"; + edition = "2021"; + sha256 = "1amb5i6gz7yjb0dnmz5y669674pqmwbj44p4yfxfv2ncgvk8x15q"; + authors = [ + "David Tolnay " + ]; + features = { + "no-panic" = [ "dep:no-panic" ]; + }; + }; + "zopfli" = rec { + crateName = "zopfli"; + version = "0.8.3"; + edition = "2021"; + crateBin = []; + sha256 = "0jaj5dyh3mks0805h4ldrsh5pwq4i2jc9dc9zwjm91k3gmwxhp7h"; + dependencies = [ + { + name = "bumpalo"; + packageId = "bumpalo"; + } + { + name = "crc32fast"; + packageId = "crc32fast"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "log"; + packageId = "log"; + optional = true; + } + { + name = "simd-adler32"; + packageId = "simd-adler32"; + optional = true; + usesDefaultFeatures = false; + } + ]; + features = { + "default" = [ "gzip" "std" "zlib" ]; + "gzip" = [ "dep:crc32fast" ]; + "nightly" = [ "crc32fast?/nightly" ]; + "std" = [ "crc32fast?/std" "dep:log" "simd-adler32?/std" ]; + "zlib" = [ "dep:simd-adler32" ]; + }; + resolvedDefaultFeatures = [ "default" "gzip" "std" "zlib" ]; }; }; @@ -18500,10 +18636,13 @@ rec { # crate2nix/default.nix (excerpt start) # - /* Target (platform) data for conditional dependencies. + /* + Target (platform) data for conditional dependencies. This corresponds roughly to what buildRustCrate is setting. */ makeDefaultTarget = platform: { + name = platform.rust.rustcTarget; + unix = platform.isUnix; windows = platform.isWindows; fuchsia = true; @@ -18512,30 +18651,70 @@ rec { inherit (platform.rust.platform) arch os - vendor; + vendor + ; family = platform.rust.platform.target-family; env = "gnu"; - endian = - if platform.parsed.cpu.significantByte.name == "littleEndian" - then "little" else "big"; + endian = if platform.parsed.cpu.significantByte.name == "littleEndian" then "little" else "big"; pointer_width = toString platform.parsed.cpu.bits; debug_assertions = false; - }; + } // extraTargetFlags; + + registryUrl = + { registries + , url + , crate + , version + , sha256 + , + }: + let + dl = registries.${url}.dl; + tmpl = [ + "{crate}" + "{version}" + "{prefix}" + "{lowerprefix}" + "{sha256-checksum}" + ]; + in + with lib.strings; + if lib.lists.any (i: hasInfix "{}" dl) tmpl then + let + prefix = + if builtins.stringLength crate == 1 then + "1" + else if builtins.stringLength crate == 2 then + "2" + else + "${builtins.substring 0 2 crate}/${builtins.substring 2 (builtins.stringLength crate - 2) crate}"; + in + builtins.replaceStrings tmpl [ + crate + version + prefix + (lib.strings.toLower prefix) + sha256 + ] + else + "${dl}/${crate}/${version}/download"; - /* Filters common temp files and build files. */ + # Filters common temp files and build files. # TODO(pkolloch): Substitute with gitignore filter - sourceFilter = name: type: + sourceFilter = + name: type: let baseName = builtins.baseNameOf (builtins.toString name); in - ! ( + !( # Filter out git baseName == ".gitignore" || (type == "directory" && baseName == ".git") # Filter out build results || ( - type == "directory" && ( + type == "directory" + && ( baseName == "target" || baseName == "_site" || baseName == ".sass-cache" @@ -18545,16 +18724,11 @@ rec { ) # Filter out nix-build result symlinks - || ( - type == "symlink" && lib.hasPrefix "result" baseName - ) + || (type == "symlink" && lib.hasPrefix "result" baseName) # Filter out IDE config - || ( - type == "directory" && ( - baseName == ".idea" || baseName == ".vscode" - ) - ) || lib.hasSuffix ".iml" baseName + || (type == "directory" && (baseName == ".idea" || baseName == ".vscode")) + || lib.hasSuffix ".iml" baseName # Filter out nix build files || baseName == "Cargo.nix" @@ -18568,90 +18742,100 @@ rec { || baseName == "tests.nix" ); - /* Returns a crate which depends on successful test execution + /* + Returns a crate which depends on successful test execution of crate given as the second argument. testCrateFlags: list of flags to pass to the test exectuable testInputs: list of packages that should be available during test execution */ - crateWithTest = { crate, testCrate, testCrateFlags, testInputs, testPreRun, testPostRun }: - assert builtins.typeOf testCrateFlags == "list"; - assert builtins.typeOf testInputs == "list"; - assert builtins.typeOf testPreRun == "string"; - assert builtins.typeOf testPostRun == "string"; - let - # override the `crate` so that it will build and execute tests instead of - # building the actual lib and bin targets We just have to pass `--test` - # to rustc and it will do the right thing. We execute the tests and copy - # their log and the test executables to $out for later inspection. - test = - let - drv = testCrate.override - ( - _: { - buildTests = true; - } + crateWithTest = + { crate + , testCrate + , testCrateFlags + , testInputs + , testPreRun + , testPostRun + , + }: + assert builtins.typeOf testCrateFlags == "list"; + assert builtins.typeOf testInputs == "list"; + assert builtins.typeOf testPreRun == "string"; + assert builtins.typeOf testPostRun == "string"; + let + # override the `crate` so that it will build and execute tests instead of + # building the actual lib and bin targets We just have to pass `--test` + # to rustc and it will do the right thing. We execute the tests and copy + # their log and the test executables to $out for later inspection. + test = + let + drv = testCrate.override (_: { + buildTests = true; + }); + # If the user hasn't set any pre/post commands, we don't want to + # insert empty lines. This means that any existing users of crate2nix + # don't get a spurious rebuild unless they set these explicitly. + testCommand = pkgs.lib.concatStringsSep "\n" ( + pkgs.lib.filter (s: s != "") [ + testPreRun + "$f $testCrateFlags 2>&1 | tee -a $out" + testPostRun + ] ); - # If the user hasn't set any pre/post commands, we don't want to - # insert empty lines. This means that any existing users of crate2nix - # don't get a spurious rebuild unless they set these explicitly. - testCommand = pkgs.lib.concatStringsSep "\n" - (pkgs.lib.filter (s: s != "") [ - testPreRun - "$f $testCrateFlags 2>&1 | tee -a $out" - testPostRun - ]); - in - pkgs.stdenvNoCC.mkDerivation { - name = "run-tests-${testCrate.name}"; + in + pkgs.stdenvNoCC.mkDerivation { + name = "run-tests-${testCrate.name}"; - inherit (crate) src; + inherit (crate) src; - inherit testCrateFlags; + inherit testCrateFlags; - buildInputs = testInputs; + buildInputs = testInputs; - buildPhase = '' - set -e - export RUST_BACKTRACE=1 + buildPhase = '' + set -e + export RUST_BACKTRACE=1 - # build outputs - testRoot=target/debug - mkdir -p $testRoot + # build outputs + testRoot=target/debug + mkdir -p $testRoot - # executables of the crate - # we copy to prevent std::env::current_exe() to resolve to a store location - for i in ${crate}/bin/*; do - cp "$i" "$testRoot" - done - chmod +w -R . + # executables of the crate + # we copy to prevent std::env::current_exe() to resolve to a store location + for i in ${crate}/bin/*; do + cp "$i" "$testRoot" + done + chmod +w -R . - # test harness executables are suffixed with a hash, like cargo does - # this allows to prevent name collision with the main - # executables of the crate - hash=$(basename $out) - for file in ${drv}/tests/*; do - f=$testRoot/$(basename $file)-$hash - cp $file $f - ${testCommand} - done - ''; - }; - in - pkgs.runCommand "${crate.name}-linked" - { - inherit (crate) outputs crateName; - passthru = (crate.passthru or { }) // { - inherit test; - }; - } - (lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) '' - echo tested by ${test} - '' + '' - ${lib.concatMapStringsSep "\n" (output: "ln -s ${crate.${output}} ${"$"}${output}") crate.outputs} - ''); + # test harness executables are suffixed with a hash, like cargo does + # this allows to prevent name collision with the main + # executables of the crate + hash=$(basename $out) + for file in ${drv}/tests/*; do + f=$testRoot/$(basename $file)-$hash + cp $file $f + ${testCommand} + done + ''; + }; + in + pkgs.runCommand "${crate.name}-linked" + { + inherit (crate) outputs crateName meta; + passthru = (crate.passthru or { }) // { + inherit test; + }; + } + ( + lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) '' + echo tested by ${test} + '' + + '' + ${lib.concatMapStringsSep "\n" (output: "ln -s ${crate.${output}} ${"$"}${output}") crate.outputs} + '' + ); - /* A restricted overridable version of builtRustCratesWithFeatures. */ + # A restricted overridable version of builtRustCratesWithFeatures. buildRustCrateWithFeatures = { packageId , features ? rootFeatures @@ -18660,10 +18844,11 @@ rec { , runTests ? false , testCrateFlags ? [ ] , testInputs ? [ ] - # Any command to run immediatelly before a test is executed. - , testPreRun ? "" - # Any command run immediatelly after a test is executed. - , testPostRun ? "" + , # Any command to run immediatelly before a test is executed. + testPreRun ? "" + , # Any command run immediatelly after a test is executed. + testPostRun ? "" + , }: lib.makeOverridable ( @@ -18674,17 +18859,19 @@ rec { , testInputs , testPreRun , testPostRun + , }: let buildRustCrateForPkgsFuncOverriden = - if buildRustCrateForPkgsFunc != null - then buildRustCrateForPkgsFunc + if buildRustCrateForPkgsFunc != null then + buildRustCrateForPkgsFunc else ( - if crateOverrides == pkgs.defaultCrateOverrides - then buildRustCrateForPkgs + if crateOverrides == pkgs.defaultCrateOverrides then + buildRustCrateForPkgs else - pkgs: (buildRustCrateForPkgs pkgs).override { + pkgs: + (buildRustCrateForPkgs pkgs).override { defaultCrateOverrides = crateOverrides; } ); @@ -18706,15 +18893,32 @@ rec { { crate = drv; testCrate = testDrv; - inherit testCrateFlags testInputs testPreRun testPostRun; + inherit + testCrateFlags + testInputs + testPreRun + testPostRun + ; } - else drv; + else + drv; in derivation ) - { inherit features crateOverrides runTests testCrateFlags testInputs testPreRun testPostRun; }; + { + inherit + features + crateOverrides + runTests + testCrateFlags + testInputs + testPreRun + testPostRun + ; + }; - /* Returns an attr set with packageId mapped to the result of buildRustCrateForPkgsFunc + /* + Returns an attr set with packageId mapped to the result of buildRustCrateForPkgsFunc for the corresponding crate. */ builtRustCratesWithFeatures = @@ -18724,7 +18928,8 @@ rec { , buildRustCrateForPkgsFunc , runTests , makeTarget ? makeDefaultTarget - } @ args: + , + }@args: assert (builtins.isAttrs crateConfigs); assert (builtins.isString packageId); assert (builtins.isList features); @@ -18732,55 +18937,61 @@ rec { assert (builtins.isBool runTests); let rootPackageId = packageId; - mergedFeatures = mergePackageFeatures - ( - args // { - inherit rootPackageId; - target = makeTarget stdenv.hostPlatform // { test = runTests; }; - } - ); + mergedFeatures = mergePackageFeatures ( + args + // { + inherit rootPackageId; + target = makeTarget stdenv.hostPlatform // { + test = runTests; + }; + } + ); # Memoize built packages so that reappearing packages are only built once. builtByPackageIdByPkgs = mkBuiltByPackageIdByPkgs pkgs; - mkBuiltByPackageIdByPkgs = pkgs: + mkBuiltByPackageIdByPkgs = + pkgs: let self = { - crates = lib.mapAttrs (packageId: value: buildByPackageIdForPkgsImpl self pkgs packageId) crateConfigs; - target = makeTarget stdenv.hostPlatform; + crates = lib.mapAttrs + ( + packageId: value: buildByPackageIdForPkgsImpl self pkgs packageId + ) + crateConfigs; + target = makeTarget pkgs.stdenv.hostPlatform; build = mkBuiltByPackageIdByPkgs pkgs.buildPackages; }; in self; - buildByPackageIdForPkgsImpl = self: pkgs: packageId: + buildByPackageIdForPkgsImpl = + self: pkgs: packageId: let features = mergedFeatures."${packageId}" or [ ]; crateConfig' = crateConfigs."${packageId}"; - crateConfig = - builtins.removeAttrs crateConfig' [ "resolvedDefaultFeatures" "devDependencies" ]; - devDependencies = - lib.optionals - (runTests && packageId == rootPackageId) - (crateConfig'.devDependencies or [ ]); - dependencies = - dependencyDerivations { - inherit features; - inherit (self) target; - buildByPackageId = depPackageId: - # proc_macro crates must be compiled for the build architecture - if crateConfigs.${depPackageId}.procMacro or false - then self.build.crates.${depPackageId} - else self.crates.${depPackageId}; - dependencies = - (crateConfig.dependencies or [ ]) - ++ devDependencies; - }; - buildDependencies = - dependencyDerivations { - inherit features; - inherit (self.build) target; - buildByPackageId = depPackageId: - self.build.crates.${depPackageId}; - dependencies = crateConfig.buildDependencies or [ ]; - }; + crateConfig = builtins.removeAttrs crateConfig' [ + "resolvedDefaultFeatures" + "devDependencies" + ]; + devDependencies = lib.optionals (runTests && packageId == rootPackageId) ( + crateConfig'.devDependencies or [ ] + ); + dependencies = dependencyDerivations { + inherit features; + inherit (self) target; + buildByPackageId = + depPackageId: + # proc_macro crates must be compiled for the build architecture + if crateConfigs.${depPackageId}.procMacro or false then + self.build.crates.${depPackageId} + else + self.crates.${depPackageId}; + dependencies = (crateConfig.dependencies or [ ]) ++ devDependencies; + }; + buildDependencies = dependencyDerivations { + inherit features; + inherit (self.build) target; + buildByPackageId = depPackageId: self.build.crates.${depPackageId}; + dependencies = crateConfig.buildDependencies or [ ]; + }; dependenciesWithRenames = let buildDeps = filterEnabledDependencies { @@ -18805,45 +19016,54 @@ rec { # } crateRenames = let - grouped = - lib.groupBy - (dependency: dependency.name) - dependenciesWithRenames; - versionAndRename = dep: + grouped = lib.groupBy (dependency: dependency.name) dependenciesWithRenames; + versionAndRename = + dep: let package = crateConfigs."${dep.packageId}"; in - { inherit (dep) rename; inherit (package) version; }; + { + inherit (dep) rename; + inherit (package) version; + }; in lib.mapAttrs (name: builtins.map versionAndRename) grouped; in - buildRustCrateForPkgsFunc pkgs - ( - crateConfig // { - src = crateConfig.src or ( - pkgs.fetchurl rec { - name = "${crateConfig.crateName}-${crateConfig.version}.tar.gz"; - # https://www.pietroalbini.org/blog/downloading-crates-io/ - # Not rate-limited, CDN URL. - url = "https://static.crates.io/crates/${crateConfig.crateName}/${crateConfig.crateName}-${crateConfig.version}.crate"; - sha256 = - assert (lib.assertMsg (crateConfig ? sha256) "Missing sha256 for ${name}"); - crateConfig.sha256; - } - ); - extraRustcOpts = lib.lists.optional (targetFeatures != [ ]) "-C target-feature=${lib.concatMapStringsSep "," (x: "+${x}") targetFeatures}"; - inherit features dependencies buildDependencies crateRenames release; - } - ); + buildRustCrateForPkgsFunc pkgs ( + crateConfig + // { + src = + crateConfig.src or (fetchurl rec { + name = "${crateConfig.crateName}-${crateConfig.version}.tar.gz"; + # https://www.pietroalbini.org/blog/downloading-crates-io/ + # Not rate-limited, CDN URL. + url = "https://static.crates.io/crates/${crateConfig.crateName}/${crateConfig.crateName}-${crateConfig.version}.crate"; + sha256 = + assert (lib.assertMsg (crateConfig ? sha256) "Missing sha256 for ${name}"); + crateConfig.sha256; + }); + extraRustcOpts = + lib.lists.optional (targetFeatures != [ ]) + "-C target-feature=${lib.concatMapStringsSep "," (x: "+${x}") targetFeatures}"; + inherit + features + dependencies + buildDependencies + crateRenames + release + ; + } + ); in builtByPackageIdByPkgs; - /* Returns the actual derivations for the given dependencies. */ + # Returns the actual derivations for the given dependencies. dependencyDerivations = { buildByPackageId , features , dependencies , target + , }: assert (builtins.isList features); assert (builtins.isList dependencies); @@ -18856,52 +19076,59 @@ rec { in map depDerivation enabledDependencies; - /* Returns a sanitized version of val with all values substituted that cannot + /* + Returns a sanitized version of val with all values substituted that cannot be serialized as JSON. */ - sanitizeForJson = val: - if builtins.isAttrs val - then lib.mapAttrs (n: sanitizeForJson) val - else if builtins.isList val - then builtins.map sanitizeForJson val - else if builtins.isFunction val - then "function" - else val; + sanitizeForJson = + val: + if builtins.isAttrs val then + lib.mapAttrs (n: sanitizeForJson) val + else if builtins.isList val then + builtins.map sanitizeForJson val + else if builtins.isFunction val then + "function" + else + val; - /* Returns various tools to debug a crate. */ - debugCrate = { packageId, target ? makeDefaultTarget stdenv.hostPlatform }: - assert (builtins.isString packageId); - let - debug = rec { - # The built tree as passed to buildRustCrate. - buildTree = buildRustCrateWithFeatures { - buildRustCrateForPkgsFunc = _: lib.id; - inherit packageId; - }; - sanitizedBuildTree = sanitizeForJson buildTree; - dependencyTree = sanitizeForJson - ( - buildRustCrateWithFeatures { - buildRustCrateForPkgsFunc = _: crate: { - "01_crateName" = crate.crateName or false; - "02_features" = crate.features or [ ]; - "03_dependencies" = crate.dependencies or [ ]; - }; - inherit packageId; - } - ); - mergedPackageFeatures = mergePackageFeatures { - features = rootFeatures; - inherit packageId target; - }; - diffedDefaultPackageFeatures = diffDefaultPackageFeatures { - inherit packageId target; + # Returns various tools to debug a crate. + debugCrate = + { packageId + , target ? makeDefaultTarget stdenv.hostPlatform + , + }: + assert (builtins.isString packageId); + let + debug = rec { + # The built tree as passed to buildRustCrate. + buildTree = buildRustCrateWithFeatures { + buildRustCrateForPkgsFunc = _: lib.id; + inherit packageId; + }; + sanitizedBuildTree = sanitizeForJson buildTree; + dependencyTree = sanitizeForJson (buildRustCrateWithFeatures { + buildRustCrateForPkgsFunc = _: crate: { + "01_crateName" = crate.crateName or false; + "02_features" = crate.features or [ ]; + "03_dependencies" = crate.dependencies or [ ]; + }; + inherit packageId; + }); + mergedPackageFeatures = mergePackageFeatures { + features = rootFeatures; + inherit packageId target; + }; + diffedDefaultPackageFeatures = diffDefaultPackageFeatures { + inherit packageId target; + }; }; + in + { + internal = debug; }; - in - { internal = debug; }; - /* Returns differences between cargo default features and crate2nix default + /* + Returns differences between cargo default features and crate2nix default features. This is useful for verifying the feature resolution in crate2nix. @@ -18910,22 +19137,26 @@ rec { { crateConfigs ? crates , packageId , target + , }: assert (builtins.isAttrs crateConfigs); let prefixValues = prefix: lib.mapAttrs (n: v: { "${prefix}" = v; }); - mergedFeatures = - prefixValues - "crate2nix" - (mergePackageFeatures { inherit crateConfigs packageId target; features = [ "default" ]; }); + mergedFeatures = prefixValues "crate2nix" (mergePackageFeatures { + inherit crateConfigs packageId target; + features = [ "default" ]; + }); configs = prefixValues "cargo" crateConfigs; - combined = lib.foldAttrs (a: b: a // b) { } [ mergedFeatures configs ]; - onlyInCargo = - builtins.attrNames - (lib.filterAttrs (n: v: !(v ? "crate2nix") && (v ? "cargo")) combined); - onlyInCrate2Nix = - builtins.attrNames - (lib.filterAttrs (n: v: (v ? "crate2nix") && !(v ? "cargo")) combined); + combined = lib.foldAttrs (a: b: a // b) { } [ + mergedFeatures + configs + ]; + onlyInCargo = builtins.attrNames ( + lib.filterAttrs (n: v: !(v ? "crate2nix") && (v ? "cargo")) combined + ); + onlyInCrate2Nix = builtins.attrNames ( + lib.filterAttrs (n: v: (v ? "crate2nix") && !(v ? "cargo")) combined + ); differentFeatures = lib.filterAttrs ( n: v: @@ -18939,7 +19170,8 @@ rec { inherit onlyInCargo onlyInCrate2Nix differentFeatures; }; - /* Returns an attrset mapping packageId to the list of enabled features. + /* + Returns an attrset mapping packageId to the list of enabled features. If multiple paths to a dependency enable different features, the corresponding feature sets are merged. Features in rust are additive. @@ -18952,10 +19184,10 @@ rec { , dependencyPath ? [ crates.${packageId}.crateName ] , featuresByPackageId ? { } , target - # Adds devDependencies to the crate with rootPackageId. - , runTests ? false + , # Adds devDependencies to the crate with rootPackageId. + runTests ? false , ... - } @ args: + }@args: assert (builtins.isAttrs crateConfigs); assert (builtins.isString packageId); assert (builtins.isString rootPackageId); @@ -18968,84 +19200,93 @@ rec { crateConfig = crateConfigs."${packageId}" or (builtins.throw "Package not found: ${packageId}"); expandedFeatures = expandFeatures (crateConfig.features or { }) features; enabledFeatures = enableFeatures (crateConfig.dependencies or [ ]) expandedFeatures; - depWithResolvedFeatures = dependency: + depWithResolvedFeatures = + dependency: let inherit (dependency) packageId; features = dependencyFeatures enabledFeatures dependency; in - { inherit packageId features; }; - resolveDependencies = cache: path: dependencies: - assert (builtins.isAttrs cache); - assert (builtins.isList dependencies); - let - enabledDependencies = filterEnabledDependencies { - inherit dependencies target; - features = enabledFeatures; - }; - directDependencies = map depWithResolvedFeatures enabledDependencies; - foldOverCache = op: lib.foldl op cache directDependencies; - in - foldOverCache - ( - cache: { packageId, features }: - let - cacheFeatures = cache.${packageId} or [ ]; - combinedFeatures = sortedUnique (cacheFeatures ++ features); - in - if cache ? ${packageId} && cache.${packageId} == combinedFeatures - then cache - else - mergePackageFeatures { - features = combinedFeatures; - featuresByPackageId = cache; - inherit crateConfigs packageId target runTests rootPackageId; - } + { + inherit packageId features; + }; + resolveDependencies = + cache: path: dependencies: + assert (builtins.isAttrs cache); + assert (builtins.isList dependencies); + let + enabledDependencies = filterEnabledDependencies { + inherit dependencies target; + features = enabledFeatures; + }; + directDependencies = map depWithResolvedFeatures enabledDependencies; + foldOverCache = op: lib.foldl op cache directDependencies; + in + foldOverCache ( + cache: + { packageId, features }: + let + cacheFeatures = cache.${packageId} or [ ]; + combinedFeatures = sortedUnique (cacheFeatures ++ features); + in + if cache ? ${packageId} && cache.${packageId} == combinedFeatures then + cache + else + mergePackageFeatures { + features = combinedFeatures; + featuresByPackageId = cache; + inherit + crateConfigs + packageId + target + runTests + rootPackageId + ; + } ); cacheWithSelf = let cacheFeatures = featuresByPackageId.${packageId} or [ ]; combinedFeatures = sortedUnique (cacheFeatures ++ enabledFeatures); in - featuresByPackageId // { + featuresByPackageId + // { "${packageId}" = combinedFeatures; }; - cacheWithDependencies = - resolveDependencies cacheWithSelf "dep" - ( - crateConfig.dependencies or [ ] - ++ lib.optionals - (runTests && packageId == rootPackageId) - (crateConfig.devDependencies or [ ]) - ); - cacheWithAll = - resolveDependencies - cacheWithDependencies "build" - (crateConfig.buildDependencies or [ ]); + cacheWithDependencies = resolveDependencies cacheWithSelf "dep" ( + crateConfig.dependencies or [ ] + ++ lib.optionals (runTests && packageId == rootPackageId) (crateConfig.devDependencies or [ ]) + ); + cacheWithAll = resolveDependencies cacheWithDependencies "build" ( + crateConfig.buildDependencies or [ ] + ); in cacheWithAll; - /* Returns the enabled dependencies given the enabled features. */ - filterEnabledDependencies = { dependencies, features, target }: - assert (builtins.isList dependencies); - assert (builtins.isList features); - assert (builtins.isAttrs target); + # Returns the enabled dependencies given the enabled features. + filterEnabledDependencies = + { dependencies + , features + , target + , + }: + assert (builtins.isList dependencies); + assert (builtins.isList features); + assert (builtins.isAttrs target); - lib.filter - ( - dep: - let - targetFunc = dep.target or (features: true); - in - targetFunc { inherit features target; } - && ( - !(dep.optional or false) - || builtins.any (doesFeatureEnableDependency dep) features + lib.filter + ( + dep: + let + targetFunc = dep.target or (features: true); + in + targetFunc { inherit features target; } + && (!(dep.optional or false) || builtins.any (doesFeatureEnableDependency dep) features) ) - ) - dependencies; + dependencies; - /* Returns whether the given feature should enable the given dependency. */ - doesFeatureEnableDependency = dependency: feature: + # Returns whether the given feature should enable the given dependency. + doesFeatureEnableDependency = + dependency: feature: let name = dependency.rename or dependency.name; prefix = "${name}/"; @@ -19054,109 +19295,116 @@ rec { in feature == name || feature == "dep:" + name || startsWithPrefix; - /* Returns the expanded features for the given inputFeatures by applying the + /* + Returns the expanded features for the given inputFeatures by applying the rules in featureMap. featureMap is an attribute set which maps feature names to lists of further feature names to enable in case this feature is selected. */ - expandFeatures = featureMap: inputFeatures: - assert (builtins.isAttrs featureMap); - assert (builtins.isList inputFeatures); - let - expandFeaturesNoCycle = oldSeen: inputFeatures: - if inputFeatures != [ ] - then - let - # The feature we're currently expanding. - feature = builtins.head inputFeatures; - # All the features we've seen/expanded so far, including the one - # we're currently processing. - seen = oldSeen // { ${feature} = 1; }; - # Expand the feature but be careful to not re-introduce a feature - # that we've already seen: this can easily cause a cycle, see issue - # #209. - enables = builtins.filter (f: !(seen ? "${f}")) (featureMap."${feature}" or [ ]); - in - [ feature ] ++ (expandFeaturesNoCycle seen (builtins.tail inputFeatures ++ enables)) - # No more features left, nothing to expand to. - else [ ]; - outFeatures = expandFeaturesNoCycle { } inputFeatures; - in - sortedUnique outFeatures; + expandFeatures = + featureMap: inputFeatures: + assert (builtins.isAttrs featureMap); + assert (builtins.isList inputFeatures); + let + expandFeaturesNoCycle = + oldSeen: inputFeatures: + if inputFeatures != [ ] then + let + # The feature we're currently expanding. + feature = builtins.head inputFeatures; + # All the features we've seen/expanded so far, including the one + # we're currently processing. + seen = oldSeen // { + ${feature} = 1; + }; + # Expand the feature but be careful to not re-introduce a feature + # that we've already seen: this can easily cause a cycle, see issue + # #209. + enables = builtins.filter (f: !(seen ? "${f}")) (featureMap."${feature}" or [ ]); + in + [ feature ] ++ (expandFeaturesNoCycle seen (builtins.tail inputFeatures ++ enables)) + # No more features left, nothing to expand to. + else + [ ]; + outFeatures = expandFeaturesNoCycle { } inputFeatures; + in + sortedUnique outFeatures; - /* This function adds optional dependencies as features if they are enabled + /* + This function adds optional dependencies as features if they are enabled indirectly by dependency features. This function mimics Cargo's behavior described in a note at: https://doc.rust-lang.org/nightly/cargo/reference/features.html#dependency-features */ - enableFeatures = dependencies: features: - assert (builtins.isList features); - assert (builtins.isList dependencies); - let - additionalFeatures = lib.concatMap - ( - dependency: - assert (builtins.isAttrs dependency); - let - enabled = builtins.any (doesFeatureEnableDependency dependency) features; - in - if (dependency.optional or false) && enabled - then [ (dependency.rename or dependency.name) ] - else [ ] - ) - dependencies; - in - sortedUnique (features ++ additionalFeatures); + enableFeatures = + dependencies: features: + assert (builtins.isList features); + assert (builtins.isList dependencies); + let + additionalFeatures = lib.concatMap + ( + dependency: + assert (builtins.isAttrs dependency); + let + enabled = builtins.any (doesFeatureEnableDependency dependency) features; + in + if (dependency.optional or false) && enabled then + [ (dependency.rename or dependency.name) ] + else + [ ] + ) + dependencies; + in + sortedUnique (features ++ additionalFeatures); /* Returns the actual features for the given dependency. features: The features of the crate that refers this dependency. */ - dependencyFeatures = features: dependency: - assert (builtins.isList features); - assert (builtins.isAttrs dependency); - let - defaultOrNil = - if dependency.usesDefaultFeatures or true - then [ "default" ] - else [ ]; - explicitFeatures = dependency.features or [ ]; - additionalDependencyFeatures = - let - name = dependency.rename or dependency.name; - stripPrefixMatch = prefix: s: - if lib.hasPrefix prefix s - then lib.removePrefix prefix s - else null; - extractFeature = feature: lib.findFirst - (f: f != null) - null - (map (prefix: stripPrefixMatch prefix feature) [ - (name + "/") - (name + "?/") - ]); - dependencyFeatures = lib.filter (f: f != null) (map extractFeature features); - in - dependencyFeatures; - in - defaultOrNil ++ explicitFeatures ++ additionalDependencyFeatures; + dependencyFeatures = + features: dependency: + assert (builtins.isList features); + assert (builtins.isAttrs dependency); + let + defaultOrNil = if dependency.usesDefaultFeatures or true then [ "default" ] else [ ]; + explicitFeatures = dependency.features or [ ]; + additionalDependencyFeatures = + let + name = dependency.rename or dependency.name; + stripPrefixMatch = prefix: s: if lib.hasPrefix prefix s then lib.removePrefix prefix s else null; + extractFeature = + feature: + lib.findFirst (f: f != null) null ( + map (prefix: stripPrefixMatch prefix feature) [ + (name + "/") + (name + "?/") + ] + ); + dependencyFeatures = lib.filter (f: f != null) (map extractFeature features); + in + dependencyFeatures; + in + defaultOrNil ++ explicitFeatures ++ additionalDependencyFeatures; - /* Sorts and removes duplicates from a list of strings. */ - sortedUnique = features: - assert (builtins.isList features); - assert (builtins.all builtins.isString features); - let - outFeaturesSet = lib.foldl (set: feature: set // { "${feature}" = 1; }) { } features; - outFeaturesUnique = builtins.attrNames outFeaturesSet; - in - builtins.sort (a: b: a < b) outFeaturesUnique; + # Sorts and removes duplicates from a list of strings. + sortedUnique = + features: + assert (builtins.isList features); + assert (builtins.all builtins.isString features); + let + outFeaturesSet = lib.foldl (set: feature: set // { "${feature}" = 1; }) { } features; + outFeaturesUnique = builtins.attrNames outFeaturesSet; + in + builtins.sort (a: b: a < b) outFeaturesUnique; - deprecationWarning = message: value: - if strictDeprecation - then builtins.throw "strictDeprecation enabled, aborting: ${message}" - else builtins.trace message value; + deprecationWarning = + message: value: + if strictDeprecation then + builtins.throw "strictDeprecation enabled, aborting: ${message}" + else + builtins.trace message value; # # crate2nix/default.nix (excerpt end) diff --git a/Cargo.toml b/Cargo.toml index e36ec2f1..dfbb9ac5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,55 +18,54 @@ repository = "https://github.com/stackabletech/stackable-cockpit/" [workspace.dependencies] async-trait = "0.1" -axum = { version = "0.7", features = ["http2"] } -axum-extra = { version = "0.9", features = ["typed-header"] } -bcrypt = "0.15" -bindgen = "0.70.1" -built = "0.8.0" -cc = "1.0.106" +axum = { version = "0.8", features = ["http2"] } +axum-extra = { version = "0.12", features = ["typed-header"] } +bcrypt = "0.19" +bindgen = "0.72" +built = "0.8" +cc = "1.0" clap = { version = "4.5", features = ["derive", "env"] } clap_complete = "4.5" clap_complete_nushell = "4.5" comfy-table = { version = "7.1", features = ["custom_styling"] } -directories = "5.0" +directories = "6.0" dotenvy = "0.15" futures = "0.3" indexmap = { version = "2.2", features = ["serde"] } indicatif = "0.18" -k8s-openapi = { version = "0.24", default-features = false, features = ["v1_32"] } -kube = { version = "0.99", default-features = false, features = ["client", "rustls-tls", "ws", "socks5", "http-proxy"] } lazy_static = "1.5" libc = "0.2" once_cell = "1.19" -phf = "0.11" -phf_codegen = "0.11" -rand = "0.8" +phf = "0.13" +phf_codegen = "0.13" +rand = "0.10" regex = "1.10" -reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls-native-roots"] } -rstest = "0.22" +reqwest = { version = "0.13", default-features = false, features = ["json", "rustls"] } +rustls = "0.23" +rstest = "0.26" semver = { version = "1.0", features = ["serde"] } serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" serde_yaml = "0.9" sha2 = "0.10" -snafu = { version = "0.8", features = ["futures"] } -stackable-operator = { git = "https://github.com/stackabletech/operator-rs.git", tag = "stackable-operator-0.92.0", default-features = false } +snafu = { version = "0.9", features = ["futures"] } +stackable-operator = { git = "https://github.com/stackabletech/operator-rs.git", tag = "stackable-operator-0.107.0", default-features = false, features = ["crds", "kube-ws"] } tera = "1.20" termion = "4.0" tokio = { version = "1.38", features = ["rt-multi-thread", "macros", "fs", "process", "io-std"] } -toml = { version = "0.9.8", features = ["serde"] } -tower-http = { version = "0.5", features = ["validate-request"] } +toml = { version = "1.0", features = ["serde"] } +tower-http = { version = "0.6", features = ["validate-request"] } tracing = "0.1" tracing-indicatif = "0.3.9" tracing-subscriber = "0.3" url = "2.5" urlencoding = "2.1.3" -utoipa = { version = "4.2", features = ["indexmap"] } -utoipa-swagger-ui = { version = "7.1", features = ["axum"] } +utoipa = { version = "5.4", features = ["indexmap"] } +utoipa-swagger-ui = { version = "9.0", features = ["axum"] } uuid = { version = "1.10", features = ["v4"] } -which = "6.0" +which = "8.0" -# [patch."https://github.com/stackabletech/operator-rs.git"] +[patch."https://github.com/stackabletech/operator-rs.git"] # stackable-operator = { git = "https://github.com/stackabletech//operator-rs.git", branch = "main" } [profile.release.package.stackablectl] diff --git a/crate-hashes.json b/crate-hashes.json index 1499527d..0f91f26f 100644 --- a/crate-hashes.json +++ b/crate-hashes.json @@ -1,10 +1,15 @@ { - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#k8s-version@0.1.2": "0li9smdrz7danqz17lfkl0j9zl2i84csgc7d01lxs5qi8jcs9fzw", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#stackable-operator-derive@0.3.1": "0li9smdrz7danqz17lfkl0j9zl2i84csgc7d01lxs5qi8jcs9fzw", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#stackable-operator@0.92.0": "0li9smdrz7danqz17lfkl0j9zl2i84csgc7d01lxs5qi8jcs9fzw", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#stackable-shared@0.0.1": "0li9smdrz7danqz17lfkl0j9zl2i84csgc7d01lxs5qi8jcs9fzw", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#stackable-telemetry@0.6.0": "0li9smdrz7danqz17lfkl0j9zl2i84csgc7d01lxs5qi8jcs9fzw", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#stackable-versioned-macros@0.7.1": "0li9smdrz7danqz17lfkl0j9zl2i84csgc7d01lxs5qi8jcs9fzw", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.92.0#stackable-versioned@0.7.1": "0li9smdrz7danqz17lfkl0j9zl2i84csgc7d01lxs5qi8jcs9fzw", - "git+https://github.com/stackabletech/product-config.git?tag=0.7.0#product-config@0.7.0": "0gjsm80g6r75pm3824dcyiz4ysq1ka4c1if6k1mjm9cnd5ym0gny" + "git+https://github.com/kube-rs/kube-rs?rev=fe69cc486ff8e62a7da61d64ec3ebbd9e64c43b5#kube-client@3.0.1": "1irm4g79crlxjm3iqrgvx0f6wxdcj394ky84q89pk9i36y2mlw3n", + "git+https://github.com/kube-rs/kube-rs?rev=fe69cc486ff8e62a7da61d64ec3ebbd9e64c43b5#kube-core@3.0.1": "1irm4g79crlxjm3iqrgvx0f6wxdcj394ky84q89pk9i36y2mlw3n", + "git+https://github.com/kube-rs/kube-rs?rev=fe69cc486ff8e62a7da61d64ec3ebbd9e64c43b5#kube-derive@3.0.1": "1irm4g79crlxjm3iqrgvx0f6wxdcj394ky84q89pk9i36y2mlw3n", + "git+https://github.com/kube-rs/kube-rs?rev=fe69cc486ff8e62a7da61d64ec3ebbd9e64c43b5#kube-runtime@3.0.1": "1irm4g79crlxjm3iqrgvx0f6wxdcj394ky84q89pk9i36y2mlw3n", + "git+https://github.com/kube-rs/kube-rs?rev=fe69cc486ff8e62a7da61d64ec3ebbd9e64c43b5#kube@3.0.1": "1irm4g79crlxjm3iqrgvx0f6wxdcj394ky84q89pk9i36y2mlw3n", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.107.0#k8s-version@0.1.3": "01krcfa4jfhrvl2skgmq35a9fx9zrjm82ymmplr6fsp354fqdzdq", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.107.0#stackable-operator-derive@0.3.1": "01krcfa4jfhrvl2skgmq35a9fx9zrjm82ymmplr6fsp354fqdzdq", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.107.0#stackable-operator@0.107.0": "01krcfa4jfhrvl2skgmq35a9fx9zrjm82ymmplr6fsp354fqdzdq", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.107.0#stackable-shared@0.1.0": "01krcfa4jfhrvl2skgmq35a9fx9zrjm82ymmplr6fsp354fqdzdq", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.107.0#stackable-telemetry@0.6.2": "01krcfa4jfhrvl2skgmq35a9fx9zrjm82ymmplr6fsp354fqdzdq", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.107.0#stackable-versioned-macros@0.8.3": "01krcfa4jfhrvl2skgmq35a9fx9zrjm82ymmplr6fsp354fqdzdq", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.107.0#stackable-versioned@0.8.3": "01krcfa4jfhrvl2skgmq35a9fx9zrjm82ymmplr6fsp354fqdzdq", + "git+https://github.com/stackabletech/product-config.git?tag=0.8.0#product-config@0.8.0": "1dz70kapm2wdqcr7ndyjji0lhsl98bsq95gnb2lw487wf6yr7987" } diff --git a/deny.toml b/deny.toml index 60c7b706..8ec7e452 100644 --- a/deny.toml +++ b/deny.toml @@ -1,3 +1,8 @@ +# This file is the source of truth for all our repos! +# This includes repos not templated by operator-templating, please copy/paste the file for this repos. + +# TIP: Use "cargo deny check" to check if everything is fine + [graph] targets = [ { triple = "x86_64-unknown-linux-gnu" }, @@ -8,40 +13,77 @@ targets = [ ] [advisories] -unmaintained = "workspace" -yanked = "warn" +yanked = "deny" +ignore = [ + # https://rustsec.org/advisories/RUSTSEC-2023-0071 + # "rsa" crate: Marvin Attack: potential key recovery through timing sidechannel + # + # No patch is yet available, however work is underway to migrate to a fully constant-time implementation + # So we need to accept this, as of SDP 25.3 we are not using the rsa crate to create certificates used in production + # setups. + # + # https://github.com/RustCrypto/RSA/issues/19 is the tracking issue + "RUSTSEC-2023-0071", + + # https://rustsec.org/advisories/RUSTSEC-2024-0436 + # The "paste" crate is no longer maintained because the owner states that the implementation is + # finished. There are at least two (forked) alternatives which state to be maintained. They'd + # need to be vetted before a potential switch. Additionally, they'd need to be in a maintained + # state for a couple of years to provide any benefit over using "paste". + # + # This crate is only used in a single place in the xtask package inside the declarative + # "write_crd" macro. The impact of vulnerabilities, if any, should be fairly minimal. + # + # See thread: https://users.rust-lang.org/t/paste-alternatives/126787/4 + # + # This can only be removed again if we decide to use a different crate. + "RUSTSEC-2024-0436", +] [bans] multiple-versions = "allow" [licenses] +unused-allowed-license = "allow" confidence-threshold = 1.0 allow = [ "Apache-2.0", "BSD-2-Clause", "BSD-3-Clause", + "CC0-1.0", "ISC", + "LicenseRef-ring", + "LicenseRef-webpki", "MIT", "MPL-2.0", + "OpenSSL", # Needed for the ring and/or aws-lc-sys crate. See https://github.com/stackabletech/operator-templating/pull/464 for details "Unicode-3.0", - "Unlicense", + "Unicode-DFS-2016", "Zlib", + "Unlicense", ] private = { ignore = true } [[licenses.clarify]] name = "ring" expression = "LicenseRef-ring" -license-files = [{ path = "LICENSE", hash = 0xbd0eed23 }] +license-files = [ + { path = "LICENSE", hash = 0xbd0eed23 }, +] [[licenses.clarify]] name = "webpki" expression = "LicenseRef-webpki" -license-files = [{ path = "LICENSE", hash = 0x001c7e6c }] +license-files = [ + { path = "LICENSE", hash = 0x001c7e6c }, +] [sources] unknown-registry = "deny" unknown-git = "deny" +allow-git = [ + "https://github.com/kube-rs/kube-rs", +] [sources.allow-org] github = ["stackabletech"] diff --git a/docker/Dockerfile b/docker/Dockerfile index 6413f2c0..f9baffc9 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -25,7 +25,7 @@ WORKDIR / ##PATCH: Install go (for Helm wrapper) WORKDIR /opt/go -RUN GO_VERSION=1.22.5 \ +RUN GO_VERSION=1.26.0 \ ARCH=$(arch | sed 's/^x86_64$/amd64/' | sed 's/^aarch64$/arm64/') \ && curl --location "https://repo.stackable.tech/repository/packages/go/go${GO_VERSION}.linux-${ARCH}.tar.gz" | tar xvz --strip-components=1 \ && ln -s /opt/go/bin/go /usr/local/bin diff --git a/extra/completions/stackablectl.nu b/extra/completions/stackablectl.nu index 374f7691..ee82490f 100644 --- a/extra/completions/stackablectl.nu +++ b/extra/completions/stackablectl.nu @@ -94,7 +94,6 @@ module completions { # Print out detailed operator information export extern "stackablectl operator describe" [ - OPERATOR: string # Operator to describe --output(-o): string@"nu-complete stackablectl operator describe output_type" --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files @@ -109,6 +108,7 @@ module completions { --listener-class-preset: string@"nu-complete stackablectl operator describe listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version + OPERATOR: string # Operator to describe ] def "nu-complete stackablectl operator install cluster_type" [] { @@ -125,7 +125,6 @@ module completions { # Install one or more operators export extern "stackablectl operator install" [ - ...OPERATORS: string # Operator(s) to install --operator-namespace: string # Namespace in the cluster used to deploy the operators --operator-ns: string # Namespace in the cluster used to deploy the operators --cluster(-c): string@"nu-complete stackablectl operator install cluster_type" # Type of local cluster to use for testing @@ -145,6 +144,7 @@ module completions { --listener-class-preset: string@"nu-complete stackablectl operator install listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version + ...OPERATORS: string # Operator(s) to install ] def "nu-complete stackablectl operator uninstall chart_source" [] { @@ -157,7 +157,6 @@ module completions { # Uninstall one or more operators export extern "stackablectl operator uninstall" [ - ...operators: string # One or more operators to uninstall --operator-namespace: string # Namespace in the cluster used to deploy the operators --operator-ns: string # Namespace in the cluster used to deploy the operators --log-level(-l): string # Log level this application uses @@ -173,6 +172,7 @@ module completions { --listener-class-preset: string@"nu-complete stackablectl operator uninstall listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version + ...operators: string # One or more operators to uninstall ] def "nu-complete stackablectl operator installed output_type" [] { @@ -304,7 +304,6 @@ module completions { # Print out detailed release information export extern "stackablectl release describe" [ - RELEASE: string --output(-o): string@"nu-complete stackablectl release describe output_type" --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files @@ -319,6 +318,7 @@ module completions { --listener-class-preset: string@"nu-complete stackablectl release describe listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version + RELEASE: string ] def "nu-complete stackablectl release install cluster_type" [] { @@ -335,7 +335,6 @@ module completions { # Install a specific release export extern "stackablectl release install" [ - RELEASE: string # Release to install --include(-i): string # Whitelist of product operators to install --exclude(-e): string # Blacklist of product operators to install --operator-namespace: string # Namespace in the cluster used to deploy the operators @@ -357,6 +356,7 @@ module completions { --listener-class-preset: string@"nu-complete stackablectl release install listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version + RELEASE: string # Release to install ] def "nu-complete stackablectl release uninstall chart_source" [] { @@ -369,7 +369,6 @@ module completions { # Uninstall a release export extern "stackablectl release uninstall" [ - RELEASE: string # Name of the release to uninstall --operator-namespace: string # Namespace in the cluster used to deploy the operators --operator-ns: string # Namespace in the cluster used to deploy the operators --log-level(-l): string # Log level this application uses @@ -385,6 +384,7 @@ module completions { --listener-class-preset: string@"nu-complete stackablectl release uninstall listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version + RELEASE: string # Name of the release to uninstall ] def "nu-complete stackablectl release upgrade chart_source" [] { @@ -397,7 +397,6 @@ module completions { # Upgrade a release export extern "stackablectl release upgrade" [ - RELEASE: string # Upgrade to the specified release --include(-i): string # List of product operators to upgrade --exclude(-e): string # Blacklist of product operators to install --operator-namespace: string # Namespace in the cluster used to deploy the operators @@ -415,6 +414,7 @@ module completions { --listener-class-preset: string@"nu-complete stackablectl release upgrade listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version + RELEASE: string # Upgrade to the specified release ] # Print this message or the help of the given subcommand(s) @@ -516,7 +516,6 @@ module completions { # Describe a specific stack export extern "stackablectl stack describe" [ - stack_name: string # Name of the stack to describe --output(-o): string@"nu-complete stackablectl stack describe output_type" --release: string # Target a specific Stackable release --log-level(-l): string # Log level this application uses @@ -532,6 +531,7 @@ module completions { --listener-class-preset: string@"nu-complete stackablectl stack describe listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version + stack_name: string # Name of the stack to describe ] def "nu-complete stackablectl stack install cluster_type" [] { @@ -548,7 +548,6 @@ module completions { # Install a specific stack export extern "stackablectl stack install" [ - stack_name: string # Name of the stack to describe --skip-release # Skip the installation of the release during the stack install process --stack-parameters: string # List of parameters to use when installing the stack --parameters: string # List of parameters to use when installing the stack @@ -574,6 +573,7 @@ module completions { --listener-class-preset: string@"nu-complete stackablectl stack install listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version + stack_name: string # Name of the stack to describe ] # Print this message or the help of the given subcommand(s) @@ -631,8 +631,6 @@ module completions { # Display credentials for a stacklet export extern "stackablectl stacklet credentials" [ - product_name: string # The name of the product, for example 'superset' - stacklet_name: string # The name of the stacklet, for example 'superset' --namespace(-n): string # Namespace in the cluster used to deploy the products --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files @@ -647,6 +645,8 @@ module completions { --listener-class-preset: string@"nu-complete stackablectl stacklet credentials listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version + product_name: string # The name of the product, for example 'superset' + stacklet_name: string # The name of the stacklet, for example 'superset' ] def "nu-complete stackablectl stacklet list output_type" [] { @@ -770,7 +770,6 @@ module completions { # Print out detailed demo information export extern "stackablectl demo describe" [ - DEMO: string # Demo to describe --output(-o): string@"nu-complete stackablectl demo describe output_type" --release: string # Target a specific Stackable release --log-level(-l): string # Log level this application uses @@ -786,6 +785,7 @@ module completions { --listener-class-preset: string@"nu-complete stackablectl demo describe listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version + DEMO: string # Demo to describe ] def "nu-complete stackablectl demo install cluster_type" [] { @@ -802,7 +802,6 @@ module completions { # Install a specific demo export extern "stackablectl demo install" [ - DEMO: string # Demo to install --skip-release # Skip the installation of the release during the stack install process --stack-parameters: string # List of parameters to use when installing the stack --parameters: string # List of parameters to use when installing the demo @@ -828,6 +827,7 @@ module completions { --listener-class-preset: string@"nu-complete stackablectl demo install listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version + DEMO: string # Demo to install ] # Print this message or the help of the given subcommand(s) @@ -1132,10 +1132,8 @@ module completions { # EXPERIMENTAL: Launch a debug container for a Pod export extern "stackablectl experimental-debug" [ --namespace(-n): string # The namespace of the Pod being debugged - pod: string # The Pod to debug --container(-c): string # The target container to debug --image: string # The debug container image - ...cmd: string # The command to run in the debug container --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files --demo-file(-d): path # Provide one or more additional (custom) demo file(s) @@ -1149,6 +1147,8 @@ module completions { --listener-class-preset: string@"nu-complete stackablectl experimental-debug listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version + pod: string # The Pod to debug + ...cmd: string # The command to run in the debug container ] def "nu-complete stackablectl version chart_source" [] { diff --git a/go.mod b/go.mod index 3f57ad35..c304c778 100644 --- a/go.mod +++ b/go.mod @@ -1,77 +1,61 @@ module rust/stackable/go-helm-wrapper -go 1.22.4 - -toolchain go1.22.5 +go 1.26.0 +// We can not bump to helm 4 yet: +// > go.mod:8:2: require helm.sh/helm/v3: version "v4.1.1" invalid: should be v3, not v4 +// Related helm 4 issue: https://github.com/stackabletech/issues/issues/814 require ( - github.com/mittwald/go-helm-client v0.12.10 - helm.sh/helm/v3 v3.15.3 - k8s.io/client-go v0.30.3 + github.com/mittwald/go-helm-client v0.12.19 + helm.sh/helm/v3 v3.20.0 + k8s.io/client-go v0.35.2 ) require ( + dario.cat/mergo v1.0.1 // indirect github.com/AdaLogics/go-fuzz-headers v0.0.0-20240716105424-66b64c4bb379 // indirect - github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect - github.com/BurntSushi/toml v1.4.0 // indirect + github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // indirect + github.com/BurntSushi/toml v1.6.0 // indirect github.com/MakeNowJust/heredoc v1.0.0 // indirect github.com/Masterminds/goutils v1.1.1 // indirect - github.com/Masterminds/semver/v3 v3.2.1 // indirect - github.com/Masterminds/sprig/v3 v3.2.3 // indirect + github.com/Masterminds/semver/v3 v3.4.0 // indirect + github.com/Masterminds/sprig/v3 v3.3.0 // indirect github.com/Masterminds/squirrel v1.5.4 // indirect - github.com/Microsoft/hcsshim v0.12.5 // indirect github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect - github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver/v4 v4.0.0 // indirect - github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/chai2010/gettext-go v1.0.3 // indirect - github.com/containerd/containerd v1.7.20 // indirect - github.com/containerd/errdefs v0.1.0 // indirect + github.com/containerd/containerd v1.7.30 // indirect + github.com/containerd/errdefs v0.3.0 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/cyphar/filepath-securejoin v0.3.1 // indirect + github.com/cyphar/filepath-securejoin v0.6.1 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect - github.com/distribution/reference v0.6.0 // indirect - github.com/docker/cli v27.1.1+incompatible // indirect - github.com/docker/distribution v2.8.3+incompatible // indirect - github.com/docker/docker v27.1.1+incompatible // indirect - github.com/docker/docker-credential-helpers v0.8.2 // indirect - github.com/docker/go-connections v0.5.0 // indirect - github.com/docker/go-metrics v0.0.1 // indirect - github.com/emicklei/go-restful/v3 v3.12.1 // indirect - github.com/evanphx/json-patch v5.9.0+incompatible // indirect + github.com/emicklei/go-restful/v3 v3.12.2 // indirect + github.com/evanphx/json-patch v5.9.11+incompatible // indirect github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f // indirect github.com/fatih/color v1.17.0 // indirect - github.com/felixge/httpsnoop v1.0.4 // indirect + github.com/fxamacker/cbor/v2 v2.9.0 // indirect github.com/go-errors/errors v1.5.1 // indirect github.com/go-gorp/gorp/v3 v3.1.0 // indirect - github.com/go-logr/logr v1.4.2 // indirect - github.com/go-logr/stdr v1.2.2 // indirect + github.com/go-logr/logr v1.4.3 // indirect github.com/go-openapi/jsonpointer v0.21.0 // indirect github.com/go-openapi/jsonreference v0.21.0 // indirect github.com/go-openapi/swag v0.23.0 // indirect github.com/gobwas/glob v0.2.3 // indirect - github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/protobuf v1.5.4 // indirect - github.com/google/btree v1.1.2 // indirect - github.com/google/gnostic-models v0.6.8 // indirect - github.com/google/go-cmp v0.6.0 // indirect - github.com/google/gofuzz v1.2.0 // indirect - github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect + github.com/google/btree v1.1.3 // indirect + github.com/google/gnostic-models v0.7.0 // indirect + github.com/google/go-cmp v0.7.0 // indirect github.com/google/uuid v1.6.0 // indirect - github.com/gorilla/mux v1.8.1 // indirect - github.com/gorilla/websocket v1.5.3 // indirect github.com/gosuri/uitable v0.0.4 // indirect github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/huandu/xstrings v1.5.0 // indirect - github.com/imdario/mergo v0.3.16 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jmoiron/sqlx v1.4.0 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect - github.com/klauspost/compress v1.17.9 // indirect + github.com/klauspost/compress v1.18.0 // indirect github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 // indirect github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 // indirect github.com/lib/pq v1.10.9 // indirect @@ -80,75 +64,61 @@ require ( github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.16 // indirect - github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/go-wordwrap v1.0.1 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect - github.com/moby/locker v1.0.1 // indirect - github.com/moby/spdystream v0.5.0 // indirect - github.com/moby/term v0.5.0 // indirect + github.com/moby/term v0.5.2 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect - github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect - github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect github.com/opencontainers/go-digest v1.0.0 // indirect - github.com/opencontainers/image-spec v1.1.0 // indirect + github.com/opencontainers/image-spec v1.1.1 // indirect github.com/peterbourgon/diskv v2.0.1+incompatible // indirect github.com/pkg/errors v0.9.1 // indirect - github.com/prometheus/client_golang v1.19.1 // indirect - github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.55.0 // indirect - github.com/prometheus/procfs v0.15.1 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/rivo/uniseg v0.4.7 // indirect - github.com/rubenv/sql-migrate v1.7.0 // indirect + github.com/rubenv/sql-migrate v1.8.1 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect + github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 // indirect github.com/shopspring/decimal v1.4.0 // indirect github.com/sirupsen/logrus v1.9.3 // indirect - github.com/spf13/cast v1.6.0 // indirect - github.com/spf13/cobra v1.8.1 // indirect - github.com/spf13/pflag v1.0.5 // indirect - github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect - github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect - github.com/xeipuuv/gojsonschema v1.2.0 // indirect + github.com/spf13/cast v1.7.0 // indirect + github.com/spf13/cobra v1.10.2 // indirect + github.com/spf13/pflag v1.0.10 // indirect + github.com/x448/float16 v0.8.4 // indirect github.com/xlab/treeprint v1.2.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 // indirect - go.opentelemetry.io/otel v1.28.0 // indirect - go.opentelemetry.io/otel/metric v1.28.0 // indirect - go.opentelemetry.io/otel/trace v1.28.0 // indirect - go.starlark.net v0.0.0-20240725214946-42030a7cedce // indirect - golang.org/x/crypto v0.25.0 // indirect - golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect - golang.org/x/net v0.27.0 // indirect - golang.org/x/oauth2 v0.21.0 // indirect - golang.org/x/sync v0.7.0 // indirect - golang.org/x/sys v0.22.0 // indirect - golang.org/x/term v0.22.0 // indirect - golang.org/x/text v0.16.0 // indirect - golang.org/x/time v0.5.0 // indirect - google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf // indirect - google.golang.org/grpc v1.65.0 // indirect - google.golang.org/protobuf v1.34.2 // indirect - gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect - gopkg.in/evanphx/json-patch.v5 v5.9.0 // indirect + go.yaml.in/yaml/v2 v2.4.3 // indirect + go.yaml.in/yaml/v3 v3.0.4 // indirect + golang.org/x/crypto v0.46.0 // indirect + golang.org/x/net v0.48.0 // indirect + golang.org/x/oauth2 v0.30.0 // indirect + golang.org/x/sync v0.19.0 // indirect + golang.org/x/sys v0.40.0 // indirect + golang.org/x/term v0.39.0 // indirect + golang.org/x/text v0.33.0 // indirect + golang.org/x/time v0.12.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect + google.golang.org/grpc v1.72.2 // indirect + google.golang.org/protobuf v1.36.8 // indirect + gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.30.3 // indirect - k8s.io/apiextensions-apiserver v0.30.3 // indirect - k8s.io/apimachinery v0.30.3 // indirect - k8s.io/apiserver v0.30.3 // indirect - k8s.io/cli-runtime v0.30.3 // indirect - k8s.io/component-base v0.30.3 // indirect + k8s.io/api v0.35.2 // indirect + k8s.io/apiextensions-apiserver v0.35.0 // indirect + k8s.io/apimachinery v0.35.2 // indirect + k8s.io/apiserver v0.35.0 // indirect + k8s.io/cli-runtime v0.35.0 // indirect + k8s.io/component-base v0.35.0 // indirect k8s.io/klog/v2 v2.130.1 // indirect - k8s.io/kube-openapi v0.0.0-20240730131305-7a9a4e85957e // indirect - k8s.io/kubectl v0.30.3 // indirect - k8s.io/utils v0.0.0-20240711033017-18e509b52bc8 // indirect - oras.land/oras-go v1.2.6 // indirect - sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect - sigs.k8s.io/kustomize/api v0.17.3 // indirect - sigs.k8s.io/kustomize/kyaml v0.17.2 // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect - sigs.k8s.io/yaml v1.4.0 // indirect + k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 // indirect + k8s.io/kubectl v0.35.0 // indirect + k8s.io/utils v0.0.0-20251002143259-bc988d571ff4 // indirect + oras.land/oras-go/v2 v2.6.0 // indirect + sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect + sigs.k8s.io/kustomize/api v0.20.1 // indirect + sigs.k8s.io/kustomize/kyaml v0.20.1 // indirect + sigs.k8s.io/randfill v1.0.0 // indirect + sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect + sigs.k8s.io/yaml v1.6.0 // indirect ) diff --git a/go.sum b/go.sum index 858a5bbd..b7c1810e 100644 --- a/go.sum +++ b/go.sum @@ -1,261 +1,152 @@ +dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s= +dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= +filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= -github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU= -github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= github.com/AdaLogics/go-fuzz-headers v0.0.0-20240716105424-66b64c4bb379 h1:shYAfOpsleWVaSwGxQjmi+BBIwzj5jxB1FTCpVqs0N8= github.com/AdaLogics/go-fuzz-headers v0.0.0-20240716105424-66b64c4bb379/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= -github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= -github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= -github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= -github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= -github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0= -github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= +github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c h1:udKWzYgxTojEKWjV8V+WSxDXJ4NFATAsZjh8iIbsQIg= +github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= +github.com/BurntSushi/toml v1.6.0 h1:dRaEfpa2VI55EwlIW72hMRHdWouJeRF7TPYhI+AUQjk= +github.com/BurntSushi/toml v1.6.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/DATA-DOG/go-sqlmock v1.5.2 h1:OcvFkGmslmlZibjAjaHm3L//6LiuBgolP7OputlJIzU= github.com/DATA-DOG/go-sqlmock v1.5.2/go.mod h1:88MAG/4G7SMwSE3CeA0ZKzrT5CiOU3OJ+JlNzwDqpNU= github.com/MakeNowJust/heredoc v1.0.0 h1:cXCdzVdstXyiTqTvfqk9SDHpKNjxuom+DOlyEeQ4pzQ= github.com/MakeNowJust/heredoc v1.0.0/go.mod h1:mG5amYoWBHf8vpLOuehzbGGw0EHxpZZ6lCpQ4fNJ8LE= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= -github.com/Masterminds/semver/v3 v3.2.0/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= -github.com/Masterminds/semver/v3 v3.2.1 h1:RN9w6+7QoMeJVGyfmbcgs28Br8cvmnucEXnY0rYXWg0= -github.com/Masterminds/semver/v3 v3.2.1/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= -github.com/Masterminds/sprig/v3 v3.2.3 h1:eL2fZNezLomi0uOLqjQoN6BfsDD+fyLtgbJMAj9n6YA= -github.com/Masterminds/sprig/v3 v3.2.3/go.mod h1:rXcFaZ2zZbLRJv/xSysmlgIM1u11eBaRMhvYXJNkGuM= +github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0= +github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= +github.com/Masterminds/sprig/v3 v3.3.0 h1:mQh0Yrg1XPo6vjYXgtf5OtijNAKJRNcTdOOGZe3tPhs= +github.com/Masterminds/sprig/v3 v3.3.0/go.mod h1:Zy1iXRYNqNLUolqCpL4uhk6SHUMAOSCzdgBfDb35Lz0= github.com/Masterminds/squirrel v1.5.4 h1:uUcX/aBc8O7Fg9kaISIUsHXdKuqehiXAMQTYX8afzqM= github.com/Masterminds/squirrel v1.5.4/go.mod h1:NNaOrjSoIDfDA40n7sr2tPNZRfjzjA400rg+riTZj10= -github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= -github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= -github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= -github.com/Microsoft/hcsshim v0.11.4 h1:68vKo2VN8DE9AdN4tnkWnmdhqdbpUFM8OF3Airm7fz8= -github.com/Microsoft/hcsshim v0.11.4/go.mod h1:smjE4dvqPX9Zldna+t5FG3rnoHhaB7QYxPRqGcpAD9w= -github.com/Microsoft/hcsshim v0.12.5 h1:bpTInLlDy/nDRWFVcefDZZ1+U8tS+rz3MxjKgu9boo0= -github.com/Microsoft/hcsshim v0.12.5/go.mod h1:tIUGego4G1EN5Hb6KC90aDYiUI2dqLSTTOCjVNpOgZ8= -github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d h1:UrqY+r/OJnIp5u0s1SbQ8dVfLCZJsnvazdBP5hS4iRs= -github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= -github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= github.com/bshuster-repo/logrus-logstash-hook v1.0.0 h1:e+C0SB5R1pu//O4MQ3f9cFuPGoOVeF2fE4Og9otCc70= github.com/bshuster-repo/logrus-logstash-hook v1.0.0/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk= -github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd h1:rFt+Y/IK1aEZkEHchZRSq9OQbsSzIT/OrI8YFFmRIng= -github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8= -github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b h1:otBG+dV+YK+Soembjv71DPz3uX/V/6MMlSyD9JBQ6kQ= -github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50= -github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0 h1:nvj0OLI3YqYXer/kZD8Ri1aaunCxIEsOst1BVJswV0o= -github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= -github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= -github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= +github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/chai2010/gettext-go v1.0.2 h1:1Lwwip6Q2QGsAdl/ZKPCwTe9fe0CjlUbqj5bFNSjIRk= -github.com/chai2010/gettext-go v1.0.2/go.mod h1:y+wnP2cHYaVj19NZhYKAwEMH2CI1gNHeQQ+5AjwawxA= github.com/chai2010/gettext-go v1.0.3 h1:9liNh8t+u26xl5ddmWLmsOsdNLwkdRTg5AG+JnTiM80= github.com/chai2010/gettext-go v1.0.3/go.mod h1:y+wnP2cHYaVj19NZhYKAwEMH2CI1gNHeQQ+5AjwawxA= -github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= -github.com/containerd/cgroups v1.1.0/go.mod h1:6ppBcbh/NOOUU+dMKrykgaBnK9lCIBxHqJDGwsa1mIw= -github.com/containerd/containerd v1.7.12 h1:+KQsnv4VnzyxWcfO9mlxxELaoztsDEjOuCMPAuPqgU0= -github.com/containerd/containerd v1.7.12/go.mod h1:/5OMpE1p0ylxtEUGY8kuCYkDRzJm9NO1TFMWjUpdevk= -github.com/containerd/containerd v1.7.20 h1:Sl6jQYk3TRavaU83h66QMbI2Nqg9Jm6qzwX57Vsn1SQ= -github.com/containerd/containerd v1.7.20/go.mod h1:52GsS5CwquuqPuLncsXwG0t2CiUce+KsNHJZQJvAgR0= -github.com/containerd/continuity v0.4.2 h1:v3y/4Yz5jwnvqPKJJ+7Wf93fyWoCB3F5EclWG023MDM= -github.com/containerd/continuity v0.4.2/go.mod h1:F6PTNCKepoxEaXLQp3wDAjygEnImnZ/7o4JzpodfroQ= -github.com/containerd/errdefs v0.1.0 h1:m0wCRBiu1WJT/Fr+iOoQHMQS/eP5myQ8lCv4Dz5ZURM= -github.com/containerd/errdefs v0.1.0/go.mod h1:YgWiiHtLmSeBrvpw+UfPijzbLaB77mEG1WwJTDETIV0= +github.com/containerd/containerd v1.7.30 h1:/2vezDpLDVGGmkUXmlNPLCCNKHJ5BbC5tJB5JNzQhqE= +github.com/containerd/containerd v1.7.30/go.mod h1:fek494vwJClULlTpExsmOyKCMUAbuVjlFsJQc4/j44M= +github.com/containerd/errdefs v0.3.0 h1:FSZgGOeK4yuT/+DnF07/Olde/q4KBoMsaamhXxIMDp4= +github.com/containerd/errdefs v0.3.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= github.com/containerd/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= +github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= -github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= -github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= -github.com/cyphar/filepath-securejoin v0.3.1 h1:1V7cHiaW+C+39wEfpH6XlLBQo3j/PciWFrgfCLS8XrE= -github.com/cyphar/filepath-securejoin v0.3.1/go.mod h1:F7i41x/9cBF7lzCrVsYs9fuzwRZm4NQsGTBdpp6mETc= +github.com/cyphar/filepath-securejoin v0.6.1 h1:5CeZ1jPXEiYt3+Z6zqprSAgSWiggmpVyciv8syjIpVE= +github.com/cyphar/filepath-securejoin v0.6.1/go.mod h1:A8hd4EnAeyujCJRrICiOWqjS1AX0a9kM5XL+NwKoYSc= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/distribution/distribution/v3 v3.0.0-20221208165359-362910506bc2 h1:aBfCb7iqHmDEIp6fBvC/hQUddQfg+3qdYjwzaiP9Hnc= -github.com/distribution/distribution/v3 v3.0.0-20221208165359-362910506bc2/go.mod h1:WHNsWjnIn2V1LYOrME7e8KxSeKunYHsxEm4am0BUtcI= -github.com/distribution/distribution/v3 v3.0.0-beta.1 h1:X+ELTxPuZ1Xe5MsD3kp2wfGUhc8I+MPfRis8dZ818Ic= -github.com/distribution/reference v0.5.0 h1:/FUIFXtfc/x2gpa5/VGfiGLuOIdYa1t65IKK2OFGvA0= -github.com/distribution/reference v0.5.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= +github.com/distribution/distribution/v3 v3.0.0 h1:q4R8wemdRQDClzoNNStftB2ZAfqOiN6UX90KJc4HjyM= +github.com/distribution/distribution/v3 v3.0.0/go.mod h1:tRNuFoZsUdyRVegq8xGNeds4KLjwLCRin/tTo6i1DhU= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/docker/cli v25.0.1+incompatible h1:mFpqnrS6Hsm3v1k7Wa/BO23oz0k121MTbTO1lpcGSkU= -github.com/docker/cli v25.0.1+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/cli v27.1.1+incompatible h1:goaZxOqs4QKxznZjjBWKONQci/MywhtRv2oNn0GkeZE= -github.com/docker/cli v27.1.1+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk= -github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v25.0.5+incompatible h1:UmQydMduGkrD5nQde1mecF/YnSbTOaPeFIeP5C4W+DE= -github.com/docker/docker v25.0.5+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v27.1.1+incompatible h1:hO/M4MtV36kzKldqnA37IWhebRA+LnqqcqDja6kVaKY= -github.com/docker/docker v27.1.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker-credential-helpers v0.8.0 h1:YQFtbBQb4VrpoPxhFuzEBPQ9E16qz5SpHLS+uswaCp8= -github.com/docker/docker-credential-helpers v0.8.0/go.mod h1:UGFXcuoQ5TxPiB54nHOZ32AWRqQdECoh/Mg0AlEYb40= +github.com/dlclark/regexp2 v1.11.0 h1:G/nrcoOa7ZXlpoa/91N3X7mM3r8eIlMBBJZvsz/mxKI= +github.com/dlclark/regexp2 v1.11.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= github.com/docker/docker-credential-helpers v0.8.2 h1:bX3YxiGzFP5sOXWc3bTPEXdEaZSeVMrFgOr3T+zrFAo= github.com/docker/docker-credential-helpers v0.8.2/go.mod h1:P3ci7E3lwkZg6XiHdRKft1KckHiO9a2rNtyFbZ/ry9M= -github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= -github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c h1:+pKlWGMw7gf6bQ+oDZB4KHQFypsfjYlq/C4rfL7D3g8= github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= github.com/docker/go-metrics v0.0.1 h1:AgB/0SvBxihN0X8OR4SjsblXkbMvalQ8cjmtKQ2rQV8= github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw= -github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1 h1:ZClxb8laGDf5arXfYcAtECDFgAgHklGI8CxgjHnXKJ4= -github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= -github.com/emicklei/go-restful/v3 v3.11.1 h1:S+9bSbua1z3FgCnV0KKOSSZ3mDthb5NyEPL5gEpCvyk= -github.com/emicklei/go-restful/v3 v3.11.1/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= -github.com/emicklei/go-restful/v3 v3.12.1 h1:PJMDIM/ak7btuL8Ex0iYET9hxM3CI2sjZtzpL63nKAU= -github.com/emicklei/go-restful/v3 v3.12.1/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= -github.com/evanphx/json-patch v5.7.0+incompatible h1:vgGkfT/9f8zE6tvSCe74nfpAVDQ2tG6yudJd8LBksgI= -github.com/evanphx/json-patch v5.7.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch v5.9.0+incompatible h1:fBXyNpNMuTTDdquAq/uisOr2lShz4oaXpDTX2bLe7ls= -github.com/evanphx/json-patch v5.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/emicklei/go-restful/v3 v3.12.2 h1:DhwDP0vY3k8ZzE0RunuJy8GhNpPL6zqLkDf9B/a0/xU= +github.com/emicklei/go-restful/v3 v3.12.2/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= +github.com/evanphx/json-patch v5.9.11+incompatible h1:ixHHqfcGvxhWkniF1tWxBHA0yb4Z+d1UQi45df52xW8= +github.com/evanphx/json-patch v5.9.11+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f h1:Wl78ApPPB2Wvf/TIe2xdyJxTlb6obmF18d8QdkxNDu4= github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f/go.mod h1:OSYXu++VVOHnXeitef/D8n/6y4QV8uLHSFXX4NeXMGc= -github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= -github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4= github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/foxcpp/go-mockdns v1.0.0 h1:7jBqxd3WDWwi/6WhDvacvH1XsN3rOLXyHM1uhvIx6FI= -github.com/foxcpp/go-mockdns v1.0.0/go.mod h1:lgRN6+KxQBawyIghpnl5CezHFGS9VLzvtVlwxvzXTQ4= +github.com/foxcpp/go-mockdns v1.2.0 h1:omK3OrHRD1IWJz1FuFBCFquhXslXoF17OvBS6JPzZF0= +github.com/foxcpp/go-mockdns v1.2.0/go.mod h1:IhLeSFGed3mJIAXPH2aiRQB+kqz7oqu8ld2qVbOu7Wk= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/fxamacker/cbor/v2 v2.9.0 h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM= +github.com/fxamacker/cbor/v2 v2.9.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ= github.com/go-errors/errors v1.5.1 h1:ZwEMSLRCapFLflTpT7NKaAc7ukJ8ZPEjzlxt8rPN8bk= github.com/go-errors/errors v1.5.1/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-gorp/gorp/v3 v3.1.0 h1:ItKF/Vbuj31dmV4jxA1qblpSwkl9g1typ24xoe70IGs= github.com/go-gorp/gorp/v3 v3.1.0/go.mod h1:dLEjIyyRNiXvNZ8PSmzpt1GsWAUK8kjVhEpjH8TixEw= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= -github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= -github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= -github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/go-openapi/jsonpointer v0.20.2 h1:mQc3nmndL8ZBzStEo3JYF8wzmeWffDH4VbXz58sAx6Q= -github.com/go-openapi/jsonpointer v0.20.2/go.mod h1:bHen+N0u1KEO3YlmqOjTT9Adn1RfD91Ar825/PuiRVs= github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY= -github.com/go-openapi/jsonreference v0.20.4 h1:bKlDxQxQJgwpUSgOENiMPzCTBVuc7vTdXSSgNeAhojU= -github.com/go-openapi/jsonreference v0.20.4/go.mod h1:5pZJyJP2MnYCpoeoMAql78cCHauHj0V9Lhc506VOpw4= github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ= github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4= -github.com/go-openapi/swag v0.22.7 h1:JWrc1uc/P9cSomxfnsFSVWoE1FW6bNbrVPmpQYpCcR8= -github.com/go-openapi/swag v0.22.7/go.mod h1:Gl91UqO+btAM0plGGxHqJcQZ1ZTy6jbmridBTsDy8A0= github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE= github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= -github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE= -github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y= github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= -github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= +github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= +github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/gomodule/redigo v1.8.2 h1:H5XSIre1MB5NbPYFp+i1NBbb5qN1W8Y8YAQoAYbkm8k= -github.com/gomodule/redigo v1.8.2/go.mod h1:P9dn9mFrCBvWhGE1wpxx6fgq7BAeLBk+UUUzlpkBYO0= -github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= -github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= -github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= -github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= +github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/gnostic-models v0.7.0 h1:qwTtogB15McXDaNqTZdzPJRHvaVJlAl+HVQnLmJEJxo= +github.com/google/gnostic-models v0.7.0/go.mod h1:whL5G0m6dmc5cPxKc5bdKdEN3UjI7OUGxBlw57miDrQ= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= -github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJYCmNdQXq6neHJOYx3V6jnqNEec= -github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6 h1:k7nVchz72niMH6YLQNvHSdIE7iqsQxK1P41mySCvssg= -github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= -github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= -github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU= -github.com/google/uuid v1.5.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 h1:BHT72Gu3keYf3ZEu2J0b1vyeLSOYI8bm5wbJM/8yDe8= +github.com/google/pprof v0.0.0-20250403155104-27863c87afa6/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= -github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE= +github.com/gorilla/handlers v1.5.2/go.mod h1:dX+xVpaxdSw+q0Qek8SSsl3dfMk3jNddUkMzo0GtH0w= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= -github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY= -github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= -github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gosuri/uitable v0.0.4 h1:IG2xLKRvErL3uhY6e1BylFzG+aJiwQviDDTfOKeKTpY= github.com/gosuri/uitable v0.0.4/go.mod h1:tKR86bXuXPZazfOTG1FIzvjIdXzd0mo4Vtn16vt0PJo= github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 h1:+ngKgrYPPJrOjhax5N+uePQ0Fh1Z7PheYoUI/0nzkPA= github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3/go.mod h1:ndYquD05frm2vACXE1nsccT4oJzjhw2arTS2cpUD1PI= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= -github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= -github.com/huandu/xstrings v1.3.3/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= -github.com/huandu/xstrings v1.4.0 h1:D17IlohoQq4UcpqD7fDk80P7l+lwAmlFaBHgOipl2FU= -github.com/huandu/xstrings v1.4.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= +github.com/hashicorp/golang-lru/arc/v2 v2.0.5 h1:l2zaLDubNhW4XO3LnliVj0GXO3+/CGNJAg1dcN2Fpfw= +github.com/hashicorp/golang-lru/arc/v2 v2.0.5/go.mod h1:ny6zBSQZi2JxIeYcv7kt2sH2PXJtirBN7RDhRpxPkxU= +github.com/hashicorp/golang-lru/v2 v2.0.5 h1:wW7h1TG88eUIJ2i69gaE3uNVtEPIagzhGvHgwfx2Vm4= +github.com/hashicorp/golang-lru/v2 v2.0.5/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/huandu/xstrings v1.5.0 h1:2ag3IFq9ZDANvthTwTiqSSZLjDc+BedvHPAp5tJy2TI= github.com/huandu/xstrings v1.5.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= -github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4= -github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/jmoiron/sqlx v1.3.5 h1:vFFPA71p1o5gAeqtEAwLU4dnX2napprKtHr7PYIcN3g= -github.com/jmoiron/sqlx v1.3.5/go.mod h1:nRVWtLre0KfCLJvgxzCsLVMogSvQ1zNJtpYr2Ccp0mQ= github.com/jmoiron/sqlx v1.4.0 h1:1PLqN7S1UYp5t4SrVVnt4nUVNemrDAtxlulVe+Qgm3o= github.com/jmoiron/sqlx v1.4.0/go.mod h1:ZrZ7UsYB/weZdl2Bxg6jCRO9c3YHl8r3ahlKmRT4JLY= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.17.4 h1:Ej5ixsIri7BrIjBkRZLTo6ghwrEtHFk7ijlczPW4fZ4= -github.com/klauspost/compress v1.17.4/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= -github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= -github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= +github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -264,7 +155,6 @@ github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 h1:SOEGU9fKiNWd/HOJuq github.com/lann/builder v0.0.0-20180802200727-47ae307949d0/go.mod h1:dXGbAdH5GtBTC4WfIxhKZfyBF/HBFgRZSWwZ9g/He9o= github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 h1:P6pPBnrTSX3DEVR4fDembhRWSsG5rVo6hYhAB/ADZrk= github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0/go.mod h1:vmVJ0l/dxyfGW6FmdpVm2joNMFikkuWg0EoCKLGUMNw= -github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de h1:9TO3cAIGXtEhnIaL+V+BEER86oLrvS+kWobKpbJuye0= @@ -276,388 +166,234 @@ github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovk github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= -github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= -github.com/mattn/go-sqlite3 v1.14.15 h1:vfoHhTN1af61xCRSWzFIWzx2YskyMTwHLrExkBOjvxI= -github.com/mattn/go-sqlite3 v1.14.15/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU= github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= -github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg= -github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k= -github.com/miekg/dns v1.1.25 h1:dFwPR6SfLtrSwgDcIq2bcU/gVutB4sNApq2HBdqcakg= -github.com/miekg/dns v1.1.25/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= -github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= +github.com/miekg/dns v1.1.57 h1:Jzi7ApEIzwEPLHWRcafCN9LZSBbqQpxjt/wpgvg7wcM= +github.com/miekg/dns v1.1.57/go.mod h1:uqRjCRUuEAA6qsOiJvDd+CFo/vW+y5WR6SNmHE55hZk= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= -github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= -github.com/mittwald/go-helm-client v0.12.10 h1:NvDXzBM0enPtrAHirZQ0D9Zx80yp2cGWcR19i0CleZY= -github.com/mittwald/go-helm-client v0.12.10/go.mod h1:HA3eMOaUhqa4EXUfj94f6L0v4aUEKHuVV977hVl1KWU= -github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg= -github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= -github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8= -github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= -github.com/moby/spdystream v0.5.0 h1:7r0J1Si3QO/kjRitvSLVVFUjxMEb/YLj6S9FF62JBCU= -github.com/moby/spdystream v0.5.0/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI= -github.com/moby/sys/mountinfo v0.6.2 h1:BzJjoreD5BMFNmD9Rus6gdd1pLuecOFPt8wC+Vygl78= -github.com/moby/sys/mountinfo v0.6.2/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI= -github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0= -github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= +github.com/mittwald/go-helm-client v0.12.19 h1:GzwISuYemkgISegXfYzY3i6blRZzfNpp2G5+tBUyzp4= +github.com/mittwald/go-helm-client v0.12.19/go.mod h1:mlTMyzGOua5rXH4+kFTU/YsE9xxqvwkEW1c5ukM8Cj4= +github.com/moby/term v0.5.2 h1:6qk3FJAFDs6i/q3W/pQ97SX192qKfZgGjCQqfCJkgzQ= +github.com/moby/term v0.5.2/go.mod h1:d3djjFCrjnB+fl8NJux+EJzu0msscUP+f8it8hPkFLc= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee h1:W5t00kpgFdJifH4BDsTlE89Zl93FEloxaWZfGcifgq8= +github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 h1:n6/2gBQ3RWajuToeY6ZtZTIKv2v7ThUy5KKusIT0yc0= github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= -github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= -github.com/onsi/ginkgo/v2 v2.15.0 h1:79HwNRBAZHOEwrczrgSOPy+eFTTlIGELKy5as+ClttY= -github.com/onsi/ginkgo/v2 v2.15.0/go.mod h1:HlxMHtYF57y6Dpf+mc5529KKmSq9h2FpCF+/ZkwUxKM= -github.com/onsi/ginkgo/v2 v2.19.0 h1:9Cnnf7UHo57Hy3k6/m5k3dRfGTMXGvxhHFvkDTCTpvA= -github.com/onsi/gomega v1.31.0 h1:54UJxxj6cPInHS3a35wm6BK/F9nHYueZ1NVujHDrnXE= -github.com/onsi/gomega v1.31.0/go.mod h1:DW9aCi7U6Yi40wNVAvT6kzFnEVEI5n3DloYBiKiT6zk= -github.com/onsi/gomega v1.33.1 h1:dsYjIxxSR755MDmKVsaFQTE22ChNBcuuTWgkUDSubOk= +github.com/onsi/ginkgo/v2 v2.27.2 h1:LzwLj0b89qtIy6SSASkzlNvX6WktqurSHwkk2ipF/Ns= +github.com/onsi/ginkgo/v2 v2.27.2/go.mod h1:ArE1D/XhNXBXCBkKOLkbsb2c81dQHCRcF5zwn/ykDRo= +github.com/onsi/gomega v1.38.2 h1:eZCjf2xjZAqe+LeWvKb5weQ+NcPwX84kqJ0cZNxok2A= +github.com/onsi/gomega v1.38.2/go.mod h1:W2MJcYxRGV63b418Ai34Ud0hEdTVXq9NW9+Sx6uXf3k= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.1.0-rc6 h1:XDqvyKsJEbRtATzkgItUqBA7QHk58yxX1Ov9HERHNqU= -github.com/opencontainers/image-spec v1.1.0-rc6/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM= -github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= -github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM= +github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040= +github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M= github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 h1:Ii+DKncOVM8Cu1Hc+ETb5K+23HdAMvESYE3ZJ5b5cMI= github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/poy/onpar v1.1.2 h1:QaNrNiZx0+Nar5dLgTVp5mXkyoVFIbepjyEoGSnhbAY= github.com/poy/onpar v1.1.2/go.mod h1:6X8FLNoxyr9kkmnlqpK6LSoiOtrO6MICtWwEuWkLjzg= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= -github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= -github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= -github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE= -github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= -github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= -github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= -github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= -github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= -github.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lneoxM= -github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY= -github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= -github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= -github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= -github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= -github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= -github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= +github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= +github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= +github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= +github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= +github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= +github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= +github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= +github.com/redis/go-redis/extra/rediscmd/v9 v9.0.5 h1:EaDatTxkdHG+U3Bk4EUr+DZ7fOGwTfezUiUJMaIcaho= +github.com/redis/go-redis/extra/rediscmd/v9 v9.0.5/go.mod h1:fyalQWdtzDBECAQFBJuQe5bzQ02jGd5Qcbgb97Flm7U= +github.com/redis/go-redis/extra/redisotel/v9 v9.0.5 h1:EfpWLLCyXw8PSM2/XNJLjI3Pb27yVE+gIAfeqp8LUCc= +github.com/redis/go-redis/extra/redisotel/v9 v9.0.5/go.mod h1:WZjPDy7VNzn77AAfnAfVjZNvfJTYfPetfZk5yoSTLaQ= +github.com/redis/go-redis/v9 v9.7.3 h1:YpPyAayJV+XErNsatSElgRZZVCwXX9QzkKYNvO7x0wM= +github.com/redis/go-redis/v9 v9.7.3/go.mod h1:bGUrSggJ9X9GUmZpZNEOQKaANxSGgOEBRltRTZHSvrA= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= -github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= -github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= -github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= -github.com/rubenv/sql-migrate v1.6.0 h1:IZpcTlAx/VKXphWEpwWJ7BaMq05tYtE80zYz+8a5Il8= -github.com/rubenv/sql-migrate v1.6.0/go.mod h1:m3ilnKP7sNb4eYkLsp6cGdPOl4OBcXM6rcbzU+Oqc5k= -github.com/rubenv/sql-migrate v1.7.0 h1:HtQq1xyTN2ISmQDggnh0c9U3JlP8apWh8YO2jzlXpTI= -github.com/rubenv/sql-migrate v1.7.0/go.mod h1:S4wtDEG1CKn+0ShpTtzWhFpHHI5PvCUtiGI+C+Z2THE= -github.com/russross/blackfriday v1.6.0 h1:KqfZb0pUVN2lYqZUYRddxF4OR8ZMURnJIG5Y3VRLtww= -github.com/russross/blackfriday v1.6.0/go.mod h1:ti0ldHuxg49ri4ksnFxlkCfN+hvslNlmVHqNRXXJNAY= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= +github.com/rubenv/sql-migrate v1.8.1 h1:EPNwCvjAowHI3TnZ+4fQu3a915OpnQoPAjTXCGOy2U0= +github.com/rubenv/sql-migrate v1.8.1/go.mod h1:BTIKBORjzyxZDS6dzoiw6eAFYJ1iNlGAtjn4LGeVjS8= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= -github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= +github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 h1:KRzFb2m7YtdldCEkzs6KqmJw4nqEVZGK7IN2kJkjTuQ= +github.com/santhosh-tekuri/jsonschema/v6 v6.0.2/go.mod h1:JXeL+ps8p7/KNMjDQk3TCwPpBy0wYklyWTfbkIzdIFU= github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ= -github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= -github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5gKV8= -github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= +github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k= github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= -github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= -github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= -github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= -github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= -github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/cast v1.7.0 h1:ntdiHjuueXFgm5nzDRdOS4yfT43P5Fnud6DH50rz/7w= +github.com/spf13/cast v1.7.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= +github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= +github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= +github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= +github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= -github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo= -github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= -github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= -github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= -github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= -github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= +github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/xlab/treeprint v1.2.0 h1:HzHnuAF1plUN2zGlAFHbSQP2qJ0ZAD3XF5XD7OesXRQ= github.com/xlab/treeprint v1.2.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43 h1:+lm10QQTNSBd8DVTNGHx7o/IKu9HYDvLMffDhbyLccI= -github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs= -github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50 h1:hlE8//ciYMztlGpl/VA+Zm1AcTPHYkHJPbHqE6WJUXE= -github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA= -github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f h1:ERexzlUfuTvpE74urLSbIQW0Z/6hF9t8U4NsJLaioAY= -github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg= -go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= -go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 h1:aFJWCqJMNjENlcleuuOkGAPH82y0yULBScfXcIEdS24= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1/go.mod h1:sEGXWArGqc3tVa+ekntsN65DmVbVeW+7lTKTjZF3/Fo= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 h1:4K4tsIXefpVJtvA/8srF4V4y0akAoPHkIslgAkjixJA= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0/go.mod h1:jjdQuTGVsXV4vSs+CJ2qYDeDPf9yIJV23qlIzBm73Vg= -go.opentelemetry.io/otel v1.21.0 h1:hzLeKBZEL7Okw2mGzZ0cc4k/A7Fta0uoPgaJCr8fsFc= -go.opentelemetry.io/otel v1.21.0/go.mod h1:QZzNPQPm1zLX4gZK4cMi+71eaorMSGT3A4znnUvNNEo= -go.opentelemetry.io/otel v1.28.0 h1:/SqNcYk+idO0CxKEUOtKQClMK/MimZihKYMruSMViUo= -go.opentelemetry.io/otel v1.28.0/go.mod h1:q68ijF8Fc8CnMHKyzqL6akLO46ePnjkgfIMIjUIX9z4= -go.opentelemetry.io/otel/metric v1.21.0 h1:tlYWfeo+Bocx5kLEloTjbcDwBuELRrIFxwdQ36PlJu4= -go.opentelemetry.io/otel/metric v1.21.0/go.mod h1:o1p3CA8nNHW8j5yuQLdc1eeqEaPfzug24uvsyIEJRWM= -go.opentelemetry.io/otel/metric v1.28.0 h1:f0HGvSl1KRAU1DLgLGFjrwVyismPlnuU6JD6bOeuA5Q= -go.opentelemetry.io/otel/metric v1.28.0/go.mod h1:Fb1eVBFZmLVTMb6PPohq3TO9IIhUisDsbJoL/+uQW4s= -go.opentelemetry.io/otel/trace v1.21.0 h1:WD9i5gzvoUPuXIXH24ZNBudiarZDKuekPqi/E8fpfLc= -go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ= -go.opentelemetry.io/otel/trace v1.28.0 h1:GhQ9cUuQGmNDd5BTCP2dAvv75RdMxEfTmYejp+lkx9g= -go.opentelemetry.io/otel/trace v1.28.0/go.mod h1:jPyXzNPg6da9+38HEwElrQiHlVMTnVfM3/yv2OlIHaI= -go.starlark.net v0.0.0-20231121155337-90ade8b19d09 h1:hzy3LFnSN8kuQK8h9tHl4ndF6UruMj47OqwqsS+/Ai4= -go.starlark.net v0.0.0-20231121155337-90ade8b19d09/go.mod h1:LcLNIzVOMp4oV+uusnpk+VU+SzXaJakUuBjoCSWH5dM= -go.starlark.net v0.0.0-20240725214946-42030a7cedce h1:YyGqCjZtGZJ+mRPaenEiB87afEO2MFRzLiJNZ0Z0bPw= -go.starlark.net v0.0.0-20240725214946-42030a7cedce/go.mod h1:YKMCv9b1WrfWmeqdV5MAuEHWsu5iC+fe6kYl2sQjdI8= +go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= +go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/contrib/bridges/prometheus v0.57.0 h1:UW0+QyeyBVhn+COBec3nGhfnFe5lwB0ic1JBVjzhk0w= +go.opentelemetry.io/contrib/bridges/prometheus v0.57.0/go.mod h1:ppciCHRLsyCio54qbzQv0E4Jyth/fLWDTJYfvWpcSVk= +go.opentelemetry.io/contrib/exporters/autoexport v0.57.0 h1:jmTVJ86dP60C01K3slFQa2NQ/Aoi7zA+wy7vMOKD9H4= +go.opentelemetry.io/contrib/exporters/autoexport v0.57.0/go.mod h1:EJBheUMttD/lABFyLXhce47Wr6DPWYReCzaZiXadH7g= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 h1:F7Jx+6hwnZ41NSFTO5q4LYDtJRXBf2PD0rNBkeB/lus= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0/go.mod h1:UHB22Z8QsdRDrnAtX4PntOl36ajSxcdUMt1sF7Y6E7Q= +go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= +go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.8.0 h1:WzNab7hOOLzdDF/EoWCt4glhrbMPVMOO5JYTmpz36Ls= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.8.0/go.mod h1:hKvJwTzJdp90Vh7p6q/9PAOd55dI6WA6sWj62a/JvSs= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.8.0 h1:S+LdBGiQXtJdowoJoQPEtI52syEP/JYBUpjO49EQhV8= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.8.0/go.mod h1:5KXybFvPGds3QinJWQT7pmXf+TN5YIa7CNYObWRkj50= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.32.0 h1:j7ZSD+5yn+lo3sGV69nW04rRR0jhYnBwjuX3r0HvnK0= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.32.0/go.mod h1:WXbYJTUaZXAbYd8lbgGuvih0yuCfOFC5RJoYnoLcGz8= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.32.0 h1:t/Qur3vKSkUCcDVaSumWF2PKHt85pc7fRvFuoVT8qFU= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.32.0/go.mod h1:Rl61tySSdcOJWoEgYZVtmnKdA0GeKrSqkHC1t+91CH8= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0 h1:OeNbIYk/2C15ckl7glBlOBp5+WlYsOElzTNmiPW/x60= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0/go.mod h1:7Bept48yIeqxP2OZ9/AqIpYS94h2or0aB4FypJTc8ZM= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 h1:tgJ0uaNS4c98WRNUEx5U3aDlrDOI5Rs+1Vifcw4DJ8U= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0/go.mod h1:U7HYyW0zt/a9x5J1Kjs+r1f/d4ZHnYFclhYY2+YbeoE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.32.0 h1:cMyu9O88joYEaI47CnQkxO1XZdpoTF9fEnW2duIddhw= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.32.0/go.mod h1:6Am3rn7P9TVVeXYG+wtcGE7IE1tsQ+bP3AuWcKt/gOI= +go.opentelemetry.io/otel/exporters/prometheus v0.54.0 h1:rFwzp68QMgtzu9PgP3jm9XaMICI6TsofWWPcBDKwlsU= +go.opentelemetry.io/otel/exporters/prometheus v0.54.0/go.mod h1:QyjcV9qDP6VeK5qPyKETvNjmaaEc7+gqjh4SS0ZYzDU= +go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.8.0 h1:CHXNXwfKWfzS65yrlB2PVds1IBZcdsX8Vepy9of0iRU= +go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.8.0/go.mod h1:zKU4zUgKiaRxrdovSS2amdM5gOc59slmo/zJwGX+YBg= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.32.0 h1:SZmDnHcgp3zwlPBS2JX2urGYe/jBKEIT6ZedHRUyCz8= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.32.0/go.mod h1:fdWW0HtZJ7+jNpTKUR0GpMEDP69nR8YBJQxNiVCE3jk= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.32.0 h1:cC2yDI3IQd0Udsux7Qmq8ToKAx1XCilTQECZ0KDZyTw= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.32.0/go.mod h1:2PD5Ex6z8CFzDbTdOlwyNIUywRr1DN0ospafJM1wJ+s= +go.opentelemetry.io/otel/log v0.8.0 h1:egZ8vV5atrUWUbnSsHn6vB8R21G2wrKqNiDt3iWertk= +go.opentelemetry.io/otel/log v0.8.0/go.mod h1:M9qvDdUTRCopJcGRKg57+JSQ9LgLBrwwfC32epk5NX8= +go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= +go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= +go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= +go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= +go.opentelemetry.io/otel/sdk/log v0.8.0 h1:zg7GUYXqxk1jnGF/dTdLPrK06xJdrXgqgFLnI4Crxvs= +go.opentelemetry.io/otel/sdk/log v0.8.0/go.mod h1:50iXr0UVwQrYS45KbruFrEt4LvAdCaWWgIrsN3ZQggo= +go.opentelemetry.io/otel/sdk/metric v1.36.0 h1:r0ntwwGosWGaa0CrSt8cuNuTcccMXERFwHX4dThiPis= +go.opentelemetry.io/otel/sdk/metric v1.36.0/go.mod h1:qTNOhFDfKRwX0yXOqJYegL5WRaW376QbB7P4Pb0qva4= +go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= +go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= +go.opentelemetry.io/proto/otlp v1.5.0 h1:xJvq7gMzB31/d406fB8U5CBdyQGw4P399D1aQWU/3i4= +go.opentelemetry.io/proto/otlp v1.5.0/go.mod h1:keN8WnHxOy8PG0rQZjJJ5A2ebUoafqWp0eVQ4yIXvJ4= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= -golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= -golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= -golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= -golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= -golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc h1:ao2WRsKSzW6KuUY9IWPwWahcHCgR0s52IfwutMfEbdM= -golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI= -golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= -golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8= -golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.19.0 h1:fEdghXQSo20giMthA7cd28ZC+jts4amQ3YMXiP5oMQ8= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= -golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= -golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= -golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= -golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= -golang.org/x/oauth2 v0.15.0 h1:s8pnnxNVzjWyrvYdFUQq5llS1PX2zhPXmccZv99h7uQ= -golang.org/x/oauth2 v0.15.0/go.mod h1:q48ptWNTY5XWf+JNten23lcvHpLJ0ZSxF5ttTHKVCAM= -golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= -golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= -golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= -golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= +go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= +go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= +go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= +golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU= +golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0= +golang.org/x/mod v0.31.0 h1:HaW9xtz0+kOcWKwli0ZXy79Ix+UW/vOfmWI5QVd2tgI= +golang.org/x/mod v0.31.0/go.mod h1:43JraMp9cGx1Rx3AqioxrbrhNsLl2l/iNAvuBkrezpg= +golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= +golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= +golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= +golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= +golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= +golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= -golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= -golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= -golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= -golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= -golang.org/x/term v0.22.0 h1:BbsgPEJULsl2fV/AT3v15Mjva5yXKQDyKf+TbDz7QJk= -golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= -golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= -golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= -golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= -golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ= -golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= -google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917 h1:6G8oQ016D88m1xAKljMlBOOGWDZkes4kMhgGFlf8WcQ= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917/go.mod h1:xtjpI3tXFPP051KaWnhvxkiubL/6dJ18vLVf7q2pTOU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf h1:liao9UHurZLtiEwBgT9LMOnKYsHze6eA6w1KQCMVN2Q= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= -google.golang.org/grpc v1.60.1 h1:26+wFr+cNqSGFcOXcabYC0lUVJVRa2Sb2ortSK7VrEU= -google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM= -google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc= -google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= -google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= +golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/term v0.39.0 h1:RclSuaJf32jOqZz74CkPA9qFuVTX7vhLlpfj/IGWlqY= +golang.org/x/term v0.39.0/go.mod h1:yxzUCTP/U+FzoxfdKmLaA0RV1WgE0VY7hXBwKtY/4ww= +golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= +golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= +golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= +golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= +golang.org/x/tools v0.40.0 h1:yLkxfA+Qnul4cs9QA3KnlFu0lVmd8JJfoq+E41uSutA= +golang.org/x/tools v0.40.0/go.mod h1:Ik/tzLRlbscWpqqMRjyWYDisX8bG13FrdXp3o4Sr9lc= +google.golang.org/genproto v0.0.0-20231211222908-989df2bf70f3 h1:1hfbdAfFbkmpg41000wDVqr7jUpK/Yo+LPnIxxGzmkg= +google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb h1:p31xT4yrYrSM/G4Sn2+TNUkVhFCbG9y8itM2S6Th950= +google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:jbe3Bkdp+Dh2IrslsFCklNhweNTBgSYanP1UXhJDhKg= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a h1:v2PbRU4K3llS09c7zodFpNePeamkAwG3mPrAery9VeE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/grpc v1.72.2 h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8= +google.golang.org/grpc v1.72.2/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= +google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/evanphx/json-patch.v4 v4.12.0 h1:n6jtcsulIzXPJaxegRbvFNNrZDjbij7ny3gmSPG+6V4= -gopkg.in/evanphx/json-patch.v4 v4.12.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M= -gopkg.in/evanphx/json-patch.v5 v5.7.0 h1:dGKGylPlZ/jus2g1YqhhyzfH0gPy2R8/MYUpW/OslTY= -gopkg.in/evanphx/json-patch.v5 v5.7.0/go.mod h1:/kvTRh1TVm5wuM6OkHxqXtE/1nUZZpihg29RtuIyfvk= -gopkg.in/evanphx/json-patch.v5 v5.9.0 h1:hx1VU2SGj4F8r9b8GUwJLdc8DNO8sy79ZGui0G05GLo= -gopkg.in/evanphx/json-patch.v5 v5.9.0/go.mod h1:/kvTRh1TVm5wuM6OkHxqXtE/1nUZZpihg29RtuIyfvk= +gopkg.in/evanphx/json-patch.v4 v4.13.0 h1:czT3CmqEaQ1aanPc5SdlgQrrEIb8w/wwCvWWnfEbYzo= +gopkg.in/evanphx/json-patch.v4 v4.13.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o= -gotest.tools/v3 v3.4.0/go.mod h1:CtbdzLSsqVhDgMtKsx03ird5YTGB3ar27v0u/yKBW5g= -helm.sh/helm/v3 v3.15.3 h1:HcZDaVFe9uHa6hpsR54mJjYyRy4uz/pc6csg27nxFOc= -helm.sh/helm/v3 v3.15.3/go.mod h1:FzSIP8jDQaa6WAVg9F+OkKz7J0ZmAga4MABtTbsb9WQ= -k8s.io/api v0.30.2 h1:+ZhRj+28QT4UOH+BKznu4CBgPWgkXO7XAvMcMl0qKvI= -k8s.io/api v0.30.2/go.mod h1:ULg5g9JvOev2dG0u2hig4Z7tQ2hHIuS+m8MNZ+X6EmI= -k8s.io/api v0.30.3 h1:ImHwK9DCsPA9uoU3rVh4QHAHHK5dTSv1nxJUapx8hoQ= -k8s.io/api v0.30.3/go.mod h1:GPc8jlzoe5JG3pb0KJCSLX5oAFIW3/qNJITlDj8BH04= -k8s.io/apiextensions-apiserver v0.30.0 h1:jcZFKMqnICJfRxTgnC4E+Hpcq8UEhT8B2lhBcQ+6uAs= -k8s.io/apiextensions-apiserver v0.30.0/go.mod h1:N9ogQFGcrbWqAY9p2mUAL5mGxsLqwgtUce127VtRX5Y= -k8s.io/apiextensions-apiserver v0.30.3 h1:oChu5li2vsZHx2IvnGP3ah8Nj3KyqG3kRSaKmijhB9U= -k8s.io/apiextensions-apiserver v0.30.3/go.mod h1:uhXxYDkMAvl6CJw4lrDN4CPbONkF3+XL9cacCT44kV4= -k8s.io/apimachinery v0.30.2 h1:fEMcnBj6qkzzPGSVsAZtQThU62SmQ4ZymlXRC5yFSCg= -k8s.io/apimachinery v0.30.2/go.mod h1:iexa2somDaxdnj7bha06bhb43Zpa6eWH8N8dbqVjTUc= -k8s.io/apimachinery v0.30.3 h1:q1laaWCmrszyQuSQCfNB8cFgCuDAoPszKY4ucAjDwHc= -k8s.io/apimachinery v0.30.3/go.mod h1:iexa2somDaxdnj7bha06bhb43Zpa6eWH8N8dbqVjTUc= -k8s.io/apiserver v0.30.0 h1:QCec+U72tMQ+9tR6A0sMBB5Vh6ImCEkoKkTDRABWq6M= -k8s.io/apiserver v0.30.0/go.mod h1:smOIBq8t0MbKZi7O7SyIpjPsiKJ8qa+llcFCluKyqiY= -k8s.io/apiserver v0.30.3 h1:QZJndA9k2MjFqpnyYv/PH+9PE0SHhx3hBho4X0vE65g= -k8s.io/apiserver v0.30.3/go.mod h1:6Oa88y1CZqnzetd2JdepO0UXzQX4ZnOekx2/PtEjrOg= -k8s.io/cli-runtime v0.30.0 h1:0vn6/XhOvn1RJ2KJOC6IRR2CGqrpT6QQF4+8pYpWQ48= -k8s.io/cli-runtime v0.30.0/go.mod h1:vATpDMATVTMA79sZ0YUCzlMelf6rUjoBzlp+RnoM+cg= -k8s.io/cli-runtime v0.30.3 h1:aG69oRzJuP2Q4o8dm+f5WJIX4ZBEwrvdID0+MXyUY6k= -k8s.io/cli-runtime v0.30.3/go.mod h1:hwrrRdd9P84CXSKzhHxrOivAR9BRnkMt0OeP5mj7X30= -k8s.io/client-go v0.30.2 h1:sBIVJdojUNPDU/jObC+18tXWcTJVcwyqS9diGdWHk50= -k8s.io/client-go v0.30.2/go.mod h1:JglKSWULm9xlJLx4KCkfLLQ7XwtlbflV6uFFSHTMgVs= -k8s.io/client-go v0.30.3 h1:bHrJu3xQZNXIi8/MoxYtZBBWQQXwy16zqJwloXXfD3k= -k8s.io/client-go v0.30.3/go.mod h1:8d4pf8vYu665/kUbsxWAQ/JDBNWqfFeZnvFiVdmx89U= -k8s.io/component-base v0.30.0 h1:cj6bp38g0ainlfYtaOQuRELh5KSYjhKxM+io7AUIk4o= -k8s.io/component-base v0.30.0/go.mod h1:V9x/0ePFNaKeKYA3bOvIbrNoluTSG+fSJKjLdjOoeXQ= -k8s.io/component-base v0.30.3 h1:Ci0UqKWf4oiwy8hr1+E3dsnliKnkMLZMVbWzeorlk7s= -k8s.io/component-base v0.30.3/go.mod h1:C1SshT3rGPCuNtBs14RmVD2xW0EhRSeLvBh7AGk1quA= -k8s.io/klog/v2 v2.120.1 h1:QXU6cPEOIslTGvZaXvFWiP9VKyeet3sawzTOvdXb4Vw= -k8s.io/klog/v2 v2.120.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= +helm.sh/helm/v3 v3.20.0 h1:2M+0qQwnbI1a2CxN7dbmfsWHg/MloeaFMnZCY56as50= +helm.sh/helm/v3 v3.20.0/go.mod h1:rTavWa0lagZOxGfdhu4vgk1OjH2UYCnrDKE2PVC4N0o= +k8s.io/api v0.35.2 h1:tW7mWc2RpxW7HS4CoRXhtYHSzme1PN1UjGHJ1bdrtdw= +k8s.io/api v0.35.2/go.mod h1:7AJfqGoAZcwSFhOjcGM7WV05QxMMgUaChNfLTXDRE60= +k8s.io/apiextensions-apiserver v0.35.0 h1:3xHk2rTOdWXXJM+RDQZJvdx0yEOgC0FgQ1PlJatA5T4= +k8s.io/apiextensions-apiserver v0.35.0/go.mod h1:E1Ahk9SADaLQ4qtzYFkwUqusXTcaV2uw3l14aqpL2LU= +k8s.io/apimachinery v0.35.2 h1:NqsM/mmZA7sHW02JZ9RTtk3wInRgbVxL8MPfzSANAK8= +k8s.io/apimachinery v0.35.2/go.mod h1:jQCgFZFR1F4Ik7hvr2g84RTJSZegBc8yHgFWKn//hns= +k8s.io/apiserver v0.35.0 h1:CUGo5o+7hW9GcAEF3x3usT3fX4f9r8xmgQeCBDaOgX4= +k8s.io/apiserver v0.35.0/go.mod h1:QUy1U4+PrzbJaM3XGu2tQ7U9A4udRRo5cyxkFX0GEds= +k8s.io/cli-runtime v0.35.0 h1:PEJtYS/Zr4p20PfZSLCbY6YvaoLrfByd6THQzPworUE= +k8s.io/cli-runtime v0.35.0/go.mod h1:VBRvHzosVAoVdP3XwUQn1Oqkvaa8facnokNkD7jOTMY= +k8s.io/client-go v0.35.2 h1:YUfPefdGJA4aljDdayAXkc98DnPkIetMl4PrKX97W9o= +k8s.io/client-go v0.35.2/go.mod h1:4QqEwh4oQpeK8AaefZ0jwTFJw/9kIjdQi0jpKeYvz7g= +k8s.io/component-base v0.35.0 h1:+yBrOhzri2S1BVqyVSvcM3PtPyx5GUxCK2tinZz1G94= +k8s.io/component-base v0.35.0/go.mod h1:85SCX4UCa6SCFt6p3IKAPej7jSnF3L8EbfSyMZayJR0= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= -k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 h1:BZqlfIlq5YbRMFko6/PM7FjZpUb45WallggurYhKGag= -k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340/go.mod h1:yD4MZYeKMBwQKVht279WycxKyM84kkAx2DPrTXaeb98= -k8s.io/kube-openapi v0.0.0-20240730131305-7a9a4e85957e h1:OnKkExfhk4yxMqvBSPzUfhv3zQ96FWJ+UOZzLrAFyAo= -k8s.io/kube-openapi v0.0.0-20240730131305-7a9a4e85957e/go.mod h1:0CVn9SVo8PeW5/JgsBZZIFmmTk5noOM8WXf2e1tCihE= -k8s.io/kubectl v0.30.0 h1:xbPvzagbJ6RNYVMVuiHArC1grrV5vSmmIcSZuCdzRyk= -k8s.io/kubectl v0.30.0/go.mod h1:zgolRw2MQXLPwmic2l/+iHs239L49fhSeICuMhQQXTI= -k8s.io/kubectl v0.30.3 h1:YIBBvMdTW0xcDpmrOBzcpUVsn+zOgjMYIu7kAq+yqiI= -k8s.io/kubectl v0.30.3/go.mod h1:IcR0I9RN2+zzTRUa1BzZCm4oM0NLOawE6RzlDvd1Fpo= -k8s.io/utils v0.0.0-20240102154912-e7106e64919e h1:eQ/4ljkx21sObifjzXwlPKpdGLrCfRziVtos3ofG/sQ= -k8s.io/utils v0.0.0-20240102154912-e7106e64919e/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -k8s.io/utils v0.0.0-20240711033017-18e509b52bc8 h1:pUdcCO1Lk/tbT5ztQWOBi5HBgbBP1J8+AsQnQCKsi8A= -k8s.io/utils v0.0.0-20240711033017-18e509b52bc8/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -oras.land/oras-go v1.2.5 h1:XpYuAwAb0DfQsunIyMfeET92emK8km3W4yEzZvUbsTo= -oras.land/oras-go v1.2.5/go.mod h1:PuAwRShRZCsZb7g8Ar3jKKQR/2A/qN+pkYxIOd/FAoo= -oras.land/oras-go v1.2.6 h1:z8cmxQXBU8yZ4mkytWqXfo6tZcamPwjsuxYU81xJ8Lk= -oras.land/oras-go v1.2.6/go.mod h1:OVPc1PegSEe/K8YiLfosrlqlqTN9PUyFvOw5Y9gwrT8= -sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= -sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= -sigs.k8s.io/kustomize/api v0.16.0 h1:/zAR4FOQDCkgSDmVzV2uiFbuy9bhu3jEzthrHCuvm1g= -sigs.k8s.io/kustomize/api v0.16.0/go.mod h1:MnFZ7IP2YqVyVwMWoRxPtgl/5hpA+eCCrQR/866cm5c= -sigs.k8s.io/kustomize/api v0.17.3 h1:6GCuHSsxq7fN5yhF2XrC+AAr8gxQwhexgHflOAD/JJU= -sigs.k8s.io/kustomize/api v0.17.3/go.mod h1:TuDH4mdx7jTfK61SQ/j1QZM/QWR+5rmEiNjvYlhzFhc= -sigs.k8s.io/kustomize/kyaml v0.16.0 h1:6J33uKSoATlKZH16unr2XOhDI+otoe2sR3M8PDzW3K0= -sigs.k8s.io/kustomize/kyaml v0.16.0/go.mod h1:xOK/7i+vmE14N2FdFyugIshB8eF6ALpy7jI87Q2nRh4= -sigs.k8s.io/kustomize/kyaml v0.17.2 h1:+AzvoJUY0kq4QAhH/ydPHHMRLijtUKiyVyh7fOSshr0= -sigs.k8s.io/kustomize/kyaml v0.17.2/go.mod h1:9V0mCjIEYjlXuCdYsSXvyoy2BTsLESH7TlGV81S282U= -sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4= -sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08= -sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= -sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= +k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 h1:Y3gxNAuB0OBLImH611+UDZcmKS3g6CthxToOb37KgwE= +k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912/go.mod h1:kdmbQkyfwUagLfXIad1y2TdrjPFWp2Q89B3qkRwf/pQ= +k8s.io/kubectl v0.35.0 h1:cL/wJKHDe8E8+rP3G7avnymcMg6bH6JEcR5w5uo06wc= +k8s.io/kubectl v0.35.0/go.mod h1:VR5/TSkYyxZwrRwY5I5dDq6l5KXmiCb+9w8IKplk3Qo= +k8s.io/utils v0.0.0-20251002143259-bc988d571ff4 h1:SjGebBtkBqHFOli+05xYbK8YF1Dzkbzn+gDM4X9T4Ck= +k8s.io/utils v0.0.0-20251002143259-bc988d571ff4/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +oras.land/oras-go/v2 v2.6.0 h1:X4ELRsiGkrbeox69+9tzTu492FMUu7zJQW6eJU+I2oc= +oras.land/oras-go/v2 v2.6.0/go.mod h1:magiQDfG6H1O9APp+rOsvCPcW1GD2MM7vgnKY0Y+u1o= +sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 h1:IpInykpT6ceI+QxKBbEflcR5EXP7sU1kvOlxwZh5txg= +sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg= +sigs.k8s.io/kustomize/api v0.20.1 h1:iWP1Ydh3/lmldBnH/S5RXgT98vWYMaTUL1ADcr+Sv7I= +sigs.k8s.io/kustomize/api v0.20.1/go.mod h1:t6hUFxO+Ph0VxIk1sKp1WS0dOjbPCtLJ4p8aADLwqjM= +sigs.k8s.io/kustomize/kyaml v0.20.1 h1:PCMnA2mrVbRP3NIB6v9kYCAc38uvFLVs8j/CD567A78= +sigs.k8s.io/kustomize/kyaml v0.20.1/go.mod h1:0EmkQHRUsJxY8Ug9Niig1pUMSCGHxQ5RklbpV/Ri6po= +sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU= +sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY= +sigs.k8s.io/structured-merge-diff/v6 v6.3.0 h1:jTijUJbW353oVOd9oTlifJqOGEkUw2jB/fXCbTiQEco= +sigs.k8s.io/structured-merge-diff/v6 v6.3.0/go.mod h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE= +sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs= +sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4= diff --git a/gomod2nix.toml b/gomod2nix.toml index 175f49f0..f5f85273 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -1,432 +1,450 @@ schema = 3 [mod] - [mod."github.com/AdaLogics/go-fuzz-headers"] - version = "v0.0.0-20240716105424-66b64c4bb379" - hash = "sha256-qvbEQkQUcClO83L42GHWecnOAP4bIlLLtuwXowtp6mE=" - [mod."github.com/Azure/go-ansiterm"] - version = "v0.0.0-20230124172434-306776ec8161" - hash = "sha256-17hCoOE3HBv6cjpcukfBS6/ULgTuoUZ7RNbi5korH2M=" - [mod."github.com/BurntSushi/toml"] - version = "v1.4.0" - hash = "sha256-3cr8hfVA4th/AfveHDxigmj8Eiiae0ZBnxAgy+7RYO4=" - [mod."github.com/MakeNowJust/heredoc"] - version = "v1.0.0" - hash = "sha256-8hKERAVV1Pew84kc9GkW23dcO8uIUx/+tJQLi+oPwqE=" - [mod."github.com/Masterminds/goutils"] - version = "v1.1.1" - hash = "sha256-MEvA5e099GUllILa5EXxa6toQexU1sz6eDZt2tiqpCY=" - [mod."github.com/Masterminds/semver/v3"] - version = "v3.2.1" - hash = "sha256-VKHIquwriyOL8A0qgtmap/3cGEOpDokOLtPg1w4xjMA=" - [mod."github.com/Masterminds/sprig/v3"] - version = "v3.2.3" - hash = "sha256-1GLZic3WQIBZGyjvyHbfcZ/7EV7oNzNhkwEiiTpVfL4=" - [mod."github.com/Masterminds/squirrel"] - version = "v1.5.4" - hash = "sha256-7UGz8TLcBI9HjU7zPqj9Gjp9Av+43mu0YCBV1mRy34o=" - [mod."github.com/Microsoft/hcsshim"] - version = "v0.12.5" - hash = "sha256-0hI+fVtUji/XoDMffTmTU3jr1mCbKYMCubcSgBCuWIg=" - [mod."github.com/asaskevich/govalidator"] - version = "v0.0.0-20230301143203-a9d515a09cc2" - hash = "sha256-UCENzt1c1tFgsAzK2TNq5s2g0tQMQ5PxFaQKe8hTL/A=" - [mod."github.com/beorn7/perks"] - version = "v1.0.1" - hash = "sha256-h75GUqfwJKngCJQVE5Ao5wnO3cfKD9lSIteoLp/3xJ4=" - [mod."github.com/blang/semver/v4"] - version = "v4.0.0" - hash = "sha256-dJC22MjnfT5WqJ7x7Tc3Bvpw9tFnBn9HqfWFiM57JVc=" - [mod."github.com/cespare/xxhash/v2"] - version = "v2.3.0" - hash = "sha256-7hRlwSR+fos1kx4VZmJ/7snR7zHh8ZFKX+qqqqGcQpY=" - [mod."github.com/chai2010/gettext-go"] - version = "v1.0.3" - hash = "sha256-RtytBWIPUk33jEYc4hBYdgcDCgzHC1z9ld/sHO5vLTc=" - [mod."github.com/containerd/containerd"] - version = "v1.7.20" - hash = "sha256-EhvXaPXtoTYiYK/hfrHlGWABvHdlSjB9yC0CLzscbBg=" - [mod."github.com/containerd/errdefs"] - version = "v0.1.0" - hash = "sha256-RCfAGVYsQ7G5rYA2NqrP2vuMHhetA+HZV0OD89+wn8I=" - [mod."github.com/containerd/log"] - version = "v0.1.0" - hash = "sha256-vuE6Mie2gSxiN3jTKTZovjcbdBd1YEExb7IBe3GM+9s=" - [mod."github.com/containerd/platforms"] - version = "v0.2.1" - hash = "sha256-XQdg/tnn5uKNzUc/dMmoIS9wgarx7SxaqZ5uJ9ZglA0=" - [mod."github.com/cyphar/filepath-securejoin"] - version = "v0.3.1" - hash = "sha256-iA4Oqsoe58tYFY8KY6bjeuSko6cB2JivYa+Yi1xYGw0=" - [mod."github.com/davecgh/go-spew"] - version = "v1.1.2-0.20180830191138-d8f796af33cc" - hash = "sha256-fV9oI51xjHdOmEx6+dlq7Ku2Ag+m/bmbzPo6A4Y74qc=" - [mod."github.com/distribution/reference"] - version = "v0.6.0" - hash = "sha256-gr4tL+qz4jKyAtl8LINcxMSanztdt+pybj1T+2ulQv4=" - [mod."github.com/docker/cli"] - version = "v27.1.1+incompatible" - hash = "sha256-Sb+qN6LpG5iHtWvp3KxggBwsEbF8GoWVq+Ss5bf7sqE=" - [mod."github.com/docker/distribution"] - version = "v2.8.3+incompatible" - hash = "sha256-XhRURCGNpJC83QZTtgCxHHFL76HaxIxjt70HwUa847E=" - [mod."github.com/docker/docker"] - version = "v27.1.1+incompatible" - hash = "sha256-w+wyGRGE0BEl4mou8MLy8QWvPcwJfvgTslTFzSEOpaY=" - [mod."github.com/docker/docker-credential-helpers"] - version = "v0.8.2" - hash = "sha256-AmCyOKd6Xvz0BUZchGSJdbPolprne/pAmCr2UoXXRBE=" - [mod."github.com/docker/go-connections"] - version = "v0.5.0" - hash = "sha256-aGbMRrguh98DupIHgcpLkVUZpwycx1noQXbtTl5Sbms=" - [mod."github.com/docker/go-metrics"] - version = "v0.0.1" - hash = "sha256-6pXkJyKTTrVbaE1D3IQ0gUUp9LTUd5yfprxClhAKzqw=" - [mod."github.com/emicklei/go-restful/v3"] - version = "v3.12.1" - hash = "sha256-UscWmnbJq0UqOdtmyG5qVS70Qc28X9Q4PHk+muXyWiA=" - [mod."github.com/evanphx/json-patch"] - version = "v5.9.0+incompatible" - hash = "sha256-chyEWaRP+Sis9rV56og669CqS2KySmjU+nCkyRoUK4A=" - [mod."github.com/exponent-io/jsonpath"] - version = "v0.0.0-20210407135951-1de76d718b3f" - hash = "sha256-2wgJI2pvkaq2MoeUmLRaTBA8dIoEcwzKvw4qKJlhIec=" - [mod."github.com/fatih/color"] - version = "v1.17.0" - hash = "sha256-QsKMy3MsvjbYNcA9jP8w6c3wpmWDZ0079bybAEzmXR0=" - [mod."github.com/felixge/httpsnoop"] - version = "v1.0.4" - hash = "sha256-c1JKoRSndwwOyOxq9ddCe+8qn7mG9uRq2o/822x5O/c=" - [mod."github.com/go-errors/errors"] - version = "v1.5.1" - hash = "sha256-K/IEfka2mbBk6b0AbiMaxpvkY1pZgzhtT6knqoDovPk=" - [mod."github.com/go-gorp/gorp/v3"] - version = "v3.1.0" - hash = "sha256-z8AJoWp3fDJMNMYAi8kJdtzXDv8QyAd6bPYE58b2urs=" - [mod."github.com/go-logr/logr"] - version = "v1.4.2" - hash = "sha256-/W6qGilFlZNTb9Uq48xGZ4IbsVeSwJiAMLw4wiNYHLI=" - [mod."github.com/go-logr/stdr"] - version = "v1.2.2" - hash = "sha256-rRweAP7XIb4egtT1f2gkz4sYOu7LDHmcJ5iNsJUd0sE=" - [mod."github.com/go-openapi/jsonpointer"] - version = "v0.21.0" - hash = "sha256-bB8XTzo4hzXemi8Ey3tIXia3mfn38bvwIzKYLJYC650=" - [mod."github.com/go-openapi/jsonreference"] - version = "v0.21.0" - hash = "sha256-lkFb/kP0qt8L1jsLYLt+jXTY6jSk5SYJbfgAKKVlQYQ=" - [mod."github.com/go-openapi/swag"] - version = "v0.23.0" - hash = "sha256-D5CzsSQ3SYJLwXT6BDahnG66LI8du59Dy1mY4KutA7A=" - [mod."github.com/gobwas/glob"] - version = "v0.2.3" - hash = "sha256-hYHMUdwxVkMOjSKjR7UWO0D0juHdI4wL8JEy5plu/Jc=" - [mod."github.com/gogo/protobuf"] - version = "v1.3.2" - hash = "sha256-pogILFrrk+cAtb0ulqn9+gRZJ7sGnnLLdtqITvxvG6c=" - [mod."github.com/golang/protobuf"] - version = "v1.5.4" - hash = "sha256-N3+Lv9lEZjrdOWdQhFj6Y3Iap4rVLEQeI8/eFFyAMZ0=" - [mod."github.com/google/btree"] - version = "v1.1.2" - hash = "sha256-K7V2obq3pLM71Mg0vhhHtZ+gtaubwXPQx3xcIyZDCjM=" - [mod."github.com/google/gnostic-models"] - version = "v0.6.8" - hash = "sha256-YzA/XpvPyfdplJtHmAUdQk9P+j0NBwHhW9nj1DaGaoQ=" - [mod."github.com/google/go-cmp"] - version = "v0.6.0" - hash = "sha256-qgra5jze4iPGP0JSTVeY5qV5AvEnEu39LYAuUCIkMtg=" - [mod."github.com/google/gofuzz"] - version = "v1.2.0" - hash = "sha256-T6Gz741l45L3F6Dt7fiAuQvQQg59Qtap3zG05M2cfqU=" - [mod."github.com/google/shlex"] - version = "v0.0.0-20191202100458-e7afc7fbc510" - hash = "sha256-1f392pCmS7AXVKXIC1SvKlYtK/rvW47F5CCkGT2G6JM=" - [mod."github.com/google/uuid"] - version = "v1.6.0" - hash = "sha256-VWl9sqUzdOuhW0KzQlv0gwwUQClYkmZwSydHG2sALYw=" - [mod."github.com/gorilla/mux"] - version = "v1.8.1" - hash = "sha256-nDABvAhlYgxUW2N/brrep7NkQXoSGcHhA+XI4+tK0F0=" - [mod."github.com/gorilla/websocket"] - version = "v1.5.3" - hash = "sha256-vTIGEFMEi+30ZdO6ffMNJ/kId6pZs5bbyqov8xe9BM0=" - [mod."github.com/gosuri/uitable"] - version = "v0.0.4" - hash = "sha256-/SpsQ7j+3dEDC0UX9C+ZjQ8zY7taoqIOQspTqRb8oLk=" - [mod."github.com/gregjones/httpcache"] - version = "v0.0.0-20190611155906-901d90724c79" - hash = "sha256-AEfenLNBYwZjwHsMG48bpwUyUtjx1BBiK2W5HQruIBc=" - [mod."github.com/hashicorp/errwrap"] - version = "v1.1.0" - hash = "sha256-6lwuMQOfBq+McrViN3maJTIeh4f8jbEqvLy2c9FvvFw=" - [mod."github.com/hashicorp/go-multierror"] - version = "v1.1.1" - hash = "sha256-ANzPEUJIZIlToxR89Mn7Db73d9LGI51ssy7eNnUgmlA=" - [mod."github.com/huandu/xstrings"] - version = "v1.5.0" - hash = "sha256-q4F/rzbWMDmOVv07RVApdpfIsRNRByfOUQPEKsTq5BM=" - [mod."github.com/imdario/mergo"] - version = "v0.3.16" - hash = "sha256-gh2TEAq8YrZOEAf6SFW4AIcEEUguD68G+7/VUnBeWwM=" - [mod."github.com/inconshreveable/mousetrap"] - version = "v1.1.0" - hash = "sha256-XWlYH0c8IcxAwQTnIi6WYqq44nOKUylSWxWO/vi+8pE=" - [mod."github.com/jmoiron/sqlx"] - version = "v1.4.0" - hash = "sha256-0H132+A983nBr2zEyCKsJoBCZlC9pG+ylEcGysxKL4M=" - [mod."github.com/josharian/intern"] - version = "v1.0.0" - hash = "sha256-LJR0QE2vOQ2/2shBbO5Yl8cVPq+NFrE3ers0vu9FRP0=" - [mod."github.com/json-iterator/go"] - version = "v1.1.12" - hash = "sha256-To8A0h+lbfZ/6zM+2PpRpY3+L6725OPC66lffq6fUoM=" - [mod."github.com/klauspost/compress"] - version = "v1.17.9" - hash = "sha256-FxHk4OuwsbiH1OLI+Q0oA4KpcOB786sEfik0G+GNoow=" - [mod."github.com/lann/builder"] - version = "v0.0.0-20180802200727-47ae307949d0" - hash = "sha256-NDZvsU6T2jVq5pfhp/VoJcMTq8DXKXiEkfZHloOX6c0=" - [mod."github.com/lann/ps"] - version = "v0.0.0-20150810152359-62de8c46ede0" - hash = "sha256-fHIjAtshTJWa67PzzgruqN1LdpQ7Zgc1qpEZWhjQTnU=" - [mod."github.com/lib/pq"] - version = "v1.10.9" - hash = "sha256-Gl6dLtL+yk6UrTTWfas43aM4lP/pNa2l7+ITXnjQyKs=" - [mod."github.com/liggitt/tabwriter"] - version = "v0.0.0-20181228230101-89fcab3d43de" - hash = "sha256-b6pLitORwgfGpOHpe45ykj00P17utbDv8bv6MCVoCBM=" - [mod."github.com/mailru/easyjson"] - version = "v0.7.7" - hash = "sha256-NVCz8MURpxgOjHXqxOZExqV4bnpHggpeAOyZDArjcy4=" - [mod."github.com/mattn/go-colorable"] - version = "v0.1.13" - hash = "sha256-qb3Qbo0CELGRIzvw7NVM1g/aayaz4Tguppk9MD2/OI8=" - [mod."github.com/mattn/go-isatty"] - version = "v0.0.20" - hash = "sha256-qhw9hWtU5wnyFyuMbKx+7RB8ckQaFQ8D+8GKPkN3HHQ=" - [mod."github.com/mattn/go-runewidth"] - version = "v0.0.16" - hash = "sha256-NC+ntvwIpqDNmXb7aixcg09il80ygq6JAnW0Gb5b/DQ=" - [mod."github.com/matttproud/golang_protobuf_extensions/v2"] - version = "v2.0.0" - hash = "sha256-gcAN8jKL0ve8pcgDkxr2Lc8CUBG39ri9QAp0zrzchEs=" - [mod."github.com/mitchellh/copystructure"] - version = "v1.2.0" - hash = "sha256-VR9cPZvyW62IHXgmMw8ee+hBDThzd2vftgPksQYR/Mc=" - [mod."github.com/mitchellh/go-wordwrap"] - version = "v1.0.1" - hash = "sha256-fiD7kh5037BjA0vW6A2El0XArkK+4S5iTBjJB43BNYo=" - [mod."github.com/mitchellh/reflectwalk"] - version = "v1.0.2" - hash = "sha256-VX9DPqChm7jPnyrA3RAYgxAFrAhj7TRKIWD/qR9Zr9s=" - [mod."github.com/mittwald/go-helm-client"] - version = "v0.12.10" - hash = "sha256-EXkfcdfjIonvdkwEQz+7nhVLw3lwEPjAatYN50I+rHE=" - [mod."github.com/moby/locker"] - version = "v1.0.1" - hash = "sha256-OcpbO3fLe0WtLDZFF1ntxoEBlEDjyoA8q8mVAQ0TLB8=" - [mod."github.com/moby/spdystream"] - version = "v0.5.0" - hash = "sha256-9gVkh6e3y75zBlCBhnwO3k+TL8jnRYg+hGYSFJRA42Y=" - [mod."github.com/moby/term"] - version = "v0.5.0" - hash = "sha256-jy0kbkeUsr0KoiE33WLxNAgYXZIERKR2O5+saXBwdD8=" - [mod."github.com/modern-go/concurrent"] - version = "v0.0.0-20180306012644-bacd9c7ef1dd" - hash = "sha256-OTySieAgPWR4oJnlohaFTeK1tRaVp/b0d1rYY8xKMzo=" - [mod."github.com/modern-go/reflect2"] - version = "v1.0.2" - hash = "sha256-+W9EIW7okXIXjWEgOaMh58eLvBZ7OshW2EhaIpNLSBU=" - [mod."github.com/monochromegane/go-gitignore"] - version = "v0.0.0-20200626010858-205db1a8cc00" - hash = "sha256-j1Mgb2TUUIiBcXB+slOkjtvcjmqSMEsG5RZYE7vGXOU=" - [mod."github.com/munnerz/goautoneg"] - version = "v0.0.0-20191010083416-a7dc8b61c822" - hash = "sha256-79URDDFenmGc9JZu+5AXHToMrtTREHb3BC84b/gym9Q=" - [mod."github.com/mxk/go-flowrate"] - version = "v0.0.0-20140419014527-cca7078d478f" - hash = "sha256-gRTfRfff/LRxC1SXXnQd2tV3UTcTx9qu90DJIVIaGn8=" - [mod."github.com/opencontainers/go-digest"] - version = "v1.0.0" - hash = "sha256-cfVDjHyWItmUGZ2dzQhCHgmOmou8v7N+itDkLZVkqkQ=" - [mod."github.com/opencontainers/image-spec"] - version = "v1.1.0" - hash = "sha256-5OxW1ShHypLpzVu+BJivNlFX2JFPh9WKfJcMIgPZf4U=" - [mod."github.com/peterbourgon/diskv"] - version = "v2.0.1+incompatible" - hash = "sha256-K4mEVjH0eyxyYHQRxdbmgJT0AJrfucUwGB2BplRRt9c=" - [mod."github.com/pkg/errors"] - version = "v0.9.1" - hash = "sha256-mNfQtcrQmu3sNg/7IwiieKWOgFQOVVe2yXgKBpe/wZw=" - [mod."github.com/prometheus/client_golang"] - version = "v1.19.1" - hash = "sha256-MSLsMDi89uQc7Pa2fhqeamyfPJpenGj3r+eB/UotK7w=" - [mod."github.com/prometheus/client_model"] - version = "v0.6.1" - hash = "sha256-rIDyUzNfxRA934PIoySR0EhuBbZVRK/25Jlc/r8WODw=" - [mod."github.com/prometheus/common"] - version = "v0.55.0" - hash = "sha256-qzvCnc+hnAB5dq2MYy8GlPxgyNnyn9kFVlN2CXZe9T0=" - [mod."github.com/prometheus/procfs"] - version = "v0.15.1" - hash = "sha256-H+WXJemFFwdoglmD6p7JRjrJJZmIVAmJwYmLbZ8Q9sw=" - [mod."github.com/rivo/uniseg"] - version = "v0.4.7" - hash = "sha256-rDcdNYH6ZD8KouyyiZCUEy8JrjOQoAkxHBhugrfHjFo=" - [mod."github.com/rubenv/sql-migrate"] - version = "v1.7.0" - hash = "sha256-lczvqWodllOmf/yGunfpR2MKcLZJngffkt4LgDrJBA4=" - [mod."github.com/russross/blackfriday/v2"] - version = "v2.1.0" - hash = "sha256-R+84l1si8az5yDqd5CYcFrTyNZ1eSYlpXKq6nFt4OTQ=" - [mod."github.com/shopspring/decimal"] - version = "v1.4.0" - hash = "sha256-U36bC271jQsjuWFF8BfLz4WicxPJUcPHRGxLvTz4Mdw=" - [mod."github.com/sirupsen/logrus"] - version = "v1.9.3" - hash = "sha256-EnxsWdEUPYid+aZ9H4/iMTs1XMvCLbXZRDyvj89Ebms=" - [mod."github.com/spf13/cast"] - version = "v1.6.0" - hash = "sha256-hxioqRZfXE0AE5099wmn3YG0AZF8Wda2EB4c7zHF6zI=" - [mod."github.com/spf13/cobra"] - version = "v1.8.1" - hash = "sha256-yDF6yAHycV1IZOrt3/hofR+QINe+B2yqkcIaVov3Ky8=" - [mod."github.com/spf13/pflag"] - version = "v1.0.5" - hash = "sha256-w9LLYzxxP74WHT4ouBspH/iQZXjuAh2WQCHsuvyEjAw=" - [mod."github.com/xeipuuv/gojsonpointer"] - version = "v0.0.0-20190905194746-02993c407bfb" - hash = "sha256-/u+qznDY8cnECZYIgSMRpKVWs04yAkW6EoGhqt+t73g=" - [mod."github.com/xeipuuv/gojsonreference"] - version = "v0.0.0-20180127040603-bd5ef7bd5415" - hash = "sha256-ZbXA+ASQrTgBQzasUKC9vznrOGpquYyWr+uwpm46fvU=" - [mod."github.com/xeipuuv/gojsonschema"] - version = "v1.2.0" - hash = "sha256-1ERBEvxj3pvHkMS2mvmvmYRi8jgAaTquo5hwjDLAEdc=" - [mod."github.com/xlab/treeprint"] - version = "v1.2.0" - hash = "sha256-g85HyWGLZuD/TFXZzmXT+u9TA1xIT5escUVhnofsYQI=" - [mod."go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"] - version = "v0.53.0" - hash = "sha256-B7LSUQARnc4mpFjHj4jvJJh/rBAHGtKm1p+qFib+Pqk=" - [mod."go.opentelemetry.io/otel"] - version = "v1.28.0" - hash = "sha256-bilBBr2cuADs9bQ7swnGLTuC7h0DooU6BQtrQqMqIjs=" - [mod."go.opentelemetry.io/otel/metric"] - version = "v1.28.0" - hash = "sha256-k3p1lYcvrODwIkZo/j2jvCoDFUelz4yVJEEVdUKUmGU=" - [mod."go.opentelemetry.io/otel/trace"] - version = "v1.28.0" - hash = "sha256-8uxmlm0/5VGoWegxwy0q8NgeY+pyicSoV08RkvD9Q98=" - [mod."go.starlark.net"] - version = "v0.0.0-20240725214946-42030a7cedce" - hash = "sha256-DC4WPTC6ueuGBXZQYkeFNLpFfzRQBJvaDuvg5A4baFE=" - [mod."golang.org/x/crypto"] - version = "v0.25.0" - hash = "sha256-traLAylqoBwGIh0Z1fuEhNjbGgQBItgVjtZYdYr0zzQ=" - [mod."golang.org/x/exp"] - version = "v0.0.0-20240719175910-8a7402abbf56" - hash = "sha256-mHEPy0vbd/pFwq5ZAEKaehCeYVQLEFDGnXAoVgkCLPo=" - [mod."golang.org/x/net"] - version = "v0.27.0" - hash = "sha256-GrlN5isYeEVrPZVAHK0MDQatttbnyfSPoWJHj0xqhjk=" - [mod."golang.org/x/oauth2"] - version = "v0.21.0" - hash = "sha256-0xgi5k7fxMScMH+rDwXhDqe8raTFHh5ih727jGVS918=" - [mod."golang.org/x/sync"] - version = "v0.7.0" - hash = "sha256-2ETllEu2GDWoOd/yMkOkLC2hWBpKzbVZ8LhjLu0d2A8=" - [mod."golang.org/x/sys"] - version = "v0.22.0" - hash = "sha256-RbG0XaXGGlErCsl2agvUxMnrkRwdbJLmriYT1H24FwA=" - [mod."golang.org/x/term"] - version = "v0.22.0" - hash = "sha256-tRx/y4ZIZzGAlDJ/8JW3AycC9bRXlNuRqO4V48sAEEc=" - [mod."golang.org/x/text"] - version = "v0.16.0" - hash = "sha256-hMTO45upjEuA4sJzGplJT+La2n3oAfHccfYWZuHcH+8=" - [mod."golang.org/x/time"] - version = "v0.5.0" - hash = "sha256-W6RgwgdYTO3byIPOFxrP2IpAZdgaGowAaVfYby7AULU=" - [mod."google.golang.org/appengine"] - version = "v1.6.8" - hash = "sha256-decMa0MiWfW/Bzr8QPPzzpeya0YWGHhZAt4Cr/bD1wQ=" - [mod."google.golang.org/genproto/googleapis/rpc"] - version = "v0.0.0-20240730163845-b1a4ccb954bf" - hash = "sha256-ass/74EkCljwk7DaASDtK2zipn2cZv6tCLKvwONUWgY=" - [mod."google.golang.org/grpc"] - version = "v1.65.0" - hash = "sha256-YP4dewjs+YuTH7rD1p/AFNoKHlk037wbVvSLVAtewIA=" - [mod."google.golang.org/protobuf"] - version = "v1.34.2" - hash = "sha256-nMTlrDEE2dbpWz50eQMPBQXCyQh4IdjrTIccaU0F3m0=" - [mod."gopkg.in/evanphx/json-patch.v4"] - version = "v4.12.0" - hash = "sha256-rUOokb3XW30ftpHp0fsF2WiJln1S0FSt2El7fTHq3CM=" - [mod."gopkg.in/evanphx/json-patch.v5"] - version = "v5.9.0" - hash = "sha256-chyEWaRP+Sis9rV56og669CqS2KySmjU+nCkyRoUK4A=" - [mod."gopkg.in/inf.v0"] - version = "v0.9.1" - hash = "sha256-z84XlyeWLcoYOvWLxPkPFgLkpjyb2Y4pdeGMyySOZQI=" - [mod."gopkg.in/yaml.v2"] - version = "v2.4.0" - hash = "sha256-uVEGglIedjOIGZzHW4YwN1VoRSTK8o0eGZqzd+TNdd0=" - [mod."gopkg.in/yaml.v3"] - version = "v3.0.1" - hash = "sha256-FqL9TKYJ0XkNwJFnq9j0VvJ5ZUU1RvH/52h/f5bkYAU=" - [mod."helm.sh/helm/v3"] - version = "v3.15.3" - hash = "sha256-h669E0R0ors/NhSuoBgONmVvTMEkP+QKIOrO1zP3Cqk=" - [mod."k8s.io/api"] - version = "v0.30.3" - hash = "sha256-tKEmMvbuQWyyVWYJUCljAZdHBeqz8vD3WBK8bNgKgpc=" - [mod."k8s.io/apiextensions-apiserver"] - version = "v0.30.3" - hash = "sha256-31+YVxnL0lBb2hab2ARD3dDyfydN74+3yjgySOLWnxk=" - [mod."k8s.io/apimachinery"] - version = "v0.30.3" - hash = "sha256-EBWG9PlSfRwMed/u6oF8ME8n44/U5HGBCacH+Mns2UI=" - [mod."k8s.io/apiserver"] - version = "v0.30.3" - hash = "sha256-cuEOyEI18Hl1/yKW2TNhdOCrV6/rZU9JpnhjggntQZI=" - [mod."k8s.io/cli-runtime"] - version = "v0.30.3" - hash = "sha256-53Jupc4a/Su6bIM4xworTpUHPEJIAyzHMKGVeUdJuTc=" - [mod."k8s.io/client-go"] - version = "v0.30.3" - hash = "sha256-hmt5J9ZYwLMfpGcXmn+HzXAl2t7ZEdBQMylOkoA5m+g=" - [mod."k8s.io/component-base"] - version = "v0.30.3" - hash = "sha256-ymtEQ7V3UJs1SzIDBk7XLoxTltDdAc3C1qfRUo4uWCA=" - [mod."k8s.io/klog/v2"] - version = "v2.130.1" - hash = "sha256-n5vls1o1a0V0KYv+3SULq4q3R2Is15K8iDHhFlsSH4o=" - [mod."k8s.io/kube-openapi"] - version = "v0.0.0-20240730131305-7a9a4e85957e" - hash = "sha256-/habn/lGBjzgqDuwQdzvMcOOa7A87fUGFgNKP4CNjsQ=" - [mod."k8s.io/kubectl"] - version = "v0.30.3" - hash = "sha256-BgdH3zjaWu1w7w6YzFqeujsgn944JZstlllS9eAlTxY=" - [mod."k8s.io/utils"] - version = "v0.0.0-20240711033017-18e509b52bc8" - hash = "sha256-asDLYotyW+oWIsCmiu9fLuLk77mAsKBkG6QnAbRsyoE=" - [mod."oras.land/oras-go"] - version = "v1.2.6" - hash = "sha256-bhVDJGoINGEtTNfJXwS0K0ptyzyG7Xk6Pqu8C/79DSI=" - [mod."sigs.k8s.io/json"] - version = "v0.0.0-20221116044647-bc3834ca7abd" - hash = "sha256-XDBMN2o450IHiAwEpBVsvo9e7tYZa+EXWrifUNTdNMU=" - [mod."sigs.k8s.io/kustomize/api"] - version = "v0.17.3" - hash = "sha256-O4r+ebfusc5I8Brs5KDH8OyHwFpvjQx7O44i0A29vNI=" - [mod."sigs.k8s.io/kustomize/kyaml"] - version = "v0.17.2" - hash = "sha256-mDdiYTWhHAM4lk6zJWwtE8qnXLrPmE/V2Ev/JdesNGM=" - [mod."sigs.k8s.io/structured-merge-diff/v4"] - version = "v4.4.1" - hash = "sha256-FcZHHZCKNNZW6/s1T1sKiS5Vj1TpHPmxVWr6YlL60xA=" - [mod."sigs.k8s.io/yaml"] - version = "v1.4.0" - hash = "sha256-Hd/M0vIfIVobDd87eb58p1HyVOjYWNlGq2bRXfmtVno=" + [mod.'dario.cat/mergo'] + version = 'v1.0.1' + hash = 'sha256-wcG6+x0k6KzOSlaPA+1RFxa06/RIAePJTAjjuhLbImw=' + + [mod.'github.com/AdaLogics/go-fuzz-headers'] + version = 'v0.0.0-20240716105424-66b64c4bb379' + hash = 'sha256-qvbEQkQUcClO83L42GHWecnOAP4bIlLLtuwXowtp6mE=' + + [mod.'github.com/Azure/go-ansiterm'] + version = 'v0.0.0-20250102033503-faa5f7b0171c' + hash = 'sha256-4WYKJtxjnm3egDAh9ocTR+gy5UUqVoY3knHy9c17XIY=' + + [mod.'github.com/BurntSushi/toml'] + version = 'v1.6.0' + hash = 'sha256-ptdUJvuc21ixeLt+M5way/na3aCnCO4MYHWulWp8NEY=' + + [mod.'github.com/MakeNowJust/heredoc'] + version = 'v1.0.0' + hash = 'sha256-8hKERAVV1Pew84kc9GkW23dcO8uIUx/+tJQLi+oPwqE=' + + [mod.'github.com/Masterminds/goutils'] + version = 'v1.1.1' + hash = 'sha256-MEvA5e099GUllILa5EXxa6toQexU1sz6eDZt2tiqpCY=' + + [mod.'github.com/Masterminds/semver/v3'] + version = 'v3.4.0' + hash = 'sha256-75kRraVwYVjYLWZvuSlts4Iu28Eh3SpiF0GHc7vCYHI=' + + [mod.'github.com/Masterminds/sprig/v3'] + version = 'v3.3.0' + hash = 'sha256-NvFX1xRO5t/u8OI063SDPfqYcZ43AuLI6klA6daPV9I=' + + [mod.'github.com/Masterminds/squirrel'] + version = 'v1.5.4' + hash = 'sha256-7UGz8TLcBI9HjU7zPqj9Gjp9Av+43mu0YCBV1mRy34o=' + + [mod.'github.com/asaskevich/govalidator'] + version = 'v0.0.0-20230301143203-a9d515a09cc2' + hash = 'sha256-UCENzt1c1tFgsAzK2TNq5s2g0tQMQ5PxFaQKe8hTL/A=' + + [mod.'github.com/blang/semver/v4'] + version = 'v4.0.0' + hash = 'sha256-dJC22MjnfT5WqJ7x7Tc3Bvpw9tFnBn9HqfWFiM57JVc=' + + [mod.'github.com/chai2010/gettext-go'] + version = 'v1.0.3' + hash = 'sha256-RtytBWIPUk33jEYc4hBYdgcDCgzHC1z9ld/sHO5vLTc=' + + [mod.'github.com/containerd/containerd'] + version = 'v1.7.30' + hash = 'sha256-JZqT04mKf2AZmNIH8UkAQsFMUnMh9CvbNc6I8KSaRiI=' + + [mod.'github.com/containerd/errdefs'] + version = 'v0.3.0' + hash = 'sha256-wMZGoeqvRhuovYCJx0Js4P3qFCNTZ/6Atea/kNYoPMI=' + + [mod.'github.com/containerd/log'] + version = 'v0.1.0' + hash = 'sha256-vuE6Mie2gSxiN3jTKTZovjcbdBd1YEExb7IBe3GM+9s=' + + [mod.'github.com/containerd/platforms'] + version = 'v0.2.1' + hash = 'sha256-XQdg/tnn5uKNzUc/dMmoIS9wgarx7SxaqZ5uJ9ZglA0=' + + [mod.'github.com/cyphar/filepath-securejoin'] + version = 'v0.6.1' + hash = 'sha256-obqip8c1c9mjXFznyXF8aDnpcMw7ttzv+e28anCa/v0=' + + [mod.'github.com/davecgh/go-spew'] + version = 'v1.1.2-0.20180830191138-d8f796af33cc' + hash = 'sha256-fV9oI51xjHdOmEx6+dlq7Ku2Ag+m/bmbzPo6A4Y74qc=' + + [mod.'github.com/emicklei/go-restful/v3'] + version = 'v3.12.2' + hash = 'sha256-eQ0qtVH7c5jgqB7F9B17GhZujYelBA2g9KwpPuSS0sE=' + + [mod.'github.com/evanphx/json-patch'] + version = 'v5.9.11+incompatible' + hash = 'sha256-1iyZpBaeBLmNkJ3T4A9fAEXEYB9nk9V02ug4pwl5dy0=' + + [mod.'github.com/exponent-io/jsonpath'] + version = 'v0.0.0-20210407135951-1de76d718b3f' + hash = 'sha256-2wgJI2pvkaq2MoeUmLRaTBA8dIoEcwzKvw4qKJlhIec=' + + [mod.'github.com/fatih/color'] + version = 'v1.17.0' + hash = 'sha256-QsKMy3MsvjbYNcA9jP8w6c3wpmWDZ0079bybAEzmXR0=' + + [mod.'github.com/fxamacker/cbor/v2'] + version = 'v2.9.0' + hash = 'sha256-/IZK76MRCrz9XCiilieH5tKaLnIWyPJhwxDoVKB8dFc=' + + [mod.'github.com/go-errors/errors'] + version = 'v1.5.1' + hash = 'sha256-K/IEfka2mbBk6b0AbiMaxpvkY1pZgzhtT6knqoDovPk=' + + [mod.'github.com/go-gorp/gorp/v3'] + version = 'v3.1.0' + hash = 'sha256-z8AJoWp3fDJMNMYAi8kJdtzXDv8QyAd6bPYE58b2urs=' + + [mod.'github.com/go-logr/logr'] + version = 'v1.4.3' + hash = 'sha256-Nnp/dEVNMxLp3RSPDHZzGbI8BkSNuZMX0I0cjWKXXLA=' + + [mod.'github.com/go-openapi/jsonpointer'] + version = 'v0.21.0' + hash = 'sha256-bB8XTzo4hzXemi8Ey3tIXia3mfn38bvwIzKYLJYC650=' + + [mod.'github.com/go-openapi/jsonreference'] + version = 'v0.21.0' + hash = 'sha256-lkFb/kP0qt8L1jsLYLt+jXTY6jSk5SYJbfgAKKVlQYQ=' + + [mod.'github.com/go-openapi/swag'] + version = 'v0.23.0' + hash = 'sha256-D5CzsSQ3SYJLwXT6BDahnG66LI8du59Dy1mY4KutA7A=' + + [mod.'github.com/gobwas/glob'] + version = 'v0.2.3' + hash = 'sha256-hYHMUdwxVkMOjSKjR7UWO0D0juHdI4wL8JEy5plu/Jc=' + + [mod.'github.com/google/btree'] + version = 'v1.1.3' + hash = 'sha256-/6Us2eNRFi2IIp7p5uPUXLridilAdk4SmZhcTYR0csw=' + + [mod.'github.com/google/gnostic-models'] + version = 'v0.7.0' + hash = 'sha256-sxShRxqOUVlz9IkAz0C/NP/7CmLBW3ffwoZTdh+rIOc=' + + [mod.'github.com/google/go-cmp'] + version = 'v0.7.0' + hash = 'sha256-JbxZFBFGCh/Rj5XZ1vG94V2x7c18L8XKB0N9ZD5F2rM=' + + [mod.'github.com/google/uuid'] + version = 'v1.6.0' + hash = 'sha256-VWl9sqUzdOuhW0KzQlv0gwwUQClYkmZwSydHG2sALYw=' + + [mod.'github.com/gosuri/uitable'] + version = 'v0.0.4' + hash = 'sha256-/SpsQ7j+3dEDC0UX9C+ZjQ8zY7taoqIOQspTqRb8oLk=' + + [mod.'github.com/gregjones/httpcache'] + version = 'v0.0.0-20190611155906-901d90724c79' + hash = 'sha256-AEfenLNBYwZjwHsMG48bpwUyUtjx1BBiK2W5HQruIBc=' + + [mod.'github.com/hashicorp/errwrap'] + version = 'v1.1.0' + hash = 'sha256-6lwuMQOfBq+McrViN3maJTIeh4f8jbEqvLy2c9FvvFw=' + + [mod.'github.com/hashicorp/go-multierror'] + version = 'v1.1.1' + hash = 'sha256-ANzPEUJIZIlToxR89Mn7Db73d9LGI51ssy7eNnUgmlA=' + + [mod.'github.com/huandu/xstrings'] + version = 'v1.5.0' + hash = 'sha256-q4F/rzbWMDmOVv07RVApdpfIsRNRByfOUQPEKsTq5BM=' + + [mod.'github.com/inconshreveable/mousetrap'] + version = 'v1.1.0' + hash = 'sha256-XWlYH0c8IcxAwQTnIi6WYqq44nOKUylSWxWO/vi+8pE=' + + [mod.'github.com/jmoiron/sqlx'] + version = 'v1.4.0' + hash = 'sha256-0H132+A983nBr2zEyCKsJoBCZlC9pG+ylEcGysxKL4M=' + + [mod.'github.com/josharian/intern'] + version = 'v1.0.0' + hash = 'sha256-LJR0QE2vOQ2/2shBbO5Yl8cVPq+NFrE3ers0vu9FRP0=' + + [mod.'github.com/json-iterator/go'] + version = 'v1.1.12' + hash = 'sha256-To8A0h+lbfZ/6zM+2PpRpY3+L6725OPC66lffq6fUoM=' + + [mod.'github.com/klauspost/compress'] + version = 'v1.18.0' + hash = 'sha256-jc5pMU/HCBFOShMcngVwNMhz9wolxjOb579868LtOuk=' + + [mod.'github.com/lann/builder'] + version = 'v0.0.0-20180802200727-47ae307949d0' + hash = 'sha256-NDZvsU6T2jVq5pfhp/VoJcMTq8DXKXiEkfZHloOX6c0=' + + [mod.'github.com/lann/ps'] + version = 'v0.0.0-20150810152359-62de8c46ede0' + hash = 'sha256-fHIjAtshTJWa67PzzgruqN1LdpQ7Zgc1qpEZWhjQTnU=' + + [mod.'github.com/lib/pq'] + version = 'v1.10.9' + hash = 'sha256-Gl6dLtL+yk6UrTTWfas43aM4lP/pNa2l7+ITXnjQyKs=' + + [mod.'github.com/liggitt/tabwriter'] + version = 'v0.0.0-20181228230101-89fcab3d43de' + hash = 'sha256-b6pLitORwgfGpOHpe45ykj00P17utbDv8bv6MCVoCBM=' + + [mod.'github.com/mailru/easyjson'] + version = 'v0.7.7' + hash = 'sha256-NVCz8MURpxgOjHXqxOZExqV4bnpHggpeAOyZDArjcy4=' + + [mod.'github.com/mattn/go-colorable'] + version = 'v0.1.13' + hash = 'sha256-qb3Qbo0CELGRIzvw7NVM1g/aayaz4Tguppk9MD2/OI8=' + + [mod.'github.com/mattn/go-isatty'] + version = 'v0.0.20' + hash = 'sha256-qhw9hWtU5wnyFyuMbKx+7RB8ckQaFQ8D+8GKPkN3HHQ=' + + [mod.'github.com/mattn/go-runewidth'] + version = 'v0.0.16' + hash = 'sha256-NC+ntvwIpqDNmXb7aixcg09il80ygq6JAnW0Gb5b/DQ=' + + [mod.'github.com/mitchellh/copystructure'] + version = 'v1.2.0' + hash = 'sha256-VR9cPZvyW62IHXgmMw8ee+hBDThzd2vftgPksQYR/Mc=' + + [mod.'github.com/mitchellh/go-wordwrap'] + version = 'v1.0.1' + hash = 'sha256-fiD7kh5037BjA0vW6A2El0XArkK+4S5iTBjJB43BNYo=' + + [mod.'github.com/mitchellh/reflectwalk'] + version = 'v1.0.2' + hash = 'sha256-VX9DPqChm7jPnyrA3RAYgxAFrAhj7TRKIWD/qR9Zr9s=' + + [mod.'github.com/mittwald/go-helm-client'] + version = 'v0.12.19' + hash = 'sha256-l3phllpgo5A0ZyoHEFLi5jK18zVGjvqjKpSZXg2esug=' + + [mod.'github.com/moby/term'] + version = 'v0.5.2' + hash = 'sha256-/G20jUZKx36ktmPU/nEw/gX7kRTl1Dbu7zvNBYNt4xU=' + + [mod.'github.com/modern-go/concurrent'] + version = 'v0.0.0-20180306012644-bacd9c7ef1dd' + hash = 'sha256-OTySieAgPWR4oJnlohaFTeK1tRaVp/b0d1rYY8xKMzo=' + + [mod.'github.com/modern-go/reflect2'] + version = 'v1.0.3-0.20250322232337-35a7c28c31ee' + hash = 'sha256-0pkWWZRB3lGFyzmlxxrm0KWVQo9HNXNafaUu3k+rE1g=' + + [mod.'github.com/monochromegane/go-gitignore'] + version = 'v0.0.0-20200626010858-205db1a8cc00' + hash = 'sha256-j1Mgb2TUUIiBcXB+slOkjtvcjmqSMEsG5RZYE7vGXOU=' + + [mod.'github.com/munnerz/goautoneg'] + version = 'v0.0.0-20191010083416-a7dc8b61c822' + hash = 'sha256-79URDDFenmGc9JZu+5AXHToMrtTREHb3BC84b/gym9Q=' + + [mod.'github.com/opencontainers/go-digest'] + version = 'v1.0.0' + hash = 'sha256-cfVDjHyWItmUGZ2dzQhCHgmOmou8v7N+itDkLZVkqkQ=' + + [mod.'github.com/opencontainers/image-spec'] + version = 'v1.1.1' + hash = 'sha256-bxBjtl+6846Ed3QHwdssOrNvlHV6b+Dn17zPISSQGP8=' + + [mod.'github.com/peterbourgon/diskv'] + version = 'v2.0.1+incompatible' + hash = 'sha256-K4mEVjH0eyxyYHQRxdbmgJT0AJrfucUwGB2BplRRt9c=' + + [mod.'github.com/pkg/errors'] + version = 'v0.9.1' + hash = 'sha256-mNfQtcrQmu3sNg/7IwiieKWOgFQOVVe2yXgKBpe/wZw=' + + [mod.'github.com/pmezard/go-difflib'] + version = 'v1.0.1-0.20181226105442-5d4384ee4fb2' + hash = 'sha256-XA4Oj1gdmdV/F/+8kMI+DBxKPthZ768hbKsO3d9Gx90=' + + [mod.'github.com/rivo/uniseg'] + version = 'v0.4.7' + hash = 'sha256-rDcdNYH6ZD8KouyyiZCUEy8JrjOQoAkxHBhugrfHjFo=' + + [mod.'github.com/rubenv/sql-migrate'] + version = 'v1.8.1' + hash = 'sha256-etogS73ms8b6GoL7WxaU6l5HhnwdITWwbC6ajVP0oRI=' + + [mod.'github.com/russross/blackfriday/v2'] + version = 'v2.1.0' + hash = 'sha256-R+84l1si8az5yDqd5CYcFrTyNZ1eSYlpXKq6nFt4OTQ=' + + [mod.'github.com/santhosh-tekuri/jsonschema/v6'] + version = 'v6.0.2' + hash = 'sha256-rPRYeV00NRyt6rb+gFJRK1K4TlVxy92cocRK/X9Wef4=' + + [mod.'github.com/shopspring/decimal'] + version = 'v1.4.0' + hash = 'sha256-U36bC271jQsjuWFF8BfLz4WicxPJUcPHRGxLvTz4Mdw=' + + [mod.'github.com/sirupsen/logrus'] + version = 'v1.9.3' + hash = 'sha256-EnxsWdEUPYid+aZ9H4/iMTs1XMvCLbXZRDyvj89Ebms=' + + [mod.'github.com/spf13/cast'] + version = 'v1.7.0' + hash = 'sha256-xO2kSmNmMHaJ1i3T0ou0pcaBCusuO6Ep3xtF1P7ZadA=' + + [mod.'github.com/spf13/cobra'] + version = 'v1.10.2' + hash = 'sha256-nbRCTFiDCC2jKK7AHi79n7urYCMP5yDZnWtNVJrDi+k=' + + [mod.'github.com/spf13/pflag'] + version = 'v1.0.10' + hash = 'sha256-uDPnWjHpSrzXr17KEYEA1yAbizfcsfo5AyztY2tS6ZU=' + + [mod.'github.com/x448/float16'] + version = 'v0.8.4' + hash = 'sha256-VKzMTMS9pIB/cwe17xPftCSK9Mf4Y6EuBEJlB4by5mE=' + + [mod.'github.com/xlab/treeprint'] + version = 'v1.2.0' + hash = 'sha256-g85HyWGLZuD/TFXZzmXT+u9TA1xIT5escUVhnofsYQI=' + + [mod.'go.yaml.in/yaml/v2'] + version = 'v2.4.3' + hash = 'sha256-WqfrOUQFvfuORgl1yyVOcsEXU/vwWQHkcVWx3vCxvaw=' + + [mod.'go.yaml.in/yaml/v3'] + version = 'v3.0.4' + hash = 'sha256-NkGFiDPoCxbr3LFsI6OCygjjkY0rdmg5ggvVVwpyDQ4=' + + [mod.'golang.org/x/crypto'] + version = 'v0.46.0' + hash = 'sha256-I8N/spcw3/h0DFA+V1WK38HctckWIB9ep93DEVCALxU=' + + [mod.'golang.org/x/net'] + version = 'v0.48.0' + hash = 'sha256-oZpddsiJwWCH3Aipa+XXpy7G/xHY5fEagUSok7T0bXE=' + + [mod.'golang.org/x/oauth2'] + version = 'v0.30.0' + hash = 'sha256-btD7BUtQpOswusZY5qIU90uDo38buVrQ0tmmQ8qNHDg=' + + [mod.'golang.org/x/sync'] + version = 'v0.19.0' + hash = 'sha256-RbRZ+sKZUurOczGhhzOoY/sojTlta3H9XjL4PXX/cno=' + + [mod.'golang.org/x/sys'] + version = 'v0.40.0' + hash = 'sha256-KDe+wMr7dfMFwKMJEljzk+f82pQWFFPoFHivjD7qJGg=' + + [mod.'golang.org/x/term'] + version = 'v0.39.0' + hash = 'sha256-diP4VknZDlJmhGQdcsXwI2+sFayQdsILFuxK1FBPaUE=' + + [mod.'golang.org/x/text'] + version = 'v0.33.0' + hash = 'sha256-XdA6D39ESuJkaaM/SRBnqZzjKUwi6Gbt1Si1nvauTr4=' + + [mod.'golang.org/x/time'] + version = 'v0.12.0' + hash = 'sha256-Cp3oxrCMH2wyxjzr5SHVmyhgaoUuSl56Uy00Q7DYEpw=' + + [mod.'google.golang.org/genproto/googleapis/rpc'] + version = 'v0.0.0-20250528174236-200df99c418a' + hash = 'sha256-WK7iDtAhH19NPe3TywTQlGjDawNaDKWnxhFL9PgVUwM=' + + [mod.'google.golang.org/grpc'] + version = 'v1.72.2' + hash = 'sha256-j69zyPD3jssUWXUxNL+Ky8gUD4YE0/6nZBOJPWgD97o=' + + [mod.'google.golang.org/protobuf'] + version = 'v1.36.8' + hash = 'sha256-yZN8ZON0b5HjUNUSubHst7zbvnMsOzd81tDPYQRtPgM=' + + [mod.'gopkg.in/evanphx/json-patch.v4'] + version = 'v4.13.0' + hash = 'sha256-1iyZpBaeBLmNkJ3T4A9fAEXEYB9nk9V02ug4pwl5dy0=' + + [mod.'gopkg.in/inf.v0'] + version = 'v0.9.1' + hash = 'sha256-z84XlyeWLcoYOvWLxPkPFgLkpjyb2Y4pdeGMyySOZQI=' + + [mod.'gopkg.in/yaml.v3'] + version = 'v3.0.1' + hash = 'sha256-FqL9TKYJ0XkNwJFnq9j0VvJ5ZUU1RvH/52h/f5bkYAU=' + + [mod.'helm.sh/helm/v3'] + version = 'v3.20.0' + hash = 'sha256-zKZEcSxpISjKUtkh/YUReduygpAA88wkZQAUAodHsQo=' + + [mod.'k8s.io/api'] + version = 'v0.35.2' + hash = 'sha256-nJSz5WkVcB9ie8RKrsMiOQjD2YR22PJgyXZaZe3fhZM=' + + [mod.'k8s.io/apiextensions-apiserver'] + version = 'v0.35.0' + hash = 'sha256-RZdGkV4SoCTY022pIzQbeVwaxIYhIpXapLZrD593gh8=' + + [mod.'k8s.io/apimachinery'] + version = 'v0.35.2' + hash = 'sha256-+dplbHUOfaCaD2E9IS4F3lnjSCr/a4LjTgdB9de92Pw=' + + [mod.'k8s.io/apiserver'] + version = 'v0.35.0' + hash = 'sha256-jte6rWgLJddOrVPdBavTDM5ivq0nlkdvfxuprWJTMDM=' + + [mod.'k8s.io/cli-runtime'] + version = 'v0.35.0' + hash = 'sha256-dxpvB1ZuZU7Xq9hVneukOh3ToT8N/shUv/opB5qDNnw=' + + [mod.'k8s.io/client-go'] + version = 'v0.35.2' + hash = 'sha256-e6FwEM1Vp4M6lFhL7MoGSqvi52gdJz5tH5fK8UCHpkw=' + + [mod.'k8s.io/component-base'] + version = 'v0.35.0' + hash = 'sha256-fIAmKs3/T8oHrXBX3sMWr/D1DGhyCsgM+6ZFdaA8BXU=' + + [mod.'k8s.io/klog/v2'] + version = 'v2.130.1' + hash = 'sha256-n5vls1o1a0V0KYv+3SULq4q3R2Is15K8iDHhFlsSH4o=' + + [mod.'k8s.io/kube-openapi'] + version = 'v0.0.0-20250910181357-589584f1c912' + hash = 'sha256-p34xQitGZDlha75SDiavMn6Cxilvo7L46p0C05wqwhQ=' + + [mod.'k8s.io/kubectl'] + version = 'v0.35.0' + hash = 'sha256-QBEqToqWG/zPx01CHYKev0aHzYqjXDRsf92OSF09Mh4=' + + [mod.'k8s.io/utils'] + version = 'v0.0.0-20251002143259-bc988d571ff4' + hash = 'sha256-Z3gfQXu5D5U58IyV7dYamQjrLbFSB0BmlJtFWvgHIgg=' + + [mod.'oras.land/oras-go/v2'] + version = 'v2.6.0' + hash = 'sha256-UwoJIpfocbUEYk25WqXbfysztCaYUXybk9W9EfxtTHg=' + + [mod.'sigs.k8s.io/json'] + version = 'v0.0.0-20250730193827-2d320260d730' + hash = 'sha256-y3vUPJYL6oxu/8c0j4vgX6fzqHtVPSCjfyuWkZYf6+I=' + + [mod.'sigs.k8s.io/kustomize/api'] + version = 'v0.20.1' + hash = 'sha256-kcZREdlFsFC7xaMRzvwkE+93lQJBTanImDJjgYMyzRU=' + + [mod.'sigs.k8s.io/kustomize/kyaml'] + version = 'v0.20.1' + hash = 'sha256-k87zgSRMFVcph06vqMd4KG9kE1GzllxKu36mWKdSisY=' + + [mod.'sigs.k8s.io/randfill'] + version = 'v1.0.0' + hash = 'sha256-xldQxDwW84hmlihdSOFfjXyauhxEWV9KmIDLZMTcYNo=' + + [mod.'sigs.k8s.io/structured-merge-diff/v6'] + version = 'v6.3.0' + hash = 'sha256-2EqUZSaHUhwTrdjoZuv+Z99tZYrX1E6rxf2ejeKd2BM=' + + [mod.'sigs.k8s.io/yaml'] + version = 'v1.6.0' + hash = 'sha256-49hg7IVPzwxeovp+HTMiWa/10NMMTSTjAdCmIv6p9dw=' diff --git a/nix/sources.json b/nix/sources.json index 36b4714b..c1da1f6a 100644 --- a/nix/sources.json +++ b/nix/sources.json @@ -5,10 +5,10 @@ "homepage": "", "owner": "kolloch", "repo": "crate2nix", - "rev": "151122427d030874ebef3517cda766a6984e6ed6", - "sha256": "0clqy88nhd0w316957scnczzwrklazkfxbycxf0h17z7jrw1px6a", + "rev": "26b698e804dd32dc5bb1995028fef00cc87d603a", + "sha256": "13jgy25yjd1m42xam6zri8vwx0n2qbwvpad2cmkhkrlx913n79ni", "type": "tarball", - "url": "https://github.com/kolloch/crate2nix/archive/151122427d030874ebef3517cda766a6984e6ed6.tar.gz", + "url": "https://github.com/kolloch/crate2nix/archive/26b698e804dd32dc5bb1995028fef00cc87d603a.tar.gz", "url_template": "https://github.com///archive/.tar.gz" }, "gomod2nix": { @@ -17,10 +17,10 @@ "homepage": "", "owner": "nix-community", "repo": "gomod2nix", - "rev": "5d387097aa716f35dd99d848dc26d8d5b62a104c", - "sha256": "1mdwyjz43nnh7gfq4rc54kql6fy65hw17w0p4gwklnfqciwrkax2", + "rev": "1201ddd1279c35497754f016ef33d5e060f3da8d", + "sha256": "0c037y00sajzbfi5d5ai1w4z7ijrgiv71dvpidxbwnbr6wxzs768", "type": "tarball", - "url": "https://github.com/nix-community/gomod2nix/archive/5d387097aa716f35dd99d848dc26d8d5b62a104c.tar.gz", + "url": "https://github.com/nix-community/gomod2nix/archive/1201ddd1279c35497754f016ef33d5e060f3da8d.tar.gz", "url_template": "https://github.com///archive/.tar.gz", "version": "1.5.0" }, @@ -30,10 +30,10 @@ "homepage": "", "owner": "canva-public", "repo": "js2nix", - "rev": "d37912f6cc824e7f41bea7a481af1739ca195c8f", - "sha256": "075hw89h6dvrz5h1iz56yksv6a41hgh35f1wcgisnvsy2l8z8sq6", + "rev": "8cd32b5c87767b019e0960b27599f6b9d195ddb0", + "sha256": "0mp62ai0n6k57cx8sn118qis37xvfylskagghxja00gdcank3nxr", "type": "tarball", - "url": "https://github.com/canva-public/js2nix/archive/d37912f6cc824e7f41bea7a481af1739ca195c8f.tar.gz", + "url": "https://github.com/canva-public/js2nix/archive/8cd32b5c87767b019e0960b27599f6b9d195ddb0.tar.gz", "url_template": "https://github.com///archive/.tar.gz" }, "nixpkgs": { @@ -42,10 +42,10 @@ "homepage": "", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5929de975bcf4c7c8d8b5ca65c8cd9ef9e44523e", - "sha256": "0ngai9c0z9ail3w2zwkriby2nckw4shmb8cln1i569a2g5ya0y84", + "rev": "400de68cd101e8cfebffea121397683caf7f5a34", + "sha256": "10a8ry1cjcphydsskcxya7kdlvzlr9nlw6gk0303d5qwrdy6bfgr", "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/5929de975bcf4c7c8d8b5ca65c8cd9ef9e44523e.tar.gz", + "url": "https://github.com/NixOS/nixpkgs/archive/400de68cd101e8cfebffea121397683caf7f5a34.tar.gz", "url_template": "https://github.com///archive/.tar.gz" } } diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 291696d0..c976725f 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,3 +1,3 @@ [toolchain] -channel = "1.87.0" +channel = "1.93.0" profile = "default" diff --git a/rust/stackable-cockpit/Cargo.toml b/rust/stackable-cockpit/Cargo.toml index dcd0c3eb..f6292a8e 100644 --- a/rust/stackable-cockpit/Cargo.toml +++ b/rust/stackable-cockpit/Cargo.toml @@ -18,8 +18,6 @@ helm-sys = { path = "../helm-sys" } bcrypt.workspace = true clap.workspace = true indexmap.workspace = true -k8s-openapi.workspace = true -kube.workspace = true rand.workspace = true reqwest.workspace = true semver.workspace = true diff --git a/rust/stackable-cockpit/src/platform/cluster/mod.rs b/rust/stackable-cockpit/src/platform/cluster/mod.rs index d7c35687..d98ba2e4 100644 --- a/rust/stackable-cockpit/src/platform/cluster/mod.rs +++ b/rust/stackable-cockpit/src/platform/cluster/mod.rs @@ -1,7 +1,8 @@ -use k8s_openapi::api::core::v1::Node; -use kube::core::ObjectList; use snafu::{ResultExt, Snafu}; -use stackable_operator::{cpu::CpuQuantity, memory::MemoryQuantity}; +use stackable_operator::{ + cpu::CpuQuantity, k8s_openapi::api::core::v1::Node, kube::core::ObjectList, + memory::MemoryQuantity, +}; mod resource_request; diff --git a/rust/stackable-cockpit/src/platform/cluster/resource_request.rs b/rust/stackable-cockpit/src/platform/cluster/resource_request.rs index d3ada92c..fe48c16d 100644 --- a/rust/stackable-cockpit/src/platform/cluster/resource_request.rs +++ b/rust/stackable-cockpit/src/platform/cluster/resource_request.rs @@ -1,9 +1,11 @@ use std::fmt::Display; -use k8s_openapi::apimachinery::pkg::api::resource::Quantity; use serde::{Deserialize, Serialize}; use snafu::{ResultExt, Snafu}; -use stackable_operator::{cpu::CpuQuantity, memory::MemoryQuantity}; +use stackable_operator::{ + cpu::CpuQuantity, k8s_openapi::apimachinery::pkg::api::resource::Quantity, + memory::MemoryQuantity, +}; #[cfg(feature = "openapi")] use utoipa::ToSchema; diff --git a/rust/stackable-cockpit/src/platform/credentials.rs b/rust/stackable-cockpit/src/platform/credentials.rs index 334d3bf4..d8211910 100644 --- a/rust/stackable-cockpit/src/platform/credentials.rs +++ b/rust/stackable-cockpit/src/platform/credentials.rs @@ -1,8 +1,8 @@ use std::fmt::Display; -use kube::{ResourceExt, core::DynamicObject}; use serde::Serialize; use snafu::{OptionExt, ResultExt, Snafu}; +use stackable_operator::kube::{ResourceExt, core::DynamicObject}; use crate::utils::k8s::{self, Client}; @@ -38,7 +38,7 @@ impl Display for Credentials { } /// Retrieves the credentials looking up a secret identified by `secret_name` -/// in `secret_namespace`. The function returns [`Ok(None)`] if `username_key` +/// in `secret_namespace`. The function returns `Ok(None)` if `username_key` /// and/or `password_key` are not found or the product does not provide /// any credentials. pub async fn get( diff --git a/rust/stackable-cockpit/src/platform/namespace.rs b/rust/stackable-cockpit/src/platform/namespace.rs index 17da2e5b..ed19b366 100644 --- a/rust/stackable-cockpit/src/platform/namespace.rs +++ b/rust/stackable-cockpit/src/platform/namespace.rs @@ -1,4 +1,5 @@ use snafu::Snafu; +use stackable_operator::kube; use crate::utils::k8s::{self, Client}; diff --git a/rust/stackable-cockpit/src/platform/service.rs b/rust/stackable-cockpit/src/platform/service.rs index 3db59982..e0544fb2 100644 --- a/rust/stackable-cockpit/src/platform/service.rs +++ b/rust/stackable-cockpit/src/platform/service.rs @@ -8,9 +8,11 @@ use std::collections::HashMap; use indexmap::IndexMap; -use k8s_openapi::api::core::v1::{Service, ServiceSpec}; -use kube::{ResourceExt, api::ListParams}; use snafu::{OptionExt, ResultExt, Snafu}; +use stackable_operator::{ + k8s_openapi::api::core::v1::{Service, ServiceSpec}, + kube::{self, ResourceExt, api::ListParams}, +}; use tracing::{debug, warn}; use crate::utils::k8s::{self, Client, ListParamsExt}; diff --git a/rust/stackable-cockpit/src/platform/stacklet/grafana.rs b/rust/stackable-cockpit/src/platform/stacklet/grafana.rs index 3347276f..70998d93 100644 --- a/rust/stackable-cockpit/src/platform/stacklet/grafana.rs +++ b/rust/stackable-cockpit/src/platform/stacklet/grafana.rs @@ -1,5 +1,5 @@ -use kube::{ResourceExt, api::ListParams}; use snafu::ResultExt; +use stackable_operator::kube::{ResourceExt, api::ListParams}; use crate::{ platform::{ diff --git a/rust/stackable-cockpit/src/platform/stacklet/minio.rs b/rust/stackable-cockpit/src/platform/stacklet/minio.rs index bfa7dab1..1f12afeb 100644 --- a/rust/stackable-cockpit/src/platform/stacklet/minio.rs +++ b/rust/stackable-cockpit/src/platform/stacklet/minio.rs @@ -1,5 +1,5 @@ -use kube::{ResourceExt, api::ListParams}; use snafu::ResultExt; +use stackable_operator::kube::{ResourceExt, api::ListParams}; use crate::{ platform::{ diff --git a/rust/stackable-cockpit/src/platform/stacklet/mod.rs b/rust/stackable-cockpit/src/platform/stacklet/mod.rs index 8fd3d153..58858125 100644 --- a/rust/stackable-cockpit/src/platform/stacklet/mod.rs +++ b/rust/stackable-cockpit/src/platform/stacklet/mod.rs @@ -1,8 +1,10 @@ use indexmap::IndexMap; -use kube::{ResourceExt, core::GroupVersionKind}; use serde::Serialize; use snafu::{OptionExt, ResultExt, Snafu}; -use stackable_operator::status::condition::ClusterCondition; +use stackable_operator::{ + kube::{ResourceExt, core::GroupVersionKind}, + status::condition::ClusterCondition, +}; use tracing::info; #[cfg(feature = "openapi")] use utoipa::ToSchema; diff --git a/rust/stackable-cockpit/src/platform/stacklet/opensearch.rs b/rust/stackable-cockpit/src/platform/stacklet/opensearch.rs index 32a92e04..b060fbdc 100644 --- a/rust/stackable-cockpit/src/platform/stacklet/opensearch.rs +++ b/rust/stackable-cockpit/src/platform/stacklet/opensearch.rs @@ -1,5 +1,5 @@ -use kube::{ResourceExt, api::ListParams}; use snafu::ResultExt; +use stackable_operator::kube::{ResourceExt, api::ListParams}; use crate::{ platform::{ diff --git a/rust/stackable-cockpit/src/platform/stacklet/prometheus.rs b/rust/stackable-cockpit/src/platform/stacklet/prometheus.rs index be8f36f4..fa377cf1 100644 --- a/rust/stackable-cockpit/src/platform/stacklet/prometheus.rs +++ b/rust/stackable-cockpit/src/platform/stacklet/prometheus.rs @@ -1,5 +1,5 @@ -use kube::{ResourceExt, api::ListParams}; use snafu::ResultExt; +use stackable_operator::kube::{ResourceExt, api::ListParams}; use crate::{ platform::{ diff --git a/rust/stackable-cockpit/src/utils/k8s/byte_string.rs b/rust/stackable-cockpit/src/utils/k8s/byte_string.rs index f7d77d01..94eba65d 100644 --- a/rust/stackable-cockpit/src/utils/k8s/byte_string.rs +++ b/rust/stackable-cockpit/src/utils/k8s/byte_string.rs @@ -1,6 +1,6 @@ use std::{error::Error, fmt::Display, string::FromUtf8Error}; -use k8s_openapi::ByteString; +use stackable_operator::k8s_openapi::ByteString; /// The [`ByteStringExt`] enables [`ByteString`] to be converted to a [`String`]. pub trait ByteStringExt { diff --git a/rust/stackable-cockpit/src/utils/k8s/client.rs b/rust/stackable-cockpit/src/utils/k8s/client.rs index d7b5ccee..6fb44d6f 100644 --- a/rust/stackable-cockpit/src/utils/k8s/client.rs +++ b/rust/stackable-cockpit/src/utils/k8s/client.rs @@ -1,18 +1,21 @@ use std::{collections::BTreeMap, string::FromUtf8Error}; -use k8s_openapi::api::{ - apps::v1::{Deployment, StatefulSet}, - core::v1::{Endpoints, Namespace, Node, Secret, Service}, -}; -use kube::{ - Api, Discovery, ResourceExt, - api::{ListParams, Patch, PatchParams, PostParams}, - core::{DynamicObject, GroupVersionKind, ObjectList, ObjectMeta, TypeMeta}, - discovery::{ApiCapabilities, ApiResource, Scope}, -}; use serde::Deserialize; use snafu::{OptionExt, ResultExt, Snafu}; -use stackable_operator::{commons::listener::Listener, kvp::Labels}; +use stackable_operator::{ + crd::listener::v1alpha1::Listener, + k8s_openapi::api::{ + apps::v1::{Deployment, StatefulSet}, + core::v1::{Endpoints, Namespace, Node, Secret, Service}, + }, + kube::{ + self, Api, Discovery, ResourceExt, + api::{ListParams, Patch, PatchParams, PostParams}, + core::{DynamicObject, GroupVersionKind, ObjectList, ObjectMeta, TypeMeta}, + discovery::{ApiCapabilities, ApiResource, Scope}, + }, + kvp::Labels, +}; use tokio::sync::RwLock; use tracing::{Span, info, instrument}; use tracing_indicatif::{indicatif_eprintln, span_ext::IndicatifSpanExt as _}; @@ -235,7 +238,7 @@ impl Client { } /// Lists objects by looking up a GVK via the discovery. It returns an - /// optional list of dynamic objects. The method returns [`Ok(None)`] + /// optional list of dynamic objects. The method returns `Ok(None)` /// if the client was unable to resolve the GVK. An error is returned /// when the client failed to list the objects. pub async fn list_objects( @@ -330,7 +333,7 @@ impl Client { /// Retrieves user credentials consisting of username and password from a /// secret identified by `secret_name` inside the `secret_namespace`. If - /// either one of the values is missing, [`Ok(None)`] is returned. An error + /// either one of the values is missing, `Ok(None)` is returned. An error /// is returned if the client failed to get the secret. pub async fn get_credentials_from_secret( &self, diff --git a/rust/stackable-cockpit/src/utils/k8s/conditions.rs b/rust/stackable-cockpit/src/utils/k8s/conditions.rs index 82f52118..eb1b0c94 100644 --- a/rust/stackable-cockpit/src/utils/k8s/conditions.rs +++ b/rust/stackable-cockpit/src/utils/k8s/conditions.rs @@ -1,9 +1,11 @@ -use k8s_openapi::{ - api::apps::v1::{DeploymentCondition, StatefulSetCondition}, - apimachinery::pkg::apis::meta::v1::Condition, -}; use serde::Serialize; -use stackable_operator::status::condition::ClusterCondition; +use stackable_operator::{ + k8s_openapi::{ + api::apps::v1::{DeploymentCondition, StatefulSetCondition}, + apimachinery::pkg::apis::meta::v1::Condition, + }, + status::condition::ClusterCondition, +}; #[cfg(feature = "openapi")] use utoipa::ToSchema; diff --git a/rust/stackable-cockpit/src/utils/k8s/labels.rs b/rust/stackable-cockpit/src/utils/k8s/labels.rs index d79c127b..d7db2229 100644 --- a/rust/stackable-cockpit/src/utils/k8s/labels.rs +++ b/rust/stackable-cockpit/src/utils/k8s/labels.rs @@ -1,4 +1,4 @@ -use kube::api::ListParams; +use stackable_operator::kube::api::ListParams; pub enum ProductLabel { Both, diff --git a/rust/stackable-cockpit/src/utils/templating.rs b/rust/stackable-cockpit/src/utils/templating.rs index 1be4436f..b2fa07b1 100644 --- a/rust/stackable-cockpit/src/utils/templating.rs +++ b/rust/stackable-cockpit/src/utils/templating.rs @@ -1,7 +1,7 @@ use std::collections::HashMap; use bcrypt::DEFAULT_COST; -use rand::distributions::{Alphanumeric, DistString}; +use rand::distr::{Alphanumeric, SampleString}; use serde::de::DeserializeOwned; use tera::{Context, Function, Tera, Value}; @@ -12,7 +12,7 @@ use crate::constants::PASSWORD_LENGTH; /// output. Available helper functions are: /// /// - `random_password`: Returns a random password with a relatively secure RNG. -/// See [`rand::thread_rng`] for more information. +/// See [`rand::rng`] for more information. /// - `bcrypt`: Returns the bcyrpt hash of the provided `password` parameter. pub fn render(content: &str, parameters: &HashMap) -> Result { // Create templating context @@ -44,7 +44,7 @@ where fn random_password() -> impl Function { |_args: &HashMap| -> tera::Result { - let password = Alphanumeric.sample_string(&mut rand::thread_rng(), PASSWORD_LENGTH); + let password = Alphanumeric.sample_string(&mut rand::rng(), PASSWORD_LENGTH); Ok(password.into()) } } diff --git a/rust/stackable-cockpitd/Cargo.toml b/rust/stackable-cockpitd/Cargo.toml index 1a079ae0..173649a5 100644 --- a/rust/stackable-cockpitd/Cargo.toml +++ b/rust/stackable-cockpitd/Cargo.toml @@ -22,7 +22,6 @@ axum-extra.workspace = true bcrypt.workspace = true clap.workspace = true futures.workspace = true -k8s-openapi.workspace = true serde.workspace = true snafu.workspace = true tokio.workspace = true diff --git a/rust/stackable-cockpitd/src/handlers/demos.rs b/rust/stackable-cockpitd/src/handlers/demos.rs index e1204539..cf9507ae 100644 --- a/rust/stackable-cockpitd/src/handlers/demos.rs +++ b/rust/stackable-cockpitd/src/handlers/demos.rs @@ -10,7 +10,7 @@ pub fn router() -> Router { /// Retrieves all demos. #[utoipa::path(get, path = "/demos", responses( - (status = 200, description = "Retrieving a list of demos succeeded", body = [DemoSpecV2]), + (status = 200, description = "Retrieving a list of demos succeeded", body = [DemoSpec]), (status = 404, description = "Retrieving a list of demos failed") ))] pub async fn get_demos() -> Json> { @@ -19,7 +19,7 @@ pub async fn get_demos() -> Json> { /// Retrieves one demo identified by `name`. #[utoipa::path(get, path = "/demos/{name}", responses( - (status = 200, description = "Retrieving the demo with 'name' succeeded", body = DemoSpecV2), + (status = 200, description = "Retrieving the demo with 'name' succeeded", body = DemoSpec), (status = 404, description = "Retrieving the demo with 'name' failed") ))] pub async fn get_demo(Path(_name): Path) -> Json { diff --git a/rust/stackablectl/CHANGELOG.md b/rust/stackablectl/CHANGELOG.md index 71f9a1cf..989981b9 100644 --- a/rust/stackablectl/CHANGELOG.md +++ b/rust/stackablectl/CHANGELOG.md @@ -4,6 +4,13 @@ All notable changes to this project will be documented in this file. ## [Unreleased] +### Changed + +- Bump Rust to `1.93.0` as well as dependencies ([#426]). +- Bump Go to `1.26.0` as well as dependencies ([#426]). + +[#426]: https://github.com/stackabletech/stackable-cockpit/pull/426 + ## [1.2.2] - 2025-12-03 ### Added diff --git a/rust/stackablectl/Cargo.toml b/rust/stackablectl/Cargo.toml index fe216fa0..da0e47d7 100644 --- a/rust/stackablectl/Cargo.toml +++ b/rust/stackablectl/Cargo.toml @@ -23,6 +23,7 @@ indexmap.workspace = true lazy_static.workspace = true rand.workspace = true reqwest.workspace = true +rustls.workspace = true semver.workspace = true serde_json.workspace = true serde_yaml.workspace = true diff --git a/rust/stackablectl/src/cmds/debug.rs b/rust/stackablectl/src/cmds/debug.rs index f208eb8c..12e31e2c 100644 --- a/rust/stackablectl/src/cmds/debug.rs +++ b/rust/stackablectl/src/cmds/debug.rs @@ -9,7 +9,7 @@ use futures::{ FutureExt, SinkExt, TryFutureExt, channel::mpsc::{self, Sender}, }; -use rand::Rng; +use rand::RngExt; use snafu::{OptionExt, ResultExt, Snafu, futures::TryFutureExt as _}; use stackable_operator::{ builder::pod::security::SecurityContextBuilder, @@ -283,10 +283,10 @@ impl DebugArgs { } fn generate_debug_container_name() -> String { - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); let mut name = "stackablectl-debug-".to_string(); for _ in 0..5 { - name.push(rng.gen_range('a'..='z')); + name.push(rng.random_range('a'..='z')); } name } diff --git a/rust/stackablectl/src/main.rs b/rust/stackablectl/src/main.rs index db4a576a..f7f80aa3 100644 --- a/rust/stackablectl/src/main.rs +++ b/rust/stackablectl/src/main.rs @@ -21,6 +21,13 @@ async fn main() -> Result<(), Error> { // Parse the CLI args and commands let cli = Cli::parse(); + // As stackable-operator pulls in ring and reqwest >= 0.13 pulls in aws_lc_rs, we need + // to explicitly tell rustls what provider to use. As other operators use ring, we use + // that for consistency reasons here as well. + rustls::crypto::ring::default_provider() + .install_default() + .expect("failed to install ring rustls provider"); + // Construct the tracing subscriber let format = fmt::format() .with_ansi(true) diff --git a/web/build.rs b/web/build.rs index 40145831..7342c6c9 100644 --- a/web/build.rs +++ b/web/build.rs @@ -42,7 +42,7 @@ fn main() { .to_str() .expect("asset filename must be valid UTF-8") .to_string(), - &format!("include_bytes!({asset_file_path:?})"), + format!("include_bytes!({asset_file_path:?})"), ); } write!( diff --git a/web/src/api/schema.d.ts b/web/src/api/schema.d.ts index d3908c02..c3261227 100644 --- a/web/src/api/schema.d.ts +++ b/web/src/api/schema.d.ts @@ -54,7 +54,7 @@ export interface components { manifests?: components["schemas"]["ManifestSpec"][]; /** @description A variable number of supported parameters */ parameters?: components["schemas"]["Parameter"][]; - resourceRequests?: components["schemas"]["ResourceRequests"] | null; + resourceRequests?: null | components["schemas"]["ResourceRequests"]; /** @description The name of the underlying stack */ stackableStack: string; /** @@ -97,7 +97,7 @@ export interface components { description: string; /** @description List of products and their version in this release */ products: { - [key: string]: components["schemas"]["product.ProductSpec"]; + [key: string]: components["schemas"]["ProductSpec"]; }; /** @description Date this released was released */ releaseDate: string; @@ -119,7 +119,7 @@ export interface components { SessionToken: string; Stacklet: { /** @description Multiple cluster conditions. */ - conditions: components["schemas"]["k8s.DisplayCondition"][]; + conditions: components["schemas"]["DisplayCondition"][]; /** * @description Endpoint addresses the product is reachable at. * The key is the service name (e.g. `web-ui`), the value is the URL. @@ -154,7 +154,7 @@ export interface operations { /** @description Retrieving a list of demos succeeded */ 200: { content: { - "application/json": components["schemas"]["DemoSpecV2"][]; + "application/json": components["schemas"]["DemoSpec"][]; }; }; /** @description Retrieving a list of demos failed */ @@ -169,7 +169,7 @@ export interface operations { /** @description Retrieving the demo with 'name' succeeded */ 200: { content: { - "application/json": components["schemas"]["DemoSpecV2"]; + "application/json": components["schemas"]["DemoSpec"]; }; }; /** @description Retrieving the demo with 'name' failed */ From 3bb809c41b8d5cc891ae731d512018b93d0358cd Mon Sep 17 00:00:00 2001 From: Sebastian Bernauer Date: Tue, 10 Mar 2026 12:45:07 +0100 Subject: [PATCH 49/63] =?UTF-8?q?feat:=20Support=20coffee=20operator=20?= =?UTF-8?q?=E2=98=95=20(#427)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: Support coffee operator * Improve error handling and move to coffee mod * Avoid clone * Improve error message --- .../src/platform/operator/mod.rs | 6 +- rust/stackablectl/src/cmds/operator.rs | 59 +++++++++++++++++-- 2 files changed, 60 insertions(+), 5 deletions(-) diff --git a/rust/stackable-cockpit/src/platform/operator/mod.rs b/rust/stackable-cockpit/src/platform/operator/mod.rs index 958b0239..ec377a6f 100644 --- a/rust/stackable-cockpit/src/platform/operator/mod.rs +++ b/rust/stackable-cockpit/src/platform/operator/mod.rs @@ -52,7 +52,11 @@ pub enum SpecParseError { #[snafu(display("empty operator spec input"))] EmptyInput, - #[snafu(display("invalid operator name {name:?}"))] + #[snafu(display( + "invalid operator name {name:?}. \ + It could be the case that this version of stackablectl is too old to know about this particular operator, \ + in which case you should update it." + ))] InvalidName { name: String }, } diff --git a/rust/stackablectl/src/cmds/operator.rs b/rust/stackablectl/src/cmds/operator.rs index 690289b6..37a8c26c 100644 --- a/rust/stackablectl/src/cmds/operator.rs +++ b/rust/stackablectl/src/cmds/operator.rs @@ -101,7 +101,7 @@ Possible valid values are: Use \"stackablectl operator list\" to list available versions for all operators Use \"stackablectl operator describe \" to get available versions for one operator")] - operators: Vec, + operators: Vec, /// Namespace in the cluster used to deploy the operators #[arg(long, default_value = DEFAULT_OPERATOR_NAMESPACE, visible_aliases(["operator-ns"]))] @@ -332,6 +332,24 @@ async fn install_cmd( info!("Installing operator(s)"); Span::current().pb_set_message("Installing operator(s)"); + let operators: Vec<&operator::OperatorSpec> = args + .operators + .iter() + .filter_map(|operator| match operator { + coffee::OperatorOrCoffee::Coffee => { + indicatif_println!("{}", coffee::COFFEE_ASCII_ART); + None + } + coffee::OperatorOrCoffee::Operator(spec) => Some(spec), + }) + .collect(); + + // In case no operators need to be installed (e.g. coffee was already installed), there is no + // need to connect to Kubernetes and potentially produce error messages. + if operators.is_empty() { + return Ok(String::new()); + } + args.local_cluster .install_if_needed() .await @@ -350,7 +368,7 @@ async fn install_cmd( .await .context(LoadOperatorValuesSnafu)?; - for operator in &args.operators { + for operator in &operators { let operator_helm_values = values_for_operator(&operator_values, &operator.name); operator @@ -374,8 +392,8 @@ async fn install_cmd( ) .with_output(format!( "Installed {num_of_operators} {suffix}", - num_of_operators = args.operators.len(), - suffix = if args.operators.len() == 1 { + num_of_operators = operators.len(), + suffix = if operators.len() == 1 { "operator" } else { "operators" @@ -622,3 +640,36 @@ where None => Ok(vec![]), } } + +mod coffee { + use std::str::FromStr; + + pub const COFFEE_ASCII_ART: &str = r#" + ) ) + ( ( + .------. + | |] + \ / + `----' + + Psst... "coffee" is not an operator, but we get it. + Stackable runs on coffee too. Have a great day! ☕ +"#; + + #[derive(Clone, Debug)] + pub enum OperatorOrCoffee { + Operator(super::operator::OperatorSpec), + Coffee, + } + + impl FromStr for OperatorOrCoffee { + type Err = super::operator::SpecParseError; + + fn from_str(s: &str) -> Result { + match s { + "coffee" | "coffe" => Ok(OperatorOrCoffee::Coffee), + _ => s.parse().map(OperatorOrCoffee::Operator), + } + } + } +} From f97fab71972cd661b4ee4eca75c6ffddb6a96f79 Mon Sep 17 00:00:00 2001 From: Nick <10092581+NickLarsenNZ@users.noreply.github.com> Date: Sat, 14 Mar 2026 08:37:14 +0100 Subject: [PATCH 50/63] chore: Pre release maintenance (#430) * chore(nix): niv update * chore(cargo): Add shortcut for stackablectl * chore: Downgrade itertools ``` cargo update -p stackable-operator && make regenerate-nix ``` Trying to get rid of this problem: ``` error: hash mismatch in fixed-output derivation '/nix/store/pxj0czc4m04yswlrbzyhl1sa3ys1zksx-operator-rs-a16cafb.drv': specified: sha256-uP2GHSnjamcyvbV6garMP3WXVBm4vqkF3Rk6SZRjeQY= got: sha256-hmqUfsBYzcnjKJRX1nftgKvXbVU1Gzsy74ZlBb/L1c0= error: Cannot build '/nix/store/lmxxypxlm2icg5pfqa3gxbq3izhp16w3-rust_k8s-version-0.1.3.drv'. Reason: 1 dependency failed. Output paths: /nix/store/k45947bczra1x66f45pir1y7wi83z9zg-rust_k8s-version-0.1.3 /nix/store/q3ib7s2bf28vy8wbwz950ah24vqn8r3b-rust_k8s-version-0.1.3-lib error: Cannot build '/nix/store/9qb0g9pmjk8r6kjq6q7dc0m9rpv27bx9-rust_stackablectl-1.2.2.drv'. Reason: 1 dependency failed. Output paths: /nix/store/crbd5qa5rgh5fyi9qjryvmfy0382vw2p-rust_stackablectl-1.2.2 /nix/store/rwfzrl7hn67xfcrv34g5fshw401iznky-rust_stackablectl-1.2.2-lib ``` * chore: Bump stackable-operator * chore(nix): add crate2nix to the shell so we use the same version * chore(nix): remove crate-hashes and regenerate * chore(nix): Hard-code go version to 1.26 * chore(nix): Formatting * Apply suggestions from code review Co-authored-by: Techassi --------- Co-authored-by: Techassi --- .cargo/config.toml | 1 + .pre-commit-config.yaml | 1 + Cargo.lock | 16 ++--- Cargo.nix | 30 ++++----- Cargo.toml | 2 +- crate-hashes.json | 16 ++--- default.nix | 132 ++++++++++++++++++++++------------------ nix/sources.json | 12 ++-- shell.nix | 47 ++++++++------ 9 files changed, 143 insertions(+), 114 deletions(-) diff --git a/.cargo/config.toml b/.cargo/config.toml index 35049cbc..cb93f952 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -1,2 +1,3 @@ [alias] xtask = "run --package xtask --" +stackablectl = "run --bin stackablectl --" diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 5e878ffb..263ef2bf 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,5 +1,6 @@ --- fail_fast: true +exclude: ^(Cargo\.nix|crate-hashes\.json|nix/.*)$ default_language_version: node: system diff --git a/Cargo.lock b/Cargo.lock index 5d8e3459..f4cb06b5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1942,7 +1942,7 @@ dependencies = [ [[package]] name = "k8s-version" version = "0.1.3" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.107.0#a16cafb151202948e79925a58662b14b8b004cd7" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.108.0#7486017f60827d1d769d7bf17bf56adb21f8bb02" dependencies = [ "darling", "regex", @@ -3602,8 +3602,8 @@ dependencies = [ [[package]] name = "stackable-operator" -version = "0.107.0" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.107.0#a16cafb151202948e79925a58662b14b8b004cd7" +version = "0.108.0" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.108.0#7486017f60827d1d769d7bf17bf56adb21f8bb02" dependencies = [ "clap", "const_format", @@ -3641,7 +3641,7 @@ dependencies = [ [[package]] name = "stackable-operator-derive" version = "0.3.1" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.107.0#a16cafb151202948e79925a58662b14b8b004cd7" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.108.0#7486017f60827d1d769d7bf17bf56adb21f8bb02" dependencies = [ "darling", "proc-macro2", @@ -3652,7 +3652,7 @@ dependencies = [ [[package]] name = "stackable-shared" version = "0.1.0" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.107.0#a16cafb151202948e79925a58662b14b8b004cd7" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.108.0#7486017f60827d1d769d7bf17bf56adb21f8bb02" dependencies = [ "jiff", "k8s-openapi", @@ -3669,7 +3669,7 @@ dependencies = [ [[package]] name = "stackable-telemetry" version = "0.6.2" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.107.0#a16cafb151202948e79925a58662b14b8b004cd7" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.108.0#7486017f60827d1d769d7bf17bf56adb21f8bb02" dependencies = [ "axum", "clap", @@ -3693,7 +3693,7 @@ dependencies = [ [[package]] name = "stackable-versioned" version = "0.8.3" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.107.0#a16cafb151202948e79925a58662b14b8b004cd7" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.108.0#7486017f60827d1d769d7bf17bf56adb21f8bb02" dependencies = [ "schemars", "serde", @@ -3706,7 +3706,7 @@ dependencies = [ [[package]] name = "stackable-versioned-macros" version = "0.8.3" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.107.0#a16cafb151202948e79925a58662b14b8b004cd7" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.108.0#7486017f60827d1d769d7bf17bf56adb21f8bb02" dependencies = [ "convert_case", "convert_case_extras", diff --git a/Cargo.nix b/Cargo.nix index d5a81ad2..4ca624e1 100644 --- a/Cargo.nix +++ b/Cargo.nix @@ -6137,8 +6137,8 @@ rec { workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; - rev = "a16cafb151202948e79925a58662b14b8b004cd7"; - sha256 = "01krcfa4jfhrvl2skgmq35a9fx9zrjm82ymmplr6fsp354fqdzdq"; + rev = "7486017f60827d1d769d7bf17bf56adb21f8bb02"; + sha256 = "1fgc7i8rhq1nl9m4s69sbfiywy2jx4narpynvm3g54vd5yd4c6m2"; }; libName = "k8s_version"; authors = [ @@ -11886,13 +11886,13 @@ rec { }; "stackable-operator" = rec { crateName = "stackable-operator"; - version = "0.107.0"; + version = "0.108.0"; edition = "2024"; workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; - rev = "a16cafb151202948e79925a58662b14b8b004cd7"; - sha256 = "01krcfa4jfhrvl2skgmq35a9fx9zrjm82ymmplr6fsp354fqdzdq"; + rev = "7486017f60827d1d769d7bf17bf56adb21f8bb02"; + sha256 = "1fgc7i8rhq1nl9m4s69sbfiywy2jx4narpynvm3g54vd5yd4c6m2"; }; libName = "stackable_operator"; authors = [ @@ -12058,8 +12058,8 @@ rec { workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; - rev = "a16cafb151202948e79925a58662b14b8b004cd7"; - sha256 = "01krcfa4jfhrvl2skgmq35a9fx9zrjm82ymmplr6fsp354fqdzdq"; + rev = "7486017f60827d1d769d7bf17bf56adb21f8bb02"; + sha256 = "1fgc7i8rhq1nl9m4s69sbfiywy2jx4narpynvm3g54vd5yd4c6m2"; }; procMacro = true; libName = "stackable_operator_derive"; @@ -12093,8 +12093,8 @@ rec { workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; - rev = "a16cafb151202948e79925a58662b14b8b004cd7"; - sha256 = "01krcfa4jfhrvl2skgmq35a9fx9zrjm82ymmplr6fsp354fqdzdq"; + rev = "7486017f60827d1d769d7bf17bf56adb21f8bb02"; + sha256 = "1fgc7i8rhq1nl9m4s69sbfiywy2jx4narpynvm3g54vd5yd4c6m2"; }; libName = "stackable_shared"; authors = [ @@ -12174,8 +12174,8 @@ rec { workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; - rev = "a16cafb151202948e79925a58662b14b8b004cd7"; - sha256 = "01krcfa4jfhrvl2skgmq35a9fx9zrjm82ymmplr6fsp354fqdzdq"; + rev = "7486017f60827d1d769d7bf17bf56adb21f8bb02"; + sha256 = "1fgc7i8rhq1nl9m4s69sbfiywy2jx4narpynvm3g54vd5yd4c6m2"; }; libName = "stackable_telemetry"; authors = [ @@ -12284,8 +12284,8 @@ rec { workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; - rev = "a16cafb151202948e79925a58662b14b8b004cd7"; - sha256 = "01krcfa4jfhrvl2skgmq35a9fx9zrjm82ymmplr6fsp354fqdzdq"; + rev = "7486017f60827d1d769d7bf17bf56adb21f8bb02"; + sha256 = "1fgc7i8rhq1nl9m4s69sbfiywy2jx4narpynvm3g54vd5yd4c6m2"; }; libName = "stackable_versioned"; authors = [ @@ -12328,8 +12328,8 @@ rec { workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; - rev = "a16cafb151202948e79925a58662b14b8b004cd7"; - sha256 = "01krcfa4jfhrvl2skgmq35a9fx9zrjm82ymmplr6fsp354fqdzdq"; + rev = "7486017f60827d1d769d7bf17bf56adb21f8bb02"; + sha256 = "1fgc7i8rhq1nl9m4s69sbfiywy2jx4narpynvm3g54vd5yd4c6m2"; }; procMacro = true; libName = "stackable_versioned_macros"; diff --git a/Cargo.toml b/Cargo.toml index dfbb9ac5..26abd4e3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -49,7 +49,7 @@ serde_json = "1.0" serde_yaml = "0.9" sha2 = "0.10" snafu = { version = "0.9", features = ["futures"] } -stackable-operator = { git = "https://github.com/stackabletech/operator-rs.git", tag = "stackable-operator-0.107.0", default-features = false, features = ["crds", "kube-ws"] } +stackable-operator = { git = "https://github.com/stackabletech/operator-rs.git", tag = "stackable-operator-0.108.0", default-features = false, features = ["crds", "kube-ws"] } tera = "1.20" termion = "4.0" tokio = { version = "1.38", features = ["rt-multi-thread", "macros", "fs", "process", "io-std"] } diff --git a/crate-hashes.json b/crate-hashes.json index 0f91f26f..e1706bc4 100644 --- a/crate-hashes.json +++ b/crate-hashes.json @@ -4,12 +4,12 @@ "git+https://github.com/kube-rs/kube-rs?rev=fe69cc486ff8e62a7da61d64ec3ebbd9e64c43b5#kube-derive@3.0.1": "1irm4g79crlxjm3iqrgvx0f6wxdcj394ky84q89pk9i36y2mlw3n", "git+https://github.com/kube-rs/kube-rs?rev=fe69cc486ff8e62a7da61d64ec3ebbd9e64c43b5#kube-runtime@3.0.1": "1irm4g79crlxjm3iqrgvx0f6wxdcj394ky84q89pk9i36y2mlw3n", "git+https://github.com/kube-rs/kube-rs?rev=fe69cc486ff8e62a7da61d64ec3ebbd9e64c43b5#kube@3.0.1": "1irm4g79crlxjm3iqrgvx0f6wxdcj394ky84q89pk9i36y2mlw3n", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.107.0#k8s-version@0.1.3": "01krcfa4jfhrvl2skgmq35a9fx9zrjm82ymmplr6fsp354fqdzdq", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.107.0#stackable-operator-derive@0.3.1": "01krcfa4jfhrvl2skgmq35a9fx9zrjm82ymmplr6fsp354fqdzdq", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.107.0#stackable-operator@0.107.0": "01krcfa4jfhrvl2skgmq35a9fx9zrjm82ymmplr6fsp354fqdzdq", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.107.0#stackable-shared@0.1.0": "01krcfa4jfhrvl2skgmq35a9fx9zrjm82ymmplr6fsp354fqdzdq", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.107.0#stackable-telemetry@0.6.2": "01krcfa4jfhrvl2skgmq35a9fx9zrjm82ymmplr6fsp354fqdzdq", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.107.0#stackable-versioned-macros@0.8.3": "01krcfa4jfhrvl2skgmq35a9fx9zrjm82ymmplr6fsp354fqdzdq", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.107.0#stackable-versioned@0.8.3": "01krcfa4jfhrvl2skgmq35a9fx9zrjm82ymmplr6fsp354fqdzdq", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.108.0#k8s-version@0.1.3": "1fgc7i8rhq1nl9m4s69sbfiywy2jx4narpynvm3g54vd5yd4c6m2", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.108.0#stackable-operator-derive@0.3.1": "1fgc7i8rhq1nl9m4s69sbfiywy2jx4narpynvm3g54vd5yd4c6m2", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.108.0#stackable-operator@0.108.0": "1fgc7i8rhq1nl9m4s69sbfiywy2jx4narpynvm3g54vd5yd4c6m2", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.108.0#stackable-shared@0.1.0": "1fgc7i8rhq1nl9m4s69sbfiywy2jx4narpynvm3g54vd5yd4c6m2", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.108.0#stackable-telemetry@0.6.2": "1fgc7i8rhq1nl9m4s69sbfiywy2jx4narpynvm3g54vd5yd4c6m2", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.108.0#stackable-versioned-macros@0.8.3": "1fgc7i8rhq1nl9m4s69sbfiywy2jx4narpynvm3g54vd5yd4c6m2", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.108.0#stackable-versioned@0.8.3": "1fgc7i8rhq1nl9m4s69sbfiywy2jx4narpynvm3g54vd5yd4c6m2", "git+https://github.com/stackabletech/product-config.git?tag=0.8.0#product-config@0.8.0": "1dz70kapm2wdqcr7ndyjji0lhsl98bsq95gnb2lw487wf6yr7987" -} +} \ No newline at end of file diff --git a/default.nix b/default.nix index e7698123..b8823184 100644 --- a/default.nix +++ b/default.nix @@ -1,22 +1,25 @@ -{ sources ? import ./nix/sources.nix # managed by https://github.com/nmattia/niv -, nixpkgs ? sources.nixpkgs -, pkgs ? import nixpkgs { +{ + sources ? import ./nix/sources.nix, # managed by https://github.com/nmattia/niv + nixpkgs ? sources.nixpkgs, + pkgs ? import nixpkgs { overlays = [ # gomod2nix must be imported as a nixpkgs overlay - (import (sources.gomod2nix+"/overlay.nix")) + (import (sources.gomod2nix + "/overlay.nix")) ]; -} -, release ? true -, cargo ? import ./Cargo.nix { + }, + release ? true, + cargo ? import ./Cargo.nix { inherit nixpkgs pkgs release; defaultCrateOverrides = pkgs.defaultCrateOverrides // { stackable-cockpit-web = attrs: { - nativeBuildInputs = [ pkgs.nodePackages.yarn pkgs.nodejs_20 ]; - preConfigure = - '' - [[ ! -e node_modules ]] || rm -r node_modules - ln -s ${web.nodeModules} node_modules - ''; + nativeBuildInputs = [ + pkgs.nodePackages.yarn + pkgs.nodejs_20 + ]; + preConfigure = '' + [[ ! -e node_modules ]] || rm -r node_modules + ln -s ${web.nodeModules} node_modules + ''; }; helm-sys = attrs: { GO_HELM_WRAPPER = goHelmWrapper + "/bin"; @@ -26,17 +29,19 @@ utoipa-swagger-ui = attrs: rec { # utoipa-swagger-ui tries to redownload swagger-ui, which is blocked by Nix's sandboxing # so we download it instead, and tell it to use that - SWAGGER_UI_DOWNLOAD_URL = "file://${pkgs.fetchurl { - url = "https://github.com/swagger-api/swagger-ui/archive/refs/tags/v5.17.3.zip"; - hash = "sha256-zrb8feuuDzt/g6y7Tucfh+Y2BWZov0soyNPR5LBqKx4="; - }}"; + SWAGGER_UI_DOWNLOAD_URL = "file://${ + pkgs.fetchurl { + url = "https://github.com/swagger-api/swagger-ui/archive/refs/tags/v5.17.3.zip"; + hash = "sha256-zrb8feuuDzt/g6y7Tucfh+Y2BWZov0soyNPR5LBqKx4="; + } + }"; }; }; - } -, meta ? pkgs.lib.importJSON ./nix/meta.json -, dockerName ? "oci.stackable.tech/sandbox/${meta.operator.name}" -, dockerTag ? null -, web ? js2nix.buildEnv { + }, + meta ? pkgs.lib.importJSON ./nix/meta.json, + dockerName ? "oci.stackable.tech/sandbox/${meta.operator.name}", + dockerTag ? null, + web ? js2nix.buildEnv { # js2nix doesn't import peer dependencies, so we use overlays to patch them in explicitly # https://github.com/canva-public/js2nix/blob/d37912f6cc824e7f41bea7a481af1739ca195c8f/docs/usage.md#overriding package-json = ./web/package.json; @@ -44,41 +49,46 @@ overlays = [ (self: super: { # TODO: remove once this https://github.com/canva-public/js2nix/issues/20 is resolved - buildNodeModule = pkgs.lib.makeOverridable - (args: (super.buildNodeModule args).override { doCheck = false; }); + buildNodeModule = pkgs.lib.makeOverridable ( + args: (super.buildNodeModule args).override { doCheck = false; } + ); }) ]; - } -, goHelmWrapper ? pkgs.buildGoApplication { + }, + goHelmWrapper ? pkgs.buildGoApplication { + go = pkgs.go_1_26; pname = "go-helm-wrapper"; version = "0.0"; - src = pkgs.runCommand "go-helm-wrapper-src" {} - '' - mkdir $out - cp ${./go.mod} $out/go.mod - cp ${./go.sum} $out/go.sum - cp -r ${./rust/helm-sys/go-helm-wrapper} $out/go-helm-wrapper - ''; + src = pkgs.runCommand "go-helm-wrapper-src" { } '' + mkdir $out + cp ${./go.mod} $out/go.mod + cp ${./go.sum} $out/go.sum + cp -r ${./rust/helm-sys/go-helm-wrapper} $out/go-helm-wrapper + ''; pwd = ./rust/helm-sys/go-helm-wrapper; modules = ./gomod2nix.toml; ldflags = "-buildmode c-archive"; allowGoReference = true; - postBuild = - '' - for pkg in $(getGoDirs ""); do - buildFlags="-buildmode c-archive -o $GOPATH/bin/libgo-helm-wrapper.a" buildGoDir build "$pkg" - done - ''; - } -, js2nix ? pkgs.callPackage sources.js2nix { nodejs = pkgs.nodejs_20; } -, gomod2nix ? pkgs.callPackage sources.gomod2nix {} + postBuild = '' + for pkg in $(getGoDirs ""); do + buildFlags="-buildmode c-archive -o $GOPATH/bin/libgo-helm-wrapper.a" buildGoDir build "$pkg" + done + ''; + }, + js2nix ? pkgs.callPackage sources.js2nix { nodejs = pkgs.nodejs_20; }, + gomod2nix ? pkgs.callPackage sources.gomod2nix { }, }: rec { - inherit cargo sources pkgs meta; + inherit + cargo + sources + pkgs + meta + ; build = cargo.workspaceMembers.stackable-cockpitd.build.override { features = [ "ui" ]; }; - entrypoint = build+"/bin/stackable-cockpitd"; + entrypoint = build + "/bin/stackable-cockpitd"; # crds = pkgs.runCommand "${meta.operator.name}-crds.yaml" {} # '' # ${entrypoint} crd > $out @@ -89,7 +99,9 @@ rec { tag = dockerTag; contents = [ # Common debugging tools - pkgs.bashInteractive pkgs.coreutils pkgs.util-linuxMinimal + pkgs.bashInteractive + pkgs.coreutils + pkgs.util-linuxMinimal # Kerberos 5 must be installed globally to load plugins correctly pkgs.krb5 # Make the whole cargo workspace available on $PATH @@ -101,9 +113,14 @@ rec { fileRefVars = { PRODUCT_CONFIG = deploy/config-spec/properties.yaml; }; - in pkgs.lib.concatLists (pkgs.lib.mapAttrsToList (env: path: pkgs.lib.optional (pkgs.lib.pathExists path) "${env}=${path}") fileRefVars); + in + pkgs.lib.concatLists ( + pkgs.lib.mapAttrsToList ( + env: path: pkgs.lib.optional (pkgs.lib.pathExists path) "${env}=${path}" + ) fileRefVars + ); Entrypoint = [ entrypoint ]; - Cmd = []; + Cmd = [ ]; }; }; docker = pkgs.linkFarm "stackable-cockpit-docker" [ @@ -130,18 +147,15 @@ rec { ]; # need to use vendored crate2nix because of https://github.com/kolloch/crate2nix/issues/264 - crate2nix = import sources.crate2nix {}; + crate2nix = import sources.crate2nix { }; tilt = pkgs.tilt; - - - regenerateNixLockfiles = pkgs.writeScriptBin "regenerate-nix-lockfiles" - '' - #!/usr/bin/env bash - set -euo pipefail - echo Running crate2nix - ${crate2nix}/bin/crate2nix generate - echo Running gomod2nix - ${gomod2nix}/bin/gomod2nix - ''; + regenerateNixLockfiles = pkgs.writeScriptBin "regenerate-nix-lockfiles" '' + #!/usr/bin/env bash + set -euo pipefail + echo Running crate2nix + ${crate2nix}/bin/crate2nix generate + echo Running gomod2nix + ${gomod2nix}/bin/gomod2nix + ''; } diff --git a/nix/sources.json b/nix/sources.json index c1da1f6a..9bff9ae9 100644 --- a/nix/sources.json +++ b/nix/sources.json @@ -5,10 +5,10 @@ "homepage": "", "owner": "kolloch", "repo": "crate2nix", - "rev": "26b698e804dd32dc5bb1995028fef00cc87d603a", - "sha256": "13jgy25yjd1m42xam6zri8vwx0n2qbwvpad2cmkhkrlx913n79ni", + "rev": "2114b4c51ab70739e41265ecca709f73b12d06b5", + "sha256": "0snavss5h7nzkmsw4l1ajf66l11cn5sxqr2mcyvp2znkxi69z85x", "type": "tarball", - "url": "https://github.com/kolloch/crate2nix/archive/26b698e804dd32dc5bb1995028fef00cc87d603a.tar.gz", + "url": "https://github.com/kolloch/crate2nix/archive/2114b4c51ab70739e41265ecca709f73b12d06b5.tar.gz", "url_template": "https://github.com///archive/.tar.gz" }, "gomod2nix": { @@ -42,10 +42,10 @@ "homepage": "", "owner": "NixOS", "repo": "nixpkgs", - "rev": "400de68cd101e8cfebffea121397683caf7f5a34", - "sha256": "10a8ry1cjcphydsskcxya7kdlvzlr9nlw6gk0303d5qwrdy6bfgr", + "rev": "75690239f08f885ca9b0267580101f60d10fbe62", + "sha256": "0cki1jyqh8fbwm0c7wbyc3yq2q80218bsq17ycrrnvh0jl9dcbaz", "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/400de68cd101e8cfebffea121397683caf7f5a34.tar.gz", + "url": "https://github.com/NixOS/nixpkgs/archive/75690239f08f885ca9b0267580101f60d10fbe62.tar.gz", "url_template": "https://github.com///archive/.tar.gz" } } diff --git a/shell.nix b/shell.nix index 6c942812..9ddaba37 100644 --- a/shell.nix +++ b/shell.nix @@ -1,10 +1,20 @@ let - self = import ./. {}; + self = import ./. { }; inherit (self) sources pkgs meta; - cargoDependencySetOfCrate = crate: [ crate ] ++ pkgs.lib.concatMap cargoDependencySetOfCrate (crate.dependencies ++ crate.buildDependencies); - cargoDependencySet = pkgs.lib.unique (pkgs.lib.flatten (pkgs.lib.mapAttrsToList (crateName: crate: cargoDependencySetOfCrate crate.build) self.cargo.workspaceMembers)); -in pkgs.mkShell rec { + cargoDependencySetOfCrate = + crate: + [ crate ] + ++ pkgs.lib.concatMap cargoDependencySetOfCrate (crate.dependencies ++ crate.buildDependencies); + cargoDependencySet = pkgs.lib.unique ( + pkgs.lib.flatten ( + pkgs.lib.mapAttrsToList ( + crateName: crate: cargoDependencySetOfCrate crate.build + ) self.cargo.workspaceMembers + ) + ); +in +pkgs.mkShell rec { name = meta.operator.name; packages = with pkgs; [ @@ -16,25 +26,28 @@ in pkgs.mkShell rec { ## to ensure all the dependencies are caught. # cacert # vim nvim nano + crate2nix ]; # derivation runtime dependencies buildInputs = pkgs.lib.concatMap (crate: crate.buildInputs) cargoDependencySet; # build time dependencies - nativeBuildInputs = pkgs.lib.concatMap (crate: crate.nativeBuildInputs) cargoDependencySet ++ (with pkgs; [ - clang - git - # Replace llvmPackages with llvmPackages_X, where X is the latest LLVM version (at the time of writing, 16) - llvmPackages.bintools - rustup - - # additions for this repo - yarn - typescript - vite - go - ]); + nativeBuildInputs = + pkgs.lib.concatMap (crate: crate.nativeBuildInputs) cargoDependencySet + ++ (with pkgs; [ + clang + git + # Replace llvmPackages with llvmPackages_X, where X is the latest LLVM version (at the time of writing, 16) + llvmPackages.bintools + rustup + + # additions for this repo + yarn + typescript + vite + go + ]); LIBCLANG_PATH = "${pkgs.libclang.lib}/lib"; BINDGEN_EXTRA_CLANG_ARGS = "-I${pkgs.glibc.dev}/include -I${pkgs.clang}/resource-root/include"; From 944fa475f49fe146ad718490265a5798710c38d7 Mon Sep 17 00:00:00 2001 From: Techassi Date: Mon, 16 Mar 2026 09:33:50 +0100 Subject: [PATCH 51/63] chore(stackablectl): Release 1.3.0 (#431) * chore: Bump stackablectl to 1.3.0 * chore: Update changelog * chore: Add release instructions * chore: Update release date --- Cargo.lock | 2 +- Cargo.nix | 2 +- extra/man/stackablectl.1 | 4 ++-- rust/stackablectl/CHANGELOG.md | 12 ++++++++++++ rust/stackablectl/Cargo.toml | 2 +- rust/stackablectl/RELEASE.md | 15 +++++++++++++++ 6 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 rust/stackablectl/RELEASE.md diff --git a/Cargo.lock b/Cargo.lock index f4cb06b5..26bdbd3d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3723,7 +3723,7 @@ dependencies = [ [[package]] name = "stackablectl" -version = "1.2.2" +version = "1.3.0" dependencies = [ "built", "clap", diff --git a/Cargo.nix b/Cargo.nix index 4ca624e1..7d3e8250 100644 --- a/Cargo.nix +++ b/Cargo.nix @@ -12391,7 +12391,7 @@ rec { }; "stackablectl" = rec { crateName = "stackablectl"; - version = "1.2.2"; + version = "1.3.0"; edition = "2021"; crateBin = [ { diff --git a/extra/man/stackablectl.1 b/extra/man/stackablectl.1 index a16b5858..110babb2 100644 --- a/extra/man/stackablectl.1 +++ b/extra/man/stackablectl.1 @@ -1,6 +1,6 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' -.TH stackablectl 1 "stackablectl 1.2.2" +.TH stackablectl 1 "stackablectl 1.3.0" .SH NAME stackablectl \- Command line tool to interact with the Stackable Data Platform .SH SYNOPSIS @@ -150,6 +150,6 @@ Retrieve version data of the stackablectl installation stackablectl\-help(1) Print this message or the help of the given subcommand(s) .SH VERSION -v1.2.2 +v1.3.0 .SH AUTHORS Stackable GmbH diff --git a/rust/stackablectl/CHANGELOG.md b/rust/stackablectl/CHANGELOG.md index 989981b9..a1e2ad53 100644 --- a/rust/stackablectl/CHANGELOG.md +++ b/rust/stackablectl/CHANGELOG.md @@ -4,12 +4,24 @@ All notable changes to this project will be documented in this file. ## [Unreleased] +## [1.3.0] - 2026-03-16 + +### Added + +- Allow specifying Helm values for operator installations ([#425]). + ### Changed - Bump Rust to `1.93.0` as well as dependencies ([#426]). - Bump Go to `1.26.0` as well as dependencies ([#426]). +### Miscellaneous + +- Publish SBOM alongside artifacts ([#428]). + +[#425]: https://github.com/stackabletech/stackable-cockpit/pull/425 [#426]: https://github.com/stackabletech/stackable-cockpit/pull/426 +[#428]: https://github.com/stackabletech/stackable-cockpit/pull/428 ## [1.2.2] - 2025-12-03 diff --git a/rust/stackablectl/Cargo.toml b/rust/stackablectl/Cargo.toml index da0e47d7..f45f1fe6 100644 --- a/rust/stackablectl/Cargo.toml +++ b/rust/stackablectl/Cargo.toml @@ -2,7 +2,7 @@ name = "stackablectl" description = "Command line tool to interact with the Stackable Data Platform" # See /Cargo.toml -version = "1.2.2" +version = "1.3.0" authors.workspace = true license.workspace = true edition.workspace = true diff --git a/rust/stackablectl/RELEASE.md b/rust/stackablectl/RELEASE.md new file mode 100644 index 00000000..da5dcd70 --- /dev/null +++ b/rust/stackablectl/RELEASE.md @@ -0,0 +1,15 @@ +# Release Process + +The release of `stackablectl` is currently mostly done manually. This means the following steps need +to be done: + +1. Ensure your local `main` branch is up-to-date and then proceed to checkout a new branch using + `git checkout -b chore/release-stackablectl-X.Y.Z`. +2. Update both the Cargo.toml and CHANGELOG.md file to the new version `X.Y.Z`. +3. Update various files by running the following xtask `cargo xtask gen-man` and + `make regenerate-nix`. This is also automatically done if pre-commit is enabled. +4. Push the changes and raise a PR. +5. Merge the PR onto `main` and then proceed to tag the appropriate commit using + `git tag -s stackablectl-Y.Y.Z -m stackablectl-Y.Y.Z`. +6. Building the artifacts and creating the release on GitHub is fully automated from this point + onward. From 2a9d9d500d05509eb47c939f6677569e7ac42576 Mon Sep 17 00:00:00 2001 From: Sebastian Bernauer Date: Wed, 18 Mar 2026 13:17:57 +0100 Subject: [PATCH 52/63] feat: Add `STACK` and `DEMO` templating parameters (#432) * feat: Add `STACK` and `DEMO` templating parameters Co-authored-by: Xenia Fischer * changelog * clippy * Consitently list stack before demo --- README.md | 8 ++++++++ rust/stackable-cockpit/src/platform/demo/params.rs | 6 ++++++ rust/stackable-cockpit/src/platform/demo/spec.rs | 6 ++++-- rust/stackable-cockpit/src/platform/manifests.rs | 12 +++++++++--- rust/stackable-cockpit/src/platform/stack/params.rs | 6 +++++- rust/stackable-cockpit/src/platform/stack/spec.rs | 2 ++ rust/stackablectl/CHANGELOG.md | 6 ++++++ rust/stackablectl/src/cmds/demo.rs | 2 ++ rust/stackablectl/src/cmds/stack.rs | 5 +++-- 9 files changed, 45 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 688e4083..c003321a 100644 --- a/README.md +++ b/README.md @@ -77,3 +77,11 @@ hooks are: [pre-commit]: https://pre-commit.com/ [web-readme]: ./web/README.md [lib-readme]: ./rust/stackable-cockpit/README.md + +### Templating variables + +| Variable | Availability | Content | +| ----------- | --------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | +| `NAMESPACE` | Always | The namespace where the stack and demo (not the operators!) are deployed into | +| `STACK` | Always (both in stack and demo manifests) | The name of the stack | +| `DEMO` | In demos manifests: Always
In stack manifests: Only when deployed as part of a demo! | The name of the demo | diff --git a/rust/stackable-cockpit/src/platform/demo/params.rs b/rust/stackable-cockpit/src/platform/demo/params.rs index 84f54d2b..3f1486ac 100644 --- a/rust/stackable-cockpit/src/platform/demo/params.rs +++ b/rust/stackable-cockpit/src/platform/demo/params.rs @@ -4,6 +4,12 @@ use stackable_operator::kvp::Labels; use crate::platform::operator::ChartSourceType; pub struct DemoInstallParameters { + /// Name of the stack, which is always present, as a demo builds on top of a stack + pub stack_name: String, + + /// Name of the demo, which is always present + pub demo_name: String, + pub operator_namespace: String, pub demo_namespace: String, diff --git a/rust/stackable-cockpit/src/platform/demo/spec.rs b/rust/stackable-cockpit/src/platform/demo/spec.rs index 96107d49..bce047dc 100644 --- a/rust/stackable-cockpit/src/platform/demo/spec.rs +++ b/rust/stackable-cockpit/src/platform/demo/spec.rs @@ -153,13 +153,13 @@ impl DemoSpec { .await?; let stack_install_parameters = StackInstallParameters { + stack_name: self.stack.clone(), + demo_name: Some(install_parameters.demo_name.clone()), operator_namespace: install_parameters.operator_namespace.clone(), stack_namespace: install_parameters.demo_namespace.clone(), parameters: install_parameters.stack_parameters.clone(), labels: install_parameters.stack_labels.clone(), skip_release: install_parameters.skip_release, - stack_name: self.stack.clone(), - demo_name: None, chart_source: install_parameters.chart_source.clone(), operator_values: install_parameters.operator_values.clone(), }; @@ -204,6 +204,8 @@ impl DemoSpec { &self.manifests, ¶ms, &install_params.demo_namespace, + &install_params.stack_name, + Some(&install_params.demo_name), install_params.labels, client, transfer_client, diff --git a/rust/stackable-cockpit/src/platform/manifests.rs b/rust/stackable-cockpit/src/platform/manifests.rs index 15fcf306..56181dde 100644 --- a/rust/stackable-cockpit/src/platform/manifests.rs +++ b/rust/stackable-cockpit/src/platform/manifests.rs @@ -65,11 +65,13 @@ pub enum Error { pub trait InstallManifestsExt { // TODO (Techassi): This step shouldn't care about templating the manifests nor fetching them from remote #[instrument(skip_all, fields(%namespace, indicatif.pb_show = true))] - #[allow(async_fn_in_trait)] + #[allow(clippy::too_many_arguments, async_fn_in_trait)] async fn install_manifests( manifests: &[ManifestSpec], parameters: &HashMap, namespace: &str, + stack_name: &str, + demo_name: Option<&str>, labels: Labels, client: &Client, transfer_client: &xfer::Client, @@ -80,9 +82,13 @@ pub trait InstallManifestsExt { Span::current().pb_set_length(manifests.len() as u64); let mut parameters = parameters.clone(); - // We add the NAMESPACE parameter, so that stacks/demos can use that to render e.g. the - // fqdn service names [which contain the namespace]. + // We need some additional templating capabilities, e.g. the namespace, so that stacks/demos + // can use that to render e.g. the fqdn service names [which contain the namespace]. parameters.insert("NAMESPACE".to_owned(), namespace.to_owned()); + parameters.insert("STACK".to_owned(), stack_name.into()); + if let Some(demo_name) = demo_name { + parameters.insert("DEMO".to_owned(), demo_name.into()); + } for manifest in manifests { let parameters = parameters.clone(); diff --git a/rust/stackable-cockpit/src/platform/stack/params.rs b/rust/stackable-cockpit/src/platform/stack/params.rs index 0688eba2..b3cf9717 100644 --- a/rust/stackable-cockpit/src/platform/stack/params.rs +++ b/rust/stackable-cockpit/src/platform/stack/params.rs @@ -5,9 +5,13 @@ use crate::platform::operator::ChartSourceType; #[derive(Debug)] pub struct StackInstallParameters { - pub demo_name: Option, + /// Name of the stack, which is always present pub stack_name: String, + /// Optional name of the demo, which is only present in case this stack is installed as part of + /// a demo. This is unset in case a stack is installed directly. + pub demo_name: Option, + pub operator_namespace: String, pub stack_namespace: String, diff --git a/rust/stackable-cockpit/src/platform/stack/spec.rs b/rust/stackable-cockpit/src/platform/stack/spec.rs index 2bb39d62..58ace389 100644 --- a/rust/stackable-cockpit/src/platform/stack/spec.rs +++ b/rust/stackable-cockpit/src/platform/stack/spec.rs @@ -249,6 +249,8 @@ impl StackSpec { &self.manifests, ¶meters, &install_params.stack_namespace, + &install_params.stack_name, + install_params.demo_name.as_deref(), install_params.labels, client, transfer_client, diff --git a/rust/stackablectl/CHANGELOG.md b/rust/stackablectl/CHANGELOG.md index a1e2ad53..2ff5a338 100644 --- a/rust/stackablectl/CHANGELOG.md +++ b/rust/stackablectl/CHANGELOG.md @@ -4,6 +4,12 @@ All notable changes to this project will be documented in this file. ## [Unreleased] +### Added + +- Add `STACK` and `DEMO` templating parameters. Have a look at the README for details ([#432]). + +[#432]: https://github.com/stackabletech/stackable-cockpit/pull/432 + ## [1.3.0] - 2026-03-16 ### Added diff --git a/rust/stackablectl/src/cmds/demo.rs b/rust/stackablectl/src/cmds/demo.rs index 251a94fe..4980ff30 100644 --- a/rust/stackablectl/src/cmds/demo.rs +++ b/rust/stackablectl/src/cmds/demo.rs @@ -388,6 +388,8 @@ async fn install_cmd( .context(LoadOperatorValuesSnafu)?; let install_parameters = DemoInstallParameters { + stack_name: demo.stack.clone(), + demo_name: args.demo_name.clone(), operator_namespace: args.namespaces.operator_namespace.clone(), demo_namespace: args.namespaces.namespace.clone(), stack_parameters: args.stack_parameters.clone(), diff --git a/rust/stackablectl/src/cmds/stack.rs b/rust/stackablectl/src/cmds/stack.rs index f4045f9a..490d74e0 100644 --- a/rust/stackablectl/src/cmds/stack.rs +++ b/rust/stackablectl/src/cmds/stack.rs @@ -359,12 +359,13 @@ async fn install_cmd( .context(LoadOperatorValuesSnafu)?; let install_parameters = StackInstallParameters { + stack_name: args.stack_name.clone(), + // There is no demo when installing only a stack + demo_name: None, operator_namespace: args.namespaces.operator_namespace.clone(), stack_namespace: args.namespaces.namespace.clone(), - stack_name: args.stack_name.clone(), parameters: args.parameters.clone(), skip_release: args.skip_release, - demo_name: None, labels, chart_source: ChartSourceType::from(cli.chart_type()), operator_values, From 32cf8475a73b2daff38c3af48bcff3f7c9ac141b Mon Sep 17 00:00:00 2001 From: Sebastian Bernauer Date: Wed, 18 Mar 2026 13:47:50 +0100 Subject: [PATCH 53/63] chore(stackablectl): Release 1.4.0 (#433) --- Cargo.lock | 111 +++++++++++++------------ Cargo.nix | 145 ++++++++++++++++----------------- extra/man/stackablectl.1 | 14 +++- rust/stackablectl/CHANGELOG.md | 4 +- rust/stackablectl/Cargo.toml | 2 +- 5 files changed, 142 insertions(+), 134 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 26bdbd3d..73ba5ed3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -66,9 +66,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.21" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" +checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" dependencies = [ "anstyle", "anstyle-parse", @@ -81,15 +81,15 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" +checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" [[package]] name = "anstyle-parse" -version = "0.2.7" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" +checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" dependencies = [ "utf8parse", ] @@ -414,9 +414,9 @@ checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" [[package]] name = "cc" -version = "1.2.56" +version = "1.2.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" +checksum = "7a0dd1ca384932ff3641c8718a02769f1698e7563dc6974ffd03346116310423" dependencies = [ "find-msvc-tools", "jobserver", @@ -518,9 +518,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.60" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2797f34da339ce31042b27d23607e051786132987f595b02ba4f6a6dffb7030a" +checksum = "b193af5b67834b676abd72466a96c1024e6a6ad978a1f484bd90b85c94041351" dependencies = [ "clap_builder", "clap_derive", @@ -528,9 +528,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.60" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24a241312cea5059b13574bb9b3861cabf758b879c15190b37b6d6fd63ab6876" +checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" dependencies = [ "anstream", "anstyle", @@ -540,18 +540,18 @@ dependencies = [ [[package]] name = "clap_complete" -version = "4.5.66" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c757a3b7e39161a4e56f9365141ada2a6c915a8622c408ab6bb4b5d047371031" +checksum = "19c9f1dde76b736e3681f28cec9d5a61299cbaae0fce80a68e43724ad56031eb" dependencies = [ "clap", ] [[package]] name = "clap_complete_nushell" -version = "4.5.10" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "685bc86fd34b7467e0532a4f8435ab107960d69a243785ef0275e571b35b641a" +checksum = "fbb9e9715d29a754b468591be588f6b926f5b0a1eb6a8b62acabeb66ff84d897" dependencies = [ "clap", "clap_complete", @@ -559,9 +559,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.55" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a92793da1a46a5f2a02a6f4c46c6496b28c43638adea8306fcb0caa1634f24e5" +checksum = "1110bd8a634a1ab8cb04345d8d878267d57c3cf1b38d91b71af6686408bbca6a" dependencies = [ "heck", "proc-macro2", @@ -571,15 +571,15 @@ dependencies = [ [[package]] name = "clap_lex" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a822ea5bc7590f9d40f1ba12c0dc3c2760f3482c6984db1573ad11031420831" +checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" [[package]] name = "clap_mangen" -version = "0.2.31" +version = "0.2.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439ea63a92086df93893164221ad4f24142086d535b3a0957b9b9bea2dc86301" +checksum = "7e30ffc187e2e3aeafcd1c6e2aa416e29739454c0ccaa419226d5ecd181f2d78" dependencies = [ "clap", "roff", @@ -596,9 +596,9 @@ dependencies = [ [[package]] name = "colorchoice" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" +checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" [[package]] name = "combine" @@ -634,13 +634,12 @@ dependencies = [ [[package]] name = "console" -version = "0.16.2" +version = "0.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03e45a4a8926227e4197636ba97a9fc9b00477e9f4bd711395687c5f0734bec4" +checksum = "d64e8af5551369d19cf50138de61f1c42074ab970f74e99be916646777f8fc87" dependencies = [ "encode_unicode", "libc", - "once_cell", "unicode-width", "windows-sys 0.61.2", ] @@ -2241,9 +2240,9 @@ checksum = "6aa2c4e539b869820a2b82e1aef6ff40aa85e65decdd5185e83fb4b1249cd00f" [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "once_cell_polyfill" @@ -2580,9 +2579,9 @@ checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" [[package]] name = "portable-atomic-util" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a9db96d7fa8782dd8c15ce32ffe8680bbd1e978a43bf51a34d39483540495f5" +checksum = "091397be61a01d4be58e7841595bd4bfedb15f1cd54977d79b8271e94ed799a3" dependencies = [ "portable-atomic", ] @@ -2993,9 +2992,9 @@ dependencies = [ [[package]] name = "roff" -version = "0.2.2" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88f8660c1ff60292143c98d08fc6e2f654d722db50410e3f3797d40baaf9d8f3" +checksum = "dbf2048e0e979efb2ca7b91c4f1a8d77c91853e9b987c94c555668a8994915ad" [[package]] name = "rstest" @@ -3188,9 +3187,9 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.28" +version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" +checksum = "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939" dependencies = [ "windows-sys 0.61.2", ] @@ -3723,7 +3722,7 @@ dependencies = [ [[package]] name = "stackablectl" -version = "1.3.0" +version = "1.4.0" dependencies = [ "built", "clap", @@ -3956,9 +3955,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" +checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" dependencies = [ "tinyvec_macros", ] @@ -4045,9 +4044,9 @@ dependencies = [ [[package]] name = "toml" -version = "1.0.6+spec-1.1.0" +version = "1.0.7+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "399b1124a3c9e16766831c6bba21e50192572cdd98706ea114f9502509686ffc" +checksum = "dd28d57d8a6f6e458bc0b8784f8fdcc4b99a437936056fa122cb234f18656a96" dependencies = [ "indexmap", "serde_core", @@ -4060,18 +4059,18 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "1.0.0+spec-1.1.0" +version = "1.0.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32c2555c699578a4f59f0cc68e5116c8d7cabbd45e1409b989d4be085b53f13e" +checksum = "9b320e741db58cac564e26c607d3cc1fdc4a88fd36c879568c07856ed83ff3e9" dependencies = [ "serde_core", ] [[package]] name = "toml_edit" -version = "0.25.4+spec-1.1.0" +version = "0.25.5+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7193cbd0ce53dc966037f54351dbbcf0d5a642c7f0038c382ef9e677ce8c13f2" +checksum = "8ca1a40644a28bce036923f6a431df0b34236949d111cc07cb6dca830c9ef2e1" dependencies = [ "indexmap", "toml_datetime", @@ -4081,18 +4080,18 @@ dependencies = [ [[package]] name = "toml_parser" -version = "1.0.9+spec-1.1.0" +version = "1.0.10+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" +checksum = "7df25b4befd31c4816df190124375d5a20c6b6921e2cad937316de3fccd63420" dependencies = [ "winnow", ] [[package]] name = "toml_writer" -version = "1.0.6+spec-1.1.0" +version = "1.0.7+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" +checksum = "f17aaa1c6e3dc22b1da4b6bba97d066e354c7945cac2f7852d4e4e7ca7a6b56d" [[package]] name = "tonic" @@ -4280,9 +4279,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.22" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e" +checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" dependencies = [ "matchers", "nu-ansi-term", @@ -5002,9 +5001,9 @@ checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] name = "winnow" -version = "0.7.15" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" +checksum = "a90e88e4667264a994d34e6d1ab2d26d398dcdca8b7f52bec8668957517fc7d8" dependencies = [ "memchr", ] @@ -5151,18 +5150,18 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.41" +version = "0.8.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96e13bc581734df6250836c59a5f44f3c57db9f9acb9dc8e3eaabdaf6170254d" +checksum = "f2578b716f8a7a858b7f02d5bd870c14bf4ddbbcf3a4c05414ba6503640505e3" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.41" +version = "0.8.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3545ea9e86d12ab9bba9fcd99b54c1556fd3199007def5a03c375623d05fac1c" +checksum = "7e6cc098ea4d3bd6246687de65af3f920c430e236bee1e3bf2e441463f08a02f" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.nix b/Cargo.nix index 7d3e8250..7ee3108b 100644 --- a/Cargo.nix +++ b/Cargo.nix @@ -295,9 +295,9 @@ rec { }; "anstream" = rec { crateName = "anstream"; - version = "0.6.21"; + version = "1.0.0"; edition = "2021"; - sha256 = "0jjgixms4qjj58dzr846h2s29p8w7ynwr9b9x6246m1pwy0v5ma3"; + sha256 = "13d2bj0xfg012s4rmq44zc8zgy1q8k9yp7yhvfnarscnmwpj2jl2"; dependencies = [ { name = "anstyle"; @@ -340,9 +340,9 @@ rec { }; "anstyle" = rec { crateName = "anstyle"; - version = "1.0.13"; + version = "1.0.14"; edition = "2021"; - sha256 = "0y2ynjqajpny6q0amvfzzgw0gfw3l47z85km4gvx87vg02lcr4ji"; + sha256 = "0030szmgj51fxkic1hpakxxgappxzwm6m154a3gfml83lq63l2wl"; features = { "default" = [ "std" ]; }; @@ -350,9 +350,9 @@ rec { }; "anstyle-parse" = rec { crateName = "anstyle-parse"; - version = "0.2.7"; + version = "1.0.0"; edition = "2021"; - sha256 = "1hhmkkfr95d462b3zf6yl2vfzdqfy5726ya572wwg8ha9y148xjf"; + sha256 = "03hkv2690s0crssbnmfkr76kw1k7ah2i6s5amdy9yca2n8w7zkjj"; libName = "anstyle_parse"; dependencies = [ { @@ -1394,9 +1394,9 @@ rec { }; "cc" = rec { crateName = "cc"; - version = "1.2.56"; + version = "1.2.57"; edition = "2018"; - sha256 = "1chvh9g2izhqad7vzy4cc7xpdljdvqpsr6x6hv1hmyqv3mlkbgxf"; + sha256 = "08q464b62d03zm7rgiixavkrh5lzfq18lwf884vgycj9735d23bs"; authors = [ "Alex Crichton " ]; @@ -1727,10 +1727,10 @@ rec { }; "clap" = rec { crateName = "clap"; - version = "4.5.60"; - edition = "2021"; + version = "4.6.0"; + edition = "2024"; crateBin = []; - sha256 = "02h3nzznssjgp815nnbzk0r62y2iw03kdli75c233kirld6z75r7"; + sha256 = "0l8k0ja5rf4hpn2g98bqv5m6lkh2q6b6likjpmm6fjw3cxdsz4xi"; dependencies = [ { name = "clap_builder"; @@ -1769,9 +1769,9 @@ rec { }; "clap_builder" = rec { crateName = "clap_builder"; - version = "4.5.60"; - edition = "2021"; - sha256 = "0xk8mdizvmmn6w5ij5cwhy5pbgyac4w9pfvl6nqmjl7a5hql38i4"; + version = "4.6.0"; + edition = "2024"; + sha256 = "17q6np22yxhh5y5v53y4l31ps3hlaz45mvz2n2nicr7n3c056jki"; dependencies = [ { name = "anstream"; @@ -1808,9 +1808,9 @@ rec { }; "clap_complete" = rec { crateName = "clap_complete"; - version = "4.5.66"; - edition = "2021"; - sha256 = "0c8h6x3x1ddldfmhii12hrd92v1av8d18rckdzjs8qciwfvs6my7"; + version = "4.6.0"; + edition = "2024"; + sha256 = "1sric3allwj3isk81khgmsx9qab1bafyr37jh4v6wwvbwzfz3j8r"; dependencies = [ { name = "clap"; @@ -1837,9 +1837,9 @@ rec { }; "clap_complete_nushell" = rec { crateName = "clap_complete_nushell"; - version = "4.5.10"; - edition = "2021"; - sha256 = "06k4bfrp3rbm0bpqadr4kbb60y8hmcsq8kraagh6fx2bsdpwhnv8"; + version = "4.6.0"; + edition = "2024"; + sha256 = "15yqhkzndsxbmii8nspbl6qga9mrys4fa6srd2s599r9bmqykfgv"; dependencies = [ { name = "clap"; @@ -1867,9 +1867,9 @@ rec { }; "clap_derive" = rec { crateName = "clap_derive"; - version = "4.5.55"; - edition = "2021"; - sha256 = "1r949xis3jmhzh387smd70vc8a3b9734ck3g5ahg59a63bd969x9"; + version = "4.6.0"; + edition = "2024"; + sha256 = "0snapc468s7n3avr33dky4y7rmb7ha3qsp9l0k5vh6jacf5bs40i"; procMacro = true; dependencies = [ { @@ -1899,16 +1899,16 @@ rec { }; "clap_lex" = rec { crateName = "clap_lex"; - version = "1.0.0"; - edition = "2021"; - sha256 = "0c8888qi1l9sayqlv666h8s0yxn2qc6jr88v1zagk43mpjjjx0is"; + version = "1.1.0"; + edition = "2024"; + sha256 = "1ycqkpygnlqnndghhcxjb44lzl0nmgsia64x9581030yifxs7m68"; }; "clap_mangen" = rec { crateName = "clap_mangen"; - version = "0.2.31"; - edition = "2021"; - sha256 = "00b3r0nym6wvgfas1crmsn3205149ynj2hhnjcwgjv88j8xad7j3"; + version = "0.2.33"; + edition = "2024"; + sha256 = "0y1d3wccspkd48cs9jhc9i2kk5z22sj2lvhwrnpsxqz2hz0zyc3y"; dependencies = [ { name = "clap"; @@ -1952,9 +1952,9 @@ rec { }; "colorchoice" = rec { crateName = "colorchoice"; - version = "1.0.4"; + version = "1.0.5"; edition = "2021"; - sha256 = "0x8ymkz1xr77rcj1cfanhf416pc4v681gmkc9dzb3jqja7f62nxh"; + sha256 = "0w75k89hw39p0mnnhlrwr23q50rza1yjki44qvh2mgrnj065a1qx"; }; "combine" = rec { @@ -2083,9 +2083,9 @@ rec { }; "console" = rec { crateName = "console"; - version = "0.16.2"; + version = "0.16.3"; edition = "2021"; - sha256 = "1i5y6h3myz38jl9p3gglx5vh9c69kxxajsv3jx0pw8i6i555mr03"; + sha256 = "11zwz1vnfr0nx6dyjx0gjymp8864y5hxwf01ynfd2s8kapsqlknn"; dependencies = [ { name = "encode_unicode"; @@ -2097,11 +2097,6 @@ rec { packageId = "libc"; optional = true; } - { - name = "once_cell"; - packageId = "once_cell"; - optional = true; - } { name = "unicode-width"; packageId = "unicode-width"; @@ -2116,7 +2111,7 @@ rec { ]; features = { "default" = [ "unicode-width" "ansi-parsing" "std" ]; - "std" = [ "dep:libc" "dep:once_cell" "alloc" ]; + "std" = [ "dep:libc" "alloc" ]; "unicode-width" = [ "dep:unicode-width" ]; "windows-console-colors" = [ "ansi-parsing" ]; }; @@ -7240,9 +7235,9 @@ rec { }; "once_cell" = rec { crateName = "once_cell"; - version = "1.21.3"; + version = "1.21.4"; edition = "2021"; - sha256 = "0b9x77lb9f1j6nqgf5aka4s2qj0nly176bpbrv6f9iakk5ff3xa2"; + sha256 = "0l1v676wf71kjg2khch4dphwh1jp3291ffiymr2mvy1kxd5kwz4z"; authors = [ "Aleksey Kladov " ]; @@ -8283,9 +8278,9 @@ rec { }; "portable-atomic-util" = rec { crateName = "portable-atomic-util"; - version = "0.2.5"; + version = "0.2.6"; edition = "2018"; - sha256 = "1xcm0ia8756k6hdgafx4g3lx3fw0hvz2zqswq7c2sy58gxnvk7bs"; + sha256 = "18wrsx7fjwc2kgbpfjfm3igv3vdzsidmjhbqivjln7d0c6z9f4q9"; libName = "portable_atomic_util"; dependencies = [ { @@ -9893,9 +9888,9 @@ rec { }; "roff" = rec { crateName = "roff"; - version = "0.2.2"; - edition = "2021"; - sha256 = "1wyqz6m0pm4p6wzhwhahvcidfm7nwb38zl4q7ha940pn3w66dy48"; + version = "1.1.0"; + edition = "2024"; + sha256 = "1b8m96cshs2nam6ck1xrx59iijbpild4y75rlwngp7lp1s709wnv"; }; "rstest" = rec { @@ -10592,9 +10587,9 @@ rec { }; "schannel" = rec { crateName = "schannel"; - version = "0.1.28"; + version = "0.1.29"; edition = "2018"; - sha256 = "1qb6s5gyxfz2inz753a4z3mc1d266mwvz0c5w7ppd3h44swq27c9"; + sha256 = "0ffrzz5vf2s3gnzvphgb5gg8fqifvryl07qcf7q3x1scj3jbghci"; authors = [ "Steven Fackler " "Steffen Butzer " @@ -12391,7 +12386,7 @@ rec { }; "stackablectl" = rec { crateName = "stackablectl"; - version = "1.3.0"; + version = "1.4.0"; edition = "2021"; crateBin = [ { @@ -13104,9 +13099,9 @@ rec { }; "tinyvec" = rec { crateName = "tinyvec"; - version = "1.10.0"; + version = "1.11.0"; edition = "2018"; - sha256 = "1yhk0qdqyiaa4v2j9h8pzax5gxgwpz4da0lcphfil6g6pk1zv9dz"; + sha256 = "1wvycrghzmaysnw34kzwnf0mfx6r75045s24r214wnnjadqfcq9y"; authors = [ "Lokathor " ]; @@ -13121,11 +13116,12 @@ rec { "alloc" = [ "tinyvec_macros" ]; "arbitrary" = [ "dep:arbitrary" ]; "borsh" = [ "dep:borsh" ]; + "defmt" = [ "dep:defmt" ]; "generic-array" = [ "dep:generic-array" ]; "latest_stable_rust" = [ "rustc_1_61" ]; "real_blackbox" = [ "criterion/real_blackbox" ]; "rustc_1_61" = [ "rustc_1_57" ]; - "serde" = [ "dep:serde" ]; + "serde" = [ "dep:serde_core" ]; "std" = [ "alloc" ]; "tinyvec_macros" = [ "dep:tinyvec_macros" ]; }; @@ -13484,9 +13480,9 @@ rec { }; "toml" = rec { crateName = "toml"; - version = "1.0.6+spec-1.1.0"; + version = "1.0.7+spec-1.1.0"; edition = "2021"; - sha256 = "1z3gd04jal7r2jhnww4qvln5g4h1wlhvlsqwhdk6gqf9lcj136rr"; + sha256 = "15kaclc4y8yb4ahny19ng51rmff4vj7lyy5qq25lavkgi9yxaa6x"; dependencies = [ { name = "indexmap"; @@ -13548,9 +13544,9 @@ rec { }; "toml_datetime" = rec { crateName = "toml_datetime"; - version = "1.0.0+spec-1.1.0"; + version = "1.0.1+spec-1.1.0"; edition = "2021"; - sha256 = "0gpiaddhignli6whj52ysjxwmmy82r8qxihckzss8y4md5f5bhij"; + sha256 = "1sgk7zc6x187iib7kj1nzn44mp0zrk9hgii69rbar35m3ms0wclv"; dependencies = [ { name = "serde_core"; @@ -13569,9 +13565,9 @@ rec { }; "toml_edit" = rec { crateName = "toml_edit"; - version = "0.25.4+spec-1.1.0"; + version = "0.25.5+spec-1.1.0"; edition = "2021"; - sha256 = "1whkik77grpr5qw8q0zhqx1admghpkdm2hzm6xh9dp2krv8cp4vi"; + sha256 = "1qgjkq687jkdrc3wq4fi95lj6d0bvwqs9xi3d41wx2x28h3a98cc"; dependencies = [ { name = "indexmap"; @@ -13604,9 +13600,9 @@ rec { }; "toml_parser" = rec { crateName = "toml_parser"; - version = "1.0.9+spec-1.1.0"; + version = "1.0.10+spec-1.1.0"; edition = "2021"; - sha256 = "1i54qpvvcppy8ybdn9gssas81vfzq0kmgkcnxzhyf8w9w0al8bbh"; + sha256 = "081lsv63zphnff9ssb0yjavcc82sblvj808rvwb4h76kxx5mpwkx"; dependencies = [ { name = "winnow"; @@ -13624,9 +13620,9 @@ rec { }; "toml_writer" = rec { crateName = "toml_writer"; - version = "1.0.6+spec-1.1.0"; + version = "1.0.7+spec-1.1.0"; edition = "2021"; - sha256 = "01r6x42d1p8p5kzfsi1fm4dakm3w53vi69f2ivyqpvi1xm5g25mb"; + sha256 = "0vdmlskpqkjf5n2zghna8mwlqdbf0ryskfxnlhfjphixdqfalypi"; features = { "default" = [ "std" ]; "std" = [ "alloc" ]; @@ -14370,9 +14366,9 @@ rec { }; "tracing-subscriber" = rec { crateName = "tracing-subscriber"; - version = "0.3.22"; + version = "0.3.23"; edition = "2018"; - sha256 = "07hz575a0p1c2i4xw3gs3hkrykhndnkbfhyqdwjhvayx4ww18c1g"; + sha256 = "06fkr0qhggvrs861d7f74pn3i3a10h5jsp4n70jj9ys5b675fzyb"; libName = "tracing_subscriber"; authors = [ "Eliza Weisman " @@ -17766,9 +17762,9 @@ rec { }; "winnow" = rec { crateName = "winnow"; - version = "0.7.15"; + version = "1.0.0"; edition = "2021"; - sha256 = "0i9rkl2rqpbnnxlgs20gmkj3nd0b2k8q55mjmpc2ybb84xwxjyfz"; + sha256 = "1n67gx8mg2b6r2z54zwbrb6qsfbdsar1lvafsfaajr3jcvj8h3m9"; dependencies = [ { name = "memchr"; @@ -17778,13 +17774,16 @@ rec { } ]; features = { + "ascii" = [ "parser" ]; + "binary" = [ "parser" ]; "debug" = [ "std" "dep:anstream" "dep:anstyle" "dep:is_terminal_polyfill" "dep:terminal_size" ]; - "default" = [ "std" ]; + "default" = [ "std" "ascii" "binary" ]; "simd" = [ "dep:memchr" ]; "std" = [ "alloc" "memchr?/std" ]; - "unstable-doc" = [ "alloc" "std" "simd" "unstable-recover" ]; + "unstable-doc" = [ "alloc" "std" "ascii" "binary" "simd" "unstable-recover" ]; + "unstable-recover" = [ "parser" ]; }; - resolvedDefaultFeatures = [ "alloc" "default" "std" ]; + resolvedDefaultFeatures = [ "alloc" "ascii" "binary" "default" "parser" "std" ]; }; "wit-bindgen" = rec { crateName = "wit-bindgen"; @@ -18251,9 +18250,9 @@ rec { }; "zerocopy" = rec { crateName = "zerocopy"; - version = "0.8.41"; + version = "0.8.42"; edition = "2021"; - sha256 = "0k95f1hszgda7s7drfdcz6wpvigk8igrmi9n10jzckbkh72kpqcn"; + sha256 = "1qq50mj06rds2iac197kpkdlvgql1j3vvm82gy5qayladxqqnmzj"; authors = [ "Joshua Liebow-Feeser " "Jack Wrenn " @@ -18287,9 +18286,9 @@ rec { }; "zerocopy-derive" = rec { crateName = "zerocopy-derive"; - version = "0.8.41"; + version = "0.8.42"; edition = "2021"; - sha256 = "075cbz826mip7jhgbph7j0cx6vsmq5a9pngwm6xvjanihsgfli9m"; + sha256 = "0bx010zlchg4y8xixvkb4c74634j7ypnbpl7cqjdcfsdxacc0v3y"; procMacro = true; libName = "zerocopy_derive"; authors = [ diff --git a/extra/man/stackablectl.1 b/extra/man/stackablectl.1 index 110babb2..06961fd3 100644 --- a/extra/man/stackablectl.1 +++ b/extra/man/stackablectl.1 @@ -1,6 +1,6 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' -.TH stackablectl 1 "stackablectl 1.3.0" +.TH stackablectl 1 "stackablectl 1.4.0" .SH NAME stackablectl \- Command line tool to interact with the Stackable Data Platform .SH SYNOPSIS @@ -117,7 +117,15 @@ This maps to the listener\-operator Helm Chart preset value, see [the listener\- .br .br -[\fIpossible values: \fRnone, stable\-nodes, ephemeral\-nodes] +\fIPossible values:\fR +.RS 14 +.IP \(bu 2 +none +.IP \(bu 2 +stable\-nodes +.IP \(bu 2 +ephemeral\-nodes +.RE .SH SUBCOMMANDS .TP stackablectl\-operator(1) @@ -150,6 +158,6 @@ Retrieve version data of the stackablectl installation stackablectl\-help(1) Print this message or the help of the given subcommand(s) .SH VERSION -v1.3.0 +v1.4.0 .SH AUTHORS Stackable GmbH diff --git a/rust/stackablectl/CHANGELOG.md b/rust/stackablectl/CHANGELOG.md index 2ff5a338..495020e9 100644 --- a/rust/stackablectl/CHANGELOG.md +++ b/rust/stackablectl/CHANGELOG.md @@ -4,9 +4,11 @@ All notable changes to this project will be documented in this file. ## [Unreleased] +## [1.4.0] - 2026-03-18 + ### Added -- Add `STACK` and `DEMO` templating parameters. Have a look at the README for details ([#432]). +- Add `STACK` and `DEMO` templating parameters. Have a look at the `README.md` for details ([#432]). [#432]: https://github.com/stackabletech/stackable-cockpit/pull/432 diff --git a/rust/stackablectl/Cargo.toml b/rust/stackablectl/Cargo.toml index f45f1fe6..83388405 100644 --- a/rust/stackablectl/Cargo.toml +++ b/rust/stackablectl/Cargo.toml @@ -2,7 +2,7 @@ name = "stackablectl" description = "Command line tool to interact with the Stackable Data Platform" # See /Cargo.toml -version = "1.3.0" +version = "1.4.0" authors.workspace = true license.workspace = true edition.workspace = true From f9efd1e8e06c960e9b0c7574c0da836312a5827d Mon Sep 17 00:00:00 2001 From: Techassi Date: Tue, 31 Mar 2026 10:19:04 +0200 Subject: [PATCH 54/63] fix: Bump aws-lc-rs/sys and rustls-webpki to negate 3 advisories (#436) * fix: Bump aws-lc-rs/aws-lc-sys to 1.16.2/0.39.1 This bump negates the following two advisories: - RUSTSEC-2026-0044 - RUSTSEC-2026-0048 * fix: Bump rustls-webpki to 0.103.10 to negate RUSTSEC-2026-0049 --- Cargo.lock | 12 ++++++------ Cargo.nix | 17 +++++++++-------- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 73ba5ed3..1494413a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -194,9 +194,9 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "aws-lc-rs" -version = "1.16.1" +version = "1.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94bffc006df10ac2a68c83692d734a465f8ee6c5b384d8545a636f81d858f4bf" +checksum = "a054912289d18629dc78375ba2c3726a3afe3ff71b4edba9dedfca0e3446d1fc" dependencies = [ "aws-lc-sys", "zeroize", @@ -204,9 +204,9 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.38.0" +version = "0.39.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4321e568ed89bb5a7d291a7f37997c2c0df89809d7b6d12062c81ddb54aa782e" +checksum = "83a25cf98105baa966497416dbd42565ce3a8cf8dbfd59803ec9ad46f3126399" dependencies = [ "cc", "cmake", @@ -3154,9 +3154,9 @@ checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" [[package]] name = "rustls-webpki" -version = "0.103.9" +version = "0.103.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7df23109aa6c1567d1c575b9952556388da57401e4ace1d15f79eedad0d8f53" +checksum = "df33b2b81ac578cabaf06b89b0631153a3f416b0a886e8a7a1707fb51abbd1ef" dependencies = [ "aws-lc-rs", "ring", diff --git a/Cargo.nix b/Cargo.nix index 7ee3108b..78e86277 100644 --- a/Cargo.nix +++ b/Cargo.nix @@ -600,10 +600,10 @@ rec { }; "aws-lc-rs" = rec { crateName = "aws-lc-rs"; - version = "1.16.1"; + version = "1.16.2"; edition = "2021"; - links = "aws_lc_rs_1_16_1_sys"; - sha256 = "1gzlb3c82vv3b9adi15kqpk8wps699rjssc3ijkc42pidl0grgwl"; + links = "aws_lc_rs_1_16_2_sys"; + sha256 = "1z6i8qs0xjnzvslxnkhvywzzwfkafb1s4nrpg3f2k1nii4i92m50"; libName = "aws_lc_rs"; authors = [ "AWS-LibCrypto" @@ -635,10 +635,10 @@ rec { }; "aws-lc-sys" = rec { crateName = "aws-lc-sys"; - version = "0.38.0"; + version = "0.39.1"; edition = "2021"; - links = "aws_lc_0_38_0"; - sha256 = "0bkqm9adn7f8c8hd3dnp16cgh39cgjckfzqs55ymmfw9xmlfa8a3"; + links = "aws_lc_0_39_1"; + sha256 = "16b32brldbf97s05kzfvz263mkk54padn5kl95kakfh5h7wmr8l3"; build = "builder/main.rs"; libName = "aws_lc_sys"; authors = [ @@ -666,6 +666,7 @@ rec { features = { "bindgen" = [ "dep:bindgen" ]; "default" = [ "all-bindings" ]; + "fips" = [ "dep:bindgen" ]; "ssl" = [ "bindgen" "all-bindings" ]; }; resolvedDefaultFeatures = [ "prebuilt-nasm" ]; @@ -10504,9 +10505,9 @@ rec { }; "rustls-webpki" = rec { crateName = "rustls-webpki"; - version = "0.103.9"; + version = "0.103.10"; edition = "2021"; - sha256 = "0lwg1nnyv7pp2lfwwjhy81bxm233am99jnsp3iymdhd6k8827pyp"; + sha256 = "1vyipcdbazvhl6kyi1m8n0bg98sk25iv12bby2xcly653awb4cyz"; libName = "webpki"; dependencies = [ { From a6a2382034d634ba182a7dc8951cdd62910dd88a Mon Sep 17 00:00:00 2001 From: Techassi Date: Tue, 31 Mar 2026 10:48:32 +0200 Subject: [PATCH 55/63] docs: Add missing release notes for stackablectl (#435) * docs: Add missing release notes for stackablectl * chore: Update release instructions --- docs/modules/stackablectl/pages/release-notes.adoc | 6 ++++++ .../partials/release-notes/release-1.3.0.adoc | 8 ++++++++ .../partials/release-notes/release-1.4.0.adoc | 4 ++++ rust/stackablectl/RELEASE.md | 10 ++++++---- 4 files changed, 24 insertions(+), 4 deletions(-) create mode 100644 docs/modules/stackablectl/partials/release-notes/release-1.3.0.adoc create mode 100644 docs/modules/stackablectl/partials/release-notes/release-1.4.0.adoc diff --git a/docs/modules/stackablectl/pages/release-notes.adoc b/docs/modules/stackablectl/pages/release-notes.adoc index 069cfd86..032d3b36 100644 --- a/docs/modules/stackablectl/pages/release-notes.adoc +++ b/docs/modules/stackablectl/pages/release-notes.adoc @@ -6,6 +6,12 @@ A full list of changes is available directly in https://github.com/stackabletech // WARNING: Please keep the empty newlines, otherwise headings are broken. +include::partial$release-notes/release-1.4.0.adoc[] + +include::partial$release-notes/release-1.3.0.adoc[] + +include::partial$release-notes/release-1.2.2.adoc[] + include::partial$release-notes/release-1.2.1.adoc[] include::partial$release-notes/release-1.2.0.adoc[] diff --git a/docs/modules/stackablectl/partials/release-notes/release-1.3.0.adoc b/docs/modules/stackablectl/partials/release-notes/release-1.3.0.adoc new file mode 100644 index 00000000..b90e52d3 --- /dev/null +++ b/docs/modules/stackablectl/partials/release-notes/release-1.3.0.adoc @@ -0,0 +1,8 @@ +== 1.3.0 + +* Allow specifying Helm values for operator installations. + See https://github.com/stackabletech/stackable-cockpit/pull/425[stackable-cockpit#425]. +* Bump Rust to `1.93.0` as well as dependencies. + See https://github.com/stackabletech/stackable-cockpit/pull/426[stackable-cockpit#426]. +* Bump Go to `1.26.0` as well as dependencies. + See https://github.com/stackabletech/stackable-cockpit/pull/426[stackable-cockpit#426]. diff --git a/docs/modules/stackablectl/partials/release-notes/release-1.4.0.adoc b/docs/modules/stackablectl/partials/release-notes/release-1.4.0.adoc new file mode 100644 index 00000000..bcbc4fb7 --- /dev/null +++ b/docs/modules/stackablectl/partials/release-notes/release-1.4.0.adoc @@ -0,0 +1,4 @@ +== 1.4.0 + +* Add `STACK` and `DEMO` templating parameters. Have a look at the `README.md` for details. + See https://github.com/stackabletech/stackable-cockpit/pull/432[stackable-cockpit#432]. diff --git a/rust/stackablectl/RELEASE.md b/rust/stackablectl/RELEASE.md index da5dcd70..3451d985 100644 --- a/rust/stackablectl/RELEASE.md +++ b/rust/stackablectl/RELEASE.md @@ -6,10 +6,12 @@ to be done: 1. Ensure your local `main` branch is up-to-date and then proceed to checkout a new branch using `git checkout -b chore/release-stackablectl-X.Y.Z`. 2. Update both the Cargo.toml and CHANGELOG.md file to the new version `X.Y.Z`. -3. Update various files by running the following xtask `cargo xtask gen-man` and +3. Add the relevant changes from the changelog to a new release notes partial under + `docs/stackablectl/partials/release-notes`. +4. Update various files by running the following xtask `cargo xtask gen-man` and `make regenerate-nix`. This is also automatically done if pre-commit is enabled. -4. Push the changes and raise a PR. -5. Merge the PR onto `main` and then proceed to tag the appropriate commit using +5. Push the changes and raise a PR. +6. Merge the PR onto `main` and then proceed to tag the appropriate commit using `git tag -s stackablectl-Y.Y.Z -m stackablectl-Y.Y.Z`. -6. Building the artifacts and creating the release on GitHub is fully automated from this point +7. Building the artifacts and creating the release on GitHub is fully automated from this point onward. From bc299a211a411ecd392ee4dc47c6f2c07d9336c8 Mon Sep 17 00:00:00 2001 From: Techassi Date: Tue, 31 Mar 2026 11:13:21 +0200 Subject: [PATCH 56/63] chore: Add script to verify release notes (#437) --- .pre-commit-config.yaml | 8 ++++++++ scripts/verify_release_notes.sh | 17 +++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100755 scripts/verify_release_notes.sh diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 263ef2bf..d88e2480 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -103,8 +103,16 @@ repos: - id: cargo-rustfmt name: cargo-rustfmt + files: \.rs$ language: system # Pinning to a specific rustc version, so that we get consistent formatting entry: cargo +nightly-2025-05-26 fmt --all -- --check stages: [pre-commit] pass_filenames: false + + - id: ./scripts/verify_release_notes + name: ./scripts/verify_release_notes + language: system + entry: ./scripts/verify_release_notes.sh + stages: [pre-commit, pre-merge-commit, manual] + pass_filenames: false diff --git a/scripts/verify_release_notes.sh b/scripts/verify_release_notes.sh new file mode 100755 index 00000000..9d574349 --- /dev/null +++ b/scripts/verify_release_notes.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash + +set -euo pipefail + +STACKABLECTL_VERSION=$(grep 'version' "./rust/stackablectl/Cargo.toml" | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -1) +[ -n "$STACKABLECTL_VERSION" ] || ( + echo "CRATE_VERSION for is empty." >&2 + echo "Please check ./rust/stackablectl/Cargo.toml" >&2 + exit 1 +) + +RELEASE_NOTES_FILE="./docs/modules/stackablectl/partials/release-notes/release-${STACKABLECTL_VERSION}.adoc" + +if [ ! -f "$RELEASE_NOTES_FILE" ]; then + echo "$RELEASE_NOTES_FILE does not exist, please create it and add the appropriate content" >&2 + exit 1 +fi From a58f836a0150846dbb4671a4de2ae8da49366b02 Mon Sep 17 00:00:00 2001 From: Razvan-Daniel Mihai <84674+razvan@users.noreply.github.com> Date: Fri, 10 Apr 2026 11:46:26 +0200 Subject: [PATCH 57/63] feat: add listener presets for minikube (#438) --- .../src/platform/operator/listener_operator.rs | 11 +++++++++++ rust/stackablectl/CHANGELOG.md | 6 ++++++ 2 files changed, 17 insertions(+) diff --git a/rust/stackable-cockpit/src/platform/operator/listener_operator.rs b/rust/stackable-cockpit/src/platform/operator/listener_operator.rs index 214a128a..ae27e2c4 100644 --- a/rust/stackable-cockpit/src/platform/operator/listener_operator.rs +++ b/rust/stackable-cockpit/src/platform/operator/listener_operator.rs @@ -45,6 +45,9 @@ pub async fn determine_and_store_listener_class_preset(from_cli: Option<&Listene let listener_class_preset = match kubernetes_environment { // Kind does not support LoadBalancers out of the box, so avoid that KubernetesEnvironment::Kind => ListenerClassPreset::StableNodes, + // Minikube does support LoadBalancers via "minikube tunnel", but that requires additional setup + // and we assume that users running Minikube with stackablectl want to keep things simple. + KubernetesEnvironment::Minikube => ListenerClassPreset::StableNodes, // LoadBalancer support in k3s is optional, so let's be better safe than sorry and not use // them KubernetesEnvironment::K3s => ListenerClassPreset::StableNodes, @@ -69,6 +72,7 @@ enum KubernetesEnvironment { Kind, K3s, Ionos, + Minikube, Unknown, } @@ -100,6 +104,13 @@ async fn guess_kubernetes_environment() -> Result Date: Tue, 14 Apr 2026 10:50:02 +0200 Subject: [PATCH 58/63] fix: set current stackablectl release to 1.4.0 (#434) * fix: set current stackablectl release to 1.4.0 * fix: Bump aws-lc-{rs,sys} to negate RUSTSEC-2026-0048+0044 * fix: Bump rustls-webpki to negate RUSTSEC-2026-0049 * fix: Remove duplicate version key in Cargo.lock * fix: Remove more stuff from merge conflict --------- Co-authored-by: Techassi --- Cargo.lock | 4 ++-- Cargo.nix | 4 ++-- docs/modules/stackablectl/pages/installation.adoc | 10 +++++----- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1494413a..4e76efd0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3154,9 +3154,9 @@ checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" [[package]] name = "rustls-webpki" -version = "0.103.10" +version = "0.103.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df33b2b81ac578cabaf06b89b0631153a3f416b0a886e8a7a1707fb51abbd1ef" +checksum = "20a6af516fea4b20eccceaf166e8aa666ac996208e8a644ce3ef5aa783bc7cd4" dependencies = [ "aws-lc-rs", "ring", diff --git a/Cargo.nix b/Cargo.nix index 78e86277..fb349b3e 100644 --- a/Cargo.nix +++ b/Cargo.nix @@ -10505,9 +10505,9 @@ rec { }; "rustls-webpki" = rec { crateName = "rustls-webpki"; - version = "0.103.10"; + version = "0.103.11"; edition = "2021"; - sha256 = "1vyipcdbazvhl6kyi1m8n0bg98sk25iv12bby2xcly653awb4cyz"; + sha256 = "1m3wpj1sfnpgwd6692lf42bcjsk6mbl6dwgarkn20jzadx8sz9i0"; libName = "webpki"; dependencies = [ { diff --git a/docs/modules/stackablectl/pages/installation.adoc b/docs/modules/stackablectl/pages/installation.adoc index 7166b474..199a0599 100644 --- a/docs/modules/stackablectl/pages/installation.adoc +++ b/docs/modules/stackablectl/pages/installation.adoc @@ -1,7 +1,7 @@ = Installation :page-aliases: stable@stackablectl::installation.adoc -:latest-release: https://github.com/stackabletech/stackable-cockpit/releases/tag/stackablectl-1.2.1 +:latest-release: https://github.com/stackabletech/stackable-cockpit/releases/tag/stackablectl-1.4.0 :fish-comp-loations: https://fishshell.com/docs/current/completions.html#where-to-put-completions :nushell-comp-locations: https://www.nushell.sh/book/custom_commands.html#persisting @@ -23,14 +23,14 @@ You can also use the following command: [source,console] ---- -$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-1.2.1/stackablectl-x86_64-unknown-linux-gnu +$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-1.4.0/stackablectl-x86_64-unknown-linux-gnu ---- **aarch64** (arm64): [source,console] ---- -$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-1.2.1/stackablectl-aarch64-unknown-linux-gnu +$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-1.4.0/stackablectl-aarch64-unknown-linux-gnu ---- Install the binary into a directory in the `$PATH`, and make it executable: @@ -60,14 +60,14 @@ You can also use the following command: [source,console] ---- -$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-1.2.1/stackablectl-x86_64-apple-darwin +$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-1.4.0/stackablectl-x86_64-apple-darwin ---- **aarch64** (arm64): [source,console] ---- -$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-1.2.1/stackablectl-aarch64-apple-darwin +$ curl -L -o stackablectl https://github.com/stackabletech/stackable-cockpit/releases/download/stackablectl-1.4.0/stackablectl-aarch64-apple-darwin ---- Install the binary into a directory in the `$PATH`, and make it executable: From b0c771c272bcceeb71f90af14ec5b3eab857d1e3 Mon Sep 17 00:00:00 2001 From: Xenia Date: Tue, 14 Apr 2026 13:40:35 +0200 Subject: [PATCH 59/63] feat: Add uninstall demo/stack feature (#429) * feat: Add uninstall demo/stack feature * changelog, some fixes after merge, cargo clippy * pre-commit fixes * pre-commit fix * regenerate-nix * adjustments after main merge * further uninstall adjustments * small word fix * cargo update * add documentation * delete namespace function * use Label struct for label * rename function * code readability * reduce nesting * delete object refactoring * small docs adjustment * Revert "small docs adjustment" This reverts commit 7dfe50e19cedb050f8d73dd73021f9ee32e421bc. * Update rust/stackablectl/src/cmds/demo.rs Co-authored-by: Techassi * stackspec in uninstall refactoring * confirm dialog for canceling delete, refactor install confim dialog * function comment for helm uninstall * rename variable * refactor namespace confirmation * add stack parameter on demo uninstall * Update rust/stackable-cockpit/src/utils/k8s/client.rs Co-authored-by: Techassi * import deref * refactor namespace assignment * refactor namespace deletion function * bump operator-rs and use deref on label key * add assume-yes argument and some small fixes * adjust changelog entry * fix changelog order --------- Co-authored-by: Techassi --- Cargo.lock | 325 +++++----- Cargo.nix | 557 +++++++++++------- Cargo.toml | 4 +- crate-hashes.json | 14 +- .../stackablectl/pages/commands/demo.adoc | 29 +- .../stackablectl/pages/commands/stack.adoc | 36 ++ .../stackablectl/partials/commands/demo.adoc | 9 +- .../stackablectl/partials/commands/stack.adoc | 9 +- extra/completions/_stackablectl | 132 ++++- extra/completions/stackablectl.bash | 462 ++++++++++++++- extra/completions/stackablectl.elv | 84 +++ extra/completions/stackablectl.fish | 134 +++-- extra/completions/stackablectl.nu | 90 ++- rust/stackable-cockpit/Cargo.toml | 1 + .../src/platform/demo/params.rs | 10 + .../src/platform/demo/spec.rs | 131 +++- .../src/platform/manifests.rs | 99 +++- .../src/platform/stack/params.rs | 14 + .../src/platform/stack/spec.rs | 134 ++++- .../stackable-cockpit/src/utils/k8s/client.rs | 159 ++++- rust/stackablectl/CHANGELOG.md | 4 + rust/stackablectl/Cargo.toml | 1 + rust/stackablectl/src/args/mod.rs | 2 + rust/stackablectl/src/args/prompt.rs | 9 + rust/stackablectl/src/cmds/demo.rs | 180 +++++- rust/stackablectl/src/cmds/stack.rs | 169 +++++- 26 files changed, 2316 insertions(+), 482 deletions(-) create mode 100644 rust/stackablectl/src/args/prompt.rs diff --git a/Cargo.lock b/Cargo.lock index 4e76efd0..6a729830 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -414,9 +414,9 @@ checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" [[package]] name = "cc" -version = "1.2.57" +version = "1.2.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a0dd1ca384932ff3641c8718a02769f1698e7563dc6974ffd03346116310423" +checksum = "b7a4d3ec6524d28a329fc53654bbadc9bdd7b0431f5d65f1a56ffb28a1ee5283" dependencies = [ "find-msvc-tools", "jobserver", @@ -587,9 +587,9 @@ dependencies = [ [[package]] name = "cmake" -version = "0.1.57" +version = "0.1.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75443c44cd6b379beb8c5b45d85d0773baf31cce901fe7bb252f4eff3008ef7d" +checksum = "c0f78a02292a74a88ac736019ab962ece0bc380e3f977bf72e376c5d78ff0678" dependencies = [ "cc", ] @@ -890,6 +890,18 @@ version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "abd57806937c9cc163efc8ea3910e00a62e2aeb0b8119f1793a978088f8f6b04" +[[package]] +name = "dialoguer" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25f104b501bf2364e78d0d3974cbc774f738f5865306ed128e1e0d7499c0ad96" +dependencies = [ + "console", + "shell-words", + "tempfile", + "zeroize", +] + [[package]] name = "digest" version = "0.10.7" @@ -1091,9 +1103,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.3.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" +checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" [[package]] name = "find-msvc-tools" @@ -1477,9 +1489,9 @@ dependencies = [ [[package]] name = "hyper" -version = "1.8.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" +checksum = "6299f016b246a94207e63da54dbe807655bf9e00044f73ded42c3ac5305fbcca" dependencies = [ "atomic-waker", "bytes", @@ -1492,7 +1504,6 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "pin-utils", "smallvec", "tokio", "want", @@ -1578,12 +1589,13 @@ dependencies = [ [[package]] name = "icu_collections" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" dependencies = [ "displaydoc", "potential_utf", + "utf8_iter", "yoke", "zerofrom", "zerovec", @@ -1591,9 +1603,9 @@ dependencies = [ [[package]] name = "icu_locale_core" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" dependencies = [ "displaydoc", "litemap", @@ -1604,9 +1616,9 @@ dependencies = [ [[package]] name = "icu_normalizer" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4" dependencies = [ "icu_collections", "icu_normalizer_data", @@ -1618,15 +1630,15 @@ dependencies = [ [[package]] name = "icu_normalizer_data" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" +checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38" [[package]] name = "icu_properties" -version = "2.1.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" +checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de" dependencies = [ "icu_collections", "icu_locale_core", @@ -1638,15 +1650,15 @@ dependencies = [ [[package]] name = "icu_properties_data" -version = "2.1.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" +checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14" [[package]] name = "icu_provider" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421" dependencies = [ "displaydoc", "icu_locale_core", @@ -1708,9 +1720,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.13.0" +version = "2.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +checksum = "45a8a2b9cb3e0b0c1803dbb0758ffac5de2f425b23c28f518faabd9d805342ff" dependencies = [ "equivalent", "hashbrown 0.16.1", @@ -1758,9 +1770,9 @@ checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" [[package]] name = "iri-string" -version = "0.7.10" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c91338f0783edbd6195decb37bae672fd3b165faffb89bf7b9e6942f8b1a731a" +checksum = "25e659a4bb38e810ebc252e53b5814ff908a8c58c2a9ce2fae1bbec24cbf4e20" dependencies = [ "memchr", "serde", @@ -1792,9 +1804,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "java-properties" @@ -1857,7 +1869,7 @@ dependencies = [ "cesu8", "cfg-if", "combine", - "jni-sys", + "jni-sys 0.3.1", "log", "thiserror 1.0.69", "walkdir", @@ -1866,9 +1878,31 @@ dependencies = [ [[package]] name = "jni-sys" -version = "0.3.0" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258" +dependencies = [ + "jni-sys 0.4.1", +] + +[[package]] +name = "jni-sys" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" +checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" +dependencies = [ + "jni-sys-macros", +] + +[[package]] +name = "jni-sys-macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" +dependencies = [ + "quote", + "syn 2.0.117", +] [[package]] name = "jobserver" @@ -1882,10 +1916,12 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.91" +version = "0.3.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c" +checksum = "2e04e2ef80ce82e13552136fabeef8a5ed1f985a96805761cbb9a2c34e7664d9" dependencies = [ + "cfg-if", + "futures-util", "once_cell", "wasm-bindgen", ] @@ -1941,11 +1977,11 @@ dependencies = [ [[package]] name = "k8s-version" version = "0.1.3" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.108.0#7486017f60827d1d769d7bf17bf56adb21f8bb02" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.109.0#a4a204b0696a696b9a49c930703037dd124e876d" dependencies = [ "darling", "regex", - "snafu 0.8.9", + "snafu 0.9.0", ] [[package]] @@ -2066,9 +2102,9 @@ checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" [[package]] name = "libc" -version = "0.2.183" +version = "0.2.184" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d" +checksum = "48f5d2a454e16a5ea0f4ced81bd44e4cfc7bd3a507b61887c99fd3538b28e4af" [[package]] name = "libloading" @@ -2088,9 +2124,9 @@ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" [[package]] name = "libredox" -version = "0.1.14" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1744e39d1d6a9948f4f388969627434e31128196de472883b39f148769bfe30a" +checksum = "7ddbf48fd451246b1f8c2610bd3b4ac0cc6e149d89832867093ab69a17194f08" dependencies = [ "libc", ] @@ -2103,9 +2139,9 @@ checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" [[package]] name = "litemap" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" +checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" [[package]] name = "litrs" @@ -2189,9 +2225,9 @@ dependencies = [ [[package]] name = "mio" -version = "1.1.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" +checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1" dependencies = [ "libc", "wasi", @@ -2219,9 +2255,9 @@ dependencies = [ [[package]] name = "num-conv" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050" +checksum = "c6673768db2d862beb9b39a78fdcb1a69439615d5794a1be50caa9bc92c81967" [[package]] name = "num-traits" @@ -2297,9 +2333,9 @@ dependencies = [ [[package]] name = "opentelemetry-otlp" -version = "0.31.0" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2366db2dca4d2ad033cad11e6ee42844fd727007af5ad04a1730f4cb8163bf" +checksum = "1f69cd6acbb9af919df949cd1ec9e5e7fdc2ef15d234b6b795aaa525cc02f71f" dependencies = [ "http", "opentelemetry", @@ -2565,12 +2601,6 @@ version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - [[package]] name = "portable-atomic" version = "1.13.1" @@ -2588,9 +2618,9 @@ dependencies = [ [[package]] name = "potential_utf" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" dependencies = [ "zerovec", ] @@ -2992,9 +3022,9 @@ dependencies = [ [[package]] name = "roff" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbf2048e0e979efb2ca7b91c4f1a8d77c91853e9b987c94c555668a8994915ad" +checksum = "323c417e1d9665a65b263ec744ba09030cfb277e9daa0b018a4ab62e57bc8189" [[package]] name = "rstest" @@ -3061,9 +3091,9 @@ dependencies = [ [[package]] name = "rustc-hash" -version = "2.1.1" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" +checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe" [[package]] name = "rustc_version" @@ -3260,9 +3290,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" dependencies = [ "serde", "serde_core", @@ -3345,9 +3375,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.4" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" dependencies = [ "serde_core", ] @@ -3408,6 +3438,12 @@ dependencies = [ "lazy_static", ] +[[package]] +name = "shell-words" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc6fe69c597f9c37bfeeeeeb33da3530379845f10be461a66d16d03eca2ded77" + [[package]] name = "shlex" version = "1.3.0" @@ -3426,9 +3462,9 @@ dependencies = [ [[package]] name = "simd-adler32" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" +checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214" [[package]] name = "siphasher" @@ -3545,6 +3581,7 @@ version = "0.0.0-dev" dependencies = [ "bcrypt", "clap", + "either", "futures", "helm-sys", "indexmap", @@ -3601,9 +3638,10 @@ dependencies = [ [[package]] name = "stackable-operator" -version = "0.108.0" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.108.0#7486017f60827d1d769d7bf17bf56adb21f8bb02" +version = "0.109.0" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.109.0#a4a204b0696a696b9a49c930703037dd124e876d" dependencies = [ + "base64", "clap", "const_format", "delegate", @@ -3618,13 +3656,14 @@ dependencies = [ "k8s-openapi", "kube", "product-config", + "rand 0.9.2", "regex", "schemars", "semver", "serde", "serde_json", "serde_yaml", - "snafu 0.8.9", + "snafu 0.9.0", "stackable-operator-derive", "stackable-shared", "stackable-telemetry", @@ -3640,7 +3679,7 @@ dependencies = [ [[package]] name = "stackable-operator-derive" version = "0.3.1" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.108.0#7486017f60827d1d769d7bf17bf56adb21f8bb02" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.109.0#a4a204b0696a696b9a49c930703037dd124e876d" dependencies = [ "darling", "proc-macro2", @@ -3651,7 +3690,7 @@ dependencies = [ [[package]] name = "stackable-shared" version = "0.1.0" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.108.0#7486017f60827d1d769d7bf17bf56adb21f8bb02" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.109.0#a4a204b0696a696b9a49c930703037dd124e876d" dependencies = [ "jiff", "k8s-openapi", @@ -3660,15 +3699,15 @@ dependencies = [ "semver", "serde", "serde_yaml", - "snafu 0.8.9", + "snafu 0.9.0", "strum", "time", ] [[package]] name = "stackable-telemetry" -version = "0.6.2" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.108.0#7486017f60827d1d769d7bf17bf56adb21f8bb02" +version = "0.6.3" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.109.0#a4a204b0696a696b9a49c930703037dd124e876d" dependencies = [ "axum", "clap", @@ -3679,7 +3718,7 @@ dependencies = [ "opentelemetry-semantic-conventions", "opentelemetry_sdk", "pin-project", - "snafu 0.8.9", + "snafu 0.9.0", "strum", "tokio", "tower", @@ -3691,21 +3730,21 @@ dependencies = [ [[package]] name = "stackable-versioned" -version = "0.8.3" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.108.0#7486017f60827d1d769d7bf17bf56adb21f8bb02" +version = "0.9.0" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.109.0#a4a204b0696a696b9a49c930703037dd124e876d" dependencies = [ "schemars", "serde", "serde_json", "serde_yaml", - "snafu 0.8.9", + "snafu 0.9.0", "stackable-versioned-macros", ] [[package]] name = "stackable-versioned-macros" -version = "0.8.3" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.108.0#7486017f60827d1d769d7bf17bf56adb21f8bb02" +version = "0.9.0" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.109.0#a4a204b0696a696b9a49c930703037dd124e876d" dependencies = [ "convert_case", "convert_case_extras", @@ -3729,6 +3768,7 @@ dependencies = [ "clap_complete", "clap_complete_nushell", "comfy-table", + "dialoguer", "directories", "dotenvy", "futures", @@ -3831,6 +3871,19 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "tempfile" +version = "3.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" +dependencies = [ + "fastrand", + "getrandom 0.4.2", + "once_cell", + "rustix", + "windows-sys 0.61.2", +] + [[package]] name = "tera" version = "1.20.1" @@ -3945,9 +3998,9 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" +checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d" dependencies = [ "displaydoc", "zerovec", @@ -3970,9 +4023,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.50.0" +version = "1.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27ad5e34374e03cfffefc301becb44e9dc3c17584f414349ebe29ed26661822d" +checksum = "2bd1c4c0fc4a7ab90fc15ef6daaa3ec3b893f004f915f2392557ed23237820cd" dependencies = [ "bytes", "libc", @@ -3986,9 +4039,9 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.6.1" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c55a2eff8b69ce66c84f85e1da1c233edc36ceb85a2058d11b0d6a3c7e7569c" +checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" dependencies = [ "proc-macro2", "quote", @@ -4044,9 +4097,9 @@ dependencies = [ [[package]] name = "toml" -version = "1.0.7+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd28d57d8a6f6e458bc0b8784f8fdcc4b99a437936056fa122cb234f18656a96" +checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" dependencies = [ "indexmap", "serde_core", @@ -4059,18 +4112,18 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "1.0.1+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b320e741db58cac564e26c607d3cc1fdc4a88fd36c879568c07856ed83ff3e9" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" dependencies = [ "serde_core", ] [[package]] name = "toml_edit" -version = "0.25.5+spec-1.1.0" +version = "0.25.10+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ca1a40644a28bce036923f6a431df0b34236949d111cc07cb6dca830c9ef2e1" +checksum = "a82418ca169e235e6c399a84e395ab6debeb3bc90edc959bf0f48647c6a32d1b" dependencies = [ "indexmap", "toml_datetime", @@ -4080,18 +4133,18 @@ dependencies = [ [[package]] name = "toml_parser" -version = "1.0.10+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7df25b4befd31c4816df190124375d5a20c6b6921e2cad937316de3fccd63420" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ "winnow", ] [[package]] name = "toml_writer" -version = "1.0.7+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f17aaa1c6e3dc22b1da4b6bba97d066e354c7945cac2f7852d4e4e7ca7a6b56d" +checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" [[package]] name = "tonic" @@ -4347,9 +4400,9 @@ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-segmentation" -version = "1.12.0" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c" [[package]] name = "unicode-width" @@ -4461,9 +4514,9 @@ dependencies = [ [[package]] name = "uuid" -version = "1.22.0" +version = "1.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a68d3c8f01c0cfa54a75291d83601161799e4a89a39e0929f4b0354d88757a37" +checksum = "5ac8b6f42ead25368cf5b098aeb3dc8a1a2c05a3eee8a9a1a68c640edbfc79d9" dependencies = [ "getrandom 0.4.2", "js-sys", @@ -4558,9 +4611,9 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.114" +version = "0.2.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e" +checksum = "0551fc1bb415591e3372d0bc4780db7e587d84e2a7e79da121051c5c4b89d0b0" dependencies = [ "cfg-if", "once_cell", @@ -4571,23 +4624,19 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.64" +version = "0.4.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9c5522b3a28661442748e09d40924dfb9ca614b21c00d3fd135720e48b67db8" +checksum = "03623de6905b7206edd0a75f69f747f134b7f0a2323392d664448bf2d3c5d87e" dependencies = [ - "cfg-if", - "futures-util", "js-sys", - "once_cell", "wasm-bindgen", - "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.114" +version = "0.2.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6" +checksum = "7fbdf9a35adf44786aecd5ff89b4563a90325f9da0923236f6104e603c7e86be" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4595,9 +4644,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.114" +version = "0.2.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3" +checksum = "dca9693ef2bab6d4e6707234500350d8dad079eb508dca05530c85dc3a529ff2" dependencies = [ "bumpalo", "proc-macro2", @@ -4608,9 +4657,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.114" +version = "0.2.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16" +checksum = "39129a682a6d2d841b6c429d0c51e5cb0ed1a03829d8b3d1e69a011e62cb3d3b" dependencies = [ "unicode-ident", ] @@ -4651,9 +4700,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.91" +version = "0.3.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "854ba17bb104abfb26ba36da9729addc7ce7f06f5c0f90f3c391f8461cca21f9" +checksum = "cd70027e39b12f0849461e08ffc50b9cd7688d942c1c8e3c7b22273236b4dd0a" dependencies = [ "js-sys", "wasm-bindgen", @@ -5001,9 +5050,9 @@ checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] name = "winnow" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a90e88e4667264a994d34e6d1ab2d26d398dcdca8b7f52bec8668957517fc7d8" +checksum = "09dac053f1cd375980747450bfc7250c264eaae0583872e845c0c7cd578872b5" dependencies = [ "memchr", ] @@ -5098,9 +5147,9 @@ dependencies = [ [[package]] name = "writeable" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" +checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" [[package]] name = "xml" @@ -5127,9 +5176,9 @@ dependencies = [ [[package]] name = "yoke" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca" dependencies = [ "stable_deref_trait", "yoke-derive", @@ -5138,9 +5187,9 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" dependencies = [ "proc-macro2", "quote", @@ -5150,18 +5199,18 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.42" +version = "0.8.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2578b716f8a7a858b7f02d5bd870c14bf4ddbbcf3a4c05414ba6503640505e3" +checksum = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.42" +version = "0.8.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e6cc098ea4d3bd6246687de65af3f920c430e236bee1e3bf2e441463f08a02f" +checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4" dependencies = [ "proc-macro2", "quote", @@ -5170,18 +5219,18 @@ dependencies = [ [[package]] name = "zerofrom" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +checksum = "69faa1f2a1ea75661980b013019ed6687ed0e83d069bc1114e2cc74c6c04c4df" dependencies = [ "zerofrom-derive", ] [[package]] name = "zerofrom-derive" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" dependencies = [ "proc-macro2", "quote", @@ -5197,9 +5246,9 @@ checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" [[package]] name = "zerotrie" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf" dependencies = [ "displaydoc", "yoke", @@ -5208,9 +5257,9 @@ dependencies = [ [[package]] name = "zerovec" -version = "0.11.5" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" dependencies = [ "yoke", "zerofrom", @@ -5219,9 +5268,9 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.nix b/Cargo.nix index fb349b3e..b4a24133 100644 --- a/Cargo.nix +++ b/Cargo.nix @@ -1395,9 +1395,9 @@ rec { }; "cc" = rec { crateName = "cc"; - version = "1.2.57"; + version = "1.2.59"; edition = "2018"; - sha256 = "08q464b62d03zm7rgiixavkrh5lzfq18lwf884vgycj9735d23bs"; + sha256 = "10sjxshjiyvglpqnap8z8fqdggf9mnxm8dn5kwr8mli4cpnd795p"; authors = [ "Alex Crichton " ]; @@ -1937,9 +1937,9 @@ rec { }; "cmake" = rec { crateName = "cmake"; - version = "0.1.57"; + version = "0.1.58"; edition = "2021"; - sha256 = "0zgg10qgykig4nxyf7whrqfg7fkk0xfxhiavikmrndvbrm23qi3m"; + sha256 = "0y06zxw5sv1p5vvpp5rz1qwbrq7ccawrl09nqy5ahx1a5418mxy0"; authors = [ "Alex Crichton " ]; @@ -2834,6 +2834,42 @@ rec { }; resolvedDefaultFeatures = [ "alloc" "default" ]; }; + "dialoguer" = rec { + crateName = "dialoguer"; + version = "0.12.0"; + edition = "2021"; + sha256 = "15mdq2cp838yiq9fs1jkhvskixvlqz5p8f8dipkn88xz06sh9w95"; + dependencies = [ + { + name = "console"; + packageId = "console"; + } + { + name = "shell-words"; + packageId = "shell-words"; + } + { + name = "tempfile"; + packageId = "tempfile"; + optional = true; + } + { + name = "zeroize"; + packageId = "zeroize"; + optional = true; + } + ]; + features = { + "default" = [ "editor" "password" ]; + "editor" = [ "tempfile" ]; + "fuzzy-matcher" = [ "dep:fuzzy-matcher" ]; + "fuzzy-select" = [ "fuzzy-matcher" ]; + "password" = [ "zeroize" ]; + "tempfile" = [ "dep:tempfile" ]; + "zeroize" = [ "dep:zeroize" ]; + }; + resolvedDefaultFeatures = [ "default" "editor" "password" "tempfile" "zeroize" ]; + }; "digest" = rec { crateName = "digest"; version = "0.10.7"; @@ -3366,9 +3402,9 @@ rec { }; "fastrand" = rec { crateName = "fastrand"; - version = "2.3.0"; + version = "2.4.1"; edition = "2018"; - sha256 = "1ghiahsw1jd68df895cy5h3gzwk30hndidn3b682zmshpgmrx41p"; + sha256 = "1mnqxxnxvd69ma9mczabpbbsgwlhd6l78yv3vd681453a9s247wz"; authors = [ "Stjepan Glavina " ]; @@ -3378,7 +3414,7 @@ rec { "js" = [ "std" "getrandom" ]; "std" = [ "alloc" ]; }; - resolvedDefaultFeatures = [ "alloc" "std" ]; + resolvedDefaultFeatures = [ "alloc" "default" "std" ]; }; "find-msvc-tools" = rec { crateName = "find-msvc-tools"; @@ -4575,9 +4611,9 @@ rec { }; "hyper" = rec { crateName = "hyper"; - version = "1.8.1"; + version = "1.9.0"; edition = "2021"; - sha256 = "04cxr8j5y86bhxxlyqb8xkxjskpajk7cxwfzzk4v3my3a3rd9cia"; + sha256 = "1jmwbwqcaficskg76kq402gbymbnh2z4v99xwq3l5aa6n8bg16b2"; authors = [ "Sean McArthur " ]; @@ -4634,11 +4670,6 @@ rec { packageId = "pin-project-lite"; optional = true; } - { - name = "pin-utils"; - packageId = "pin-utils"; - optional = true; - } { name = "smallvec"; packageId = "smallvec"; @@ -4676,7 +4707,7 @@ rec { "client" = [ "dep:want" "dep:pin-project-lite" "dep:smallvec" ]; "ffi" = [ "dep:http-body-util" "dep:futures-util" ]; "full" = [ "client" "http1" "http2" "server" ]; - "http1" = [ "dep:atomic-waker" "dep:futures-channel" "dep:futures-core" "dep:httparse" "dep:itoa" "dep:pin-utils" ]; + "http1" = [ "dep:atomic-waker" "dep:futures-channel" "dep:futures-core" "dep:httparse" "dep:itoa" ]; "http2" = [ "dep:futures-channel" "dep:futures-core" "dep:h2" ]; "server" = [ "dep:httpdate" "dep:pin-project-lite" "dep:smallvec" ]; "tracing" = [ "dep:tracing" ]; @@ -5024,9 +5055,9 @@ rec { }; "icu_collections" = rec { crateName = "icu_collections"; - version = "2.1.1"; + version = "2.2.0"; edition = "2021"; - sha256 = "0hsblchsdl64q21qwrs4hvc2672jrf466zivbj1bwyv606bn8ssc"; + sha256 = "070r7xd0pynm0hnc1v2jzlbxka6wf50f81wybf9xg0y82v6x3119"; authors = [ "The ICU4X Project Developers" ]; @@ -5042,6 +5073,11 @@ rec { usesDefaultFeatures = false; features = [ "zerovec" ]; } + { + name = "utf8_iter"; + packageId = "utf8_iter"; + usesDefaultFeatures = false; + } { name = "yoke"; packageId = "yoke"; @@ -5069,9 +5105,9 @@ rec { }; "icu_locale_core" = rec { crateName = "icu_locale_core"; - version = "2.1.1"; + version = "2.2.0"; edition = "2021"; - sha256 = "1djvdc2f5ylmp1ymzv4gcnmq1s4hqfim9nxlcm173lsd01hpifpd"; + sha256 = "0a9cmin5w1x3bg941dlmgszn33qgq428k7qiqn5did72ndi9n8cj"; authors = [ "The ICU4X Project Developers" ]; @@ -5103,6 +5139,14 @@ rec { usesDefaultFeatures = false; } ]; + devDependencies = [ + { + name = "litemap"; + packageId = "litemap"; + usesDefaultFeatures = false; + features = [ "testing" ]; + } + ]; features = { "alloc" = [ "litemap/alloc" "tinystr/alloc" "writeable/alloc" "serde?/alloc" ]; "databake" = [ "dep:databake" "alloc" ]; @@ -5113,9 +5157,9 @@ rec { }; "icu_normalizer" = rec { crateName = "icu_normalizer"; - version = "2.1.1"; + version = "2.2.0"; edition = "2021"; - sha256 = "16dmn5596la2qm0r3vih0bzjfi0vx9a20yqjha6r1y3vnql8hv2z"; + sha256 = "1d7krxr0xpc4x9635k1100a24nh0nrc59n65j6yk6gbfkplmwvn5"; authors = [ "The ICU4X Project Developers" ]; @@ -5157,6 +5201,7 @@ rec { "compiled_data" = [ "dep:icu_normalizer_data" "icu_properties?/compiled_data" "icu_provider/baked" ]; "datagen" = [ "serde" "dep:databake" "icu_properties" "icu_collections/databake" "zerovec/databake" "icu_properties?/datagen" "icu_provider/export" ]; "default" = [ "compiled_data" "utf8_iter" "utf16_iter" ]; + "harfbuzz_traits" = [ "dep:harfbuzz-traits" ]; "icu_properties" = [ "dep:icu_properties" ]; "serde" = [ "dep:serde" "icu_collections/serde" "zerovec/serde" "icu_properties?/serde" "icu_provider/serde" ]; "utf16_iter" = [ "dep:utf16_iter" "dep:write16" ]; @@ -5166,9 +5211,9 @@ rec { }; "icu_normalizer_data" = rec { crateName = "icu_normalizer_data"; - version = "2.1.1"; + version = "2.2.0"; edition = "2021"; - sha256 = "02jnzizg6q75m41l6c13xc7nkc5q8yr1b728dcgfhpzw076wrvbs"; + sha256 = "0f5d5d5fhhr9937m2z6z38fzh6agf14z24kwlr6lyczafypf0fys"; authors = [ "The ICU4X Project Developers" ]; @@ -5176,9 +5221,9 @@ rec { }; "icu_properties" = rec { crateName = "icu_properties"; - version = "2.1.2"; + version = "2.2.0"; edition = "2021"; - sha256 = "1v3lbmhhi7i6jgw51ikjb1p50qh5rb67grlkdnkc63l7zq1gq2q2"; + sha256 = "1pkh3s837808cbwxvfagwc28cvwrz2d9h5rl02jwrhm51ryvdqxy"; authors = [ "The ICU4X Project Developers" ]; @@ -5223,6 +5268,7 @@ rec { "compiled_data" = [ "dep:icu_properties_data" "icu_provider/baked" ]; "datagen" = [ "serde" "dep:databake" "zerovec/databake" "icu_collections/databake" "icu_locale_core/databake" "zerotrie/databake" "icu_provider/export" ]; "default" = [ "compiled_data" ]; + "harfbuzz_traits" = [ "dep:harfbuzz-traits" ]; "serde" = [ "dep:serde" "icu_locale_core/serde" "zerovec/serde" "icu_collections/serde" "icu_provider/serde" "zerotrie/serde" ]; "unicode_bidi" = [ "dep:unicode-bidi" ]; }; @@ -5230,9 +5276,9 @@ rec { }; "icu_properties_data" = rec { crateName = "icu_properties_data"; - version = "2.1.2"; + version = "2.2.0"; edition = "2021"; - sha256 = "1bvpkh939rgzrjfdb7hz47v4wijngk0snmcgrnpwc9fpz162jv31"; + sha256 = "052awny0qwkbcbpd5jg2cd7vl5ry26pq4hz1nfsgf10c3qhbnawf"; authors = [ "The ICU4X Project Developers" ]; @@ -5240,9 +5286,9 @@ rec { }; "icu_provider" = rec { crateName = "icu_provider"; - version = "2.1.1"; + version = "2.2.0"; edition = "2021"; - sha256 = "0576b7dizgyhpfa74kacv86y4g1p7v5ffd6c56kf1q82rvq2r5l5"; + sha256 = "08dl8pxbwr8zsz4c5vphqb7xw0hykkznwi4rw7bk6pwb3krlr70k"; authors = [ "The ICU4X Project Developers" ]; @@ -5432,9 +5478,9 @@ rec { }; "indexmap" = rec { crateName = "indexmap"; - version = "2.13.0"; + version = "2.13.1"; edition = "2021"; - sha256 = "05qh5c4h2hrnyypphxpwflk45syqbzvqsvvyxg43mp576w2ff53p"; + sha256 = "1zs2af09vgdaix8qzhi3bd12zpn5za7pbc6v0cc0q2ryrfws5a25"; dependencies = [ { name = "equivalent"; @@ -5594,9 +5640,9 @@ rec { }; "iri-string" = rec { crateName = "iri-string"; - version = "0.7.10"; + version = "0.7.12"; edition = "2021"; - sha256 = "06kk3a5jz576p7vrpf7zz9jv3lrgcyp7pczcblcxdnryg3q3h4y9"; + sha256 = "082fpx6c5ghvmqpwxaf2b268m47z2ic3prajqbmi1s1qpfj5kri5"; libName = "iri_string"; authors = [ "YOSHIOKA Takuma " @@ -5677,9 +5723,9 @@ rec { }; "itoa" = rec { crateName = "itoa"; - version = "1.0.17"; + version = "1.0.18"; edition = "2021"; - sha256 = "1lh93xydrdn1g9x547bd05g0d3hra7pd1k4jfd2z1pl1h5hwdv4j"; + sha256 = "10jnd1vpfkb8kj38rlkn2a6k02afvj3qmw054dfpzagrpl6achlg"; authors = [ "David Tolnay " ]; @@ -5876,7 +5922,7 @@ rec { } { name = "jni-sys"; - packageId = "jni-sys"; + packageId = "jni-sys 0.3.1"; } { name = "log"; @@ -5905,15 +5951,65 @@ rec { "libloading" = [ "dep:libloading" ]; }; }; - "jni-sys" = rec { + "jni-sys 0.3.1" = rec { crateName = "jni-sys"; - version = "0.3.0"; - edition = "2015"; - sha256 = "0c01zb9ygvwg9wdx2fii2d39myzprnpqqhy7yizxvjqp5p04pbwf"; + version = "0.3.1"; + edition = "2021"; + sha256 = "0n1j8fbz081w1igfrpc79n6vgm7h3ik34nziy5fjgq5nz7hm59j1"; libName = "jni_sys"; authors = [ "Steven Fackler " ]; + dependencies = [ + { + name = "jni-sys"; + packageId = "jni-sys 0.4.1"; + rename = "jni_sys_04"; + } + ]; + features = { + }; + resolvedDefaultFeatures = [ "default" ]; + }; + "jni-sys 0.4.1" = rec { + crateName = "jni-sys"; + version = "0.4.1"; + edition = "2021"; + sha256 = "1wlahx6f2zhczdjqyn8mk7kshb8x5vsd927sn3lvw41rrf47ldy6"; + libName = "jni_sys"; + authors = [ + "Steven Fackler " + "Robert Bragg " + ]; + dependencies = [ + { + name = "jni-sys-macros"; + packageId = "jni-sys-macros"; + } + ]; + + }; + "jni-sys-macros" = rec { + crateName = "jni-sys-macros"; + version = "0.4.1"; + edition = "2021"; + sha256 = "0r32gbabrak15a7p487765b5wc0jcna2yv88mk6m1zjqyi1bkh1q"; + procMacro = true; + libName = "jni_sys_macros"; + authors = [ + "Robert Bragg " + ]; + dependencies = [ + { + name = "quote"; + packageId = "quote"; + } + { + name = "syn"; + packageId = "syn 2.0.117"; + features = [ "full" ]; + } + ]; }; "jobserver" = rec { @@ -5941,14 +6037,26 @@ rec { }; "js-sys" = rec { crateName = "js-sys"; - version = "0.3.91"; + version = "0.3.94"; edition = "2021"; - sha256 = "171rzgq33wc1nxkgnvhlqqwwnrifs13mg3jjpjj5nf1z0yvib5xl"; + sha256 = "1nb4fr7c78mrrdhmg04nbac1zvd5z3panvqka8sy30nfh3py411f"; libName = "js_sys"; authors = [ "The wasm-bindgen Developers" ]; dependencies = [ + { + name = "cfg-if"; + packageId = "cfg-if"; + optional = true; + } + { + name = "futures-util"; + packageId = "futures-util"; + optional = true; + usesDefaultFeatures = false; + features = [ "std" ]; + } { name = "once_cell"; packageId = "once_cell"; @@ -5962,9 +6070,11 @@ rec { ]; features = { "default" = [ "std" "unsafe-eval" ]; + "futures" = [ "dep:cfg-if" "dep:futures-util" ]; + "futures-core-03-stream" = [ "futures" "dep:futures-core" ]; "std" = [ "wasm-bindgen/std" ]; }; - resolvedDefaultFeatures = [ "default" "std" "unsafe-eval" ]; + resolvedDefaultFeatures = [ "default" "futures" "std" "unsafe-eval" ]; }; "json-patch" = rec { crateName = "json-patch"; @@ -6133,7 +6243,7 @@ rec { workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; - rev = "7486017f60827d1d769d7bf17bf56adb21f8bb02"; + rev = "a4a204b0696a696b9a49c930703037dd124e876d"; sha256 = "1fgc7i8rhq1nl9m4s69sbfiywy2jx4narpynvm3g54vd5yd4c6m2"; }; libName = "k8s_version"; @@ -6152,7 +6262,7 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.9"; + packageId = "snafu 0.9.0"; } ]; features = { @@ -6769,9 +6879,9 @@ rec { }; "libc" = rec { crateName = "libc"; - version = "0.2.183"; + version = "0.2.184"; edition = "2021"; - sha256 = "17c9gyia7rrzf9gsssvk3vq9ca2jp6rh32fsw6ciarpn5djlddmm"; + sha256 = "1bz4525m7lwzr63iidh7lp9ppz2c9va1pn6fyjh5wsp1ajjd5xa8"; authors = [ "The Rust Project Developers" ]; @@ -6824,9 +6934,9 @@ rec { }; "libredox" = rec { crateName = "libredox"; - version = "0.1.14"; + version = "0.1.15"; edition = "2021"; - sha256 = "02p3pxlqf54znf1jhiyyjs0i4caf8ckrd5l8ygs4i6ba3nfy6i0p"; + sha256 = "022g34brmdis15kji0w9kla6xk6098xvs416ihgnn92isj7z9nvx"; authors = [ "4lDO2 <4lDO2@protonmail.com>" ]; @@ -6870,9 +6980,9 @@ rec { }; "litemap" = rec { crateName = "litemap"; - version = "0.8.1"; + version = "0.8.2"; edition = "2021"; - sha256 = "0xsy8pfp9s802rsj1bq2ys2kbk1g36w5dr3gkfip7gphb5x60wv3"; + sha256 = "1w7628bc7wwcxc4n4s5kw0610xk06710nh2hn5kwwk2wa91z9nlj"; authors = [ "The ICU4X Project Developers" ]; @@ -7095,9 +7205,9 @@ rec { }; "mio" = rec { crateName = "mio"; - version = "1.1.1"; + version = "1.2.0"; edition = "2021"; - sha256 = "1z2phpalqbdgihrcjp8y09l3kgq6309jnhnr6h11l9s7mnqcm6x6"; + sha256 = "1hanrh4fwsfkdqdaqfidz48zz1wdix23zwn3r2x78am0garfbdsh"; authors = [ "Carl Lerche " "Thomas de Zeeuw " @@ -7107,17 +7217,7 @@ rec { { name = "libc"; packageId = "libc"; - target = { target, features }: ("hermit" == target."os" or null); - } - { - name = "libc"; - packageId = "libc"; - target = { target, features }: ("wasi" == target."os" or null); - } - { - name = "libc"; - packageId = "libc"; - target = { target, features }: (target."unix" or false); + target = { target, features }: ((target."unix" or false) || ("hermit" == target."os" or null) || ("wasi" == target."os" or null)); } { name = "wasi"; @@ -7194,9 +7294,9 @@ rec { }; "num-conv" = rec { crateName = "num-conv"; - version = "0.2.0"; + version = "0.2.1"; edition = "2021"; - sha256 = "0l4hj7lp8zbb9am4j3p7vlcv47y9bbazinvnxx9zjhiwkibyr5yg"; + sha256 = "0rqrr29brafaa2za352pbmhkk556n7f8z9rrkgmjp1idvdl3fry6"; libName = "num_conv"; authors = [ "Jacob Pratt " @@ -7428,9 +7528,9 @@ rec { }; "opentelemetry-otlp" = rec { crateName = "opentelemetry-otlp"; - version = "0.31.0"; + version = "0.31.1"; edition = "2021"; - sha256 = "1gv3h75z8c0p9b85mbq7f1rgsi18wip1xlfa6g82lkfa5pdnc8vs"; + sha256 = "07zp0b62b9dajnvvcd6j2ppw5zg7wp4ixka9z6fr3bxrrdmcss8z"; libName = "opentelemetry_otlp"; dependencies = [ { @@ -7542,6 +7642,9 @@ rec { "serde_json" = [ "dep:serde_json" ]; "serialize" = [ "serde" "serde_json" ]; "tls" = [ "tonic/tls-ring" ]; + "tls-aws-lc" = [ "tonic/tls-aws-lc" ]; + "tls-provider-agnostic" = [ "tonic/_tls-any" ]; + "tls-ring" = [ "tonic/tls-ring" ]; "tls-roots" = [ "tls" "tonic/tls-native-roots" ]; "tls-webpki-roots" = [ "tls" "tonic/tls-webpki-roots" ]; "tokio" = [ "dep:tokio" ]; @@ -8252,17 +8355,6 @@ rec { sha256 = "1kfmwvs271si96zay4mm8887v5khw0c27jc9srw1a75ykvgj54x8"; libName = "pin_project_lite"; - }; - "pin-utils" = rec { - crateName = "pin-utils"; - version = "0.1.0"; - edition = "2018"; - sha256 = "117ir7vslsl2z1a7qzhws4pd01cg2d3338c47swjyvqv2n60v1wb"; - libName = "pin_utils"; - authors = [ - "Josef Brandl " - ]; - }; "portable-atomic" = rec { crateName = "portable-atomic"; @@ -8298,9 +8390,9 @@ rec { }; "potential_utf" = rec { crateName = "potential_utf"; - version = "0.1.4"; + version = "0.1.5"; edition = "2021"; - sha256 = "0xxg0pkfpq299wvwln409z4fk80rbv55phh3f1jhjajy5x1ljfdp"; + sha256 = "0r0518fr32xbkgzqap509s3r60cr0iancsg9j1jgf37cyz7b20q1"; authors = [ "The ICU4X Project Developers" ]; @@ -9889,9 +9981,9 @@ rec { }; "roff" = rec { crateName = "roff"; - version = "1.1.0"; + version = "1.1.1"; edition = "2024"; - sha256 = "1b8m96cshs2nam6ck1xrx59iijbpild4y75rlwngp7lp1s709wnv"; + sha256 = "12c1pibjxdjai80hpalxgqkzn30316x49iry4rdscrcn3mz42g1j"; }; "rstest" = rec { @@ -10103,9 +10195,9 @@ rec { }; "rustc-hash" = rec { crateName = "rustc-hash"; - version = "2.1.1"; + version = "2.1.2"; edition = "2021"; - sha256 = "03gz5lvd9ghcwsal022cgkq67dmimcgdjghfb5yb5d352ga06xrm"; + sha256 = "1gjdc5bw9982cj176jvgz9rrqf9xvr1q1ddpzywf5qhs7yzhlc4l"; libName = "rustc_hash"; authors = [ "The Rust Project Developers" @@ -10234,7 +10326,7 @@ rec { "thread" = [ "linux-raw-sys/prctl" ]; "use-libc" = [ "libc_errno" "libc" ]; }; - resolvedDefaultFeatures = [ "alloc" "std" "stdio" "termios" ]; + resolvedDefaultFeatures = [ "alloc" "default" "fs" "std" "stdio" "termios" ]; }; "rustls" = rec { crateName = "rustls"; @@ -10827,9 +10919,9 @@ rec { }; "semver" = rec { crateName = "semver"; - version = "1.0.27"; - edition = "2018"; - sha256 = "1qmi3akfrnqc2hfkdgcxhld5bv961wbk8my3ascv5068mc5fnryp"; + version = "1.0.28"; + edition = "2021"; + sha256 = "1kaimrpy876bcgi8bfj0qqfxk77zm9iz2zhn1hp9hj685z854y4a"; authors = [ "David Tolnay " ]; @@ -11087,9 +11179,9 @@ rec { }; "serde_spanned" = rec { crateName = "serde_spanned"; - version = "1.0.4"; - edition = "2021"; - sha256 = "0xkp0qdzams5sqwndbw3xrhf4c0bb5r46w2ywkp1aqsdb8ggkfzq"; + version = "1.1.1"; + edition = "2024"; + sha256 = "09jzk7i6wihn3d8i3wi4j4n98ghi93c3b8m8k64nxq0ijn3vaqk6"; dependencies = [ { name = "serde_core"; @@ -11264,6 +11356,20 @@ rec { "loom" = [ "dep:loom" ]; }; }; + "shell-words" = rec { + crateName = "shell-words"; + version = "1.1.1"; + edition = "2015"; + sha256 = "0xzd5p53xl0ndnk63r0by52rhdrh6pd37szfxszkg73zb6ffcvyw"; + libName = "shell_words"; + authors = [ + "Tomasz Miąsko " + ]; + features = { + "default" = [ "std" ]; + }; + resolvedDefaultFeatures = [ "default" "std" ]; + }; "shlex" = rec { crateName = "shlex"; version = "1.3.0"; @@ -11306,9 +11412,9 @@ rec { }; "simd-adler32" = rec { crateName = "simd-adler32"; - version = "0.3.8"; + version = "0.3.9"; edition = "2018"; - sha256 = "18lx2gdgislabbvlgw5q3j5ssrr77v8kmkrxaanp3liimp2sc873"; + sha256 = "0532ysdwcvzyp2bwpk8qz0hijplcdwpssr5gy5r7qwqqy5z5qgbh"; libName = "simd_adler32"; authors = [ "Marvin Countryman " @@ -11653,6 +11759,10 @@ rec { packageId = "clap"; features = [ "derive" "env" ]; } + { + name = "either"; + packageId = "either"; + } { name = "futures"; packageId = "futures"; @@ -11882,12 +11992,12 @@ rec { }; "stackable-operator" = rec { crateName = "stackable-operator"; - version = "0.108.0"; + version = "0.109.0"; edition = "2024"; workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; - rev = "7486017f60827d1d769d7bf17bf56adb21f8bb02"; + rev = "a4a204b0696a696b9a49c930703037dd124e876d"; sha256 = "1fgc7i8rhq1nl9m4s69sbfiywy2jx4narpynvm3g54vd5yd4c6m2"; }; libName = "stackable_operator"; @@ -11895,6 +12005,10 @@ rec { "Stackable GmbH " ]; dependencies = [ + { + name = "base64"; + packageId = "base64"; + } { name = "clap"; packageId = "clap"; @@ -11958,6 +12072,10 @@ rec { name = "product-config"; packageId = "product-config"; } + { + name = "rand"; + packageId = "rand 0.9.2"; + } { name = "regex"; packageId = "regex"; @@ -11986,7 +12104,7 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.9"; + packageId = "snafu 0.9.0"; } { name = "stackable-operator-derive"; @@ -12054,7 +12172,7 @@ rec { workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; - rev = "7486017f60827d1d769d7bf17bf56adb21f8bb02"; + rev = "a4a204b0696a696b9a49c930703037dd124e876d"; sha256 = "1fgc7i8rhq1nl9m4s69sbfiywy2jx4narpynvm3g54vd5yd4c6m2"; }; procMacro = true; @@ -12089,7 +12207,7 @@ rec { workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; - rev = "7486017f60827d1d769d7bf17bf56adb21f8bb02"; + rev = "a4a204b0696a696b9a49c930703037dd124e876d"; sha256 = "1fgc7i8rhq1nl9m4s69sbfiywy2jx4narpynvm3g54vd5yd4c6m2"; }; libName = "stackable_shared"; @@ -12134,7 +12252,7 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.9"; + packageId = "snafu 0.9.0"; } { name = "strum"; @@ -12165,12 +12283,12 @@ rec { }; "stackable-telemetry" = rec { crateName = "stackable-telemetry"; - version = "0.6.2"; + version = "0.6.3"; edition = "2024"; workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; - rev = "7486017f60827d1d769d7bf17bf56adb21f8bb02"; + rev = "a4a204b0696a696b9a49c930703037dd124e876d"; sha256 = "1fgc7i8rhq1nl9m4s69sbfiywy2jx4narpynvm3g54vd5yd4c6m2"; }; libName = "stackable_telemetry"; @@ -12222,7 +12340,7 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.9"; + packageId = "snafu 0.9.0"; } { name = "strum"; @@ -12275,12 +12393,12 @@ rec { }; "stackable-versioned" = rec { crateName = "stackable-versioned"; - version = "0.8.3"; + version = "0.9.0"; edition = "2024"; workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; - rev = "7486017f60827d1d769d7bf17bf56adb21f8bb02"; + rev = "a4a204b0696a696b9a49c930703037dd124e876d"; sha256 = "1fgc7i8rhq1nl9m4s69sbfiywy2jx4narpynvm3g54vd5yd4c6m2"; }; libName = "stackable_versioned"; @@ -12308,7 +12426,7 @@ rec { } { name = "snafu"; - packageId = "snafu 0.8.9"; + packageId = "snafu 0.9.0"; } { name = "stackable-versioned-macros"; @@ -12319,12 +12437,12 @@ rec { }; "stackable-versioned-macros" = rec { crateName = "stackable-versioned-macros"; - version = "0.8.3"; + version = "0.9.0"; edition = "2024"; workspace_member = null; src = pkgs.fetchgit { url = "https://github.com/stackabletech/operator-rs.git"; - rev = "7486017f60827d1d769d7bf17bf56adb21f8bb02"; + rev = "a4a204b0696a696b9a49c930703037dd124e876d"; sha256 = "1fgc7i8rhq1nl9m4s69sbfiywy2jx4narpynvm3g54vd5yd4c6m2"; }; procMacro = true; @@ -12419,6 +12537,10 @@ rec { packageId = "comfy-table"; features = [ "custom_styling" ]; } + { + name = "dialoguer"; + packageId = "dialoguer"; + } { name = "directories"; packageId = "directories"; @@ -12737,6 +12859,54 @@ rec { }; resolvedDefaultFeatures = [ "default" "proc-macro" ]; }; + "tempfile" = rec { + crateName = "tempfile"; + version = "3.27.0"; + edition = "2021"; + sha256 = "1gblhnyfjsbg9wjg194n89wrzah7jy3yzgnyzhp56f3v9jd7wj9j"; + authors = [ + "Steven Allen " + "The Rust Project Developers" + "Ashley Mannix " + "Jason White " + ]; + dependencies = [ + { + name = "fastrand"; + packageId = "fastrand"; + } + { + name = "getrandom"; + packageId = "getrandom 0.4.2"; + optional = true; + usesDefaultFeatures = false; + target = { target, features }: ((target."unix" or false) || (target."windows" or false) || ("wasi" == target."os" or null)); + } + { + name = "once_cell"; + packageId = "once_cell"; + usesDefaultFeatures = false; + features = [ "std" ]; + } + { + name = "rustix"; + packageId = "rustix"; + target = { target, features }: ((target."unix" or false) || ("wasi" == target."os" or null)); + features = [ "fs" ]; + } + { + name = "windows-sys"; + packageId = "windows-sys 0.61.2"; + target = { target, features }: (target."windows" or false); + features = [ "Win32_Storage_FileSystem" "Win32_Foundation" ]; + } + ]; + features = { + "default" = [ "getrandom" ]; + "getrandom" = [ "dep:getrandom" ]; + }; + resolvedDefaultFeatures = [ "default" "getrandom" ]; + }; "tera" = rec { crateName = "tera"; version = "1.20.1"; @@ -13070,9 +13240,9 @@ rec { }; "tinystr" = rec { crateName = "tinystr"; - version = "0.8.2"; + version = "0.8.3"; edition = "2021"; - sha256 = "0sa8z88axdsf088hgw5p4xcyi6g3w3sgbb6qdp81bph9bk2fkls2"; + sha256 = "0vfr8x285w6zsqhna0a9jyhylwiafb2kc8pj2qaqaahw48236cn8"; authors = [ "The ICU4X Project Developers" ]; @@ -13140,9 +13310,9 @@ rec { }; "tokio" = rec { crateName = "tokio"; - version = "1.50.0"; + version = "1.51.0"; edition = "2021"; - sha256 = "0bc2c5kd57p2xd4l6hagb0bkrp798k5vw0f3xzzwy0sf6ws5xb97"; + sha256 = "1k90g0ij7vap4lwz45gr0kq97f637smdmxjyq47vjyjazk0c9l9b"; authors = [ "Tokio Contributors " ]; @@ -13158,6 +13328,12 @@ rec { optional = true; target = { target, features }: ((target."tokio_unstable" or false) && ("linux" == target."os" or null)); } + { + name = "libc"; + packageId = "libc"; + optional = true; + target = { target, features }: ("wasi" == target."os" or null); + } { name = "libc"; packageId = "libc"; @@ -13192,7 +13368,7 @@ rec { name = "socket2"; packageId = "socket2"; optional = true; - target = { target, features }: (!(builtins.elem "wasm" target."family")); + target = { target, features }: ((!(builtins.elem "wasm" target."family")) || (("wasi" == target."os" or null) && (!("p1" == target."env" or null)))); features = [ "all" ]; } { @@ -13250,9 +13426,9 @@ rec { }; "tokio-macros" = rec { crateName = "tokio-macros"; - version = "2.6.1"; + version = "2.7.0"; edition = "2021"; - sha256 = "172nwz3s7mmh266hb8l5xdnc7v9kqahisppqhinfd75nz3ps4maw"; + sha256 = "15m4f37mdafs0gg36sh0rskm1i768lb7zmp8bw67kaxr3avnqniq"; procMacro = true; libName = "tokio_macros"; authors = [ @@ -13481,9 +13657,9 @@ rec { }; "toml" = rec { crateName = "toml"; - version = "1.0.7+spec-1.1.0"; - edition = "2021"; - sha256 = "15kaclc4y8yb4ahny19ng51rmff4vj7lyy5qq25lavkgi9yxaa6x"; + version = "1.1.2+spec-1.1.0"; + edition = "2024"; + sha256 = "1vpggpamqhw4852kic7465zsidczsla06wz6friqkkfbhigd3ww1"; dependencies = [ { name = "indexmap"; @@ -13545,9 +13721,9 @@ rec { }; "toml_datetime" = rec { crateName = "toml_datetime"; - version = "1.0.1+spec-1.1.0"; - edition = "2021"; - sha256 = "1sgk7zc6x187iib7kj1nzn44mp0zrk9hgii69rbar35m3ms0wclv"; + version = "1.1.1+spec-1.1.0"; + edition = "2024"; + sha256 = "1mws2mkkf46l7inn77azhm0vdwxngv9vsbhbl0ah33p2c9gzcr9i"; dependencies = [ { name = "serde_core"; @@ -13566,9 +13742,9 @@ rec { }; "toml_edit" = rec { crateName = "toml_edit"; - version = "0.25.5+spec-1.1.0"; - edition = "2021"; - sha256 = "1qgjkq687jkdrc3wq4fi95lj6d0bvwqs9xi3d41wx2x28h3a98cc"; + version = "0.25.10+spec-1.1.0"; + edition = "2024"; + sha256 = "06rdlg34g1ply2drbp0fr4xypsvdmfay714s75n5w8wy2v51h958"; dependencies = [ { name = "indexmap"; @@ -13601,9 +13777,9 @@ rec { }; "toml_parser" = rec { crateName = "toml_parser"; - version = "1.0.10+spec-1.1.0"; - edition = "2021"; - sha256 = "081lsv63zphnff9ssb0yjavcc82sblvj808rvwb4h76kxx5mpwkx"; + version = "1.1.2+spec-1.1.0"; + edition = "2024"; + sha256 = "09kmzc55a0j21whm290wlf5a8b18a0qc87a1s8sncrckc6wfkax2"; dependencies = [ { name = "winnow"; @@ -13621,9 +13797,9 @@ rec { }; "toml_writer" = rec { crateName = "toml_writer"; - version = "1.0.7+spec-1.1.0"; - edition = "2021"; - sha256 = "0vdmlskpqkjf5n2zghna8mwlqdbf0ryskfxnlhfjphixdqfalypi"; + version = "1.1.1+spec-1.1.0"; + edition = "2024"; + sha256 = "1nwjhvvrxz8f4ck1qi4xcz2x9qhpci37nrknhxxf9sqk22dsyvbm"; features = { "default" = [ "std" ]; "std" = [ "alloc" ]; @@ -14628,9 +14804,9 @@ rec { }; "unicode-segmentation" = rec { crateName = "unicode-segmentation"; - version = "1.12.0"; + version = "1.13.2"; edition = "2018"; - sha256 = "14qla2jfx74yyb9ds3d2mpwpa4l4lzb9z57c6d2ba511458z5k7n"; + sha256 = "135a26m4a0wj319gcw28j6a5aqvz00jmgwgmcs6szgxjf942facn"; libName = "unicode_segmentation"; authors = [ "kwantam " @@ -14982,9 +15158,9 @@ rec { }; "uuid" = rec { crateName = "uuid"; - version = "1.22.0"; + version = "1.23.0"; edition = "2021"; - sha256 = "0dvsfn44sddhyhlhk7m3i559wyb125h86799fm5abky0067kr3d6"; + sha256 = "1nbrzkdhwr4clshsks7flc2jq6lavjrsx65hyn63c9dd5vsbdj2s"; authors = [ "Ashley Mannix" "Dylan DPC" @@ -15259,9 +15435,9 @@ rec { }; "wasm-bindgen" = rec { crateName = "wasm-bindgen"; - version = "0.2.114"; + version = "0.2.117"; edition = "2021"; - sha256 = "13nkhw552hpllrrmkd2x9y4bmcxr82kdpky2n667kqzcq6jzjck5"; + sha256 = "1c6hi55mq70546hrvrx7wa27sn3yvf04gg6hf8riwn8mnhdzql85"; libName = "wasm_bindgen"; authors = [ "The wasm-bindgen Developers" @@ -15310,62 +15486,38 @@ rec { }; "wasm-bindgen-futures" = rec { crateName = "wasm-bindgen-futures"; - version = "0.4.64"; + version = "0.4.67"; edition = "2021"; - sha256 = "1f3xnr40wwims4zhvh119dhwmffz4h4x82cffi118ri878mm5ig9"; + sha256 = "0znqqp9z52s4ckb94crjlbqbfd7i8zvnjpx7s3nhcwjvj3k3sqh3"; libName = "wasm_bindgen_futures"; authors = [ "The wasm-bindgen Developers" ]; dependencies = [ - { - name = "cfg-if"; - packageId = "cfg-if"; - } - { - name = "futures-util"; - packageId = "futures-util"; - optional = true; - usesDefaultFeatures = false; - features = [ "std" ]; - } { name = "js-sys"; packageId = "js-sys"; usesDefaultFeatures = false; - } - { - name = "once_cell"; - packageId = "once_cell"; - usesDefaultFeatures = false; + features = [ "futures" ]; } { name = "wasm-bindgen"; packageId = "wasm-bindgen"; usesDefaultFeatures = false; } - { - name = "web-sys"; - packageId = "web-sys"; - usesDefaultFeatures = false; - target = { target, features }: (builtins.elem "atomics" targetFeatures); - features = [ "MessageEvent" "Worker" ]; - } ]; features = { "default" = [ "std" ]; - "futures-core" = [ "dep:futures-core" ]; - "futures-core-03-stream" = [ "futures-core" ]; - "futures-util" = [ "dep:futures-util" ]; - "std" = [ "wasm-bindgen/std" "js-sys/std" "web-sys/std" "futures-util" ]; + "futures-core-03-stream" = [ "js-sys/futures-core-03-stream" ]; + "std" = [ "wasm-bindgen/std" "js-sys/std" ]; }; - resolvedDefaultFeatures = [ "default" "futures-util" "std" ]; + resolvedDefaultFeatures = [ "default" "std" ]; }; "wasm-bindgen-macro" = rec { crateName = "wasm-bindgen-macro"; - version = "0.2.114"; + version = "0.2.117"; edition = "2021"; - sha256 = "1rhq9kkl7n0zjrag9p25xsi4aabpgfkyf02zn4xv6pqhrw7xb8hq"; + sha256 = "1gl6gqy60khhyqv354m0kmgk541sass8kzymxim7hi6zbaizkgbz"; procMacro = true; libName = "wasm_bindgen_macro"; authors = [ @@ -15387,9 +15539,9 @@ rec { }; "wasm-bindgen-macro-support" = rec { crateName = "wasm-bindgen-macro-support"; - version = "0.2.114"; + version = "0.2.117"; edition = "2021"; - sha256 = "1qriqqjpn922kv5c7f7627fj823k5aifv06j2gvwsiy5map4rkh3"; + sha256 = "1wlza8xdr18cac2wm3ahxdwx1nnqa01m0d3jf3kd9dmsy8z6kafw"; libName = "wasm_bindgen_macro_support"; authors = [ "The wasm-bindgen Developers" @@ -15423,10 +15575,10 @@ rec { }; "wasm-bindgen-shared" = rec { crateName = "wasm-bindgen-shared"; - version = "0.2.114"; + version = "0.2.117"; edition = "2021"; links = "wasm_bindgen"; - sha256 = "05lc6w64jxlk4wk8rjci4z61lhx2ams90la27a41gvi3qaw2d8vm"; + sha256 = "0frxrdi1w0cswv8v7n1972hd23nbwm8hr7a2dhdq8bbd59l9l4ir"; libName = "wasm_bindgen_shared"; authors = [ "The wasm-bindgen Developers" @@ -15551,9 +15703,9 @@ rec { }; "web-sys" = rec { crateName = "web-sys"; - version = "0.3.91"; + version = "0.3.94"; edition = "2021"; - sha256 = "1y91r8f4dy4iqgrr03swdzqffz6wmllrgninp8kgpaq4n5xs2jw5"; + sha256 = "02nxnhv349r2gcy8w71cjj6nimww1g2zy20y8r4hhbxi75z04w6d"; libName = "web_sys"; authors = [ "The wasm-bindgen Developers" @@ -16043,7 +16195,7 @@ rec { "default" = [ "std" ]; "std" = [ "wasm-bindgen/std" "js-sys/std" ]; }; - resolvedDefaultFeatures = [ "AbortController" "AbortSignal" "Blob" "BlobPropertyBag" "Event" "EventTarget" "File" "FormData" "Headers" "MessageEvent" "ReadableStream" "Request" "RequestCache" "RequestCredentials" "RequestInit" "RequestMode" "Response" "ServiceWorkerGlobalScope" "Window" "Worker" "WorkerGlobalScope" "default" "std" ]; + resolvedDefaultFeatures = [ "AbortController" "AbortSignal" "Blob" "BlobPropertyBag" "EventTarget" "File" "FormData" "Headers" "ReadableStream" "Request" "RequestCache" "RequestCredentials" "RequestInit" "RequestMode" "Response" "ServiceWorkerGlobalScope" "Window" "WorkerGlobalScope" "default" "std" ]; }; "web-time" = rec { crateName = "web-time"; @@ -17763,9 +17915,9 @@ rec { }; "winnow" = rec { crateName = "winnow"; - version = "1.0.0"; + version = "1.0.1"; edition = "2021"; - sha256 = "1n67gx8mg2b6r2z54zwbrb6qsfbdsar1lvafsfaajr3jcvj8h3m9"; + sha256 = "1dbji1bwviy08pl74f2qw2m4w9hc4p3vyl3lfj05jdydy59w1nh9"; dependencies = [ { name = "memchr"; @@ -18099,9 +18251,9 @@ rec { }; "writeable" = rec { crateName = "writeable"; - version = "0.6.2"; + version = "0.6.3"; edition = "2021"; - sha256 = "1fg08y97n6vk7l0rnjggw3xyrii6dcqg54wqaxldrlk98zdy1pcy"; + sha256 = "1i54d13h9bpap2hf13xcry1s4lxh7ap3923g8f3c0grd7c9fbyhz"; authors = [ "The ICU4X Project Developers" ]; @@ -18185,9 +18337,9 @@ rec { }; "yoke" = rec { crateName = "yoke"; - version = "0.8.1"; + version = "0.8.2"; edition = "2021"; - sha256 = "0m29dm0bf5iakxgma0bj6dbmc3b8qi9b1vaw9sa76kdqmz3fbmkj"; + sha256 = "1jprcs7a98a5whvfs6r3jvfh1nnfp6zyijl7y4ywmn88lzywbs5b"; authors = [ "Manish Goregaokar " ]; @@ -18220,9 +18372,9 @@ rec { }; "yoke-derive" = rec { crateName = "yoke-derive"; - version = "0.8.1"; + version = "0.8.2"; edition = "2021"; - sha256 = "0pbyja133jnng4mrhimzdq4a0y26421g734ybgz8wsgbfhl0andn"; + sha256 = "13l5y5sz4lqm7rmyakjbh6vwgikxiql51xfff9hq2j485hk4r16y"; procMacro = true; libName = "yoke_derive"; authors = [ @@ -18251,9 +18403,9 @@ rec { }; "zerocopy" = rec { crateName = "zerocopy"; - version = "0.8.42"; + version = "0.8.48"; edition = "2021"; - sha256 = "1qq50mj06rds2iac197kpkdlvgql1j3vvm82gy5qayladxqqnmzj"; + sha256 = "1sb8plax8jbrsng1jdval7bdhk7hhrx40dz3hwh074k6knzkgm7f"; authors = [ "Joshua Liebow-Feeser " "Jack Wrenn " @@ -18287,9 +18439,9 @@ rec { }; "zerocopy-derive" = rec { crateName = "zerocopy-derive"; - version = "0.8.42"; + version = "0.8.48"; edition = "2021"; - sha256 = "0bx010zlchg4y8xixvkb4c74634j7ypnbpl7cqjdcfsdxacc0v3y"; + sha256 = "1m5s0g92cxggqc74j83k1priz24k3z93sj5gadppd20p9c4cvqvh"; procMacro = true; libName = "zerocopy_derive"; authors = [ @@ -18322,9 +18474,9 @@ rec { }; "zerofrom" = rec { crateName = "zerofrom"; - version = "0.1.6"; + version = "0.1.7"; edition = "2021"; - sha256 = "19dyky67zkjichsb7ykhv0aqws3q0jfvzww76l66c19y6gh45k2h"; + sha256 = "1py40in4rirc9q8w36q67pld0zk8ssg024xhh0cncxgal7ra3yk9"; authors = [ "Manish Goregaokar " ]; @@ -18344,9 +18496,9 @@ rec { }; "zerofrom-derive" = rec { crateName = "zerofrom-derive"; - version = "0.1.6"; + version = "0.1.7"; edition = "2021"; - sha256 = "00l5niw7c1b0lf1vhvajpjmcnbdp2vn96jg4nmkhq2db0rp5s7np"; + sha256 = "18c4wsnznhdxx6m80piil1lbyszdiwsshgjrybqcm4b6qic22lqi"; procMacro = true; libName = "zerofrom_derive"; authors = [ @@ -18392,9 +18544,9 @@ rec { }; "zerotrie" = rec { crateName = "zerotrie"; - version = "0.2.3"; + version = "0.2.4"; edition = "2021"; - sha256 = "0lbqznlqazmrwwzslw0ci7p3pqxykrbfhq29npj0gmb2amxc2n9a"; + sha256 = "1gr0pkcn3qsr6in6iixqyp0vbzwf2j1jzyvh7yl2yydh3p9m548g"; authors = [ "The ICU4X Project Developers" ]; @@ -18419,7 +18571,9 @@ rec { } ]; features = { + "alloc" = [ "zerovec?/alloc" ]; "databake" = [ "dep:databake" "zerovec?/databake" ]; + "dense" = [ "dep:zerovec" ]; "litemap" = [ "dep:litemap" "alloc" ]; "serde" = [ "dep:serde_core" "dep:litemap" "alloc" "litemap/serde" "zerovec?/serde" ]; "yoke" = [ "dep:yoke" ]; @@ -18430,9 +18584,9 @@ rec { }; "zerovec" = rec { crateName = "zerovec"; - version = "0.11.5"; + version = "0.11.6"; edition = "2021"; - sha256 = "00m0p47k2g9mkv505hky5xh3r6ps7v8qc0dy4pspg542jj972a3c"; + sha256 = "0fdjsy6b31q9i0d73sl7xjd12xadbwi45lkpfgqnmasrqg5i3ych"; authors = [ "The ICU4X Project Developers" ]; @@ -18455,11 +18609,20 @@ rec { usesDefaultFeatures = false; } ]; + devDependencies = [ + { + name = "yoke"; + packageId = "yoke"; + usesDefaultFeatures = false; + features = [ "derive" ]; + } + ]; features = { "alloc" = [ "serde?/alloc" ]; "databake" = [ "dep:databake" ]; "derive" = [ "dep:zerovec-derive" ]; "hashmap" = [ "dep:twox-hash" "alloc" ]; + "schemars" = [ "dep:schemars" "alloc" ]; "serde" = [ "dep:serde" ]; "yoke" = [ "dep:yoke" ]; }; @@ -18467,9 +18630,9 @@ rec { }; "zerovec-derive" = rec { crateName = "zerovec-derive"; - version = "0.11.2"; + version = "0.11.3"; edition = "2021"; - sha256 = "1wsig4h5j7a1scd5hrlnragnazjny9qjc44hancb6p6a76ay7p7a"; + sha256 = "0m85qj92mmfvhjra6ziqky5b1p4kcmp5069k7kfadp5hr8jw8pb2"; procMacro = true; libName = "zerovec_derive"; authors = [ diff --git a/Cargo.toml b/Cargo.toml index 26abd4e3..68985380 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -28,8 +28,10 @@ clap = { version = "4.5", features = ["derive", "env"] } clap_complete = "4.5" clap_complete_nushell = "4.5" comfy-table = { version = "7.1", features = ["custom_styling"] } +dialoguer = "0.12.0" directories = "6.0" dotenvy = "0.15" +either = "1.15.0" futures = "0.3" indexmap = { version = "2.2", features = ["serde"] } indicatif = "0.18" @@ -49,7 +51,7 @@ serde_json = "1.0" serde_yaml = "0.9" sha2 = "0.10" snafu = { version = "0.9", features = ["futures"] } -stackable-operator = { git = "https://github.com/stackabletech/operator-rs.git", tag = "stackable-operator-0.108.0", default-features = false, features = ["crds", "kube-ws"] } +stackable-operator = { git = "https://github.com/stackabletech/operator-rs.git", tag = "stackable-operator-0.109.0", default-features = false, features = ["crds", "kube-ws"] } tera = "1.20" termion = "4.0" tokio = { version = "1.38", features = ["rt-multi-thread", "macros", "fs", "process", "io-std"] } diff --git a/crate-hashes.json b/crate-hashes.json index e1706bc4..5ad3e870 100644 --- a/crate-hashes.json +++ b/crate-hashes.json @@ -4,12 +4,12 @@ "git+https://github.com/kube-rs/kube-rs?rev=fe69cc486ff8e62a7da61d64ec3ebbd9e64c43b5#kube-derive@3.0.1": "1irm4g79crlxjm3iqrgvx0f6wxdcj394ky84q89pk9i36y2mlw3n", "git+https://github.com/kube-rs/kube-rs?rev=fe69cc486ff8e62a7da61d64ec3ebbd9e64c43b5#kube-runtime@3.0.1": "1irm4g79crlxjm3iqrgvx0f6wxdcj394ky84q89pk9i36y2mlw3n", "git+https://github.com/kube-rs/kube-rs?rev=fe69cc486ff8e62a7da61d64ec3ebbd9e64c43b5#kube@3.0.1": "1irm4g79crlxjm3iqrgvx0f6wxdcj394ky84q89pk9i36y2mlw3n", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.108.0#k8s-version@0.1.3": "1fgc7i8rhq1nl9m4s69sbfiywy2jx4narpynvm3g54vd5yd4c6m2", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.108.0#stackable-operator-derive@0.3.1": "1fgc7i8rhq1nl9m4s69sbfiywy2jx4narpynvm3g54vd5yd4c6m2", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.108.0#stackable-operator@0.108.0": "1fgc7i8rhq1nl9m4s69sbfiywy2jx4narpynvm3g54vd5yd4c6m2", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.108.0#stackable-shared@0.1.0": "1fgc7i8rhq1nl9m4s69sbfiywy2jx4narpynvm3g54vd5yd4c6m2", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.108.0#stackable-telemetry@0.6.2": "1fgc7i8rhq1nl9m4s69sbfiywy2jx4narpynvm3g54vd5yd4c6m2", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.108.0#stackable-versioned-macros@0.8.3": "1fgc7i8rhq1nl9m4s69sbfiywy2jx4narpynvm3g54vd5yd4c6m2", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.108.0#stackable-versioned@0.8.3": "1fgc7i8rhq1nl9m4s69sbfiywy2jx4narpynvm3g54vd5yd4c6m2", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.109.0#k8s-version@0.1.3": "1fgc7i8rhq1nl9m4s69sbfiywy2jx4narpynvm3g54vd5yd4c6m2", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.109.0#stackable-operator-derive@0.3.1": "1fgc7i8rhq1nl9m4s69sbfiywy2jx4narpynvm3g54vd5yd4c6m2", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.109.0#stackable-operator@0.109.0": "1fgc7i8rhq1nl9m4s69sbfiywy2jx4narpynvm3g54vd5yd4c6m2", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.109.0#stackable-shared@0.1.0": "1fgc7i8rhq1nl9m4s69sbfiywy2jx4narpynvm3g54vd5yd4c6m2", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.109.0#stackable-telemetry@0.6.3": "1fgc7i8rhq1nl9m4s69sbfiywy2jx4narpynvm3g54vd5yd4c6m2", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.109.0#stackable-versioned-macros@0.9.0": "1fgc7i8rhq1nl9m4s69sbfiywy2jx4narpynvm3g54vd5yd4c6m2", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.109.0#stackable-versioned@0.9.0": "1fgc7i8rhq1nl9m4s69sbfiywy2jx4narpynvm3g54vd5yd4c6m2", "git+https://github.com/stackabletech/product-config.git?tag=0.8.0#product-config@0.8.0": "1dz70kapm2wdqcr7ndyjji0lhsl98bsq95gnb2lw487wf6yr7987" } \ No newline at end of file diff --git a/docs/modules/stackablectl/pages/commands/demo.adoc b/docs/modules/stackablectl/pages/commands/demo.adoc index 074cd0cd..e5b66450 100644 --- a/docs/modules/stackablectl/pages/commands/demo.adoc +++ b/docs/modules/stackablectl/pages/commands/demo.adoc @@ -159,4 +159,31 @@ $ stackablectl stacklets list == Uninstalling a Demo -Currently, there is no support for uninstalling a demo again. However, this functionality will come soon. +To uninstall a demo, you can run the following command, specifying the namespace the demo was installed in. + +[source,console] +---- +$ stackablectl demo uninstall trino-taxi-data -n + +---- + +[NOTE] +==== +The uninstall command deletes the namespace the demo was installed in. Therefore it is not possible to uninstall demos in the `default` namespace. +==== + +[WARNING] +==== +Currently, some resources deployed by the demo are either still lingering after the deletion process or need to be deleted before running the uninstall command. + +* All demos + ** MutatingWebhookConfiguration `restarter-sts-enricher.stackable.tech` is not deleted +* end-to-end-security, argo-cd-git-ops, hbase-hdfs-load-cycling-data, jupyterhub-pyspark-hdfs-anomaly-detection-taxi-data + ** ClusterroleBinding `hdfs-clusterrolebinding-nodes` is not deleted +* argo-cd-git-ops + ** Delete the ArgoCD Applications `airflow`, `airflow-postgres`, `minio`, and `sealed-secrets` + ** Then you can delete the namespaces `stackable-airflow`, `minio`, and `sealed-secrets` + ** Delete the ArgoCD ApplicationSet `stackable-operators` and wait for ArgoCD to delete the Applications of that ApplicationSet + ** Only after deleting the above, run the `stackablectl demo uninstall` command, otherwise the deletion might get stuck + ** `*.argoproj.io` CRDs and `sealedsecrets.bitnami.com` CRD are not deleted +==== diff --git a/docs/modules/stackablectl/pages/commands/stack.adoc b/docs/modules/stackablectl/pages/commands/stack.adoc index 27c9049b..ccbface6 100644 --- a/docs/modules/stackablectl/pages/commands/stack.adoc +++ b/docs/modules/stackablectl/pages/commands/stack.adoc @@ -89,3 +89,39 @@ Installed stack logging Use "stackablectl operator installed" to display the installed operators Use "stackablectl stacklet list" to display the installed stacklets ---- + +== Uninstalling a Stack + +To uninstall a stack, you can run the following command, specifying the namespace the stack was installed in. + +[source,console] +---- +$ stackablectl stack uninstall logging -n + +---- + +[NOTE] +==== +The uninstall command deletes the namespace the stack was installed in. Therefore it is not possible to uninstall stacks in the `default` namespace. +==== + +[WARNING] +==== +Currently, some resources deployed by the stack are either still lingering after the deletion process or need to be deleted before running the uninstall command. + +* All stacks + ** MutatingWebhookConfiguration `restarter-sts-enricher.stackable.tech` is not deleted +* argo-cd-git-ops, hdfs-hbase, jupyterhub-pyspark-hdfs + ** ClusterroleBinding `hdfs-clusterrolebinding-nodes` is not deleted +* argo-cd-git-ops + ** Delete the ArgoCD Applications `airflow`, `airflow-postgres`, `minio`, and `sealed-secrets` + ** Then you can delete the namespaces `stackable-airflow`, `minio`, and `sealed-secrets` + ** Delete the ArgoCD ApplicationSet `stackable-operators` and wait for ArgoCD to delete the Applications of that ApplicationSet + ** Only after deleting the above, run the `stackablectl stack uninstall` command, otherwise the deletion might get stuck + ** `*.argoproj.io` CRDs and `sealedsecrets.bitnami.com` CRD are not deleted +* monitoring + ** `*.monitoring.coreos.com` CRDs are not deleted +* observability + ** Delete OpenTelemetryCollector `otel-collector-grpc-external` and `otel-collector-grpc` + ** Only after deleting the above, run the `stackablectl stack uninstall` command, otherwise the deletion might get stuck +==== diff --git a/docs/modules/stackablectl/partials/commands/demo.adoc b/docs/modules/stackablectl/partials/commands/demo.adoc index c5b2d39b..21f5b844 100644 --- a/docs/modules/stackablectl/partials/commands/demo.adoc +++ b/docs/modules/stackablectl/partials/commands/demo.adoc @@ -6,10 +6,11 @@ Interact with demos, which are end-to-end usage demonstrations of the Stackable Usage: stackablectl demo [OPTIONS] Commands: - list List available demos - describe Print out detailed demo information - install Install a specific demo - help Print this message or the help of the given subcommand(s) + list List available demos + describe Print out detailed demo information + install Install a specific demo + uninstall Uninstall a specific stack. Caution: This will delete the provided stack namespace, the operators and provided operator namespace, and all Stackable CRDs + help Print this message or the help of the given subcommand(s) Options: -l, --log-level diff --git a/docs/modules/stackablectl/partials/commands/stack.adoc b/docs/modules/stackablectl/partials/commands/stack.adoc index 639b1621..9bc0a561 100644 --- a/docs/modules/stackablectl/partials/commands/stack.adoc +++ b/docs/modules/stackablectl/partials/commands/stack.adoc @@ -6,10 +6,11 @@ Interact with stacks, which are ready-to-use product combinations Usage: stackablectl stack [OPTIONS] Commands: - list List available stacks - describe Describe a specific stack - install Install a specific stack - help Print this message or the help of the given subcommand(s) + list List available stacks + describe Describe a specific stack + install Install a specific stack + uninstall Uninstall a specific stack. Caution: This will delete the provided stack namespace, the operators and provided operator namespace, and all Stackable CRDs + help Print this message or the help of the given subcommand(s) Options: -l, --log-level diff --git a/extra/completions/_stackablectl b/extra/completions/_stackablectl index abba1406..e3512fea 100644 --- a/extra/completions/_stackablectl +++ b/extra/completions/_stackablectl @@ -667,12 +667,51 @@ minikube\:"Use a minikube cluster"))' \ repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based on the version and thus will be operator-specific"))' \ '--listener-class-preset=[Choose the ListenerClass preset (\`none\`, \`ephemeral-nodes\` or \`stable-nodes\`)]:LISTENER_CLASS_PRESET:(none stable-nodes ephemeral-nodes)' \ '--skip-release[Skip the installation of the release during the stack install process]' \ +'-y[Assume "yes" as answer to all prompts and run non-interactively]' \ +'--assume-yes[Assume "yes" as answer to all prompts and run non-interactively]' \ +'--yes[Assume "yes" as answer to all prompts and run non-interactively]' \ '--no-cache[Do not cache the remote (default) demo, stack and release files]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ '-V[Print version]' \ '--version[Print version]' \ -':stack_name -- Name of the stack to describe:_default' \ +':stack_name -- Name of the stack to install:_default' \ +&& ret=0 +;; +(uninstall) +_arguments "${_arguments_options[@]}" : \ +'--operator-namespace=[Namespace where the operators are deployed]:OPERATOR_NAMESPACE:_default' \ +'--operator-ns=[Namespace where the operators are deployed]:OPERATOR_NAMESPACE:_default' \ +'-n+[Namespace where the stacks or demos are deployed]:NAMESPACE:_default' \ +'--namespace=[Namespace where the stacks or demos are deployed]:NAMESPACE:_default' \ +'--product-ns=[Namespace where the stacks or demos are deployed]:NAMESPACE:_default' \ +'--release=[Target a specific Stackable release]:RELEASE:_default' \ +'-l+[Log level this application uses]:LOG_LEVEL:_default' \ +'--log-level=[Log level this application uses]:LOG_LEVEL:_default' \ +'*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'-f+[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ +'--operator-values=[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ +'--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ +'--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ +'--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ +'--chart-source=[Source the charts from either a OCI registry or from index.yaml-based repositories]:CHART_SOURCE:((oci\:"OCI registry" +repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based on the version and thus will be operator-specific"))' \ +'--listener-class-preset=[Choose the ListenerClass preset (\`none\`, \`ephemeral-nodes\` or \`stable-nodes\`)]:LISTENER_CLASS_PRESET:(none stable-nodes ephemeral-nodes)' \ +'--skip-operators-and-crds[Skip uninstalling Stackable operators and CRDs]' \ +'-y[Assume "yes" as answer to all prompts and run non-interactively]' \ +'--assume-yes[Assume "yes" as answer to all prompts and run non-interactively]' \ +'--yes[Assume "yes" as answer to all prompts and run non-interactively]' \ +'--no-cache[Do not cache the remote (default) demo, stack and release files]' \ +'-h[Print help (see more with '\''--help'\'')]' \ +'--help[Print help (see more with '\''--help'\'')]' \ +'-V[Print version]' \ +'--version[Print version]' \ +':stack_name -- Name of the stack to uninstall:_default' \ && ret=0 ;; (help) @@ -699,6 +738,10 @@ _arguments "${_arguments_options[@]}" : \ _arguments "${_arguments_options[@]}" : \ && ret=0 ;; +(uninstall) +_arguments "${_arguments_options[@]}" : \ +&& ret=0 +;; (help) _arguments "${_arguments_options[@]}" : \ && ret=0 @@ -980,6 +1023,9 @@ minikube\:"Use a minikube cluster"))' \ repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based on the version and thus will be operator-specific"))' \ '--listener-class-preset=[Choose the ListenerClass preset (\`none\`, \`ephemeral-nodes\` or \`stable-nodes\`)]:LISTENER_CLASS_PRESET:(none stable-nodes ephemeral-nodes)' \ '--skip-release[Skip the installation of the release during the stack install process]' \ +'-y[Assume "yes" as answer to all prompts and run non-interactively]' \ +'--assume-yes[Assume "yes" as answer to all prompts and run non-interactively]' \ +'--yes[Assume "yes" as answer to all prompts and run non-interactively]' \ '--no-cache[Do not cache the remote (default) demo, stack and release files]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ @@ -988,6 +1034,42 @@ repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based o ':DEMO -- Demo to install:_default' \ && ret=0 ;; +(uninstall) +_arguments "${_arguments_options[@]}" : \ +'--operator-namespace=[Namespace where the operators are deployed]:OPERATOR_NAMESPACE:_default' \ +'--operator-ns=[Namespace where the operators are deployed]:OPERATOR_NAMESPACE:_default' \ +'-n+[Namespace where the stacks or demos are deployed]:NAMESPACE:_default' \ +'--namespace=[Namespace where the stacks or demos are deployed]:NAMESPACE:_default' \ +'--product-ns=[Namespace where the stacks or demos are deployed]:NAMESPACE:_default' \ +'--release=[Target a specific Stackable release]:RELEASE:_default' \ +'-l+[Log level this application uses]:LOG_LEVEL:_default' \ +'--log-level=[Log level this application uses]:LOG_LEVEL:_default' \ +'*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'-f+[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ +'--operator-values=[Path to a Helm values file that will be used for the installation of operators]:VALUES_FILE:_files' \ +'--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ +'--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ +'--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ +'--chart-source=[Source the charts from either a OCI registry or from index.yaml-based repositories]:CHART_SOURCE:((oci\:"OCI registry" +repo\:"index.yaml-based repositories\: resolution (dev, test, stable) is based on the version and thus will be operator-specific"))' \ +'--listener-class-preset=[Choose the ListenerClass preset (\`none\`, \`ephemeral-nodes\` or \`stable-nodes\`)]:LISTENER_CLASS_PRESET:(none stable-nodes ephemeral-nodes)' \ +'--skip-operators-and-crds[Skip uninstalling Stackable operators and CRDs]' \ +'-y[Assume "yes" as answer to all prompts and run non-interactively]' \ +'--assume-yes[Assume "yes" as answer to all prompts and run non-interactively]' \ +'--yes[Assume "yes" as answer to all prompts and run non-interactively]' \ +'--no-cache[Do not cache the remote (default) demo, stack and release files]' \ +'-h[Print help (see more with '\''--help'\'')]' \ +'--help[Print help (see more with '\''--help'\'')]' \ +'-V[Print version]' \ +'--version[Print version]' \ +':demo_name -- Demo to uninstall:_default' \ +&& ret=0 +;; (help) _arguments "${_arguments_options[@]}" : \ ":: :_stackablectl__demo__help_commands" \ @@ -1012,6 +1094,10 @@ _arguments "${_arguments_options[@]}" : \ _arguments "${_arguments_options[@]}" : \ && ret=0 ;; +(uninstall) +_arguments "${_arguments_options[@]}" : \ +&& ret=0 +;; (help) _arguments "${_arguments_options[@]}" : \ && ret=0 @@ -1568,6 +1654,10 @@ _arguments "${_arguments_options[@]}" : \ (install) _arguments "${_arguments_options[@]}" : \ && ret=0 +;; +(uninstall) +_arguments "${_arguments_options[@]}" : \ +&& ret=0 ;; esac ;; @@ -1620,6 +1710,10 @@ _arguments "${_arguments_options[@]}" : \ (install) _arguments "${_arguments_options[@]}" : \ && ret=0 +;; +(uninstall) +_arguments "${_arguments_options[@]}" : \ +&& ret=0 ;; esac ;; @@ -1866,6 +1960,7 @@ _stackablectl__demo_commands() { 'list:List available demos' \ 'describe:Print out detailed demo information' \ 'install:Install a specific demo' \ +'uninstall:Uninstall a specific stack. Caution\: This will delete the provided stack namespace, the operators and provided operator namespace, and all Stackable CRDs' \ 'help:Print this message or the help of the given subcommand(s)' \ ) _describe -t commands 'stackablectl demo commands' commands "$@" @@ -1881,6 +1976,7 @@ _stackablectl__demo__help_commands() { 'list:List available demos' \ 'describe:Print out detailed demo information' \ 'install:Install a specific demo' \ +'uninstall:Uninstall a specific stack. Caution\: This will delete the provided stack namespace, the operators and provided operator namespace, and all Stackable CRDs' \ 'help:Print this message or the help of the given subcommand(s)' \ ) _describe -t commands 'stackablectl demo help commands' commands "$@" @@ -1905,6 +2001,11 @@ _stackablectl__demo__help__list_commands() { local commands; commands=() _describe -t commands 'stackablectl demo help list commands' commands "$@" } +(( $+functions[_stackablectl__demo__help__uninstall_commands] )) || +_stackablectl__demo__help__uninstall_commands() { + local commands; commands=() + _describe -t commands 'stackablectl demo help uninstall commands' commands "$@" +} (( $+functions[_stackablectl__demo__install_commands] )) || _stackablectl__demo__install_commands() { local commands; commands=() @@ -1915,6 +2016,11 @@ _stackablectl__demo__list_commands() { local commands; commands=() _describe -t commands 'stackablectl demo list commands' commands "$@" } +(( $+functions[_stackablectl__demo__uninstall_commands] )) || +_stackablectl__demo__uninstall_commands() { + local commands; commands=() + _describe -t commands 'stackablectl demo uninstall commands' commands "$@" +} (( $+functions[_stackablectl__experimental-debug_commands] )) || _stackablectl__experimental-debug_commands() { local commands; commands=() @@ -1996,6 +2102,7 @@ _stackablectl__help__demo_commands() { 'list:List available demos' \ 'describe:Print out detailed demo information' \ 'install:Install a specific demo' \ +'uninstall:Uninstall a specific stack. Caution\: This will delete the provided stack namespace, the operators and provided operator namespace, and all Stackable CRDs' \ ) _describe -t commands 'stackablectl help demo commands' commands "$@" } @@ -2014,6 +2121,11 @@ _stackablectl__help__demo__list_commands() { local commands; commands=() _describe -t commands 'stackablectl help demo list commands' commands "$@" } +(( $+functions[_stackablectl__help__demo__uninstall_commands] )) || +_stackablectl__help__demo__uninstall_commands() { + local commands; commands=() + _describe -t commands 'stackablectl help demo uninstall commands' commands "$@" +} (( $+functions[_stackablectl__help__experimental-debug_commands] )) || _stackablectl__help__experimental-debug_commands() { local commands; commands=() @@ -2102,6 +2214,7 @@ _stackablectl__help__stack_commands() { 'list:List available stacks' \ 'describe:Describe a specific stack' \ 'install:Install a specific stack' \ +'uninstall:Uninstall a specific stack. Caution\: This will delete the provided stack namespace, the operators and provided operator namespace, and all Stackable CRDs' \ ) _describe -t commands 'stackablectl help stack commands' commands "$@" } @@ -2120,6 +2233,11 @@ _stackablectl__help__stack__list_commands() { local commands; commands=() _describe -t commands 'stackablectl help stack list commands' commands "$@" } +(( $+functions[_stackablectl__help__stack__uninstall_commands] )) || +_stackablectl__help__stack__uninstall_commands() { + local commands; commands=() + _describe -t commands 'stackablectl help stack uninstall commands' commands "$@" +} (( $+functions[_stackablectl__help__stacklet_commands] )) || _stackablectl__help__stacklet_commands() { local commands; commands=( @@ -2314,6 +2432,7 @@ _stackablectl__stack_commands() { 'list:List available stacks' \ 'describe:Describe a specific stack' \ 'install:Install a specific stack' \ +'uninstall:Uninstall a specific stack. Caution\: This will delete the provided stack namespace, the operators and provided operator namespace, and all Stackable CRDs' \ 'help:Print this message or the help of the given subcommand(s)' \ ) _describe -t commands 'stackablectl stack commands' commands "$@" @@ -2329,6 +2448,7 @@ _stackablectl__stack__help_commands() { 'list:List available stacks' \ 'describe:Describe a specific stack' \ 'install:Install a specific stack' \ +'uninstall:Uninstall a specific stack. Caution\: This will delete the provided stack namespace, the operators and provided operator namespace, and all Stackable CRDs' \ 'help:Print this message or the help of the given subcommand(s)' \ ) _describe -t commands 'stackablectl stack help commands' commands "$@" @@ -2353,6 +2473,11 @@ _stackablectl__stack__help__list_commands() { local commands; commands=() _describe -t commands 'stackablectl stack help list commands' commands "$@" } +(( $+functions[_stackablectl__stack__help__uninstall_commands] )) || +_stackablectl__stack__help__uninstall_commands() { + local commands; commands=() + _describe -t commands 'stackablectl stack help uninstall commands' commands "$@" +} (( $+functions[_stackablectl__stack__install_commands] )) || _stackablectl__stack__install_commands() { local commands; commands=() @@ -2363,6 +2488,11 @@ _stackablectl__stack__list_commands() { local commands; commands=() _describe -t commands 'stackablectl stack list commands' commands "$@" } +(( $+functions[_stackablectl__stack__uninstall_commands] )) || +_stackablectl__stack__uninstall_commands() { + local commands; commands=() + _describe -t commands 'stackablectl stack uninstall commands' commands "$@" +} (( $+functions[_stackablectl__stacklet_commands] )) || _stackablectl__stacklet_commands() { local commands; commands=( diff --git a/extra/completions/stackablectl.bash b/extra/completions/stackablectl.bash index be0544fa..fef7c698 100644 --- a/extra/completions/stackablectl.bash +++ b/extra/completions/stackablectl.bash @@ -112,6 +112,9 @@ _stackablectl() { stackablectl__demo,list) cmd="stackablectl__demo__list" ;; + stackablectl__demo,uninstall) + cmd="stackablectl__demo__uninstall" + ;; stackablectl__demo__help,describe) cmd="stackablectl__demo__help__describe" ;; @@ -124,6 +127,9 @@ _stackablectl() { stackablectl__demo__help,list) cmd="stackablectl__demo__help__list" ;; + stackablectl__demo__help,uninstall) + cmd="stackablectl__demo__help__uninstall" + ;; stackablectl__help,cache) cmd="stackablectl__help__cache" ;; @@ -184,6 +190,9 @@ _stackablectl() { stackablectl__help__demo,list) cmd="stackablectl__help__demo__list" ;; + stackablectl__help__demo,uninstall) + cmd="stackablectl__help__demo__uninstall" + ;; stackablectl__help__operator,describe) cmd="stackablectl__help__operator__describe" ;; @@ -223,6 +232,9 @@ _stackablectl() { stackablectl__help__stack,list) cmd="stackablectl__help__stack__list" ;; + stackablectl__help__stack,uninstall) + cmd="stackablectl__help__stack__uninstall" + ;; stackablectl__help__stacklet,credentials) cmd="stackablectl__help__stacklet__credentials" ;; @@ -316,6 +328,9 @@ _stackablectl() { stackablectl__stack,list) cmd="stackablectl__stack__list" ;; + stackablectl__stack,uninstall) + cmd="stackablectl__stack__uninstall" + ;; stackablectl__stack__help,describe) cmd="stackablectl__stack__help__describe" ;; @@ -328,6 +343,9 @@ _stackablectl() { stackablectl__stack__help,list) cmd="stackablectl__stack__help__list" ;; + stackablectl__stack__help,uninstall) + cmd="stackablectl__stack__help__uninstall" + ;; stackablectl__stacklet,credentials) cmd="stackablectl__stacklet__credentials" ;; @@ -2139,7 +2157,7 @@ _stackablectl() { return 0 ;; stackablectl__demo) - opts="-l -d -s -r -f -h -V --release --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version list describe install help" + opts="-l -d -s -r -f -h -V --release --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version list describe install uninstall help" if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -2479,7 +2497,7 @@ _stackablectl() { return 0 ;; stackablectl__demo__help) - opts="list describe install help" + opts="list describe install uninstall help" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -2548,8 +2566,22 @@ _stackablectl() { COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 ;; + stackablectl__demo__help__uninstall) + opts="" + if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + fi + case "${prev}" in + *) + COMPREPLY=() + ;; + esac + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + ;; stackablectl__demo__install) - opts="-c -n -l -d -s -r -f -h -V --skip-release --stack-parameters --parameters --cluster --cluster-name --cluster-nodes --cluster-cp-nodes --operator-ns --operator-namespace --product-ns --namespace --release --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version " + opts="-c -n -y -l -d -s -r -f -h -V --skip-release --stack-parameters --parameters --cluster --cluster-name --cluster-nodes --cluster-cp-nodes --operator-ns --operator-namespace --product-ns --namespace --yes --assume-yes --release --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version " if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -2936,6 +2968,192 @@ _stackablectl() { COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 ;; + stackablectl__demo__uninstall) + opts="-n -y -l -d -s -r -f -h -V --operator-ns --operator-namespace --product-ns --namespace --skip-operators-and-crds --yes --assume-yes --release --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version " + if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + fi + case "${prev}" in + --operator-namespace) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --operator-ns) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --namespace) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --product-ns) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -n) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --release) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --log-level) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -l) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --demo-file) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -d) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + --stack-file) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -s) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + --release-file) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -r) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + --operator-values) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -f) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + --helm-repo-stable) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-test) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-dev) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --chart-source) + COMPREPLY=($(compgen -W "oci repo" -- "${cur}")) + return 0 + ;; + --listener-class-preset) + COMPREPLY=($(compgen -W "none stable-nodes ephemeral-nodes" -- "${cur}")) + return 0 + ;; + *) + COMPREPLY=() + ;; + esac + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + ;; stackablectl__experimental__debug) opts="-n -c -l -d -s -r -f -h -V --namespace --container --image --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version [CMD]..." if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then @@ -3259,7 +3477,7 @@ _stackablectl() { return 0 ;; stackablectl__help__demo) - opts="list describe install" + opts="list describe install uninstall" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -3314,6 +3532,20 @@ _stackablectl() { COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 ;; + stackablectl__help__demo__uninstall) + opts="" + if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + fi + case "${prev}" in + *) + COMPREPLY=() + ;; + esac + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + ;; stackablectl__help__experimental__debug) opts="" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then @@ -3511,7 +3743,7 @@ _stackablectl() { return 0 ;; stackablectl__help__stack) - opts="list describe install" + opts="list describe install uninstall" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -3566,6 +3798,20 @@ _stackablectl() { COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 ;; + stackablectl__help__stack__uninstall) + opts="" + if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + fi + case "${prev}" in + *) + COMPREPLY=() + ;; + esac + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + ;; stackablectl__help__stacklet) opts="credentials list" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then @@ -5937,7 +6183,7 @@ _stackablectl() { return 0 ;; stackablectl__stack) - opts="-l -d -s -r -f -h -V --release --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version list describe install help" + opts="-l -d -s -r -f -h -V --release --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version list describe install uninstall help" if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -6277,7 +6523,7 @@ _stackablectl() { return 0 ;; stackablectl__stack__help) - opts="list describe install help" + opts="list describe install uninstall help" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -6346,8 +6592,22 @@ _stackablectl() { COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 ;; + stackablectl__stack__help__uninstall) + opts="" + if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + fi + case "${prev}" in + *) + COMPREPLY=() + ;; + esac + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + ;; stackablectl__stack__install) - opts="-c -n -l -d -s -r -f -h -V --skip-release --stack-parameters --parameters --cluster --cluster-name --cluster-nodes --cluster-cp-nodes --operator-ns --operator-namespace --product-ns --namespace --release --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version " + opts="-c -n -y -l -d -s -r -f -h -V --skip-release --stack-parameters --parameters --cluster --cluster-name --cluster-nodes --cluster-cp-nodes --operator-ns --operator-namespace --product-ns --namespace --yes --assume-yes --release --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version " if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -6734,6 +6994,192 @@ _stackablectl() { COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 ;; + stackablectl__stack__uninstall) + opts="-n -y -l -d -s -r -f -h -V --operator-ns --operator-namespace --product-ns --namespace --skip-operators-and-crds --yes --assume-yes --release --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version " + if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + fi + case "${prev}" in + --operator-namespace) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --operator-ns) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --namespace) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --product-ns) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -n) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --release) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --log-level) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -l) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --demo-file) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -d) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + --stack-file) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -s) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + --release-file) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -r) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + --operator-values) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + -f) + local oldifs + if [ -n "${IFS+x}" ]; then + oldifs="$IFS" + fi + IFS=$'\n' + COMPREPLY=($(compgen -f "${cur}")) + if [ -n "${oldifs+x}" ]; then + IFS="$oldifs" + fi + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + compopt -o filenames + fi + return 0 + ;; + --helm-repo-stable) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-test) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-dev) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --chart-source) + COMPREPLY=($(compgen -W "oci repo" -- "${cur}")) + return 0 + ;; + --listener-class-preset) + COMPREPLY=($(compgen -W "none stable-nodes ephemeral-nodes" -- "${cur}")) + return 0 + ;; + *) + COMPREPLY=() + ;; + esac + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + ;; stackablectl__stacklet) opts="-l -d -s -r -f -h -V --log-level --no-cache --demo-file --stack-file --release-file --operator-values --helm-repo-stable --helm-repo-test --helm-repo-dev --chart-source --listener-class-preset --help --version credentials list help" if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then diff --git a/extra/completions/stackablectl.elv b/extra/completions/stackablectl.elv index e98558e7..7ff8743c 100644 --- a/extra/completions/stackablectl.elv +++ b/extra/completions/stackablectl.elv @@ -430,6 +430,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand list 'List available stacks' cand describe 'Describe a specific stack' cand install 'Install a specific stack' + cand uninstall 'Uninstall a specific stack. Caution: This will delete the provided stack namespace, the operators and provided operator namespace, and all Stackable CRDs' cand help 'Print this message or the help of the given subcommand(s)' } &'stackablectl;stack;list'= { @@ -512,6 +513,41 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --chart-source 'Source the charts from either a OCI registry or from index.yaml-based repositories' cand --listener-class-preset 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' cand --skip-release 'Skip the installation of the release during the stack install process' + cand -y 'Assume "yes" as answer to all prompts and run non-interactively' + cand --assume-yes 'Assume "yes" as answer to all prompts and run non-interactively' + cand --yes 'Assume "yes" as answer to all prompts and run non-interactively' + cand --no-cache 'Do not cache the remote (default) demo, stack and release files' + cand -h 'Print help (see more with ''--help'')' + cand --help 'Print help (see more with ''--help'')' + cand -V 'Print version' + cand --version 'Print version' + } + &'stackablectl;stack;uninstall'= { + cand --operator-namespace 'Namespace where the operators are deployed' + cand --operator-ns 'Namespace where the operators are deployed' + cand -n 'Namespace where the stacks or demos are deployed' + cand --namespace 'Namespace where the stacks or demos are deployed' + cand --product-ns 'Namespace where the stacks or demos are deployed' + cand --release 'Target a specific Stackable release' + cand -l 'Log level this application uses' + cand --log-level 'Log level this application uses' + cand -d 'Provide one or more additional (custom) demo file(s)' + cand --demo-file 'Provide one or more additional (custom) demo file(s)' + cand -s 'Provide one or more additional (custom) stack file(s)' + cand --stack-file 'Provide one or more additional (custom) stack file(s)' + cand -r 'Provide one or more additional (custom) release file(s)' + cand --release-file 'Provide one or more additional (custom) release file(s)' + cand -f 'Path to a Helm values file that will be used for the installation of operators' + cand --operator-values 'Path to a Helm values file that will be used for the installation of operators' + cand --helm-repo-stable 'Provide a custom Helm stable repository URL' + cand --helm-repo-test 'Provide a custom Helm test repository URL' + cand --helm-repo-dev 'Provide a custom Helm dev repository URL' + cand --chart-source 'Source the charts from either a OCI registry or from index.yaml-based repositories' + cand --listener-class-preset 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' + cand --skip-operators-and-crds 'Skip uninstalling Stackable operators and CRDs' + cand -y 'Assume "yes" as answer to all prompts and run non-interactively' + cand --assume-yes 'Assume "yes" as answer to all prompts and run non-interactively' + cand --yes 'Assume "yes" as answer to all prompts and run non-interactively' cand --no-cache 'Do not cache the remote (default) demo, stack and release files' cand -h 'Print help (see more with ''--help'')' cand --help 'Print help (see more with ''--help'')' @@ -522,6 +558,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand list 'List available stacks' cand describe 'Describe a specific stack' cand install 'Install a specific stack' + cand uninstall 'Uninstall a specific stack. Caution: This will delete the provided stack namespace, the operators and provided operator namespace, and all Stackable CRDs' cand help 'Print this message or the help of the given subcommand(s)' } &'stackablectl;stack;help;list'= { @@ -530,6 +567,8 @@ set edit:completion:arg-completer[stackablectl] = {|@words| } &'stackablectl;stack;help;install'= { } + &'stackablectl;stack;help;uninstall'= { + } &'stackablectl;stack;help;help'= { } &'stackablectl;stacklet'= { @@ -646,6 +685,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand list 'List available demos' cand describe 'Print out detailed demo information' cand install 'Install a specific demo' + cand uninstall 'Uninstall a specific stack. Caution: This will delete the provided stack namespace, the operators and provided operator namespace, and all Stackable CRDs' cand help 'Print this message or the help of the given subcommand(s)' } &'stackablectl;demo;list'= { @@ -728,6 +768,41 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand --chart-source 'Source the charts from either a OCI registry or from index.yaml-based repositories' cand --listener-class-preset 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' cand --skip-release 'Skip the installation of the release during the stack install process' + cand -y 'Assume "yes" as answer to all prompts and run non-interactively' + cand --assume-yes 'Assume "yes" as answer to all prompts and run non-interactively' + cand --yes 'Assume "yes" as answer to all prompts and run non-interactively' + cand --no-cache 'Do not cache the remote (default) demo, stack and release files' + cand -h 'Print help (see more with ''--help'')' + cand --help 'Print help (see more with ''--help'')' + cand -V 'Print version' + cand --version 'Print version' + } + &'stackablectl;demo;uninstall'= { + cand --operator-namespace 'Namespace where the operators are deployed' + cand --operator-ns 'Namespace where the operators are deployed' + cand -n 'Namespace where the stacks or demos are deployed' + cand --namespace 'Namespace where the stacks or demos are deployed' + cand --product-ns 'Namespace where the stacks or demos are deployed' + cand --release 'Target a specific Stackable release' + cand -l 'Log level this application uses' + cand --log-level 'Log level this application uses' + cand -d 'Provide one or more additional (custom) demo file(s)' + cand --demo-file 'Provide one or more additional (custom) demo file(s)' + cand -s 'Provide one or more additional (custom) stack file(s)' + cand --stack-file 'Provide one or more additional (custom) stack file(s)' + cand -r 'Provide one or more additional (custom) release file(s)' + cand --release-file 'Provide one or more additional (custom) release file(s)' + cand -f 'Path to a Helm values file that will be used for the installation of operators' + cand --operator-values 'Path to a Helm values file that will be used for the installation of operators' + cand --helm-repo-stable 'Provide a custom Helm stable repository URL' + cand --helm-repo-test 'Provide a custom Helm test repository URL' + cand --helm-repo-dev 'Provide a custom Helm dev repository URL' + cand --chart-source 'Source the charts from either a OCI registry or from index.yaml-based repositories' + cand --listener-class-preset 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' + cand --skip-operators-and-crds 'Skip uninstalling Stackable operators and CRDs' + cand -y 'Assume "yes" as answer to all prompts and run non-interactively' + cand --assume-yes 'Assume "yes" as answer to all prompts and run non-interactively' + cand --yes 'Assume "yes" as answer to all prompts and run non-interactively' cand --no-cache 'Do not cache the remote (default) demo, stack and release files' cand -h 'Print help (see more with ''--help'')' cand --help 'Print help (see more with ''--help'')' @@ -738,6 +813,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand list 'List available demos' cand describe 'Print out detailed demo information' cand install 'Install a specific demo' + cand uninstall 'Uninstall a specific stack. Caution: This will delete the provided stack namespace, the operators and provided operator namespace, and all Stackable CRDs' cand help 'Print this message or the help of the given subcommand(s)' } &'stackablectl;demo;help;list'= { @@ -746,6 +822,8 @@ set edit:completion:arg-completer[stackablectl] = {|@words| } &'stackablectl;demo;help;install'= { } + &'stackablectl;demo;help;uninstall'= { + } &'stackablectl;demo;help;help'= { } &'stackablectl;completions'= { @@ -1119,6 +1197,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand list 'List available stacks' cand describe 'Describe a specific stack' cand install 'Install a specific stack' + cand uninstall 'Uninstall a specific stack. Caution: This will delete the provided stack namespace, the operators and provided operator namespace, and all Stackable CRDs' } &'stackablectl;help;stack;list'= { } @@ -1126,6 +1205,8 @@ set edit:completion:arg-completer[stackablectl] = {|@words| } &'stackablectl;help;stack;install'= { } + &'stackablectl;help;stack;uninstall'= { + } &'stackablectl;help;stacklet'= { cand credentials 'Display credentials for a stacklet' cand list 'List deployed stacklets' @@ -1138,6 +1219,7 @@ set edit:completion:arg-completer[stackablectl] = {|@words| cand list 'List available demos' cand describe 'Print out detailed demo information' cand install 'Install a specific demo' + cand uninstall 'Uninstall a specific stack. Caution: This will delete the provided stack namespace, the operators and provided operator namespace, and all Stackable CRDs' } &'stackablectl;help;demo;list'= { } @@ -1145,6 +1227,8 @@ set edit:completion:arg-completer[stackablectl] = {|@words| } &'stackablectl;help;demo;install'= { } + &'stackablectl;help;demo;uninstall'= { + } &'stackablectl;help;completions'= { cand bash 'Generate shell completions for Bash' cand elvish 'Generate shell completions for Elvish' diff --git a/extra/completions/stackablectl.fish b/extra/completions/stackablectl.fish index ba0bb555..d213a694 100644 --- a/extra/completions/stackablectl.fish +++ b/extra/completions/stackablectl.fish @@ -306,27 +306,28 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and _ complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from help" -f -a "uninstall" -d 'Uninstall a release' complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from help" -f -a "upgrade" -d 'Upgrade a release' complete -c stackablectl -n "__fish_stackablectl_using_subcommand release; and __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' -complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -l release -d 'Target a specific Stackable release' -r -complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -s l -l log-level -d 'Log level this application uses' -r -complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F -complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F -complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F -complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -s f -l operator-values -d 'Path to a Helm values file that will be used for the installation of operators' -r -F -complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f -complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f -complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f -complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' -repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" -complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -l listener-class-preset -d 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' -r -f -a "none\t'' -stable-nodes\t'' -ephemeral-nodes\t''" -complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' -complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -s h -l help -d 'Print help (see more with \'--help\')' -complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -s V -l version -d 'Print version' -complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -f -a "list" -d 'List available stacks' -complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -f -a "describe" -d 'Describe a specific stack' -complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -f -a "install" -d 'Install a specific stack' -complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install uninstall help" -l release -d 'Target a specific Stackable release' -r +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install uninstall help" -s l -l log-level -d 'Log level this application uses' -r +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install uninstall help" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install uninstall help" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install uninstall help" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install uninstall help" -s f -l operator-values -d 'Path to a Helm values file that will be used for the installation of operators' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install uninstall help" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install uninstall help" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install uninstall help" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install uninstall help" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' +repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install uninstall help" -l listener-class-preset -d 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' -r -f -a "none\t'' +stable-nodes\t'' +ephemeral-nodes\t''" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install uninstall help" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install uninstall help" -s h -l help -d 'Print help (see more with \'--help\')' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install uninstall help" -s V -l version -d 'Print version' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install uninstall help" -f -a "list" -d 'List available stacks' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install uninstall help" -f -a "describe" -d 'Describe a specific stack' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install uninstall help" -f -a "install" -d 'Install a specific stack' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install uninstall help" -f -a "uninstall" -d 'Uninstall a specific stack. Caution: This will delete the provided stack namespace, the operators and provided operator namespace, and all Stackable CRDs' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and not __fish_seen_subcommand_from list describe install uninstall help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from list" -s o -l output -r -f -a "plain\t'Print output formatted as plain text' table\t'Print output formatted as a table' json\t'Print output formatted as JSON' @@ -393,12 +394,35 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __f stable-nodes\t'' ephemeral-nodes\t''" complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from install" -l skip-release -d 'Skip the installation of the release during the stack install process' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from install" -s y -l assume-yes -l yes -d 'Assume "yes" as answer to all prompts and run non-interactively' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from install" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from install" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from install" -s V -l version -d 'Print version' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from uninstall" -l operator-namespace -l operator-ns -d 'Namespace where the operators are deployed' -r +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from uninstall" -s n -l namespace -l product-ns -d 'Namespace where the stacks or demos are deployed' -r +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from uninstall" -l release -d 'Target a specific Stackable release' -r +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from uninstall" -s l -l log-level -d 'Log level this application uses' -r +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from uninstall" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from uninstall" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from uninstall" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from uninstall" -s f -l operator-values -d 'Path to a Helm values file that will be used for the installation of operators' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from uninstall" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from uninstall" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from uninstall" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from uninstall" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' +repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from uninstall" -l listener-class-preset -d 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' -r -f -a "none\t'' +stable-nodes\t'' +ephemeral-nodes\t''" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from uninstall" -l skip-operators-and-crds -d 'Skip uninstalling Stackable operators and CRDs' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from uninstall" -s y -l assume-yes -l yes -d 'Assume "yes" as answer to all prompts and run non-interactively' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from uninstall" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from uninstall" -s h -l help -d 'Print help (see more with \'--help\')' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from uninstall" -s V -l version -d 'Print version' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from help" -f -a "list" -d 'List available stacks' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from help" -f -a "describe" -d 'Describe a specific stack' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from help" -f -a "install" -d 'Install a specific stack' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from help" -f -a "uninstall" -d 'Uninstall a specific stack. Caution: This will delete the provided stack namespace, the operators and provided operator namespace, and all Stackable CRDs' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stack; and __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and not __fish_seen_subcommand_from credentials list help" -s l -l log-level -d 'Log level this application uses' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and not __fish_seen_subcommand_from credentials list help" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F @@ -461,27 +485,28 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from help" -f -a "credentials" -d 'Display credentials for a stacklet' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from help" -f -a "list" -d 'List deployed stacklets' complete -c stackablectl -n "__fish_stackablectl_using_subcommand stacklet; and __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' -complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install help" -l release -d 'Target a specific Stackable release' -r -complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install help" -s l -l log-level -d 'Log level this application uses' -r -complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install help" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F -complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install help" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F -complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install help" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F -complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install help" -s f -l operator-values -d 'Path to a Helm values file that will be used for the installation of operators' -r -F -complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install help" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f -complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install help" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f -complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install help" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f -complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install help" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' -repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" -complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install help" -l listener-class-preset -d 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' -r -f -a "none\t'' -stable-nodes\t'' -ephemeral-nodes\t''" -complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install help" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' -complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install help" -s h -l help -d 'Print help (see more with \'--help\')' -complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install help" -s V -l version -d 'Print version' -complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install help" -f -a "list" -d 'List available demos' -complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install help" -f -a "describe" -d 'Print out detailed demo information' -complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install help" -f -a "install" -d 'Install a specific demo' -complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install uninstall help" -l release -d 'Target a specific Stackable release' -r +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install uninstall help" -s l -l log-level -d 'Log level this application uses' -r +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install uninstall help" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install uninstall help" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install uninstall help" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install uninstall help" -s f -l operator-values -d 'Path to a Helm values file that will be used for the installation of operators' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install uninstall help" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install uninstall help" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install uninstall help" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install uninstall help" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' +repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install uninstall help" -l listener-class-preset -d 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' -r -f -a "none\t'' +stable-nodes\t'' +ephemeral-nodes\t''" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install uninstall help" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install uninstall help" -s h -l help -d 'Print help (see more with \'--help\')' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install uninstall help" -s V -l version -d 'Print version' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install uninstall help" -f -a "list" -d 'List available demos' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install uninstall help" -f -a "describe" -d 'Print out detailed demo information' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install uninstall help" -f -a "install" -d 'Install a specific demo' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install uninstall help" -f -a "uninstall" -d 'Uninstall a specific stack. Caution: This will delete the provided stack namespace, the operators and provided operator namespace, and all Stackable CRDs' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and not __fish_seen_subcommand_from list describe install uninstall help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from list" -s o -l output -r -f -a "plain\t'Print output formatted as plain text' table\t'Print output formatted as a table' json\t'Print output formatted as JSON' @@ -548,12 +573,35 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fi stable-nodes\t'' ephemeral-nodes\t''" complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from install" -l skip-release -d 'Skip the installation of the release during the stack install process' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from install" -s y -l assume-yes -l yes -d 'Assume "yes" as answer to all prompts and run non-interactively' complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from install" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from install" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from install" -s V -l version -d 'Print version' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from uninstall" -l operator-namespace -l operator-ns -d 'Namespace where the operators are deployed' -r +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from uninstall" -s n -l namespace -l product-ns -d 'Namespace where the stacks or demos are deployed' -r +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from uninstall" -l release -d 'Target a specific Stackable release' -r +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from uninstall" -s l -l log-level -d 'Log level this application uses' -r +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from uninstall" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from uninstall" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from uninstall" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from uninstall" -s f -l operator-values -d 'Path to a Helm values file that will be used for the installation of operators' -r -F +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from uninstall" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from uninstall" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from uninstall" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from uninstall" -l chart-source -d 'Source the charts from either a OCI registry or from index.yaml-based repositories' -r -f -a "oci\t'OCI registry' +repo\t'index.yaml-based repositories: resolution (dev, test, stable) is based on the version and thus will be operator-specific'" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from uninstall" -l listener-class-preset -d 'Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`)' -r -f -a "none\t'' +stable-nodes\t'' +ephemeral-nodes\t''" +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from uninstall" -l skip-operators-and-crds -d 'Skip uninstalling Stackable operators and CRDs' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from uninstall" -s y -l assume-yes -l yes -d 'Assume "yes" as answer to all prompts and run non-interactively' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from uninstall" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from uninstall" -s h -l help -d 'Print help (see more with \'--help\')' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from uninstall" -s V -l version -d 'Print version' complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from help" -f -a "list" -d 'List available demos' complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from help" -f -a "describe" -d 'Print out detailed demo information' complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from help" -f -a "install" -d 'Install a specific demo' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from help" -f -a "uninstall" -d 'Uninstall a specific stack. Caution: This will delete the provided stack namespace, the operators and provided operator namespace, and all Stackable CRDs' complete -c stackablectl -n "__fish_stackablectl_using_subcommand demo; and __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and not __fish_seen_subcommand_from bash elvish fish nushell zsh help" -s l -l log-level -d 'Log level this application uses' -r complete -c stackablectl -n "__fish_stackablectl_using_subcommand completions; and not __fish_seen_subcommand_from bash elvish fish nushell zsh help" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F @@ -796,11 +844,13 @@ complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and __fi complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and __fish_seen_subcommand_from stack" -f -a "list" -d 'List available stacks' complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and __fish_seen_subcommand_from stack" -f -a "describe" -d 'Describe a specific stack' complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and __fish_seen_subcommand_from stack" -f -a "install" -d 'Install a specific stack' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and __fish_seen_subcommand_from stack" -f -a "uninstall" -d 'Uninstall a specific stack. Caution: This will delete the provided stack namespace, the operators and provided operator namespace, and all Stackable CRDs' complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and __fish_seen_subcommand_from stacklet" -f -a "credentials" -d 'Display credentials for a stacklet' complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and __fish_seen_subcommand_from stacklet" -f -a "list" -d 'List deployed stacklets' complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and __fish_seen_subcommand_from demo" -f -a "list" -d 'List available demos' complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and __fish_seen_subcommand_from demo" -f -a "describe" -d 'Print out detailed demo information' complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and __fish_seen_subcommand_from demo" -f -a "install" -d 'Install a specific demo' +complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and __fish_seen_subcommand_from demo" -f -a "uninstall" -d 'Uninstall a specific stack. Caution: This will delete the provided stack namespace, the operators and provided operator namespace, and all Stackable CRDs' complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and __fish_seen_subcommand_from completions" -f -a "bash" -d 'Generate shell completions for Bash' complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and __fish_seen_subcommand_from completions" -f -a "elvish" -d 'Generate shell completions for Elvish' complete -c stackablectl -n "__fish_stackablectl_using_subcommand help; and __fish_seen_subcommand_from completions" -f -a "fish" -d 'Generate shell completions for Fish' diff --git a/extra/completions/stackablectl.nu b/extra/completions/stackablectl.nu index ee82490f..901342f9 100644 --- a/extra/completions/stackablectl.nu +++ b/extra/completions/stackablectl.nu @@ -559,6 +559,8 @@ module completions { --operator-ns: string # Namespace where the operators are deployed --namespace(-n): string # Namespace where the stacks or demos are deployed --product-ns: string # Namespace where the stacks or demos are deployed + --assume-yes(-y) # Assume "yes" as answer to all prompts and run non-interactively + --yes # Assume "yes" as answer to all prompts and run non-interactively --release: string # Target a specific Stackable release --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files @@ -573,7 +575,41 @@ module completions { --listener-class-preset: string@"nu-complete stackablectl stack install listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) --help(-h) # Print help (see more with '--help') --version(-V) # Print version - stack_name: string # Name of the stack to describe + stack_name: string # Name of the stack to install + ] + + def "nu-complete stackablectl stack uninstall chart_source" [] { + [ "oci" "repo" ] + } + + def "nu-complete stackablectl stack uninstall listener_class_preset" [] { + [ "none" "stable-nodes" "ephemeral-nodes" ] + } + + # Uninstall a specific stack. Caution: This will delete the provided stack namespace, the operators and provided operator namespace, and all Stackable CRDs + export extern "stackablectl stack uninstall" [ + --operator-namespace: string # Namespace where the operators are deployed + --operator-ns: string # Namespace where the operators are deployed + --namespace(-n): string # Namespace where the stacks or demos are deployed + --product-ns: string # Namespace where the stacks or demos are deployed + --skip-operators-and-crds # Skip uninstalling Stackable operators and CRDs + --assume-yes(-y) # Assume "yes" as answer to all prompts and run non-interactively + --yes # Assume "yes" as answer to all prompts and run non-interactively + --release: string # Target a specific Stackable release + --log-level(-l): string # Log level this application uses + --no-cache # Do not cache the remote (default) demo, stack and release files + --demo-file(-d): path # Provide one or more additional (custom) demo file(s) + --stack-file(-s): path # Provide one or more additional (custom) stack file(s) + --release-file(-r): path # Provide one or more additional (custom) release file(s) + --operator-values(-f): path # Path to a Helm values file that will be used for the installation of operators + --helm-repo-stable: string # Provide a custom Helm stable repository URL + --helm-repo-test: string # Provide a custom Helm test repository URL + --helm-repo-dev: string # Provide a custom Helm dev repository URL + --chart-source: string@"nu-complete stackablectl stack uninstall chart_source" # Source the charts from either a OCI registry or from index.yaml-based repositories + --listener-class-preset: string@"nu-complete stackablectl stack uninstall listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) + --help(-h) # Print help (see more with '--help') + --version(-V) # Print version + stack_name: string # Name of the stack to uninstall ] # Print this message or the help of the given subcommand(s) @@ -592,6 +628,10 @@ module completions { export extern "stackablectl stack help install" [ ] + # Uninstall a specific stack. Caution: This will delete the provided stack namespace, the operators and provided operator namespace, and all Stackable CRDs + export extern "stackablectl stack help uninstall" [ + ] + # Print this message or the help of the given subcommand(s) export extern "stackablectl stack help help" [ ] @@ -813,6 +853,8 @@ module completions { --operator-ns: string # Namespace where the operators are deployed --namespace(-n): string # Namespace where the stacks or demos are deployed --product-ns: string # Namespace where the stacks or demos are deployed + --assume-yes(-y) # Assume "yes" as answer to all prompts and run non-interactively + --yes # Assume "yes" as answer to all prompts and run non-interactively --release: string # Target a specific Stackable release --log-level(-l): string # Log level this application uses --no-cache # Do not cache the remote (default) demo, stack and release files @@ -830,6 +872,40 @@ module completions { DEMO: string # Demo to install ] + def "nu-complete stackablectl demo uninstall chart_source" [] { + [ "oci" "repo" ] + } + + def "nu-complete stackablectl demo uninstall listener_class_preset" [] { + [ "none" "stable-nodes" "ephemeral-nodes" ] + } + + # Uninstall a specific stack. Caution: This will delete the provided stack namespace, the operators and provided operator namespace, and all Stackable CRDs + export extern "stackablectl demo uninstall" [ + --operator-namespace: string # Namespace where the operators are deployed + --operator-ns: string # Namespace where the operators are deployed + --namespace(-n): string # Namespace where the stacks or demos are deployed + --product-ns: string # Namespace where the stacks or demos are deployed + --skip-operators-and-crds # Skip uninstalling Stackable operators and CRDs + --assume-yes(-y) # Assume "yes" as answer to all prompts and run non-interactively + --yes # Assume "yes" as answer to all prompts and run non-interactively + --release: string # Target a specific Stackable release + --log-level(-l): string # Log level this application uses + --no-cache # Do not cache the remote (default) demo, stack and release files + --demo-file(-d): path # Provide one or more additional (custom) demo file(s) + --stack-file(-s): path # Provide one or more additional (custom) stack file(s) + --release-file(-r): path # Provide one or more additional (custom) release file(s) + --operator-values(-f): path # Path to a Helm values file that will be used for the installation of operators + --helm-repo-stable: string # Provide a custom Helm stable repository URL + --helm-repo-test: string # Provide a custom Helm test repository URL + --helm-repo-dev: string # Provide a custom Helm dev repository URL + --chart-source: string@"nu-complete stackablectl demo uninstall chart_source" # Source the charts from either a OCI registry or from index.yaml-based repositories + --listener-class-preset: string@"nu-complete stackablectl demo uninstall listener_class_preset" # Choose the ListenerClass preset (`none`, `ephemeral-nodes` or `stable-nodes`) + --help(-h) # Print help (see more with '--help') + --version(-V) # Print version + demo_name: string # Demo to uninstall + ] + # Print this message or the help of the given subcommand(s) export extern "stackablectl demo help" [ ] @@ -846,6 +922,10 @@ module completions { export extern "stackablectl demo help install" [ ] + # Uninstall a specific stack. Caution: This will delete the provided stack namespace, the operators and provided operator namespace, and all Stackable CRDs + export extern "stackablectl demo help uninstall" [ + ] + # Print this message or the help of the given subcommand(s) export extern "stackablectl demo help help" [ ] @@ -1281,6 +1361,10 @@ module completions { export extern "stackablectl help stack install" [ ] + # Uninstall a specific stack. Caution: This will delete the provided stack namespace, the operators and provided operator namespace, and all Stackable CRDs + export extern "stackablectl help stack uninstall" [ + ] + # Interact with deployed stacklets, which are bundles of resources and containers required to run the product export extern "stackablectl help stacklet" [ ] @@ -1309,6 +1393,10 @@ module completions { export extern "stackablectl help demo install" [ ] + # Uninstall a specific stack. Caution: This will delete the provided stack namespace, the operators and provided operator namespace, and all Stackable CRDs + export extern "stackablectl help demo uninstall" [ + ] + # Generate shell completions for this tool export extern "stackablectl help completions" [ ] diff --git a/rust/stackable-cockpit/Cargo.toml b/rust/stackable-cockpit/Cargo.toml index f6292a8e..15ec1139 100644 --- a/rust/stackable-cockpit/Cargo.toml +++ b/rust/stackable-cockpit/Cargo.toml @@ -17,6 +17,7 @@ helm-sys = { path = "../helm-sys" } bcrypt.workspace = true clap.workspace = true +either.workspace = true indexmap.workspace = true rand.workspace = true reqwest.workspace = true diff --git a/rust/stackable-cockpit/src/platform/demo/params.rs b/rust/stackable-cockpit/src/platform/demo/params.rs index 3f1486ac..3cadda74 100644 --- a/rust/stackable-cockpit/src/platform/demo/params.rs +++ b/rust/stackable-cockpit/src/platform/demo/params.rs @@ -22,3 +22,13 @@ pub struct DemoInstallParameters { pub chart_source: ChartSourceType, pub operator_values: Mapping, } + +pub struct DemoUninstallParameters { + pub demo_name: String, + + pub operator_namespace: String, + pub demo_namespace: String, + + pub skip_operators: bool, + pub skip_crds: bool, +} diff --git a/rust/stackable-cockpit/src/platform/demo/spec.rs b/rust/stackable-cockpit/src/platform/demo/spec.rs index bce047dc..e8d7fc72 100644 --- a/rust/stackable-cockpit/src/platform/demo/spec.rs +++ b/rust/stackable-cockpit/src/platform/demo/spec.rs @@ -1,5 +1,6 @@ use serde::{Deserialize, Serialize}; use snafu::{OptionExt, ResultExt, Snafu}; +use stackable_operator::kvp::{Label, LabelError}; use tracing::{Span, debug, info, instrument, warn}; use tracing_indicatif::span_ext::IndicatifSpanExt as _; #[cfg(feature = "openapi")] @@ -9,13 +10,13 @@ use crate::{ common::manifest::ManifestSpec, platform::{ cluster::{ResourceRequests, ResourceRequestsError}, - demo::DemoInstallParameters, + demo::{DemoInstallParameters, DemoUninstallParameters}, manifests::{self, InstallManifestsExt}, release::ReleaseList, stack::{self, StackInstallParameters, StackList}, }, utils::{ - k8s::Client, + k8s::{self, Client}, params::{ IntoParameters, IntoParametersError, Parameter, RawParameter, RawParameterParseError, }, @@ -47,8 +48,21 @@ pub enum Error { #[snafu(display("failed to install stack"))] InstallStack { source: stack::Error }, + /// This error indicates that the release failed to uninstall. + #[snafu(display("failed to uninstall release"))] + UninstallRelease { source: stack::Error }, + #[snafu(display("failed to install stack manifests"))] InstallManifests { source: manifests::Error }, + + #[snafu(display("failed to uninstall Helm manifests"))] + UninstallHelmManifests { source: manifests::Error }, + + #[snafu(display("failed to delete object"))] + DeleteObject { source: k8s::Error }, + + #[snafu(display("failed to build label"))] + BuildLabel { source: LabelError }, } impl InstallManifestsExt for DemoSpec {} @@ -180,33 +194,128 @@ impl DemoSpec { } #[instrument(skip_all, fields( + demo_name = %uninstall_parameters.demo_name, + demo_namespace = %uninstall_parameters.demo_namespace, stack_name = %self.stack, - operator_namespace = %install_params.operator_namespace, - demo_namespace = %install_params.demo_namespace, + ))] + pub async fn uninstall( + &self, + stack_list: StackList, + release_list: ReleaseList, + uninstall_parameters: DemoUninstallParameters, + client: &Client, + transfer_client: &xfer::Client, + ) -> Result<(), Error> { + // Get the stack spec based on the name defined in the demo spec + let stack = stack_list.get(&self.stack).context(NoSuchStackSnafu { + name: self.stack.clone(), + })?; + + // Uninstall Helm Charts + let parameters = &mut Vec::new() + .into_params(self.parameters.clone()) + .context(ParseParametersSnafu)?; + + // We add the STACK and DEMO parameter, so that demos can use that to render e.g. the demo label + parameters.insert("STACK".to_owned(), self.stack.clone()); + parameters.insert("DEMO".to_owned(), uninstall_parameters.demo_name.clone()); + + Self::uninstall_helm_manifests( + &self.manifests, + parameters, + &uninstall_parameters.demo_namespace.to_owned(), + transfer_client, + ) + .await + .context(UninstallHelmManifestsSnafu)?; + + let stack_parameters = &mut Vec::new() + .into_params(stack.parameters.clone()) + .context(ParseParametersSnafu)?; + + // We add the STACK and DEMO parameter, so that stacks can use that to render e.g. the stack label + stack_parameters.insert("STACK".to_owned(), self.stack.clone()); + stack_parameters.insert("DEMO".to_owned(), uninstall_parameters.demo_name.clone()); + + Self::uninstall_helm_manifests( + &stack.manifests, + stack_parameters, + &uninstall_parameters.demo_namespace.to_owned(), + transfer_client, + ) + .await + .context(UninstallHelmManifestsSnafu)?; + + // Delete demo namespace + client + .delete_namespace(uninstall_parameters.demo_namespace) + .await + .context(DeleteObjectSnafu)?; + + // Delete remaining objects not namespace scoped + client + .delete_all_objects_with_label( + Label::try_from(("stackable.tech/demo", &uninstall_parameters.demo_name)) + .context(BuildLabelSnafu)?, + None, + ) + .await + .context(DeleteObjectSnafu)?; + + // Delete operators and the operator namespace + if !uninstall_parameters.skip_operators { + stack + .uninstall_release(release_list, &uninstall_parameters.operator_namespace) + .await + .context(UninstallReleaseSnafu)?; + + client + .delete_namespace(uninstall_parameters.operator_namespace) + .await + .context(DeleteObjectSnafu)?; + } + + // Delete CRDs + if !uninstall_parameters.skip_crds { + client + .delete_crds_with_group_suffix("stackable.tech") + .await + .context(DeleteObjectSnafu)?; + } + + Ok(()) + } + + #[instrument(skip_all, fields( + stack_name = %self.stack, + operator_namespace = %install_parameters.operator_namespace, + demo_namespace = %install_parameters.demo_namespace, indicatif.pb_show = true ))] async fn prepare_manifests( &self, - install_params: DemoInstallParameters, + install_parameters: DemoInstallParameters, client: &Client, transfer_client: &xfer::Client, ) -> Result<(), Error> { info!("Installing demo manifests"); Span::current().pb_set_message("Installing manifests"); - let params = install_params + let mut parameters = install_parameters .parameters .to_owned() .into_params(&self.parameters) .context(ParseParametersSnafu)?; + // We add the STACK and DEMO parameter, so that demos can use that to render e.g. the demo label + parameters.insert("STACK".to_owned(), install_parameters.stack_name); + parameters.insert("DEMO".to_owned(), install_parameters.demo_name); + Self::install_manifests( &self.manifests, - ¶ms, - &install_params.demo_namespace, - &install_params.stack_name, - Some(&install_params.demo_name), - install_params.labels, + ¶meters, + &install_parameters.demo_namespace, + install_parameters.labels, client, transfer_client, ) diff --git a/rust/stackable-cockpit/src/platform/manifests.rs b/rust/stackable-cockpit/src/platform/manifests.rs index 56181dde..6e5dd45d 100644 --- a/rust/stackable-cockpit/src/platform/manifests.rs +++ b/rust/stackable-cockpit/src/platform/manifests.rs @@ -40,7 +40,7 @@ pub enum Error { repo_name: String, }, - /// This error indicates that the Hlm wrapper failed to install the Helm + /// This error indicates that the Helm wrapper failed to install the Helm /// release. #[snafu(display("failed to install Helm release {release_name}"))] InstallHelmRelease { @@ -48,6 +48,14 @@ pub enum Error { source: helm::Error, }, + /// This error indicates that the Helm wrapper failed to uninstall the Helm + /// release. + #[snafu(display("failed to uninstall Helm chart"))] + UninstallHelmRelease { + release_name: String, + source: helm::Error, + }, + /// This error indicates that Helm chart options could not be serialized /// into YAML. #[snafu(display("failed to serialize Helm chart options"))] @@ -65,13 +73,11 @@ pub enum Error { pub trait InstallManifestsExt { // TODO (Techassi): This step shouldn't care about templating the manifests nor fetching them from remote #[instrument(skip_all, fields(%namespace, indicatif.pb_show = true))] - #[allow(clippy::too_many_arguments, async_fn_in_trait)] + #[allow(async_fn_in_trait)] async fn install_manifests( manifests: &[ManifestSpec], parameters: &HashMap, namespace: &str, - stack_name: &str, - demo_name: Option<&str>, labels: Labels, client: &Client, transfer_client: &xfer::Client, @@ -85,31 +91,16 @@ pub trait InstallManifestsExt { // We need some additional templating capabilities, e.g. the namespace, so that stacks/demos // can use that to render e.g. the fqdn service names [which contain the namespace]. parameters.insert("NAMESPACE".to_owned(), namespace.to_owned()); - parameters.insert("STACK".to_owned(), stack_name.into()); - if let Some(demo_name) = demo_name { - parameters.insert("DEMO".to_owned(), demo_name.into()); - } for manifest in manifests { let parameters = parameters.clone(); - let labels = labels.clone(); match manifest { ManifestSpec::HelmChart(helm_file) => { debug!(helm_file, "Installing manifest from Helm chart"); - // Read Helm chart YAML and apply templating - let helm_file = helm_file.into_path_or_url().context(ParsePathOrUrlSnafu { - path_or_url: helm_file.clone(), - })?; - - let helm_chart: helm::Chart = transfer_client - .get( - &helm_file, - &Template::new(¶meters).then(Yaml::default()), - ) - .await - .context(FileTransferSnafu)?; + let helm_chart = + get_helm_chart(helm_file, transfer_client, ¶meters).await?; info!(helm_chart.name, helm_chart.version, "Installing Helm chart",); @@ -168,4 +159,70 @@ pub trait InstallManifestsExt { Ok(()) } + + /// This function only handles uninstalling Helm Charts + /// + /// To delete objects installed through other manifests use [`Client::delete_namespace`] or [`Client::delete_all_objects_with_label`] instead. + #[instrument(skip_all, fields(%namespace, indicatif.pb_show = true))] + #[allow(async_fn_in_trait)] + async fn uninstall_helm_manifests( + manifests: &[ManifestSpec], + parameters: &mut HashMap, + namespace: &str, + transfer_client: &xfer::Client, + ) -> Result<(), Error> { + debug!("Uninstalling Helm manifests"); + Span::current().pb_set_message("Uninstalling Helm charts"); + + // We add the NAMESPACE parameter, so that stacks/demos can use that to render e.g. the + // fqdn service names [which contain the namespace]. + parameters.insert("NAMESPACE".to_owned(), namespace.to_owned()); + + for manifest in manifests { + match manifest { + ManifestSpec::HelmChart(helm_file) => { + debug!(helm_file, "Uninstalling manifest from Helm chart"); + + let helm_chart = get_helm_chart(helm_file, transfer_client, parameters).await?; + + info!( + helm_chart.name, + helm_chart.version, "Uninstalling Helm chart", + ); + + helm::uninstall_release(&helm_chart.release_name, namespace, true).context( + UninstallHelmReleaseSnafu { + release_name: &helm_chart.release_name, + }, + )?; + } + ManifestSpec::PlainYaml(_) => { + // This function only handles uninstalling Helm Charts + } + } + } + + Ok(()) + } +} + +pub async fn get_helm_chart( + helm_file: &str, + transfer_client: &xfer::Client, + parameters: &HashMap, +) -> Result { + // Read Helm chart YAML and apply templating + let helm_file_location = helm_file.into_path_or_url().context(ParsePathOrUrlSnafu { + path_or_url: helm_file, + })?; + + let helmchart = transfer_client + .get( + &helm_file_location, + &Template::new(parameters).then(Yaml::default()), + ) + .await + .context(FileTransferSnafu)?; + + Ok(helmchart) } diff --git a/rust/stackable-cockpit/src/platform/stack/params.rs b/rust/stackable-cockpit/src/platform/stack/params.rs index b3cf9717..5e89ef34 100644 --- a/rust/stackable-cockpit/src/platform/stack/params.rs +++ b/rust/stackable-cockpit/src/platform/stack/params.rs @@ -21,3 +21,17 @@ pub struct StackInstallParameters { pub chart_source: ChartSourceType, pub operator_values: Mapping, } + +pub struct StackUninstallParameters { + pub stack_name: String, + + /// Optional name of the demo, which is only present in case this stack is uninstalled as part of + /// a demo. This is unset in case a stack is uninstalled directly. + pub demo_name: Option, + + pub operator_namespace: String, + pub stack_namespace: String, + + pub skip_operators: bool, + pub skip_crds: bool, +} diff --git a/rust/stackable-cockpit/src/platform/stack/spec.rs b/rust/stackable-cockpit/src/platform/stack/spec.rs index 58ace389..e70116a7 100644 --- a/rust/stackable-cockpit/src/platform/stack/spec.rs +++ b/rust/stackable-cockpit/src/platform/stack/spec.rs @@ -1,6 +1,7 @@ use serde::{Deserialize, Serialize}; use serde_yaml::Mapping; use snafu::{OptionExt, ResultExt, Snafu}; +use stackable_operator::kvp::{Label, LabelError}; use tracing::{Span, debug, info, instrument, log::warn}; use tracing_indicatif::span_ext::IndicatifSpanExt as _; #[cfg(feature = "openapi")] @@ -14,10 +15,10 @@ use crate::{ namespace, operator::ChartSourceType, release, - stack::StackInstallParameters, + stack::{StackInstallParameters, StackUninstallParameters}, }, utils::{ - k8s::Client, + k8s::{self, Client}, params::{ IntoParameters, IntoParametersError, Parameter, RawParameter, RawParameterParseError, }, @@ -45,6 +46,10 @@ pub enum Error { #[snafu(display("failed to install release"))] InstallRelease { source: release::Error }, + /// This error indicates that the release failed to uninstall. + #[snafu(display("failed to uninstall release"))] + UninstallRelease { source: release::Error }, + #[snafu(display("stack resource requests error"), context(false))] StackResourceRequests { source: ResourceRequestsError }, @@ -64,6 +69,15 @@ pub enum Error { #[snafu(display("failed to install stack manifests"))] InstallManifests { source: manifests::Error }, + + #[snafu(display("failed to uninstall Helm manifests"))] + UninstallHelmManifests { source: manifests::Error }, + + #[snafu(display("failed to delete object"))] + DeleteObject { source: k8s::Error }, + + #[snafu(display("failed to build label"))] + BuildLabel { source: LabelError }, } /// This struct describes a stack with the v2 spec @@ -71,7 +85,7 @@ pub enum Error { #[serde(rename_all = "camelCase")] #[cfg_attr(feature = "openapi", derive(ToSchema))] pub struct StackSpec { - /// A short description of the demo + /// A short description of the stack pub description: String, /// The release used by the stack, e.g. 23.4 @@ -150,10 +164,7 @@ impl StackSpec { // TODO (Techassi): Can we get rid of the release list and just use the release spec instead #[instrument(skip_all, fields( stack_name = %install_parameters.stack_name, - // NOTE (@NickLarsenNZ): Option doesn't impl Display, so we need to call - // display for the inner type if it exists. Otherwise we gte the Debug - // impl for the whole Option. - demo_name = install_parameters.demo_name.as_ref().map(tracing::field::display), + stack_namespace = %install_parameters.stack_namespace, ))] pub async fn install( &self, @@ -177,7 +188,6 @@ impl StackSpec { self.install_release( release_list, &install_parameters.operator_namespace, - &install_parameters.stack_namespace, &install_parameters.chart_source, &install_parameters.operator_values, ) @@ -197,12 +207,80 @@ impl StackSpec { .await } + #[instrument(skip_all, fields( + stack_name = %uninstall_parameters.stack_name, + stack_namespace = %uninstall_parameters.stack_namespace, + ))] + pub async fn uninstall( + &self, + release_list: release::ReleaseList, + uninstall_parameters: StackUninstallParameters, + client: &Client, + transfer_client: &xfer::Client, + ) -> Result<(), Error> { + // Uninstall Helm Charts + let parameters = &mut Vec::new() + .into_params(self.parameters.clone()) + .context(ParseParametersSnafu)?; + + // We add the STACK and optionally DEMO parameter, so that stacks can use that to render e.g. the stack label + parameters.insert("STACK".to_owned(), uninstall_parameters.stack_name.clone()); + if let Some(demo_name) = uninstall_parameters.demo_name { + parameters.insert("DEMO".to_owned(), demo_name); + } + + Self::uninstall_helm_manifests( + &self.manifests, + parameters, + &uninstall_parameters.stack_namespace.to_owned(), + transfer_client, + ) + .await + .context(UninstallHelmManifestsSnafu)?; + + // Delete stack namespace + client + .delete_namespace(uninstall_parameters.stack_namespace) + .await + .context(DeleteObjectSnafu)?; + + // Delete remaining objects not namespace scoped + client + .delete_all_objects_with_label( + Label::try_from(("stackable.tech/stack", &uninstall_parameters.stack_name)) + .context(BuildLabelSnafu)?, + None, + ) + .await + .context(DeleteObjectSnafu)?; + + // Delete operators and the operator namespace + if !uninstall_parameters.skip_operators { + self.uninstall_release(release_list, &uninstall_parameters.operator_namespace) + .await?; + + client + .delete_namespace(uninstall_parameters.operator_namespace) + .await + .context(DeleteObjectSnafu)?; + } + + // Delete CRDs + if !uninstall_parameters.skip_crds { + client + .delete_crds_with_group_suffix("stackable.tech") + .await + .context(DeleteObjectSnafu)?; + } + + Ok(()) + } + #[instrument(skip_all, fields(release = %self.release, %operator_namespace, indicatif.pb_show = true))] pub async fn install_release( &self, release_list: release::ReleaseList, operator_namespace: &str, - _namespace: &str, // TODO (@NickLarsenNZ): remove this field chart_source: &ChartSourceType, operator_values: &Mapping, ) -> Result<(), Error> { @@ -229,29 +307,55 @@ impl StackSpec { .context(InstallReleaseSnafu) } + #[instrument(skip_all, fields(release = %self.release, %operator_namespace, indicatif.pb_show = true))] + pub async fn uninstall_release( + &self, + release_list: release::ReleaseList, + operator_namespace: &str, + ) -> Result<(), Error> { + info!(self.release, "Trying to uninstall release"); + Span::current().pb_set_message("Uninstalling operators"); + + // Get the release by name + let release = release_list + .get(&self.release) + .context(NoSuchReleaseSnafu { + name: self.release.clone(), + })?; + + // Uninstall the release + release + .uninstall(&self.operators, &[], operator_namespace) + .context(UninstallReleaseSnafu) + } + #[instrument(skip_all, fields(indicatif.pb_show = true))] pub async fn prepare_manifests( &self, - install_params: StackInstallParameters, + install_parameters: StackInstallParameters, client: &Client, transfer_client: &xfer::Client, ) -> Result<(), Error> { info!("Installing stack manifests"); Span::current().pb_set_message("Installing manifests"); - let parameters = install_params + let mut parameters = install_parameters .parameters .to_owned() .into_params(&self.parameters) .context(ParseParametersSnafu)?; + // We add the STACK and optionally DEMO parameter, so that stacks can use that to render e.g. the stack label + parameters.insert("STACK".to_owned(), install_parameters.stack_name); + if let Some(demo_name) = install_parameters.demo_name { + parameters.insert("DEMO".to_owned(), demo_name); + } + Self::install_manifests( &self.manifests, ¶meters, - &install_params.stack_namespace, - &install_params.stack_name, - install_params.demo_name.as_deref(), - install_params.labels, + &install_parameters.stack_namespace, + install_parameters.labels, client, transfer_client, ) diff --git a/rust/stackable-cockpit/src/utils/k8s/client.rs b/rust/stackable-cockpit/src/utils/k8s/client.rs index 6fb44d6f..afc0b085 100644 --- a/rust/stackable-cockpit/src/utils/k8s/client.rs +++ b/rust/stackable-cockpit/src/utils/k8s/client.rs @@ -1,20 +1,24 @@ -use std::{collections::BTreeMap, string::FromUtf8Error}; +use std::{collections::BTreeMap, ops::Deref, string::FromUtf8Error}; use serde::Deserialize; use snafu::{OptionExt, ResultExt, Snafu}; use stackable_operator::{ crd::listener::v1alpha1::Listener, - k8s_openapi::api::{ - apps::v1::{Deployment, StatefulSet}, - core::v1::{Endpoints, Namespace, Node, Secret, Service}, + k8s_openapi::{ + Resource, + api::{ + apps::v1::{Deployment, StatefulSet}, + core::v1::{Endpoints, Namespace, Node, Secret, Service}, + }, + apiextensions_apiserver::pkg::apis::apiextensions::v1::CustomResourceDefinition, }, kube::{ self, Api, Discovery, ResourceExt, - api::{ListParams, Patch, PatchParams, PostParams}, + api::{DeleteParams, ListParams, Patch, PatchParams, PostParams}, core::{DynamicObject, GroupVersionKind, ObjectList, ObjectMeta, TypeMeta}, - discovery::{ApiCapabilities, ApiResource, Scope}, + discovery::{self, ApiCapabilities, ApiResource, Scope}, }, - kvp::Labels, + kvp::{Label, Labels}, }; use tokio::sync::RwLock; use tracing::{Span, info, instrument}; @@ -47,6 +51,11 @@ pub enum Error { gvk: GroupVersionKind, }, + #[snafu(display("failed to delete object"))] + KubeRuntimeDelete { + source: kube::runtime::wait::delete::Error, + }, + #[snafu(display("failed to deserialize YAML data"))] DeserializeYaml { source: serde_yaml::Error }, @@ -237,6 +246,31 @@ impl Client { Ok(()) } + /// Deletes CRDs for the given group suffix + pub async fn delete_crds_with_group_suffix(&self, group_suffix: &str) -> Result<()> { + let api_client = Api::::all(self.client.clone()); + + for crd in api_client + .list(&ListParams::default()) + .await + .context(KubeClientFetchSnafu)? + { + if crd.spec.group.ends_with(group_suffix) { + if let Some(name) = crd.metadata.name { + kube::runtime::wait::delete::delete_and_finalize( + api_client.clone(), + &name, + &DeleteParams::default(), + ) + .await + .context(KubeRuntimeDeleteSnafu)?; + } + } + } + + Ok(()) + } + /// Lists objects by looking up a GVK via the discovery. It returns an /// optional list of dynamic objects. The method returns `Ok(None)` /// if the client was unable to resolve the GVK. An error is returned @@ -287,6 +321,89 @@ impl Client { )) } + /// Deletes all objects with a given label in the provided namespace. + /// If no namespace is provided, deletes all clusterwide objects with the given label. + pub async fn delete_all_objects_with_label( + &self, + label: Label, + namespace: Option<&str>, + ) -> Result<(), Error> { + let api_resources = self + .get_api_resources() + .await + .into_iter() + .filter(|(_, capability)| { + let listing_supported = capability.supports_operation(discovery::verbs::LIST); + + let capability_scope_matches = match namespace { + Some(_) => capability.scope == kube::discovery::Scope::Namespaced, + None => capability.scope == kube::discovery::Scope::Cluster, + }; + + listing_supported && capability_scope_matches + }); + + for (api_resource, _) in api_resources { + let objects = self + .list_objects( + &GroupVersionKind { + group: api_resource.group.clone(), + version: api_resource.version.clone(), + kind: api_resource.kind.clone(), + }, + namespace, + ) + .await?; + + let Some(object_list) = objects else { + continue; + }; + + for object in object_list { + if let Some(value) = object.labels().get(label.key().deref()) { + if value.eq(label.value().deref()) { + self.delete_object( + &object.metadata.name.unwrap(), + &api_resource, + object.metadata.namespace.as_deref(), + ) + .await?; + } + } + } + } + + Ok(()) + } + + #[instrument(skip_all, fields(indicatif.pb_show = true))] + pub async fn delete_object( + &self, + object_name: &str, + api_resource: &ApiResource, + namespace: Option<&str>, + ) -> Result<(), Error> { + Span::current().pb_set_message(&format!( + "Deleting {kind} {object_name}", + kind = api_resource.kind + )); + + let object_api = match namespace { + Some(namespace) => { + Api::::namespaced_with(self.client.clone(), namespace, api_resource) + } + None => Api::::all_with(self.client.clone(), api_resource), + }; + + kube::runtime::wait::delete::delete_and_finalize( + object_api, + object_name, + &DeleteParams::foreground(), + ) + .await + .context(KubeRuntimeDeleteSnafu) + } + /// Lists [`Service`]s by matching labels. The Services can be matched by /// the product labels. [`ListParamsExt`] provides a utility function to /// create [`ListParams`] based on a product name and optional instance @@ -459,6 +576,24 @@ impl Client { Ok(()) } + /// Deletes a [`Namespace`] with `name` in the cluster. + #[instrument(skip_all, fields(indicatif.pb_show = true))] + pub async fn delete_namespace(&self, name: String) -> Result<()> { + let namespace_api: Api = Api::all(self.client.clone()); + + Span::current().pb_set_message(&format!("Deleting {kind} {name}", kind = Namespace::KIND)); + + kube::runtime::wait::delete::delete_and_finalize( + namespace_api, + &name, + &DeleteParams::foreground(), + ) + .await + .context(KubeRuntimeDeleteSnafu)?; + + Ok(()) + } + /// Creates a [`Namespace`] only if not already present in the current cluster. pub async fn create_namespace_if_needed(&self, name: String) -> Result<()> { if self.get_namespace(&name).await?.is_none() { @@ -482,6 +617,16 @@ impl Client { endpoints_api.get(name).await.context(KubeClientFetchSnafu) } + pub async fn get_api_resources(&self) -> Vec<(ApiResource, ApiCapabilities)> { + let mut api_resources = Vec::new(); + + for group in self.discovery.read().await.groups() { + api_resources.append(group.recommended_resources().as_mut()); + } + + api_resources + } + /// Try to resolve the given [`GroupVersionKind`]. In case the resolution fails a discovery is run to pull in new /// GVKs that are not present in the [`Discovery`] cache. Afterwards a normal resolution is issued. async fn resolve_gvk( diff --git a/rust/stackablectl/CHANGELOG.md b/rust/stackablectl/CHANGELOG.md index 945cb5cf..bc493c58 100644 --- a/rust/stackablectl/CHANGELOG.md +++ b/rust/stackablectl/CHANGELOG.md @@ -7,7 +7,11 @@ All notable changes to this project will be documented in this file. ### Added - Heuristic for setting listener presets when the environment is Minikube ([#438]). +- Add `uninstall` subcommand for `demo`/`stack` commands ([#429]). +- Add confirmation prompt to `install` subcommand for namespace selection ([#429]). +- Add `--assume-yes` option for running commands non-interactively ([#429]). +[#429]: https://github.com/stackabletech/stackable-cockpit/pull/429 [#438]: https://github.com/stackabletech/stackable-cockpit/pull/438 ## [1.4.0] - 2026-03-18 diff --git a/rust/stackablectl/Cargo.toml b/rust/stackablectl/Cargo.toml index 83388405..15db1c9d 100644 --- a/rust/stackablectl/Cargo.toml +++ b/rust/stackablectl/Cargo.toml @@ -17,6 +17,7 @@ clap_complete.workspace = true clap_complete_nushell.workspace = true clap.workspace = true comfy-table.workspace = true +dialoguer.workspace = true directories.workspace = true dotenvy.workspace = true indexmap.workspace = true diff --git a/rust/stackablectl/src/args/mod.rs b/rust/stackablectl/src/args/mod.rs index cb31577f..0f53377c 100644 --- a/rust/stackablectl/src/args/mod.rs +++ b/rust/stackablectl/src/args/mod.rs @@ -2,10 +2,12 @@ mod cluster; mod file; mod namespace; mod operator_configs; +mod prompt; mod repo; pub use cluster::*; pub use file::*; pub use namespace::*; pub use operator_configs::*; +pub use prompt::*; pub use repo::*; diff --git a/rust/stackablectl/src/args/prompt.rs b/rust/stackablectl/src/args/prompt.rs new file mode 100644 index 00000000..a76b8355 --- /dev/null +++ b/rust/stackablectl/src/args/prompt.rs @@ -0,0 +1,9 @@ +use clap::Args; + +#[derive(Debug, Args)] +#[command(next_help_heading = "Prompt options")] +pub struct CommonPromptArgs { + /// Assume "yes" as answer to all prompts and run non-interactively + #[arg(long, visible_aliases(["yes"]), short = 'y', global = true)] + pub assume_yes: bool, +} diff --git a/rust/stackablectl/src/cmds/demo.rs b/rust/stackablectl/src/cmds/demo.rs index 4980ff30..d01cf01b 100644 --- a/rust/stackablectl/src/cmds/demo.rs +++ b/rust/stackablectl/src/cmds/demo.rs @@ -5,12 +5,13 @@ use comfy_table::{ ContentArrangement, Row, Table, presets::{NOTHING, UTF8_FULL}, }; +use dialoguer::Confirm; use snafu::{OptionExt as _, ResultExt, Snafu, ensure}; use stackable_cockpit::{ common::list, constants::{DEFAULT_NAMESPACE, DEFAULT_OPERATOR_NAMESPACE}, platform::{ - demo::{self, DemoInstallParameters}, + demo::{self, DemoInstallParameters, DemoUninstallParameters}, operator::ChartSourceType, release, stack, }, @@ -22,10 +23,10 @@ use stackable_cockpit::{ }; use stackable_operator::kvp::{LabelError, Labels}; use tracing::{Span, debug, info, instrument}; -use tracing_indicatif::span_ext::IndicatifSpanExt as _; +use tracing_indicatif::{self, span_ext::IndicatifSpanExt as _}; use crate::{ - args::{CommonClusterArgs, CommonClusterArgsError, CommonNamespaceArgs}, + args::{CommonClusterArgs, CommonClusterArgsError, CommonNamespaceArgs, CommonPromptArgs}, cli::{Cli, OutputType}, utils::load_operator_values, }; @@ -53,6 +54,11 @@ pub enum DemoCommands { /// Install a specific demo #[command(aliases(["i", "in"]))] Install(DemoInstallArgs), + + /// Uninstall a specific stack. Caution: This will delete the provided stack namespace, + /// the operators and provided operator namespace, and all Stackable CRDs + #[command(aliases(["u", "un"]))] + Uninstall(DemoUninstallArgs), } #[derive(Debug, Args)] @@ -115,10 +121,26 @@ to specify operator versions." #[command(flatten)] namespaces: CommonNamespaceArgs, + + #[command(flatten)] + prompt_args: CommonPromptArgs, } #[derive(Debug, Args)] -pub struct DemoUninstallArgs {} +pub struct DemoUninstallArgs { + /// Demo to uninstall + demo_name: String, + + #[command(flatten)] + namespaces: CommonNamespaceArgs, + + /// Skip uninstalling Stackable operators and CRDs + #[arg(long)] + skip_operators_and_crds: bool, + + #[command(flatten)] + prompt_args: CommonPromptArgs, +} #[derive(Debug, Snafu)] pub enum CmdError { @@ -131,9 +153,6 @@ pub enum CmdError { #[snafu(display("no demo with name {name:?}"))] NoSuchDemo { name: String }, - #[snafu(display("no stack with name {name:?}"))] - NoSuchStack { name: String }, - #[snafu(display("no release {release:?}"))] NoSuchRelease { release: String }, @@ -155,6 +174,15 @@ pub enum CmdError { demo_name: String, }, + #[snafu(display("failed to confirm user input"))] + ConfirmDialog { source: dialoguer::Error }, + + #[snafu(display("failed to uninstall demo {demo_name:?}"))] + UninstallDemo { + source: demo::Error, + demo_name: String, + }, + #[snafu(display("failed to build labels for demo resources"))] BuildLabels { source: LabelError }, @@ -214,6 +242,9 @@ impl DemoArgs { DemoCommands::Install(args) => { install_cmd(args, cli, list, &transfer_client, &release_branch).await } + DemoCommands::Uninstall(args) => { + uninstall_cmd(args, cli, list, &transfer_client, &release_branch).await + } } } } @@ -338,7 +369,10 @@ async fn install_cmd( release_branch: &str, ) -> Result { info!(demo_name = %args.demo_name, "Installing demo"); - Span::current().pb_set_message("Installing demo"); + Span::current().pb_set_message(&format!( + "Installing demo {demo_name}", + demo_name = args.demo_name + )); // Init result output and progress output let mut output = Cli::result(); @@ -382,6 +416,37 @@ async fn install_cmd( .parse_insert(("stackable.tech/stack", &demo.stack)) .context(BuildLabelsSnafu)?; + // `stackablectl demo uninstall` relies on namespace deletion, suggest installing in a non-default namespace + // It should still be possible to skip that if either uninstall is not needed + // or installing an older version of the demo which only supports the 'default' namespace + let non_default_namespace_confirmation = || -> Result { + // Ask to install in a non-default namespace, currently suggesting the demo name as namespace name + Confirm::new() + .with_prompt( + format!( + "Demos installed in the {DEFAULT_NAMESPACE:?} namespace cannot be uninstalled with stackablectl. Install the demo in the {demo_namespace:?} namespace instead?", + demo_namespace = args.demo_name.clone()) + ) + .default(true) + .interact() + .context(ConfirmDialogSnafu) + }; + + let demo_namespace = if args.namespaces.namespace == DEFAULT_NAMESPACE { + if args.prompt_args.assume_yes + || tracing_indicatif::suspend_tracing_indicatif(non_default_namespace_confirmation)? + { + // User selected to install in suggested namespace + args.demo_name.clone() + } else { + // User selected to install in default namespace + args.namespaces.namespace.clone() + } + } else { + // User provided a non-default namespace with command argument + args.namespaces.namespace.clone() + }; + let values_file = cli.get_values_file().context(PathOrUrlParseSnafu)?; let operator_values = load_operator_values(values_file.as_ref(), transfer_client) .await @@ -391,7 +456,7 @@ async fn install_cmd( stack_name: demo.stack.clone(), demo_name: args.demo_name.clone(), operator_namespace: args.namespaces.operator_namespace.clone(), - demo_namespace: args.namespaces.namespace.clone(), + demo_namespace: demo_namespace.clone(), stack_parameters: args.stack_parameters.clone(), parameters: args.parameters.clone(), skip_release: args.skip_release, @@ -427,11 +492,8 @@ async fn install_cmd( let stacklet_cmd = format!( "stackablectl stacklet list{option}", - option = if args.namespaces.namespace != DEFAULT_NAMESPACE { - format!( - " --namespace {namespace}", - namespace = args.namespaces.namespace - ) + option = if demo_namespace != DEFAULT_NAMESPACE { + format!(" --namespace {namespace}", namespace = demo_namespace) } else { "".into() } @@ -447,3 +509,93 @@ async fn install_cmd( Ok(output.render()) } + +#[instrument(skip_all, fields( + demo_name = %args.demo_name, + %release_branch, + indicatif.pb_show = true +))] +async fn uninstall_cmd( + args: &DemoUninstallArgs, + cli: &Cli, + list: demo::List, + transfer_client: &xfer::Client, + release_branch: &str, +) -> Result { + // Init result output and progress output + let mut output = Cli::result(); + + let proceed_with_uninstall = args.prompt_args.assume_yes + || { + tracing_indicatif::suspend_tracing_indicatif(|| -> Result { + Confirm::new() + .with_prompt( + format!( + "Uninstalling the demo {demo_name:?} will delete the {demo_namespace:?} namespace. This action cannot be undone. Proceed?", + demo_name = args.demo_name.clone(), + demo_namespace = args.namespaces.namespace.clone()) + ) + .default(true) + .interact() + .context(ConfirmDialogSnafu) + })? + }; + + if !proceed_with_uninstall { + output.with_output(format!( + "Uninstalling demo {demo_name:?} canceled", + demo_name = args.demo_name.clone() + )); + + return Ok(output.render()); + } + + info!(demo_name = %args.demo_name, "Uninstalling demo"); + Span::current().pb_set_message(&format!( + "Uninstalling demo {demo_name}", + demo_name = args.demo_name + )); + + let demo = list.get(&args.demo_name).ok_or(CmdError::NoSuchDemo { + name: args.demo_name.clone(), + })?; + + let stack_files = cli + .get_stack_files(release_branch) + .context(PathOrUrlParseSnafu)?; + let stack_list = stack::StackList::build(&stack_files, transfer_client) + .await + .context(BuildListSnafu)?; + + let client = Client::new().await.context(KubeClientCreateSnafu)?; + + let release_files = cli.get_release_files().context(PathOrUrlParseSnafu)?; + let release_list = release::ReleaseList::build(&release_files, transfer_client) + .await + .context(BuildListSnafu)?; + + demo.uninstall( + stack_list, + release_list, + DemoUninstallParameters { + demo_name: args.demo_name.clone(), + operator_namespace: args.namespaces.operator_namespace.clone(), + demo_namespace: args.namespaces.namespace.clone(), + skip_operators: args.skip_operators_and_crds, + skip_crds: args.skip_operators_and_crds, + }, + &client, + transfer_client, + ) + .await + .context(UninstallDemoSnafu { + demo_name: args.demo_name.clone(), + })?; + + output.with_output(format!( + "Uninstalled demo {demo_name:?}", + demo_name = args.demo_name + )); + + Ok(output.render()) +} diff --git a/rust/stackablectl/src/cmds/stack.rs b/rust/stackablectl/src/cmds/stack.rs index 490d74e0..11b7452a 100644 --- a/rust/stackablectl/src/cmds/stack.rs +++ b/rust/stackablectl/src/cmds/stack.rs @@ -5,6 +5,7 @@ use comfy_table::{ ContentArrangement, Table, presets::{NOTHING, UTF8_FULL}, }; +use dialoguer::Confirm; use snafu::{OptionExt as _, ResultExt, Snafu, ensure}; use stackable_cockpit::{ common::list, @@ -12,7 +13,7 @@ use stackable_cockpit::{ platform::{ operator::ChartSourceType, release, - stack::{self, StackInstallParameters}, + stack::{self, StackInstallParameters, StackUninstallParameters}, }, utils::{ k8s::{self, Client}, @@ -25,7 +26,7 @@ use tracing::{Span, debug, info, instrument}; use tracing_indicatif::span_ext::IndicatifSpanExt as _; use crate::{ - args::{CommonClusterArgs, CommonClusterArgsError, CommonNamespaceArgs}, + args::{CommonClusterArgs, CommonClusterArgsError, CommonNamespaceArgs, CommonPromptArgs}, cli::{Cli, OutputType}, utils::load_operator_values, }; @@ -53,6 +54,11 @@ pub enum StackCommands { /// Install a specific stack #[command(aliases(["i", "in"]))] Install(StackInstallArgs), + + /// Uninstall a specific stack. Caution: This will delete the provided stack namespace, + /// the operators and provided operator namespace, and all Stackable CRDs + #[command(aliases(["u", "un"]))] + Uninstall(StackUninstallArgs), } #[derive(Debug, Args)] @@ -72,7 +78,7 @@ pub struct StackDescribeArgs { #[derive(Debug, Args)] pub struct StackInstallArgs { - /// Name of the stack to describe + /// Name of the stack to install stack_name: String, /// Skip the installation of the release during the stack install process @@ -111,6 +117,25 @@ Use \"stackablectl stack describe \" to list available parameters for eac #[command(flatten)] namespaces: CommonNamespaceArgs, + + #[command(flatten)] + prompt_args: CommonPromptArgs, +} + +#[derive(Debug, Args)] +pub struct StackUninstallArgs { + /// Name of the stack to uninstall + stack_name: String, + + #[command(flatten)] + namespaces: CommonNamespaceArgs, + + /// Skip uninstalling Stackable operators and CRDs + #[arg(long)] + skip_operators_and_crds: bool, + + #[command(flatten)] + prompt_args: CommonPromptArgs, } #[derive(Debug, Snafu)] @@ -143,6 +168,16 @@ pub enum CmdError { stack_name: String, }, + #[snafu(display("failed to confirm user input"))] + ConfirmDialog { source: dialoguer::Error }, + + #[snafu(display("failed to uninstall stack {stack_name:?}"))] + UninstallStack { + #[snafu(source(from(stack::Error, Box::new)))] + source: Box, + stack_name: String, + }, + #[snafu(display("failed to build labels for stack resources"))] BuildLabels { source: LabelError }, @@ -201,6 +236,9 @@ impl StackArgs { StackCommands::Install(args) => { install_cmd(args, cli, stack_list, &transfer_client).await } + StackCommands::Uninstall(args) => { + uninstall_cmd(args, cli, stack_list, &transfer_client).await + } } } } @@ -325,7 +363,10 @@ async fn install_cmd( transfer_client: &xfer::Client, ) -> Result { info!(stack_name = %args.stack_name, "Installing stack"); - Span::current().pb_set_message("Installing stack"); + Span::current().pb_set_message(&format!( + "Installing stack {stack_name}", + stack_name = args.stack_name + )); let files = cli.get_release_files().context(PathOrUrlParseSnafu)?; let release_list = release::ReleaseList::build(&files, transfer_client) @@ -353,6 +394,39 @@ async fn install_cmd( ]) .context(BuildLabelsSnafu)?; + // `stackablectl stack uninstall` relies on namespace deletion, suggest installing in a non-default namespace + // It should still be possible to skip that if either uninstall is not needed + // or installing an older version of the stack which only supports the 'default' namespace + let non_default_namespace_confirmation = || -> Result { + // Ask to install in a non-default namespace, currently suggesting the stack name as namespace name + Confirm::new() + .with_prompt( + format!( + "Stacks installed in the {DEFAULT_NAMESPACE:?} namespace cannot be uninstalled with stackablectl. Install the stack in the {stack_namespace:?} namespace instead?", + stack_namespace = args.stack_name.clone()) + ) + .default(true) + .interact() + .context(ConfirmDialogSnafu) + }; + + let stack_namespace = if args.namespaces.namespace == DEFAULT_NAMESPACE { + if args.prompt_args.assume_yes + || tracing_indicatif::suspend_tracing_indicatif( + non_default_namespace_confirmation, + )? + { + // User selected to install in suggested namespace + args.stack_name.clone() + } else { + // User selected to install in default namespace + args.namespaces.namespace.clone() + } + } else { + // User provided a non-default namespace with command argument + args.namespaces.namespace.clone() + }; + let values_file = cli.get_values_file().context(PathOrUrlParseSnafu)?; let operator_values = load_operator_values(values_file.as_ref(), transfer_client) .await @@ -363,7 +437,7 @@ async fn install_cmd( // There is no demo when installing only a stack demo_name: None, operator_namespace: args.namespaces.operator_namespace.clone(), - stack_namespace: args.namespaces.namespace.clone(), + stack_namespace: stack_namespace.clone(), parameters: args.parameters.clone(), skip_release: args.skip_release, labels, @@ -392,11 +466,8 @@ async fn install_cmd( let stacklet_cmd = format!( "stackablectl stacklet list{option}", - option = if args.namespaces.namespace != DEFAULT_NAMESPACE { - format!( - " --namespace {namespace}", - namespace = args.namespaces.namespace - ) + option = if stack_namespace != DEFAULT_NAMESPACE { + format!(" --namespace {namespace}", namespace = stack_namespace) } else { "".into() } @@ -415,3 +486,81 @@ async fn install_cmd( None => Ok("No such stack".into()), } } + +#[instrument(skip(cli, stack_list, transfer_client), fields(indicatif.pb_show = true))] +async fn uninstall_cmd( + args: &StackUninstallArgs, + cli: &Cli, + stack_list: stack::StackList, + transfer_client: &xfer::Client, +) -> Result { + let mut output = Cli::result(); + + let proceed_with_uninstall = args.prompt_args.assume_yes + || tracing_indicatif::suspend_tracing_indicatif(|| -> Result { + Confirm::new() + .with_prompt( + format!( + "Uninstalling the stack {stack_name:?} will delete the {stack_namespace:?} namespace. This action cannot be undone. Proceed?", + stack_name = args.stack_name.clone(), + stack_namespace = args.namespaces.namespace.clone()) + ) + .default(true) + .interact() + .context(ConfirmDialogSnafu) + })?; + + if !proceed_with_uninstall { + output.with_output(format!( + "Uninstalling stack {stack_name:?} canceled", + stack_name = args.stack_name.clone() + )); + + return Ok(output.render()); + } + + info!(stack_name = %args.stack_name, "Uninstalling stack"); + Span::current().pb_set_message(&format!( + "Uninstalling stack {stack_name}", + stack_name = args.stack_name + )); + + match stack_list.get(&args.stack_name) { + Some(stack) => { + let client = Client::new().await.context(KubeClientCreateSnafu)?; + + let files = cli.get_release_files().context(PathOrUrlParseSnafu)?; + let release_list = release::ReleaseList::build(&files, transfer_client) + .await + .context(BuildListSnafu)?; + + stack + .uninstall( + release_list, + StackUninstallParameters { + stack_name: args.stack_name.clone(), + // There is no demo when uninstalling only a stack + demo_name: None, + operator_namespace: args.namespaces.operator_namespace.clone(), + stack_namespace: args.namespaces.namespace.clone(), + skip_operators: args.skip_operators_and_crds, + skip_crds: args.skip_operators_and_crds, + }, + &client, + transfer_client, + ) + .await + .context(UninstallStackSnafu { + stack_name: args.stack_name.clone(), + })?; + + output.with_output(format!( + "Uninstalled stack {stack_name:?}", + stack_name = args.stack_name + )); + + Ok(output.render()) + } + None => Ok("No such stack".into()), + } +} From 9d3b6b0786bd425a78c3ad7b8df743c52c2b86c2 Mon Sep 17 00:00:00 2001 From: Benedikt Labrenz Date: Tue, 21 Apr 2026 15:27:43 +0200 Subject: [PATCH 60/63] chore: Remove old frontend and all references (#439) * remove old frontend and all references * fix CI checks --- .dockerignore | 5 - .gitattributes | 2 - .github/workflows/pr_cockpit-web.yml | 52 - .github/workflows/pr_general.yml | 16 - .github/workflows/pr_pre-commit.yml | 5 - .gitignore | 5 - .pre-commit-config.yaml | 10 +- .prettierignore | 1 - Cargo.lock | 67 +- Cargo.nix | 166 +- Cargo.toml | 2 +- README.md | 21 +- Tiltfile | 2 - default.nix | 29 +- docker/Dockerfile | 13 +- nix/sources.json | 12 - package.json | 7 - rust/stackable-cockpitd/Cargo.toml | 8 +- rust/stackable-cockpitd/README.md | 3 - rust/stackable-cockpitd/src/cli.rs | 3 +- rust/stackable-cockpitd/src/handlers/mod.rs | 6 - rust/stackable-cockpitd/src/handlers/ui.rs | 31 - .../src/handlers/ui_disabled.rs | 9 - rust/stackable-cockpitd/src/main.rs | 5 +- rust/xtask/Cargo.toml | 1 - rust/xtask/src/main.rs | 13 +- rust/xtask/src/openapi.rs | 46 - shell.nix | 3 - web/.editorconfig | 2 - web/.eslintignore | 2 - web/.eslintrc | 41 - web/.gitignore | 27 - web/.prettierignore | 3 - web/.prettierrc.json | 5 - web/Cargo.toml | 11 - web/README.md | 15 - web/build.rs | 54 - web/index.html | 13 - web/package.json | 61 - web/public/.gitkeep | 0 web/public/fonts/Inter-Bold.woff2 | Bin 106140 -> 0 bytes web/public/fonts/Inter-Medium.woff2 | Bin 105924 -> 0 bytes web/public/fonts/Inter-Regular.woff2 | Bin 98868 -> 0 bytes web/src/api/listeners.ts | 70 - web/src/api/meta.ts | 4 - web/src/api/mock-utils.ts | 3 - web/src/api/schema.d.ts | 234 - web/src/api/session.ts | 55 - web/src/api/stacklets.ts | 47 - web/src/components/button.tsx | 49 - web/src/components/datatable.tsx | 117 - web/src/components/form/search.tsx | 21 - web/src/components/header.tsx | 70 - web/src/components/language.tsx | 23 - web/src/components/loading.tsx | 9 - web/src/components/symbols.tsx | 14 - web/src/components/title.tsx | 31 - web/src/fonts.css | 23 - web/src/lib.rs | 2 - web/src/localization/README.md | 9 - web/src/localization/index.tsx | 106 - web/src/localization/locale/de.ftl | 18 - web/src/localization/locale/en.ftl | 18 - web/src/localization/locale/sv.ftl | 18 - web/src/main.tsx | 51 - web/src/pages/login.tsx | 98 - web/src/pages/stacklets/connect.tsx | 71 - web/src/pages/stacklets/list.module.css | 6 - web/src/pages/stacklets/list.tsx | 109 - web/src/resources/logo.png | Bin 6125 -> 0 bytes web/src/types/index.ts | 3 - web/src/types/option.ts | 412 -- web/src/types/result.ts | 330 -- web/src/types/utils.ts | 3 - web/src/utils/localstorage.ts | 25 - web/src/vite-env.d.ts | 1 - web/tests/option.test.ts | 241 - web/tests/result.test.ts | 126 - web/tsconfig.json | 23 - web/uno.config.ts | 15 - web/vite.config.ts | 18 - web/vitest.config.ts | 11 - yarn.lock | 3931 ----------------- 83 files changed, 36 insertions(+), 7156 deletions(-) delete mode 100644 .github/workflows/pr_cockpit-web.yml delete mode 100644 .prettierignore delete mode 100644 package.json delete mode 100644 rust/stackable-cockpitd/src/handlers/ui.rs delete mode 100644 rust/stackable-cockpitd/src/handlers/ui_disabled.rs delete mode 100644 rust/xtask/src/openapi.rs delete mode 100644 web/.editorconfig delete mode 100644 web/.eslintignore delete mode 100644 web/.eslintrc delete mode 100644 web/.gitignore delete mode 100644 web/.prettierignore delete mode 100644 web/.prettierrc.json delete mode 100644 web/Cargo.toml delete mode 100644 web/README.md delete mode 100644 web/build.rs delete mode 100644 web/index.html delete mode 100644 web/package.json delete mode 100644 web/public/.gitkeep delete mode 100644 web/public/fonts/Inter-Bold.woff2 delete mode 100644 web/public/fonts/Inter-Medium.woff2 delete mode 100644 web/public/fonts/Inter-Regular.woff2 delete mode 100644 web/src/api/listeners.ts delete mode 100644 web/src/api/meta.ts delete mode 100644 web/src/api/mock-utils.ts delete mode 100644 web/src/api/schema.d.ts delete mode 100644 web/src/api/session.ts delete mode 100644 web/src/api/stacklets.ts delete mode 100644 web/src/components/button.tsx delete mode 100644 web/src/components/datatable.tsx delete mode 100644 web/src/components/form/search.tsx delete mode 100644 web/src/components/header.tsx delete mode 100644 web/src/components/language.tsx delete mode 100644 web/src/components/loading.tsx delete mode 100644 web/src/components/symbols.tsx delete mode 100644 web/src/components/title.tsx delete mode 100644 web/src/fonts.css delete mode 100644 web/src/lib.rs delete mode 100644 web/src/localization/README.md delete mode 100644 web/src/localization/index.tsx delete mode 100644 web/src/localization/locale/de.ftl delete mode 100644 web/src/localization/locale/en.ftl delete mode 100644 web/src/localization/locale/sv.ftl delete mode 100644 web/src/main.tsx delete mode 100644 web/src/pages/login.tsx delete mode 100644 web/src/pages/stacklets/connect.tsx delete mode 100644 web/src/pages/stacklets/list.module.css delete mode 100644 web/src/pages/stacklets/list.tsx delete mode 100644 web/src/resources/logo.png delete mode 100644 web/src/types/index.ts delete mode 100644 web/src/types/option.ts delete mode 100644 web/src/types/result.ts delete mode 100644 web/src/types/utils.ts delete mode 100644 web/src/utils/localstorage.ts delete mode 100644 web/src/vite-env.d.ts delete mode 100644 web/tests/option.test.ts delete mode 100644 web/tests/result.test.ts delete mode 100644 web/tsconfig.json delete mode 100644 web/uno.config.ts delete mode 100644 web/vite.config.ts delete mode 100644 web/vitest.config.ts delete mode 100644 yarn.lock diff --git a/.dockerignore b/.dockerignore index 5f53f952..7fd788f8 100644 --- a/.dockerignore +++ b/.dockerignore @@ -10,10 +10,5 @@ crate-hashes.json result image.tar -node_modules -.pnp -.pnp.* -.yarn - # We do NOT want to ignore .git because we use the `built` crate to gather the current git commit hash at built time # This means we need the .git directory in our Docker image, it will be thrown away and won't be included in the final image diff --git a/.gitattributes b/.gitattributes index 74bc5051..b29b6b3f 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,9 +1,7 @@ -web/src/api/schema.d.ts linguist-generated extra/completions/* linguist-generated crate-hashes.json linguist-generated extra/man/* linguist-generated Cargo.nix linguist-generated -yarn.lock linguist-generated nix/** linguist-generated go.sum linguist-generated gomod2nix.toml linguist-generated diff --git a/.github/workflows/pr_cockpit-web.yml b/.github/workflows/pr_cockpit-web.yml deleted file mode 100644 index 17926267..00000000 --- a/.github/workflows/pr_cockpit-web.yml +++ /dev/null @@ -1,52 +0,0 @@ ---- -name: web -on: - pull_request: - paths: - - ".github/workflows/pr_cockpit-web.yml" - - "package.json" - - "yarn.lock" - - "web/**" - -jobs: - build-web: - name: Web frontend built - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 - with: - node-version: 18 - cache: yarn - - run: yarn install --frozen-lockfile - - run: yarn --cwd web run build - - eslint: - name: Run web linting via ESLint - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 - with: - node-version: 18 - cache: yarn - - run: yarn install --frozen-lockfile - - run: yarn --cwd web run lint - - prettier: - name: Validate web formatting - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 - with: - node-version: 18 - cache: yarn - - run: yarn install --frozen-lockfile - - run: yarn --cwd web run format --check - - name: Git Diff showed uncommitted changes - if: ${{ failure() }} - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 - with: - script: | - core.setFailed('web/ contains unformatted code, run `yarn --cwd web run format --write` and re-commit!') diff --git a/.github/workflows/pr_general.yml b/.github/workflows/pr_general.yml index 81702f6d..e5d6dccf 100644 --- a/.github/workflows/pr_general.yml +++ b/.github/workflows/pr_general.yml @@ -32,12 +32,6 @@ jobs: with: go-version: ${{ env.GO_VERSION }} - - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 - with: - node-version: 18 - cache: yarn - - run: yarn install --frozen-lockfile - - uses: Swatinem/rust-cache@98c8021b550208e191a6a3145459bfc9fb29c4c0 # v2.8.0 with: key: udeps @@ -84,11 +78,6 @@ jobs: with: key: doc - - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 - with: - node-version: 18 - cache: yarn - - run: yarn install --frozen-lockfile - run: cargo doc --document-private-items run_tests: @@ -111,11 +100,6 @@ jobs: with: key: test - - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 - with: - node-version: 18 - cache: yarn - - run: yarn install --frozen-lockfile - run: cargo test tests_passed: diff --git a/.github/workflows/pr_pre-commit.yml b/.github/workflows/pr_pre-commit.yml index 0e0a5f86..581c8056 100644 --- a/.github/workflows/pr_pre-commit.yml +++ b/.github/workflows/pr_pre-commit.yml @@ -18,11 +18,6 @@ jobs: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 with: fetch-depth: 0 - - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 - with: - node-version: 18 - cache: yarn - - run: yarn install --frozen-lockfile - uses: stackabletech/actions/run-pre-commit@5901c3b1455488820c4be367531e07c3c3e82538 # v0.4.0 with: rust: ${{ env.RUST_TOOLCHAIN_VERSION }} diff --git a/.gitignore b/.gitignore index 40b2fd66..3cc0380c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,15 +1,10 @@ # Rust /target -# Frontend -/node_modules htpasswd -.yarn # Misc /demos /stacks /result .env -.pnp -.pnp.* diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d88e2480..62bd2bf5 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -11,7 +11,7 @@ repos: hooks: - id: trailing-whitespace # Generated file - exclude: ^web/src/api/schema\.d\.ts|extra/.*$ + exclude: ^extra/.*$ - id: end-of-file-fixer exclude: Cargo.nix - id: detect-aws-credentials @@ -69,14 +69,6 @@ repos: stages: [pre-commit, pre-merge-commit, manual] pass_filenames: false - - id: gen-openapi - name: gen-openapi - files: ^web/ - language: system - entry: cargo xtask gen-openapi - stages: [pre-commit, pre-merge-commit, manual] - pass_filenames: false - - id: gen-ctl-readme name: gen-ctl-readme files: ^rust/stackablectl/ diff --git a/.prettierignore b/.prettierignore deleted file mode 100644 index 438e8979..00000000 --- a/.prettierignore +++ /dev/null @@ -1 +0,0 @@ -web/src/api/schema.d.ts diff --git a/Cargo.lock b/Cargo.lock index 6a729830..100f6188 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -481,7 +481,7 @@ checksum = "93698b29de5e97ad0ae26447b344c482a7284c737d9ddc5f9e52b74a336671bb" dependencies = [ "chrono", "chrono-tz-build", - "phf 0.11.3", + "phf", ] [[package]] @@ -491,8 +491,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c088aee841df9c3041febbb73934cfc39708749bf96dc827e3359cd39ef11b1" dependencies = [ "parse-zoneinfo", - "phf 0.11.3", - "phf_codegen 0.11.3", + "phf", + "phf_codegen", ] [[package]] @@ -2504,17 +2504,7 @@ version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" dependencies = [ - "phf_shared 0.11.3", -] - -[[package]] -name = "phf" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" -dependencies = [ - "phf_shared 0.13.1", - "serde", + "phf_shared", ] [[package]] @@ -2523,18 +2513,8 @@ version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" dependencies = [ - "phf_generator 0.11.3", - "phf_shared 0.11.3", -] - -[[package]] -name = "phf_codegen" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49aa7f9d80421bca176ca8dbfebe668cc7a2684708594ec9f3c0db0805d5d6e1" -dependencies = [ - "phf_generator 0.13.1", - "phf_shared 0.13.1", + "phf_generator", + "phf_shared", ] [[package]] @@ -2543,20 +2523,10 @@ version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" dependencies = [ - "phf_shared 0.11.3", + "phf_shared", "rand 0.8.5", ] -[[package]] -name = "phf_generator" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737" -dependencies = [ - "fastrand", - "phf_shared 0.13.1", -] - [[package]] name = "phf_shared" version = "0.11.3" @@ -2566,15 +2536,6 @@ dependencies = [ "siphasher", ] -[[package]] -name = "phf_shared" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" -dependencies = [ - "siphasher", -] - [[package]] name = "pin-project" version = "1.1.11" @@ -3184,9 +3145,9 @@ checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" [[package]] name = "rustls-webpki" -version = "0.103.11" +version = "0.103.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20a6af516fea4b20eccceaf166e8aa666ac996208e8a644ce3ef5aa783bc7cd4" +checksum = "8279bb85272c9f10811ae6a6c547ff594d6a7f3c6c6b02ee9726d1d0dcfcdd06" dependencies = [ "aws-lc-rs", "ring", @@ -3606,14 +3567,6 @@ dependencies = [ "which", ] -[[package]] -name = "stackable-cockpit-web" -version = "0.0.0-dev" -dependencies = [ - "phf 0.13.1", - "phf_codegen 0.13.1", -] - [[package]] name = "stackable-cockpitd" version = "0.0.0-dev" @@ -3626,7 +3579,6 @@ dependencies = [ "serde", "snafu 0.9.0", "stackable-cockpit", - "stackable-cockpit-web", "tokio", "tower-http", "tracing", @@ -5169,7 +5121,6 @@ dependencies = [ "regex", "serde_json", "snafu 0.9.0", - "stackable-cockpitd", "stackablectl", "tera", ] diff --git a/Cargo.nix b/Cargo.nix index b4a24133..db19601b 100644 --- a/Cargo.nix +++ b/Cargo.nix @@ -63,16 +63,6 @@ rec { # File a bug if you depend on any for non-debug work! debug = internal.debugCrate { inherit packageId; }; }; - "stackable-cockpit-web" = rec { - packageId = "stackable-cockpit-web"; - build = internal.buildRustCrateWithFeatures { - packageId = "stackable-cockpit-web"; - }; - - # Debug support which might change between releases. - # File a bug if you depend on any for non-debug work! - debug = internal.debugCrate { inherit packageId; }; - }; "stackable-cockpitd" = rec { packageId = "stackable-cockpitd"; build = internal.buildRustCrateWithFeatures { @@ -1580,7 +1570,7 @@ rec { } { name = "phf"; - packageId = "phf 0.11.3"; + packageId = "phf"; usesDefaultFeatures = false; } ]; @@ -1620,12 +1610,12 @@ rec { } { name = "phf"; - packageId = "phf 0.11.3"; + packageId = "phf"; usesDefaultFeatures = false; } { name = "phf_codegen"; - packageId = "phf_codegen 0.11.3"; + packageId = "phf_codegen"; usesDefaultFeatures = false; } ]; @@ -8121,7 +8111,7 @@ rec { }; resolvedDefaultFeatures = [ "default" ]; }; - "phf 0.11.3" = rec { + "phf" = rec { crateName = "phf"; version = "0.11.3"; edition = "2021"; @@ -8132,7 +8122,7 @@ rec { dependencies = [ { name = "phf_shared"; - packageId = "phf_shared 0.11.3"; + packageId = "phf_shared"; usesDefaultFeatures = false; } ]; @@ -8146,39 +8136,7 @@ rec { "unicase" = [ "phf_macros?/unicase" "phf_shared/unicase" ]; }; }; - "phf 0.13.1" = rec { - crateName = "phf"; - version = "0.13.1"; - edition = "2021"; - sha256 = "1pzswx5gdglgjgp4azyzwyr4gh031r0kcnpqq6jblga72z3jsmn1"; - authors = [ - "Steven Fackler " - ]; - dependencies = [ - { - name = "phf_shared"; - packageId = "phf_shared 0.13.1"; - usesDefaultFeatures = false; - } - { - name = "serde"; - packageId = "serde"; - optional = true; - usesDefaultFeatures = false; - } - ]; - features = { - "default" = [ "std" ]; - "macros" = [ "phf_macros" ]; - "phf_macros" = [ "dep:phf_macros" ]; - "serde" = [ "dep:serde" ]; - "std" = [ "phf_shared/std" "serde?/std" ]; - "uncased" = [ "phf_macros?/uncased" "phf_shared/uncased" ]; - "unicase" = [ "phf_macros?/unicase" "phf_shared/unicase" ]; - }; - resolvedDefaultFeatures = [ "default" "std" ]; - }; - "phf_codegen 0.11.3" = rec { + "phf_codegen" = rec { crateName = "phf_codegen"; version = "0.11.3"; edition = "2021"; @@ -8189,36 +8147,16 @@ rec { dependencies = [ { name = "phf_generator"; - packageId = "phf_generator 0.11.3"; + packageId = "phf_generator"; } { name = "phf_shared"; - packageId = "phf_shared 0.11.3"; + packageId = "phf_shared"; } ]; }; - "phf_codegen 0.13.1" = rec { - crateName = "phf_codegen"; - version = "0.13.1"; - edition = "2021"; - sha256 = "1qfnsl2hiny0yg4lwn888xla5iwccszgxnx8dhbwl6s2h2fpzaj9"; - authors = [ - "Steven Fackler " - ]; - dependencies = [ - { - name = "phf_generator"; - packageId = "phf_generator 0.13.1"; - } - { - name = "phf_shared"; - packageId = "phf_shared 0.13.1"; - } - ]; - - }; - "phf_generator 0.11.3" = rec { + "phf_generator" = rec { crateName = "phf_generator"; version = "0.11.3"; edition = "2021"; @@ -8230,7 +8168,7 @@ rec { dependencies = [ { name = "phf_shared"; - packageId = "phf_shared 0.11.3"; + packageId = "phf_shared"; usesDefaultFeatures = false; } { @@ -8244,30 +8182,7 @@ rec { "criterion" = [ "dep:criterion" ]; }; }; - "phf_generator 0.13.1" = rec { - crateName = "phf_generator"; - version = "0.13.1"; - edition = "2021"; - crateBin = []; - sha256 = "0dwpp11l41dy9mag4phkyyvhpf66lwbp79q3ik44wmhyfqxcwnhk"; - authors = [ - "Steven Fackler " - ]; - dependencies = [ - { - name = "fastrand"; - packageId = "fastrand"; - usesDefaultFeatures = false; - } - { - name = "phf_shared"; - packageId = "phf_shared 0.13.1"; - usesDefaultFeatures = false; - } - ]; - - }; - "phf_shared 0.11.3" = rec { + "phf_shared" = rec { crateName = "phf_shared"; version = "0.11.3"; edition = "2021"; @@ -8288,27 +8203,6 @@ rec { }; resolvedDefaultFeatures = [ "default" "std" ]; }; - "phf_shared 0.13.1" = rec { - crateName = "phf_shared"; - version = "0.13.1"; - edition = "2021"; - sha256 = "0rpjchnswm0x5l4mz9xqfpw0j4w68sjvyqrdrv13h7lqqmmyyzz5"; - authors = [ - "Steven Fackler " - ]; - dependencies = [ - { - name = "siphasher"; - packageId = "siphasher"; - } - ]; - features = { - "default" = [ "std" ]; - "uncased" = [ "dep:uncased" ]; - "unicase" = [ "dep:unicase" ]; - }; - resolvedDefaultFeatures = [ "default" "std" ]; - }; "pin-project" = rec { crateName = "pin-project"; version = "1.1.11"; @@ -10597,9 +10491,9 @@ rec { }; "rustls-webpki" = rec { crateName = "rustls-webpki"; - version = "0.103.11"; + version = "0.103.12"; edition = "2021"; - sha256 = "1m3wpj1sfnpgwd6692lf42bcjsk6mbl6dwgarkn20jzadx8sz9i0"; + sha256 = "01nxzkfd1l96jzp04svc7iznlkarzx3wb9p63a0i17rc4y2vnyc2"; libName = "webpki"; dependencies = [ { @@ -11871,26 +11765,6 @@ rec { }; resolvedDefaultFeatures = [ "full" "openapi" ]; }; - "stackable-cockpit-web" = rec { - crateName = "stackable-cockpit-web"; - version = "0.0.0-dev"; - edition = "2021"; - src = lib.cleanSourceWith { filter = sourceFilter; src = ./web; }; - libName = "stackable_cockpit_web"; - dependencies = [ - { - name = "phf"; - packageId = "phf 0.13.1"; - } - ]; - buildDependencies = [ - { - name = "phf_codegen"; - packageId = "phf_codegen 0.13.1"; - } - ]; - - }; "stackable-cockpitd" = rec { crateName = "stackable-cockpitd"; version = "0.0.0-dev"; @@ -11946,11 +11820,6 @@ rec { packageId = "stackable-cockpit"; features = [ "openapi" ]; } - { - name = "stackable-cockpit-web"; - packageId = "stackable-cockpit-web"; - optional = true; - } { name = "tokio"; packageId = "tokio"; @@ -11985,10 +11854,7 @@ rec { features = [ "v4" ]; } ]; - features = { - "ui" = [ "dep:stackable-cockpit-web" ]; - }; - resolvedDefaultFeatures = [ "default" "ui" ]; + }; "stackable-operator" = rec { crateName = "stackable-operator"; @@ -18320,10 +18186,6 @@ rec { packageId = "snafu 0.9.0"; features = [ "futures" ]; } - { - name = "stackable-cockpitd"; - packageId = "stackable-cockpitd"; - } { name = "stackablectl"; packageId = "stackablectl"; diff --git a/Cargo.toml b/Cargo.toml index 68985380..148bc31b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [workspace] -members = ["rust/*", "web", "."] +members = ["rust/*", "."] resolver = "2" [workspace.package] diff --git a/README.md b/README.md index c003321a..a40572df 100644 --- a/README.md +++ b/README.md @@ -11,21 +11,19 @@ [Stackable Data Platform](https://stackable.tech/) | [Platform Docs](https://docs.stackable.tech/) | [Discussions](https://github.com/orgs/stackabletech/discussions) | [Discord](https://discord.gg/7kZ3BNnCAF) -This repository contains the Stackable library `stackable-cockpit`, the Stackable CLI tool `stackablectl`, the Stackable -Cockpit server `stackable-cockpitd`, and the web-based admin user interface. +This repository contains the Stackable library `stackable-cockpit`, the Stackable CLI tool `stackablectl`, and the +Stackable Cockpit server `stackable-cockpitd`. ## Components - [`stackable-cockpit`][lib-readme]: The underlying library for all actions related to the Stackable Data Platform - [`stackablectl`][ctl-readme]: CLI tool to interact with local and remote deployments of the data platform - [`stackable-cockpitd`][server-readme]: API server used by frontends to interact with the data platform -- [`stackable-cockpit-web`][web-readme]: The web-based admin UI powered by SolidJS, TypeScript and Vite ## Developer Setup ### Prerequisites -- A working (and up2date) NodeJS installation, with Yarn as the preferred package manager - A working (and up2date) Rust installation including rustc, clippy, and cargo - Optional, but strongly advised: a working [pre-commit][pre-commit] installation @@ -36,19 +34,11 @@ git clone git@github.com:stackabletech/stackable-cockpit.git cd stackable-cockpit ``` -The admin UI is registered as a crate and is part of the build process, as the HTML/CSS/JS bundle is included in the -final `stackable-cockpitd` binary. To get the build process running, first execute `yarn install` to install all required NodeJS -dependencies in the `node_modules` folder. - ---- - Each component can be build separately like this: ```shell -cargo build --release -p stackablectl # Builds stackablectl -cargo build --release -p stackable-cockpitd # Builds the Stackable Cockpit API server -cargo build --release -p stackable-cockpitd --features ui # Builds the Stackable Cockpit API server bundled with the admin UI -cd web && yarn run build && cd - # Builds the admin UI +cargo build --release -p stackablectl # Builds stackablectl +cargo build --release -p stackable-cockpitd # Builds the Stackable Cockpit API server ``` ### Pre-commit hooks and xtasks @@ -64,18 +54,15 @@ hooks are: - [`detect-private-key`](https://github.com/pre-commit/pre-commit-hooks#detect-private-key): Detect private keys - [`yamllint`](https://github.com/adrienverge/yamllint): Runs linting on all YAML files - [`markdownlint`](https://github.com/igorshubovych/markdownlint-cli): Runs linting on all Markdown files -- [`prettier`](https://github.com/pre-commit/mirrors-prettier): Runs prettier on files located in `web` - `cargo clippy --all-targets --all-features -- -D warnings`: Runs Clippy on all files and errors on warnings - `cargo fmt -- --check`: Checks if Rust code needs formatting - `cargo xtask gen-comp`: Runs shell completions generation for `stackablectl` - `cargo xtask gen-man`: Runs man page generation for `stackablectl` -- `cargo xtask gen-openapi`: Runs OpenAPI spec generation to connect backend with frontend - `cargo xtask gen-ctl-readme`: Generates and inserts `stackablectl` help text into README [server-readme]: ./rust/stackable-cockpitd/README.md [ctl-readme]: ./rust/stackablectl/README.md [pre-commit]: https://pre-commit.com/ -[web-readme]: ./web/README.md [lib-readme]: ./rust/stackable-cockpit/README.md ### Templating variables diff --git a/Tiltfile b/Tiltfile index de8ddd65..9b9cdb38 100644 --- a/Tiltfile +++ b/Tiltfile @@ -14,8 +14,6 @@ custom_build( deps=[ # Rust 'rust', 'Cargo.toml', 'Cargo.lock', 'vendor', - # Web UI - 'web', 'yarn.lock', # Nix 'nix', 'default.nix', ], diff --git a/default.nix b/default.nix index b8823184..05fd9820 100644 --- a/default.nix +++ b/default.nix @@ -11,16 +11,6 @@ cargo ? import ./Cargo.nix { inherit nixpkgs pkgs release; defaultCrateOverrides = pkgs.defaultCrateOverrides // { - stackable-cockpit-web = attrs: { - nativeBuildInputs = [ - pkgs.nodePackages.yarn - pkgs.nodejs_20 - ]; - preConfigure = '' - [[ ! -e node_modules ]] || rm -r node_modules - ln -s ${web.nodeModules} node_modules - ''; - }; helm-sys = attrs: { GO_HELM_WRAPPER = goHelmWrapper + "/bin"; LIBCLANG_PATH = "${pkgs.libclang.lib}/lib"; @@ -41,20 +31,6 @@ meta ? pkgs.lib.importJSON ./nix/meta.json, dockerName ? "oci.stackable.tech/sandbox/${meta.operator.name}", dockerTag ? null, - web ? js2nix.buildEnv { - # js2nix doesn't import peer dependencies, so we use overlays to patch them in explicitly - # https://github.com/canva-public/js2nix/blob/d37912f6cc824e7f41bea7a481af1739ca195c8f/docs/usage.md#overriding - package-json = ./web/package.json; - yarn-lock = ./yarn.lock; - overlays = [ - (self: super: { - # TODO: remove once this https://github.com/canva-public/js2nix/issues/20 is resolved - buildNodeModule = pkgs.lib.makeOverridable ( - args: (super.buildNodeModule args).override { doCheck = false; } - ); - }) - ]; - }, goHelmWrapper ? pkgs.buildGoApplication { go = pkgs.go_1_26; pname = "go-helm-wrapper"; @@ -75,7 +51,6 @@ done ''; }, - js2nix ? pkgs.callPackage sources.js2nix { nodejs = pkgs.nodejs_20; }, gomod2nix ? pkgs.callPackage sources.gomod2nix { }, }: rec { @@ -85,9 +60,7 @@ rec { pkgs meta ; - build = cargo.workspaceMembers.stackable-cockpitd.build.override { - features = [ "ui" ]; - }; + build = cargo.workspaceMembers.stackable-cockpitd.build; entrypoint = build + "/bin/stackable-cockpitd"; # crds = pkgs.runCommand "${meta.operator.name}-crds.yaml" {} # '' diff --git a/docker/Dockerfile b/docker/Dockerfile index f9baffc9..be70ac91 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -31,15 +31,6 @@ RUN GO_VERSION=1.26.0 \ && ln -s /opt/go/bin/go /usr/local/bin WORKDIR / -##PATCH: Install node (for UI build) -WORKDIR /opt/node -RUN NODE_VERSION=18.16.0 \ - ARCH=$(arch | sed 's/^x86_64$/x64/' | sed 's/^aarch64$/arm64/') \ - && curl --location "https://repo.stackable.tech/repository/packages/node/node-v${NODE_VERSION}-linux-${ARCH}.tar.xz" | tar xvJ --strip-components=1 \ - && ln -s /opt/node/bin/{node,corepack} /usr/local/bin \ - && corepack enable yarn -WORKDIR / - # IMPORTANT # If you change the toolchain version here, make sure to also change the "rust_version" # property in operator-templating/repositories.yaml @@ -58,9 +49,9 @@ COPY docker/ubi8-rust-builder/copy_artifacts.sh / WORKDIR /src COPY . /src -## PATCH: disabled cyclonedx, run yarn install, build stackable-cockpitd with ui feature enabled +## PATCH: disabled cyclonedx # hadolint ignore=SC1091 -RUN . "$HOME/.cargo/env" && yarn && cargo build --release --workspace --features stackable-cockpitd/ui +RUN . "$HOME/.cargo/env" && cargo build --release --workspace # ONBUILD RUN . "$HOME/.cargo/env" && cargo auditable build --release --workspace && cargo cyclonedx --output-pattern package --all --output-cdx # Copy the "interesting" files into /app. diff --git a/nix/sources.json b/nix/sources.json index 9bff9ae9..3043939d 100644 --- a/nix/sources.json +++ b/nix/sources.json @@ -24,18 +24,6 @@ "url_template": "https://github.com///archive/.tar.gz", "version": "1.5.0" }, - "js2nix": { - "branch": "main", - "description": "Node.js modules installation using Nix", - "homepage": "", - "owner": "canva-public", - "repo": "js2nix", - "rev": "8cd32b5c87767b019e0960b27599f6b9d195ddb0", - "sha256": "0mp62ai0n6k57cx8sn118qis37xvfylskagghxja00gdcank3nxr", - "type": "tarball", - "url": "https://github.com/canva-public/js2nix/archive/8cd32b5c87767b019e0960b27599f6b9d195ddb0.tar.gz", - "url_template": "https://github.com///archive/.tar.gz" - }, "nixpkgs": { "branch": "nixpkgs-unstable", "description": "Nix Packages collection", diff --git a/package.json b/package.json deleted file mode 100644 index 45a78b88..00000000 --- a/package.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "private": true, - "workspaces": [ - "web" - ], - "packageManager": "yarn@1.22.19" -} diff --git a/rust/stackable-cockpitd/Cargo.toml b/rust/stackable-cockpitd/Cargo.toml index 173649a5..fe41ae1e 100644 --- a/rust/stackable-cockpitd/Cargo.toml +++ b/rust/stackable-cockpitd/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "stackable-cockpitd" -description = "Stackable cockpit daemon bundling the HTTP REST API and UI" +description = "Stackable cockpit daemon bundling the HTTP REST API" version.workspace = true authors.workspace = true license.workspace = true @@ -8,14 +8,8 @@ edition.workspace = true repository.workspace = true publish = false -[features] -default = [] -# The UI builds slowly, so run in API-only mode during development -ui = ["dep:stackable-cockpit-web"] - [dependencies] stackable-cockpit = { path = "../stackable-cockpit", features = ["openapi"] } -stackable-cockpit-web = { path = "../../web", optional = true } axum.workspace = true axum-extra.workspace = true diff --git a/rust/stackable-cockpitd/README.md b/rust/stackable-cockpitd/README.md index 442cd9dd..6f27efbc 100644 --- a/rust/stackable-cockpitd/README.md +++ b/rust/stackable-cockpitd/README.md @@ -12,9 +12,6 @@ and exposes functionality via an HTTP REST API. Core community-provided dependen - [`tracing`][tracing-link] is used for context-rich application logging. Our complete stack emits tracing events that can be consumed via multiple different subscribers. - [`snafu`][snafu-link] for easy custom error handling. -The Stackable UI is bundled into the final binary during the build process. The source code for the front end is located -in [web](../../web). Detailed information about the frontend stack can be found in the [README](../../web/README.me). - ## Development ```shell diff --git a/rust/stackable-cockpitd/src/cli.rs b/rust/stackable-cockpitd/src/cli.rs index 37d94cce..3c56dc80 100644 --- a/rust/stackable-cockpitd/src/cli.rs +++ b/rust/stackable-cockpitd/src/cli.rs @@ -5,8 +5,7 @@ use clap::Parser; #[derive(Debug, Parser)] #[command(author, version, about, propagate_version = true)] #[command( - about = "Run the Stackable daemon which exposes the Stackable library via an HTTP -REST API and provides a web-based application." + about = "Run the Stackable daemon which exposes the Stackable library via an HTTP REST API." )] pub struct Cli { /// Port the daemon listens on diff --git a/rust/stackable-cockpitd/src/handlers/mod.rs b/rust/stackable-cockpitd/src/handlers/mod.rs index 61145488..de3222b1 100644 --- a/rust/stackable-cockpitd/src/handlers/mod.rs +++ b/rust/stackable-cockpitd/src/handlers/mod.rs @@ -3,9 +3,3 @@ pub mod releases; pub mod root; pub mod stacklets; pub mod stacks; - -#[cfg(feature = "ui")] -pub mod ui; -#[cfg(not(feature = "ui"))] -#[path = "ui_disabled.rs"] -pub mod ui; diff --git a/rust/stackable-cockpitd/src/handlers/ui.rs b/rust/stackable-cockpitd/src/handlers/ui.rs deleted file mode 100644 index e250e0bb..00000000 --- a/rust/stackable-cockpitd/src/handlers/ui.rs +++ /dev/null @@ -1,31 +0,0 @@ -use axum::{ - Router, - extract::Path, - http::{HeaderValue, header::CONTENT_TYPE}, - response::{Html, IntoResponse}, - routing::get, -}; - -pub fn router() -> Router { - Router::new() - .route("/assets/:assset", get(asset)) - .route("/", get(ui)) - .route("/*path", get(ui)) -} - -async fn ui() -> Html<&'static str> { - Html(stackable_cockpit_web::INDEX_HTML) -} -async fn asset(Path(name): Path) -> impl IntoResponse { - ( - [( - CONTENT_TYPE, - match name.rsplit_once('.') { - Some((_, "js")) => HeaderValue::from_static("text/javascript"), - Some((_, "css")) => HeaderValue::from_static("text/css"), - _ => HeaderValue::from_static("application/octet-stream"), - }, - )], - stackable_cockpit_web::ASSETS[&name], - ) -} diff --git a/rust/stackable-cockpitd/src/handlers/ui_disabled.rs b/rust/stackable-cockpitd/src/handlers/ui_disabled.rs deleted file mode 100644 index 88adbd9e..00000000 --- a/rust/stackable-cockpitd/src/handlers/ui_disabled.rs +++ /dev/null @@ -1,9 +0,0 @@ -use axum::{Router, routing::get}; - -pub fn router() -> Router { - Router::new().route("/", get(disabled_message)) -} - -async fn disabled_message() -> &'static str { - "UI is disabled, rebuild with --features ui to enable" -} diff --git a/rust/stackable-cockpitd/src/main.rs b/rust/stackable-cockpitd/src/main.rs index 98c5f61c..e36173f0 100644 --- a/rust/stackable-cockpitd/src/main.rs +++ b/rust/stackable-cockpitd/src/main.rs @@ -2,7 +2,6 @@ use std::net::SocketAddr; use axum::{ Router, - response::Redirect, routing::{get, post}, }; use clap::Parser; @@ -53,9 +52,7 @@ async fn main() -> Result<(), Whatever> { let router = Router::new() .nest("/api/", api) - .nest("/ui/", handlers::ui::router()) - .merge(SwaggerUi::new("/swagger-ui").url("/api-docs/openapi.json", api_doc::openapi())) - .route("/", get(|| async { Redirect::permanent("/ui/") })); + .merge(SwaggerUi::new("/swagger-ui").url("/api-docs/openapi.json", api_doc::openapi())); let listen_addr = SocketAddr::new(cli.address, cli.port); info!(addr = %listen_addr, "Starting server"); diff --git a/rust/xtask/Cargo.toml b/rust/xtask/Cargo.toml index 1007dca3..69a5beb7 100644 --- a/rust/xtask/Cargo.toml +++ b/rust/xtask/Cargo.toml @@ -13,6 +13,5 @@ once_cell.workspace = true regex.workspace = true serde_json.workspace = true snafu.workspace = true -stackable-cockpitd = { path = "../stackable-cockpitd" } stackablectl = { path = "../stackablectl" } tera.workspace = true diff --git a/rust/xtask/src/main.rs b/rust/xtask/src/main.rs index 80de075e..a6d2c0a3 100644 --- a/rust/xtask/src/main.rs +++ b/rust/xtask/src/main.rs @@ -2,14 +2,12 @@ use clap::Parser; use snafu::Snafu; use crate::{ - completions::GenCompError, docs::GenDocsError, man::GenManError, openapi::GenOpenapiError, - readme::GenReadmeError, + completions::GenCompError, docs::GenDocsError, man::GenManError, readme::GenReadmeError, }; mod completions; mod docs; mod man; -mod openapi; mod readme; #[derive(clap::Parser)] @@ -18,7 +16,6 @@ enum XtaskCommand { GenAll, GenMan, GenComp, - GenOpenapi, GenCtlReadme, GenDocs, } @@ -31,12 +28,6 @@ enum TaskError { #[snafu(display("failed to generate shell completions"), context(false))] Comp { source: GenCompError }, - #[snafu( - display("failed to generate OpenAPI TypeScript schema based on the OpenAPI JSON spec"), - context(false) - )] - Openapi { source: GenOpenapiError }, - #[snafu( display("failed to generate stackablectl usage README file"), context(false) @@ -54,13 +45,11 @@ fn main() -> Result<(), TaskError> { // IMPORTANT (@NickLarsenNZ): ensure all commands defined below are also in here. man::generate()?; completions::generate()?; - openapi::generate()?; readme::generate()?; docs::generate()?; } XtaskCommand::GenMan => man::generate()?, XtaskCommand::GenComp => completions::generate()?, - XtaskCommand::GenOpenapi => openapi::generate()?, XtaskCommand::GenCtlReadme => readme::generate()?, XtaskCommand::GenDocs => docs::generate()?, } diff --git a/rust/xtask/src/openapi.rs b/rust/xtask/src/openapi.rs deleted file mode 100644 index 270e64fb..00000000 --- a/rust/xtask/src/openapi.rs +++ /dev/null @@ -1,46 +0,0 @@ -use std::{ - io::Write, - process::{Command, Stdio}, -}; - -use snafu::{ResultExt, Snafu, ensure}; -use stackable_cockpitd::api_doc::openapi; - -#[derive(Debug, Snafu)] -pub enum GenOpenapiError { - #[snafu(display("error serializing openapi"))] - SerializeOpenApi { source: serde_json::Error }, - - #[snafu(display("error running importing openapi schema importer"))] - ImportOpenapiSchemaRun { source: std::io::Error }, - - #[snafu(display("openapi schema importer failed with error code {error_code:?}"))] - ImportOpenapiSchema { error_code: Option }, - - #[snafu(display("error writing openapi schema into importer"))] - WriteOpenapiSchema { source: std::io::Error }, -} - -pub fn generate() -> Result<(), GenOpenapiError> { - let openapi_json = openapi().to_json().context(SerializeOpenApiSnafu)?; - let mut codegen = Command::new("yarn") - .args(["--cwd", "web", "run", "openapi-codegen"]) - .stdin(Stdio::piped()) - .spawn() - .context(ImportOpenapiSchemaRunSnafu)?; - codegen - .stdin - .take() - .expect("child stdin must be available") - .write_all(openapi_json.as_bytes()) - .context(WriteOpenapiSchemaSnafu)?; - let status = codegen.wait().context(ImportOpenapiSchemaRunSnafu)?; - ensure!( - status.success(), - ImportOpenapiSchemaSnafu { - error_code: status.code() - } - ); - - Ok(()) -} diff --git a/shell.nix b/shell.nix index 9ddaba37..d0ec38be 100644 --- a/shell.nix +++ b/shell.nix @@ -43,9 +43,6 @@ pkgs.mkShell rec { rustup # additions for this repo - yarn - typescript - vite go ]); diff --git a/web/.editorconfig b/web/.editorconfig deleted file mode 100644 index b429316b..00000000 --- a/web/.editorconfig +++ /dev/null @@ -1,2 +0,0 @@ -[*] -indent_size = 2 diff --git a/web/.eslintignore b/web/.eslintignore deleted file mode 100644 index 74746490..00000000 --- a/web/.eslintignore +++ /dev/null @@ -1,2 +0,0 @@ -# generated files -src/api/schema.d.ts diff --git a/web/.eslintrc b/web/.eslintrc deleted file mode 100644 index 86d58a6b..00000000 --- a/web/.eslintrc +++ /dev/null @@ -1,41 +0,0 @@ -{ - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/recommended", - "plugin:@typescript-eslint/recommended-requiring-type-checking", - "plugin:solid/typescript", - "plugin:unicorn/recommended", - "prettier" - ], - "parser": "@typescript-eslint/parser", - "parserOptions": { - "project": true - }, - "plugins": ["@typescript-eslint", "solid", "unicorn"], - "rules": { - // Causes false positives for Solid resources - "@typescript-eslint/no-misused-promises": "off", - "unicorn/prevent-abbreviations": [ - "error", - { - "replacements": { - "env": false, - // Err is used for the Result type - "err": false, - // Fn or fn is used in callbacks, predicate and filter functions - "fn": false, - // props and params are distinct SolidJS concepts - "props": false, - "params": false - } - } - ], - "unicorn/no-useless-undefined": "off", - "@typescript-eslint/no-unused-vars": [ - "error", - { - "argsIgnorePattern": "^_" - } - ] - } -} diff --git a/web/.gitignore b/web/.gitignore deleted file mode 100644 index ffc6a8f1..00000000 --- a/web/.gitignore +++ /dev/null @@ -1,27 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? - -# Test results / coverage -coverage diff --git a/web/.prettierignore b/web/.prettierignore deleted file mode 100644 index c2b7dc50..00000000 --- a/web/.prettierignore +++ /dev/null @@ -1,3 +0,0 @@ -dist -# Generated by openapi-typescript -src/api/schema.d.ts diff --git a/web/.prettierrc.json b/web/.prettierrc.json deleted file mode 100644 index e359dad9..00000000 --- a/web/.prettierrc.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "trailingComma": "all", - "singleQuote": true, - "jsxSingleQuote": true -} diff --git a/web/Cargo.toml b/web/Cargo.toml deleted file mode 100644 index 34621892..00000000 --- a/web/Cargo.toml +++ /dev/null @@ -1,11 +0,0 @@ -[package] -name = "stackable-cockpit-web" -version.workspace = true -edition = "2021" -publish = false - -[dependencies] -phf = { workspace = true } - -[build-dependencies] -phf_codegen = { workspace = true } diff --git a/web/README.md b/web/README.md deleted file mode 100644 index a7443df8..00000000 --- a/web/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# stackable-cockpit-web - -## The stack - -The Stackable UI is a modern web app written in TypeScript. Core community-provided dependencies are: - -- [SolidJS][solidjs-link] is a reactivity-based framework for building modular web apps. -- [UnoCSS][unocss-link] is an on-demand CSS framework that generates CSS based on HTML classes. -- [Vite][vite-link] is a modern and fast TS/JS toolchain for all kinds of frameworks. Based on Rollup. - -[solidjs-link]: https://www.solidjs.com/ -[unocss-link]: https://unocss.dev/ -[vite-link]: https://vitejs.dev/ - -## Development diff --git a/web/build.rs b/web/build.rs deleted file mode 100644 index 7342c6c9..00000000 --- a/web/build.rs +++ /dev/null @@ -1,54 +0,0 @@ -use std::{fs::File, io::Write, path::PathBuf, process::Command}; - -fn main() { - let out_dir = PathBuf::from(std::env::var("OUT_DIR").expect("OUT_DIR is required")); - - let vite_out_dir = out_dir.join("vite-dist"); - // Vite always seems to update the mtime of the project folder on each build, so track the files that we know matter individually - for tracked_file in [ - "package.json", - "../yarn.lock", - "index.html", - "public", - "src", - "tsconfig.json", - "vite.config.ts", - ] { - println!("cargo:rerun-if-changed={tracked_file}"); - } - - let mut vite_command = Command::new("yarn"); - vite_command - .arg("run") - .arg("build") - .arg("--outDir") - .arg(&vite_out_dir) - .arg("--base") - .arg("/ui/"); - - let vite_status = vite_command.status(); - match vite_status { - Ok(vite_status) if vite_status.success() => {} - _ => panic!("web-ui build failed: command {vite_command:?} resulted in {vite_status:?}"), - }; - - let mut asset_map = phf_codegen::Map::new(); - for asset_file in vite_out_dir.join("assets").read_dir().unwrap() { - let asset_file = asset_file.unwrap(); - let asset_file_name = asset_file.file_name(); - let asset_file_path = asset_file.path(); - asset_map.entry( - asset_file_name - .to_str() - .expect("asset filename must be valid UTF-8") - .to_string(), - format!("include_bytes!({asset_file_path:?})"), - ); - } - write!( - File::create(out_dir.join("vite-asset-map.rs")).unwrap(), - "{asset_map}", - asset_map = asset_map.build() - ) - .unwrap(); -} diff --git a/web/index.html b/web/index.html deleted file mode 100644 index d01e30f6..00000000 --- a/web/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - Stackable Cockpit - - -

- - - diff --git a/web/package.json b/web/package.json deleted file mode 100644 index 838053c8..00000000 --- a/web/package.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "name": "web-ui", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "lint": "eslint --ext .js,.ts,.tsx,.jsx,.json ./src", - "coverage": "vitest run --coverage", - "build": "tsc && vite build", - "preview": "vite preview", - "test:ui": "vitest --ui", - "openapi-codegen": "openapi-typescript -o src/api/schema.d.ts", - "format": "prettier .", - "test": "vitest", - "dev": "vite" - }, - "devDependencies": { - "@types/feather-icons": "^4.29.1", - "@typescript-eslint/eslint-plugin": "^5.59.5", - "@typescript-eslint/parser": "^5.59.5", - "@vitest/coverage-c8": "^0.31.1", - "@vitest/ui": "^0.31.1", - "eslint": "^8.40.0", - "eslint-config-prettier": "^8.8.0", - "eslint-plugin-solid": "^0.12.1", - "eslint-plugin-unicorn": "^47.0.0", - "openapi-typescript": "^6.5.0", - "prettier": "^2.8.8", - "typescript": "^5.0.4", - "unocss": "^0.51.8", - "vite": "^4.5.3", - "vite-plugin-solid": "^2.7.2", - "vitest": "^0.31.4" - }, - "dependencies": { - "@fluent/bundle": "^0.18.0", - "@fluent/langneg": "^0.7.0", - "@fluent/sequence": "^0.8.0", - "@solid-devtools/overlay": "^0.27.7", - "@solidjs/router": "^0.8.2", - "@unocss/reset": "^0.51.12", - "feather-icons": "^4.29.0", - "openapi-fetch": "^0.2.0", - "solid-js": "^1.7.4" - }, - "js2nix": { - "overlay": { - "vite-plugin-solid": { - "addDependencies": [ - "vite" - ] - }, - "@solidjs/router": { - "addDependencies": [ - "solid-js" - ] - } - } - }, - "packageManager": "yarn@1.22.19" -} diff --git a/web/public/.gitkeep b/web/public/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/web/public/fonts/Inter-Bold.woff2 b/web/public/fonts/Inter-Bold.woff2 deleted file mode 100644 index 2846f29cc8af8cef50f51381940bac8845c38f59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 106140 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
)V`qXZDL!rw2D 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

B1ttL7O_Gw{HhNLeIl%?EWPJgN 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 diff --git a/web/public/fonts/Inter-Medium.woff2 b/web/public/fonts/Inter-Medium.woff2 deleted file mode 100644 index f92498a2ecf4d95ddd85c8b18f7b9ebc15e11658..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 105924 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 RS-;sm8d61l{^uOb{{jFVK@0!@ diff --git a/web/public/fonts/Inter-Regular.woff2 b/web/public/fonts/Inter-Regular.woff2 deleted file mode 100644 index 6c2b6893d593201d7c94e52687f78b2ef28b357e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98868 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%0D(-D;tD2U3Vy$! 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 diff --git a/web/src/api/listeners.ts b/web/src/api/listeners.ts deleted file mode 100644 index 2ff5aea7..00000000 --- a/web/src/api/listeners.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { ObjectMeta } from './meta'; -import { delay } from './mock-utils'; - -interface Listener { - metadata: ObjectMeta; - product: string; - endpoints: ListenerEndpoint[]; -} - -interface ListenerEndpoint { - path: string; - web: boolean; -} - -export async function getListeners(): Promise { - await delay(200); - return [ - { - metadata: { - namespace: 'default', - name: 'simple-nifi', - }, - product: 'nifi', - endpoints: [ - { - path: 'https://127.0.0.1:8443/ui', - web: true, - }, - { - path: 'mqtt://127.0.0.1:9999', - web: false, - }, - ], - }, - { - metadata: { - namespace: 'default', - name: 'dimple-nifi', - }, - product: 'nifi', - endpoints: [ - { - path: 'https://127.0.0.1:8443/ui', - web: true, - }, - { - path: 'mqtt://127.0.0.1:9999', - web: false, - }, - ], - }, - { - metadata: { - namespace: 'sefault', - name: 'dimple-nifi', - }, - product: 'nifi', - endpoints: [ - { - path: 'https://127.0.0.1:8443/ui', - web: true, - }, - { - path: 'mqtt://127.0.0.1:9999', - web: false, - }, - ], - }, - ]; -} diff --git a/web/src/api/meta.ts b/web/src/api/meta.ts deleted file mode 100644 index 2c8a16e3..00000000 --- a/web/src/api/meta.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface ObjectMeta { - namespace: string; - name: string; -} diff --git a/web/src/api/mock-utils.ts b/web/src/api/mock-utils.ts deleted file mode 100644 index afb87495..00000000 --- a/web/src/api/mock-utils.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function delay(amount: number): Promise { - return new Promise((resolve) => setTimeout(resolve, amount)); -} diff --git a/web/src/api/schema.d.ts b/web/src/api/schema.d.ts deleted file mode 100644 index c3261227..00000000 --- a/web/src/api/schema.d.ts +++ /dev/null @@ -1,234 +0,0 @@ -/** - * This file was auto-generated by openapi-typescript. - * Do not make direct changes to the file. - */ - - -/** OneOf type helpers */ -type Without = { [P in Exclude]?: never }; -type XOR = (T | U) extends object ? (Without & U) | (Without & T) : T | U; -type OneOf = T extends [infer Only] ? Only : T extends [infer A, infer B, ...infer Rest] ? OneOf<[XOR, ...Rest]> : never; - -export interface paths { - "/demos": { - /** Retrieves all demos. */ - get: operations["get_demos"]; - }; - "/demos/{name}": { - /** Retrieves one demo identified by `name`. */ - get: operations["get_demo"]; - }; - "/login": { - post: operations["log_in"]; - }; - "/ping": { - get: operations["ping"]; - }; - "/releases": { - /** Retrieves all releases. */ - get: operations["get_releases"]; - }; - "/releases/{name}": { - /** Retrieves one release identified by `name`. */ - get: operations["get_release"]; - }; - "/stacklets": { - /** Retrieves all stacklets. */ - get: operations["get_stacklets"]; - }; -} - -export type webhooks = Record; - -export interface components { - schemas: { - /** @description This struct describes a demo with the v2 spec */ - DemoSpec: { - /** @description A short description of the demo */ - description: string; - /** @description An optional link to a documentation page */ - documentation?: string | null; - /** @description A variable number of labels (tags) */ - labels?: string[]; - /** @description A variable number of Helm or YAML manifests */ - manifests?: components["schemas"]["ManifestSpec"][]; - /** @description A variable number of supported parameters */ - parameters?: components["schemas"]["Parameter"][]; - resourceRequests?: null | components["schemas"]["ResourceRequests"]; - /** @description The name of the underlying stack */ - stackableStack: string; - /** - * @description Supported namespaces this demo can run in. An empty list indicates that - * the demo can run in any namespace. - */ - supportedNamespaces?: string[]; - }; - DisplayCondition: { - condition: string; - is_good?: boolean | null; - message?: string | null; - }; - ManifestSpec: OneOf<[{ - helmChart: string; - }, { - plainYaml: string; - }]>; - ObjectMeta: { - name: string; - namespace: string; - }; - /** - * @description Parameter descibes a common parameter format. This format is used in demo - * and stack definitions. - */ - Parameter: { - /** @description Parameter default value */ - default: string; - /** @description Parameter description */ - description: string; - /** @description Parameter name */ - name: string; - }; - ProductSpec: { - operatorVersion: string; - }; - ReleaseSpec: { - /** @description A short description of this release */ - description: string; - /** @description List of products and their version in this release */ - products: { - [key: string]: components["schemas"]["ProductSpec"]; - }; - /** @description Date this released was released */ - releaseDate: string; - }; - /** - * @description Demos and stacks can define how much cluster resources they need to run - * via their definition. The struct [`ResourceRequests`] contains information - * how many CPU cores and how much memory and disk space are required to run - * the demo/stack. - */ - ResourceRequests: { - cpu: string; - memory: string; - pvc: string; - }; - Session: { - sessionToken: components["schemas"]["SessionToken"]; - }; - SessionToken: string; - Stacklet: { - /** @description Multiple cluster conditions. */ - conditions: components["schemas"]["DisplayCondition"][]; - /** - * @description Endpoint addresses the product is reachable at. - * The key is the service name (e.g. `web-ui`), the value is the URL. - */ - endpoints: { - [key: string]: string; - }; - /** @description Name of the stacklet. */ - name: string; - /** @description Some CRDs are cluster scoped. */ - namespace?: string | null; - /** @description Name of the product. */ - product: string; - }; - }; - responses: never; - parameters: never; - requestBodies: never; - headers: never; - pathItems: never; -} - -export type $defs = Record; - -export type external = Record; - -export interface operations { - - /** Retrieves all demos. */ - get_demos: { - responses: { - /** @description Retrieving a list of demos succeeded */ - 200: { - content: { - "application/json": components["schemas"]["DemoSpec"][]; - }; - }; - /** @description Retrieving a list of demos failed */ - 404: { - content: never; - }; - }; - }; - /** Retrieves one demo identified by `name`. */ - get_demo: { - responses: { - /** @description Retrieving the demo with 'name' succeeded */ - 200: { - content: { - "application/json": components["schemas"]["DemoSpec"]; - }; - }; - /** @description Retrieving the demo with 'name' failed */ - 404: { - content: never; - }; - }; - }; - log_in: { - responses: { - 200: { - content: { - "application/json": components["schemas"]["Session"]; - }; - }; - 401: { - content: { - "text/plain": string; - }; - }; - }; - }; - ping: { - responses: { - 200: { - content: { - "text/plain": string; - }; - }; - }; - }; - /** Retrieves all releases. */ - get_releases: { - responses: { - /** @description Retrieving a list of releases succeeded */ - 200: { - content: { - "application/json": components["schemas"]["ReleaseSpec"][]; - }; - }; - /** @description Retrieving a list of releases failed */ - 404: { - content: never; - }; - }; - }; - /** Retrieves one release identified by `name`. */ - get_release: { - responses: { - }; - }; - /** Retrieves all stacklets. */ - get_stacklets: { - responses: { - 200: { - content: { - "application/json": components["schemas"]["Stacklet"][]; - }; - }; - }; - }; -} diff --git a/web/src/api/session.ts b/web/src/api/session.ts deleted file mode 100644 index c9f47cf1..00000000 --- a/web/src/api/session.ts +++ /dev/null @@ -1,55 +0,0 @@ -import openapiCreateClient from 'openapi-fetch'; -import { paths } from './schema'; -import { createLocalStorageSignal } from '../utils/localstorage'; -import { None, someIfDefined } from '../types'; -import { createMemo } from 'solid-js'; - -const createClient = (options?: RequestInit) => - openapiCreateClient({ baseUrl: '/api', ...options }); -const [currentSessionToken, setCurrentSessionToken] = - createLocalStorageSignal('sessionToken'); -export const isLoggedIn = () => currentSessionToken().isSome(); -export const client = createMemo(() => { - const headers: HeadersInit = {}; - currentSessionToken().map((sessionToken) => { - headers.Authorization = `Bearer ${sessionToken}`; - }); - return createClient({ headers }); -}); - -// Try to validate that the session token is still valid, and log the user out otherwise -export function validateSessionOrLogOut() { - if (isLoggedIn()) { - client() - .get('/ping', {}) - .then((pingResponse) => { - if (pingResponse.response.status === 401) { - setCurrentSessionToken(None); - } - }) - // We don't want to block page loads on waiting for this validation - // eslint-disable-next-line unicorn/prefer-top-level-await - .catch((error) => - console.error('Failed to validate session token', error), - ); - } -} - -export async function logIn( - username: string, - password: string, -): Promise { - // Always use unauthenticated client for login requests - const response = await createClient().post('/login', { - headers: { Authorization: 'Basic ' + btoa(`${username}:${password}`) }, - }); - setCurrentSessionToken(someIfDefined(response.data?.sessionToken)); - if (!response.response.ok) { - return response.error; - } -} -// We want to leave room in the function contract to invalidate the session token in the future -// eslint-disable-next-line @typescript-eslint/require-await -export async function logOut() { - setCurrentSessionToken(None); -} diff --git a/web/src/api/stacklets.ts b/web/src/api/stacklets.ts deleted file mode 100644 index 39a60216..00000000 --- a/web/src/api/stacklets.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { components } from './schema'; -import { client } from './session'; -import { ObjectMeta } from './meta'; -import { delay } from './mock-utils'; - -export type Stacklet = components['schemas']['Stacklet']; -export type DisplayCondition = components['schemas']['DisplayCondition']; -export async function getStacklets(): Promise { - const { data } = await client().get('/stacklets', {}); - if (data === undefined) { - throw new Error('No data returned by API'); - } else { - return data; - } -} - -export type DiscoveryFieldType = 'url' | 'blob'; -interface StackletDiscovery { - metadata: ObjectMeta; - data: { [x: string]: string }; - fieldTypes: { [x: string]: DiscoveryFieldType }; -} - -export async function getStackletDiscovery( - namespace: string, - discoveryConfigMapName: string, -): Promise { - await delay(200); - if (namespace == 'default' && discoveryConfigMapName == 'simple-nifi') { - return { - metadata: { namespace, name: discoveryConfigMapName }, - data: { NIFI_URL: 'https://foo.com' }, - fieldTypes: { NIFI_URL: 'url' }, - }; - } else if ( - namespace == 'default' && - discoveryConfigMapName == 'simple-hdfs' - ) { - return { - metadata: { namespace, name: discoveryConfigMapName }, - data: { 'hdfs-config.xml': 'config goes here' }, - fieldTypes: {}, - }; - } else { - return undefined; - } -} diff --git a/web/src/components/button.tsx b/web/src/components/button.tsx deleted file mode 100644 index f97c8581..00000000 --- a/web/src/components/button.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import { A } from '@solidjs/router'; -import { JSX } from 'solid-js'; - -/// Special types of buttons that need specific callouts -export type ButtonRole = 'primary'; - -export interface VisualButtonProps { - children: JSX.Element; - role?: ButtonRole; -} - -const buttonProps = (props: VisualButtonProps) => { - const roleClasses = - // buttonProps is only called within a reactive scope - // eslint-disable-next-line solid/reactivity - props.role === 'primary' - ? 'bg-stackable-blue-light hover-bg-stackable-blue-dark active-stackable-blue-dark border-stackable-blue-dark' - : 'bg-gray-700 hover-bg-gray-600 active-bg-gray-500 border-gray-600'; - - return { - class: `p-2 text-size-4 c-white rounded border-1 border-solid cursor-pointer decoration-none ${roleClasses}`, - }; -}; - -export interface ButtonProps extends VisualButtonProps { - onClick: () => void; -} - -export const Button = (props: ButtonProps) => ( - -); - -export interface ButtonLinkProps extends VisualButtonProps { - href: string; -} - -export const ButtonLink = (props: ButtonLinkProps) => ( - - {props.children} - -); diff --git a/web/src/components/datatable.tsx b/web/src/components/datatable.tsx deleted file mode 100644 index b958ac40..00000000 --- a/web/src/components/datatable.tsx +++ /dev/null @@ -1,117 +0,0 @@ -import { For, JSX, Show, createMemo, createSignal } from 'solid-js'; -import { Button } from './button'; -import { SearchInput } from './form/search'; -import { LoadingBar } from './loading'; -import { translate } from '../localization'; - -export interface DataTableColumn { - label: string; - get: (x: T) => JSX.Element; - sortBy?: (x: T) => string; -} - -export interface DataTableProps { - columns: DataTableColumn[]; - items: T[]; - - searchQuery?: string; - setSearchQuery?: (query: string) => void; - - extraButtons?: JSX.Element; - - refresh?: () => void; - isLoading?: boolean; -} - -export function DataTable(props: DataTableProps): JSX.Element { - const [sortComparator, setSortComparator] = createSignal< - ((x: T, y: T) => number) | undefined - >(); - - const sortedItems = createMemo(() => { - const currentSortComparator = sortComparator(); - if (currentSortComparator == undefined) { - return props.items; - } else { - const items = [...props.items]; - items.sort(currentSortComparator); - return items; - } - }); - - const sortByColumn = (event: Event, column: DataTableColumn) => { - event.preventDefault(); - setSortComparator(() => - column.sortBy ? keyComparator(column.sortBy) : undefined, - ); - }; - - return ( -

-
- - props.setSearchQuery?.(q)} - /> - -
- {props.extraButtons} - - - -
- - - - - {(column) => ( - - )} - - - - - - - - - {(item) => ( - - - {(col) => ( - - )} - - - )} - - -
- - sortByColumn(event, column)} - > - {column.label} - - -
-
- -
-
- {col.get(item)} -
-
- ); -} - -const collator = new Intl.Collator(); - -function keyComparator(key: (x: T) => string): (x: T, y: T) => number { - return (x, y) => collator.compare(key(x), key(y)); -} diff --git a/web/src/components/form/search.tsx b/web/src/components/form/search.tsx deleted file mode 100644 index cf2c96e8..00000000 --- a/web/src/components/form/search.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import { SearchSymbol } from '../symbols'; - -interface SearchInputProps { - query: string; - setQuery: (query: string) => void; -} -export const SearchInput = (props: SearchInputProps) => { - return ( - - ); -}; diff --git a/web/src/components/header.tsx b/web/src/components/header.tsx deleted file mode 100644 index 50c8b839..00000000 --- a/web/src/components/header.tsx +++ /dev/null @@ -1,70 +0,0 @@ -import { A } from '@solidjs/router'; -import { ParentProps, Show } from 'solid-js'; -import logo from '../resources/logo.png'; -import { logOut } from '../api/session'; -import { translate } from '../localization'; -import { LanguagePicker } from './language'; - -interface NavItemProps { - href?: string; - onClick?: () => void; -} - -const NavItem = (props: ParentProps) => { - const linkClass = - 'p-4 b-0 cursor-pointer c-white flex flex-items-center h-full decoration-none bg-gray-900'; - const inactiveClass = 'bg-opacity-30 hover:bg-opacity-50'; - - return ( -
  • - { - event.preventDefault(); - props.onClick?.(); - }} - > - {props.children} - - } - > - props.onClick?.()} - > - {props.children} - - -
  • - ); -}; - -export const Header = () => { - return ( - - ); -}; diff --git a/web/src/components/language.tsx b/web/src/components/language.tsx deleted file mode 100644 index 5c63e2eb..00000000 --- a/web/src/components/language.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import { For } from 'solid-js'; -import { requireLanguageContext, translate } from '../localization'; -import { Some } from '../types/option'; - -export const LanguagePicker = () => { - const context = requireLanguageContext(); - return ( - - ); -}; diff --git a/web/src/components/loading.tsx b/web/src/components/loading.tsx deleted file mode 100644 index c236eb96..00000000 --- a/web/src/components/loading.tsx +++ /dev/null @@ -1,9 +0,0 @@ -export const LoadingBar = () => ( - - Loading... - - - - - -); diff --git a/web/src/components/symbols.tsx b/web/src/components/symbols.tsx deleted file mode 100644 index 8d5e1e8b..00000000 --- a/web/src/components/symbols.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import { FeatherIconNames, icons as featherIcons } from 'feather-icons'; - -interface FeatherSymbolProps { - icon: FeatherIconNames; -} -const FeatherSymbol = (props: FeatherSymbolProps) => { - const icon = () => featherIcons[props.icon]; - // Icon contents are provided statically by feather, and not influenced by user input - // eslint-disable-next-line solid/no-innerhtml - return ; -}; - -export const SearchSymbol = () => ; -export const AddSymbol = () => ; diff --git a/web/src/components/title.tsx b/web/src/components/title.tsx deleted file mode 100644 index 1bff706d..00000000 --- a/web/src/components/title.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import { createEffect, onCleanup } from 'solid-js'; -import { createMutable } from 'solid-js/store'; - -const originalTitle = document.title; -const titleStack = createMutable([() => originalTitle]); -createEffect(() => { - /* console.debug('Updating title stack', titleStack); */ - document.title = titleStack.map((x) => x()).join(' :: '); -}); - -interface TitleProps { - children: string; -} -export const Title = (props: TitleProps) => { - /* console.debug('Adding to title stack', props.children); */ - const getTitle = () => props.children; - // titleStack is consumed in a reactive context, so this is valid - // eslint-disable-next-line solid/reactivity - titleStack.push(getTitle); - onCleanup(() => { - /* console.debug(`Removing from title stack`, props.children); */ - const stackEntryIndex = titleStack.indexOf(getTitle); - if (stackEntryIndex === -1) { - throw new Error( - `Title stack entry for ${props.children} could not be found`, - ); - } - titleStack.splice(stackEntryIndex, 1); - }); - return <>; -}; diff --git a/web/src/fonts.css b/web/src/fonts.css deleted file mode 100644 index 6b06ead2..00000000 --- a/web/src/fonts.css +++ /dev/null @@ -1,23 +0,0 @@ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-weight: 400; - font-display: swap; - src: url('static/fonts/Inter-Regular.woff2') format('woff2'); -} - -@font-face { - font-family: 'Inter'; - font-style: normal; - font-weight: 500; - font-display: swap; - src: url('static/fonts/Inter-Medium.woff2') format('woff2'); -} - -@font-face { - font-family: 'Inter'; - font-style: normal; - font-weight: 700; - font-display: swap; - src: url('static/fonts/Inter-Bold.woff2') format('woff2'); -} diff --git a/web/src/lib.rs b/web/src/lib.rs deleted file mode 100644 index 55c7e676..00000000 --- a/web/src/lib.rs +++ /dev/null @@ -1,2 +0,0 @@ -pub const INDEX_HTML: &str = include_str!(concat!(env!("OUT_DIR"), "/vite-dist/index.html")); -pub const ASSETS: phf::Map<&str, &[u8]> = include!(concat!(env!("OUT_DIR"), "/vite-asset-map.rs")); diff --git a/web/src/localization/README.md b/web/src/localization/README.md deleted file mode 100644 index f84736ec..00000000 --- a/web/src/localization/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Cockpit Localization - -We use [Fluent](https://projectfluent.org/) to power our translations. - -Each translation is stored as a file in the `locale/` folder, following the naming convention `locale/{langtag}.ftl`, where -`{langtag}` IETF language tag (for example: `en` for "generic english", or `en-US` for "US english"). - -Translation keys are named according using `kebab-case`, with `--` used as the hierarchy separator (for example: -`category--long-key`). diff --git a/web/src/localization/index.tsx b/web/src/localization/index.tsx deleted file mode 100644 index a66dea6b..00000000 --- a/web/src/localization/index.tsx +++ /dev/null @@ -1,106 +0,0 @@ -import { FluentBundle, FluentResource, FluentVariable } from '@fluent/bundle'; -import { mapBundleSync } from '@fluent/sequence'; -import { negotiateLanguages } from '@fluent/langneg'; -import { JSX, createContext, createMemo, useContext } from 'solid-js'; -import { createLocalStorageSignal } from '../utils/localstorage'; -import { Option } from '../types'; - -const fluentTranslationFiles = import.meta.glob('./locale/*.ftl', { - eager: true, - as: 'raw', -}); -const translationBundles = Object.fromEntries( - Object.entries(fluentTranslationFiles).map(([fileName, ftl]) => { - const localeName = fileName.replace( - /^.*\/(.+)\..*$/, - (_, locale: string) => locale, - ); - - const resource = new FluentResource(ftl); - const bundle = new FluentBundle(localeName); - const errors = bundle.addResource(resource); - if (errors.length > 0) { - throw new Error( - `Failed to load translation bundle ${fileName} as ${localeName}`, - { cause: errors[0] }, - ); - } - - return [localeName, bundle]; - }), -); - -const FALLBACK_LOCALE = 'en'; -interface LanguageContext { - activeLocales(): string[]; - setUserLocale(language: Option): void; - availableLocales(): Record; -} -const LanguageContext = createContext(); -export const requireLanguageContext = () => { - const langContext = useContext(LanguageContext); - if (langContext === undefined) { - throw new Error( - 'LanguageContext is required but no LanguageProvider is currently active', - ); - } - return langContext; -}; - -export const LanguageProvider = (props: { children: JSX.Element }) => { - const [userLanguage, setUserLocale] = - createLocalStorageSignal('user.language'); - const activeLocales = createMemo(() => - userLanguage().mapOrElse( - () => - negotiateLanguages( - navigator.languages, - Object.keys(translationBundles), - { - defaultLocale: FALLBACK_LOCALE, - }, - ), - (ul) => [ul, FALLBACK_LOCALE], - ), - ); - return ( - translationBundles, - }} - > - {props.children} - - ); -}; - -export const translate = ( - translatableName: string, - variables?: Record, - options?: { overrideLocales?: string[] }, -) => { - const context = requireLanguageContext(); - const localeChain = options?.overrideLocales ?? context.activeLocales(); - - const bundle = mapBundleSync( - localeChain.map((locale) => translationBundles[locale]), - translatableName, - ); - if (bundle === null) { - console.error( - `No translation found for ${translatableName} (locale chain: ${localeChain.toString()})`, - ); - return `#${translatableName}#`; - } - - const pattern = bundle.getMessage(translatableName)?.value; - if (pattern === undefined || pattern === null) { - throw new Error( - `Translation pattern for ${translatableName} has no value (in bundle ${bundle.locales.toString()})`, - ); - } - - return bundle.formatPattern(pattern, variables); -}; diff --git a/web/src/localization/locale/de.ftl b/web/src/localization/locale/de.ftl deleted file mode 100644 index 3ba1e668..00000000 --- a/web/src/localization/locale/de.ftl +++ /dev/null @@ -1,18 +0,0 @@ -locale-name = Deutsch - -refresh = Aktualisieren - -stacklet--list = Stacklets -stacklet--add = Stacklet hinzufügen - -stacklet--product = Produkt -stacklet--namespace = Namensraum -stacklet--name = Name -stacklet--endpoints = Endpunkte -stacklet--status = Status - -login--log-in = Anmelden -login--log-out = Abmelden -login--username = Nutzername -login--password = Passwort -login--logging-in = Anmelden... diff --git a/web/src/localization/locale/en.ftl b/web/src/localization/locale/en.ftl deleted file mode 100644 index 43f8c504..00000000 --- a/web/src/localization/locale/en.ftl +++ /dev/null @@ -1,18 +0,0 @@ -locale-name = English - -refresh = Refresh - -stacklet--list = Stacklets -stacklet--add = Add Stacklet - -stacklet--product = Product -stacklet--namespace = Namespace -stacklet--name = Name -stacklet--endpoints = Endpoints -stacklet--status = Status - -login--log-in = Log in -login--log-out = Log out -login--username = Username -login--password = Password -login--logging-in = Logging in... diff --git a/web/src/localization/locale/sv.ftl b/web/src/localization/locale/sv.ftl deleted file mode 100644 index 021b8976..00000000 --- a/web/src/localization/locale/sv.ftl +++ /dev/null @@ -1,18 +0,0 @@ -locale-name = Svenska - -refresh = Ladda om - -stacklet--list = Stackletar -stacklet--add = Lägg till Stacklet - -stacklet--product = Produkt -stacklet--namespace = Namnrymd -stacklet--name = Namn -stacklet--endpoints = Endpoints -stacklet--status = Status - -login--log-in = Logga in -login--log-out = Logga ut -login--username = Användarnamn -login--password = Lösenord -login--logging-in = Loggar in... diff --git a/web/src/main.tsx b/web/src/main.tsx deleted file mode 100644 index 05fb70ba..00000000 --- a/web/src/main.tsx +++ /dev/null @@ -1,51 +0,0 @@ -/* eslint-disable @typescript-eslint/naming-convention */ -import '@unocss/reset/sanitize/sanitize.css'; -import 'virtual:uno.css'; -import { render } from 'solid-js/web'; -import { Navigate, Route, Router, Routes } from '@solidjs/router'; -import { Header } from './components/header'; -import { StackletConnectionDetails } from './pages/stacklets/connect'; -import { Stacklets } from './pages/stacklets/list'; -import { LoginPageOr } from './pages/login'; -import { LanguageProvider } from './localization'; -import { attachDevtoolsOverlay } from '@solid-devtools/overlay'; - -attachDevtoolsOverlay(); - -const App = () => { - return ( -
    - -
    -
    - - - - } /> - -
    - -
    - ); -}; - -const root = document.querySelector('#app'); -if (root == undefined) { - throw new Error( - 'Root element not found. Did you forget to add it to your index.html? Or maybe the id attribute got mispelled?', - ); -} else { - render( - () => ( - - - - - - ), - root, - ); -} diff --git a/web/src/pages/login.tsx b/web/src/pages/login.tsx deleted file mode 100644 index 98189dd1..00000000 --- a/web/src/pages/login.tsx +++ /dev/null @@ -1,98 +0,0 @@ -import { - JSX, - Show, - createResource, - createSignal, - createUniqueId, - untrack, -} from 'solid-js'; -import logo from '../resources/logo.png'; -import { isLoggedIn, logIn, validateSessionOrLogOut } from '../api/session'; -import { Button } from '../components/button'; -import { translate } from '../localization'; - -interface LoginPageOrProps { - children: JSX.Element; -} -export const LoginPageOr = (props: LoginPageOrProps) => { - // Validate the session when loading, but there's little to no point re-validating - // when the user has just logged in. - untrack(() => validateSessionOrLogOut()); - return ( - }> - {props.children} - - ); -}; - -export const LoginPage = () => { - const [username, setUsername] = createSignal(''); - const [password, setPassword] = createSignal(''); - const [currentAttempt, setCurrentAttempt] = createSignal( - Promise.resolve(undefined), - ); - // Create attempts imperatively, use createResource to render the results - const [loginMessage] = createResource( - () => currentAttempt(), - (attempt) => attempt, - ); - const clickLogin = () => { - void setCurrentAttempt(() => logIn(username(), password())); - }; - const usernameId = createUniqueId(); - const passwordId = createUniqueId(); - return ( -
    -
    -

    - Stackable -

    -

    {translate('login--log-in')}

    -
    - - setUsername(event.target.value)} - /> - - setPassword(event.target.value)} - /> -
    - -
    {translate('login--logging-in')}
    -
    - -
    {loginMessage()}
    -
    - -
    -
    -
    -
    - ); -}; diff --git a/web/src/pages/stacklets/connect.tsx b/web/src/pages/stacklets/connect.tsx deleted file mode 100644 index 30026d37..00000000 --- a/web/src/pages/stacklets/connect.tsx +++ /dev/null @@ -1,71 +0,0 @@ -import { - For, - Match, - Show, - Switch, - createResource, - createUniqueId, -} from 'solid-js'; -import { DiscoveryFieldType, getStackletDiscovery } from '../../api/stacklets'; -import { Params, useParams } from '@solidjs/router'; - -interface StackletConnectionDetailsParams extends Params { - namespace: string; - name: string; -} - -export const StackletConnectionDetails = () => { - const params = useParams(); - const [discoveryConfig, { refetch }] = createResource(() => - getStackletDiscovery(params.namespace, params.name), - ); - const configParams = () => { - const currentDiscoveryConfig = discoveryConfig(); - const data = currentDiscoveryConfig?.data || {}; - const types = currentDiscoveryConfig?.fieldTypes || {}; - return Object.keys(data) - .sort() - .map((key) => ({ key, value: data[key], type: types[key] || 'blob' })); - }; - return ( - <> - - Loading... -
      - - {(item) => ( -
    • - -
    • - )} -
      -
    - - ); -}; - -interface FieldProps { - label: string; - value: string; - type: DiscoveryFieldType; -} - -const Field = (props: FieldProps) => { - const dataFieldId = createUniqueId(); - return ( - - - {props.label} - - {/* Fall back to rendering as blob if unknown */} - - - - - - ); -}; diff --git a/web/src/pages/stacklets/list.module.css b/web/src/pages/stacklets/list.module.css deleted file mode 100644 index b37c87af..00000000 --- a/web/src/pages/stacklets/list.module.css +++ /dev/null @@ -1,6 +0,0 @@ -.inline-list-item { - display: inline; -} -.inline-list-item:not(:last-child)::after { - content: ', '; -} diff --git a/web/src/pages/stacklets/list.tsx b/web/src/pages/stacklets/list.tsx deleted file mode 100644 index 243f17f0..00000000 --- a/web/src/pages/stacklets/list.tsx +++ /dev/null @@ -1,109 +0,0 @@ -import { For, Show, createResource } from 'solid-js'; -import { DisplayCondition, getStacklets } from '../../api/stacklets'; -import { DataTable } from '../../components/datatable'; -import styles from './list.module.css'; -import { translate } from '../../localization'; - -export const Stacklets = () => { - const [stacklets, { refetch }] = createResource(getStacklets); - return ( - <> - x.product, - sortBy: (x) => x.product, - }, - { - label: translate('stacklet--namespace'), - get: (x) => x.namespace || '(Cluster-scoped)', - sortBy: (x) => x.namespace || '', - }, - { - label: translate('stacklet--name'), - get: (x) => x.name, - sortBy: (x) => x.name, - }, - { - label: translate('stacklet--endpoints'), - get: (x) => , - }, - { - label: translate('stacklet--status'), - get: (x) => , - }, - /* { - label: 'Actions', - get: (x) => ( - - Connect - - ), - }, */ - ]} - extraButtons={ - <> - {/* - {translate('stacklet--add')} - */} - - } - refresh={refetch} - isLoading={stacklets.loading} - /> - - ); -}; - -const StackletConditions = (props: { conditions: DisplayCondition[] }) => ( -
      - - {(cond) => ( -
    • - -
    • - )} -
      -
    -); - -const StackletCondition = (props: { condition: DisplayCondition }) => ( - - {props.condition.condition} - -); - -const StackletEndpoints = (props: { - endpoints: { [key: string]: string | undefined }; -}) => ( -
      - - {(item) => ( -
    • - - {item[0]}: {item[1]} - - } - > - - {item[0]} - - -
    • - )} -
      -
    -); diff --git a/web/src/resources/logo.png b/web/src/resources/logo.png deleted file mode 100644 index 49c633b1fef41a2391134b3459e184939e9e3a29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6125 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 { - /** - * Returns true if the option is a `Some` value. - * - * @returns boolean - */ - isSome(): this is Some; - - /** - * Returns true if the option is a `Some` and the value inside of it matches - * a predicate. - * - * @param fn Predicate to match - * @returns boolean - */ - isSomeAnd(fn: (value: Readonly) => boolean): this is Some; - - /** - * Returns true if the option is a `None` value. - * - * @returns boolean - */ - isNone(): this is None; - - match(matcher: { some: (value: Readonly) => T; none: () => T }): T; - - /** - * Maps an `Option` to `Option` by applying a function to a contained - * value (if `Some`) or returns `None` (if `None`). - * - * @param fn Mapping function. - * @returns The mapped option. - */ - map(fn: (value: Readonly) => T): Option; - - /** - * Returns the provided default result (if none), or applies a function to - * the contained value (if any). - * - * @param defaultValue The default value if `None`. - * @param fn The mapping function. - */ - mapOr(defaultValue: T, fn: (value: Readonly) => T): T; - - /** - * Computes a default function result (if none), or applies a different - * function to the contained value (if any). - * - * @param defaultFn Closure computing the default value if `None`. - * @param fn The mapping function. - */ - mapOrElse(defaultFn: () => T, fn: (value: Readonly) => T): T; - - /** - * Transforms the `Option` into a `Result`, mapping `Some(v)` to - * `Ok(v)` and `None` to `Err(err)`. - * - * @param error The error value if `None`. - * @returns The transformed result. - */ - okOr(error: E): Result; - - /** - * Transforms the `Option` into a `Result`, mapping `Some(v)` to - * `Ok(v)` and `None` to `Err(err())`. - * - * @param err Closure to compute the error value if `None`. - * @returns The transformed result. - */ - okOrElse(err: () => E): Result; - - /** - * Returns `None` if the option is `None`, otherwise returns `other`. - * - * @param other The other option if `Some`. - * @returns Either `None` or the `other` option. - */ - and(other: Option): Option; - - /** - * Returns `None` if the option is `None`, otherwise calls `fn` with the - * wrapped value and returns the result. - * - * @param fn The function which produces the other option if `Some`. - * @returns Either `None` or the computed other option. - */ - andThen(fn: (value: Readonly) => Option): Option; - - /** - * Returns `None` if the option is `None`, otherwise calls `predicate` with - * the wrapped value and returns: - * - * - `Some(t)` if predicate returns true (where t is the wrapped value), and - * - `None` if predicate returns false. - * - * @param predicate The filter function. - * @returns `Some` if the filter function returned true, otherwise `None`. - */ - filter(predicate: (value: Readonly) => boolean): Option; - - /** - * Returns the option if it contains a value, otherwise returns `other`. - * - * @param other The `other` option if `None`. - * @returns Either this or `other`. - */ - or(other: Option): Option; - - /** - * Returns the option if it contains a value, otherwise calls `fn` and returns - * the result. - * - * @param fn Function to compute the other option. - * @returns Either this or the other computed option. - */ - orElse(fn: () => Option): Option; - - /** - * Returns `Some` if exactly one of self, `other` is `Some`, otherwise returns - * `None`. - * - * @param other The other option. - */ - xor(other: Option): Option; - - /** - * Returns true if the option is a `Some` value containing the given `value`. - * - * @param value The value to match `Some(value)`. - * @returns boolean - */ - contains(value: S): boolean; - - /** - * Zips `self` with another `Option`. - * - * If `self` is `Some(s)` and other is `Some(o)`, this method returns - * `Some([s, o])`. Otherwise, `None` is returned. - * - * @param other The other option to zip with. - * @returns The zipped option or `None`. - */ - zip(other: Option): Option<[S, T]>; - - /** - * Zips `self` and another `Option` with function `fn`. - * - * If `self` is `Some(s)` and other is `Some(o)`, this method returns - * `Some(fn(s, o))`. Otherwise, `None` is returned. - * - * @param other The other option to zip with. - * @param fn Function which get's applied to the zipped values. - * @returns The zipped and transformed option or `None`. - */ - zipWith(other: Option, fn: (self: S, other: T) => K): Option; - - /** - * Returns the contained `Some` value. - * - * Because this function may throw, its use is generally discouraged. Instead, - * prefer to use pattern matching and handle the `None` case explicitly, or - * call `unwrap_or` or `unwrap_or_else`. - * - * @returns The contained `Some` value. - * - * @throws Throws if the self value equals `None`. - */ - unwrap(): S; - - /** - * Returns the contained `Some` value or a provided default. - * - * @param defaultValue Default value returned when `None`. - * @returns Either contained `Some` value of `defaultValue`. - */ - unwrapOr(defaultValue: T): S | T; - - /** - * Returns the contained `Some` value or computes it from a closure. - * - * @param fn Closure to compute default value. - */ - unwrapOrElse(fn: () => T): S | T; - - /** - * Returns the contained Some value - * - * ### Recommended Message Style - * - * We recommend that `expect` messages are used to describe the reason you - * expect the `Option` should be `Some`. - * - * **Hint:** If you’re having trouble remembering how to phrase expect error - * messages remember to focus on the word “should” as in “env variable should - * be set by blah” or “the given binary should be available and executable by - * the current user”. - * - * @param message Error message. - * @returns The contained `Some` value. - * - * @throws Throws if the value is a `None` with a custom panic message - * provided by `msg`. - */ - expect(message: string): S; -} - -class NoneImpl implements BaseOption { - isSome(): this is Some { - return false; - } - - isSomeAnd(_fn: (value: never) => boolean): this is Some { - return false; - } - - isNone(): this is None { - return true; - } - - match(matcher: { none: () => T }): T { - return matcher.none(); - } - - map(_fn: (value: never) => T): None { - return None; - } - - mapOr(defaultValue: T, _fn: (value: never) => T): T { - return defaultValue; - } - - mapOrElse(defaultFn: () => T, _fn: (value: never) => T): T { - return defaultFn(); - } - - okOr(error: E): Result { - return Err(error); - } - - okOrElse(err: () => E): Result { - return Err(err()); - } - - and(_other: Option): None { - return None; - } - - andThen(_fn: (value: never) => Option): None { - return None; - } - - filter(_predicate: (value: never) => boolean): None { - return None; - } - - or(other: Option): Option { - return other; - } - - orElse(fn: () => Option): Option { - return fn(); - } - - xor(other: Option): Option { - return other.isSome() ? other : None; - } - - contains(_value: never): false { - return false; - } - - zip(_other: Option): None { - return None; - } - - zipWith(_other: Option, _fn: (self: never, other: T) => K): None { - return None; - } - - unwrap(): never { - return this.expect('called `Option::unwrap()` on a `None` value'); - } - - unwrapOr(defaultValue: T): T { - return defaultValue; - } - - unwrapOrElse(fn: () => T): T { - return fn(); - } - - expect(message: string): never { - throw new Error(message); - } -} - -export const None = new NoneImpl(); -export type None = NoneImpl; -Object.freeze(None); - -class SomeImpl implements BaseOption { - constructor(public value: S) {} - - isSome(): this is Some { - return true; - } - - isSomeAnd(op: (value: Readonly) => boolean): this is Some { - return op(this.value); - } - - isNone(): this is None { - return false; - } - - match(matcher: { some: (value: Readonly) => T }): T { - // See - // - https://github.com/sindresorhus/eslint-plugin-unicorn/issues/1947 - // - https://github.com/sindresorhus/eslint-plugin-unicorn/issues/1946 - // - https://github.com/sindresorhus/eslint-plugin-unicorn/issues/1940 - - // eslint-disable-next-line unicorn/no-array-callback-reference - return matcher.some(this.value); - } - - map(fn: (value: Readonly) => T): Some { - return Some(fn(this.value)); - } - - mapOr(_defaultValue: T, fn: (value: Readonly) => T): T { - return fn(this.value); - } - - mapOrElse(_defaultFn: () => T, fn: (value: Readonly) => T): T { - return fn(this.value); - } - - okOr(_error: E): Result { - return Ok(this.value); - } - - okOrElse(_err: () => E): Result { - return Ok(this.value); - } - - and(other: Option): typeof other { - return other; - } - - andThen(fn: (value: Readonly) => Option): Option { - return fn(this.value); - } - - filter(predicate: (value: Readonly) => boolean): Option { - return predicate(this.value) ? this : None; - } - - or(_other: Option): Some { - return this; - } - - orElse(_fn: () => Option): Some { - return this; - } - - xor(other: Option): Option { - return other.isNone() ? this : None; - } - - contains(value: S): boolean { - return this.value === value; - } - - zip(other: Option): Option<[S, T]> { - return other.map((otherValue) => [this.value, otherValue]); - } - - zipWith(other: Option, fn: (self: S, other: T) => K): Option { - return other.map((otherValue) => fn(this.value, otherValue)); - } - - unwrap(): S { - return this.value; - } - - unwrapOr(_defaultValue: T): S { - return this.value; - } - - unwrapOrElse(_fn: () => T): S { - return this.value; - } - - expect(_message: string): S { - return this.value; - } -} - -export const Some = (value: T) => new SomeImpl(value); -export type Some = SomeImpl; - -export type Option = Some | None; - -export function someIfDefined(value: T | undefined): Option { - return value === undefined ? None : Some(value); -} -export function someIfNotNull(value: T | null): Option { - return value === null ? None : Some(value); -} diff --git a/web/src/types/result.ts b/web/src/types/result.ts deleted file mode 100644 index 5cbd4083..00000000 --- a/web/src/types/result.ts +++ /dev/null @@ -1,330 +0,0 @@ -import { None, Option, Some } from './option'; -import { ToString } from './utils'; - -interface BaseResult { - /** - * Returns true if the result is `Ok`. - * - * @returns boolean - */ - isOk(): this is Ok; - - /** - * Returns `true` if the result is `Ok` and the value inside of it matches - * a predicate. - * - * @param fn Predicate to match. - * @returns boolean - */ - isOkAnd(fn: (value: Readonly) => boolean): this is Ok; - - /** - * Returns `true` if the result is `Err`. - * - * @returns boolean - */ - isErr(): this is Err; - - /** - * Returns `true` if the result is `Err` and the value inside of it matches - * a predicate. - * - * @param fn Predicate to match. - * @returns boolean - */ - isErrAnd(fn: (error: Readonly) => boolean): this is Err; - - match(matcher: { - ok: (value: Readonly) => T; - err: (error: Readonly) => K; - }): T | K; - - /** - * Returns the contained `Ok` value. - * - * Because this function may throw, its use is generally discouraged. Instead, - * prefer to use pattern matching and handle the `Err` case explicitly, or - * call `unwrap_or` or `unwrap_or_else`. - * - * @returns The contained `Ok` value. - * - * @throws Throws if the value is an `Err`, with a panic message provided by - * the `Err`'s value. - */ - unwrap(): O; - - /** - * Returns the contained `Err` value. - * - * @returns The contained `Err` value. - * - * @throws Throws if the value is an `Ok`, with a custom panic message - * provided by the `Ok`'s value. - */ - unwrapErr(): E; - - /** - * Returns the contained `Ok` value or a provided default. - * - * @param defaultValue The default value if `Err`. - * @returns Either contained `Ok` value of default value. - */ - unwrapOr(defaultValue: O): O; - - /** - * Returns the contained `Ok` value or computes it from a closure. - * - * @param fn Computed the default value if `Err`. - * @returns The contained `Ok` value or computed default value. - */ - unwrapOrElse(fn: (error: Readonly) => O): O; - - /** - * Converts from `Result` to `Option`. Converts self into an - * `Option` and discarding the error, if any. - * - * @returns The converted option. - */ - ok(): Option; - - /** - * Converts from `Result` to `Option`. Converts self into an - * `Option` and discarding the success value, if any. - * - * @returns The converted option. - */ - err(): Option; - - /** - * Maps a `Result` to `Result` by applying a function to a - * contained `Ok` value, leaving an `Err` value untouched. - * - * This function can be used to compose the results of two functions. - * - * @param fn The mapping function. - * @returns The mapped result. - */ - map(fn: (value: Readonly) => T): Result; - - /** - * Returns the provided default (if `Err`), or applies a function to the - * contained value (if `Ok`). - * - * @param defaultValue The default value of `Err`. - * @param fn The mapping function if `Ok`. - * @returns The mapped result. - */ - mapOr(defaultValue: T, fn: (value: Readonly) => T): T; - - /** - * Maps a `Result` to `T` by applying fallback function default to a - * contained `Err` value, or function `fn` to a contained `Ok` value. - * - * This function can be used to unpack a successful result while handling - * an error. - * - * @param defaultFn Function computing the default value if `Err`. - * @param fn Mapping function if `Ok`. - * @returns The mapped value. - */ - mapOrElse( - defaultFn: (error: Readonly) => T, - fn: (value: Readonly) => T, - ): T; - - /** - * Maps a `Result` to `Result` by applying a function to a - * contained `Err` value, leaving an `Ok` value untouched. - * - * This function can be used to pass through a successful result while - * handling an error. - * - * @param fn Error mapping function. - * @returns The mapped result. - */ - mapErr(fn: (error: Readonly) => T): Result; - - /** - * Returns the contained `Ok` value. - * - * Because this function may throw, its use is generally discouraged. Instead, - * prefer to use pattern matching and handle the `Err` case explicitly, or - * call `unwrap_or` or `unwrap_or_else`. - * - * @param message Error message. - * @returns The contained `Ok` value. - * - * @throws Throws if the value is an `Err`, with a panic message including the - * passed message, and the content of the `Err`. - */ - expect(message: string): O; - - /** - * Returns the contained `Err` value. - * - * @param message Error message. - * @returns The contained `Err` value. - * - * @throws Throws if the value is an `Ok`, with an error message including the - * passed message, and the content of the `Ok`. - */ - expectErr(message: string): E; -} - -export class OkImpl implements BaseResult { - constructor(public value: O) {} - - isOk(): this is Ok { - return true; - } - - isOkAnd(fn: (value: Readonly) => boolean): this is Ok { - return fn(this.value); - } - - isErr(): this is Err { - return false; - } - - isErrAnd(_fn: (error: Readonly) => boolean): this is Err { - return false; - } - - match(matcher: { ok: (value: Readonly) => T }): T { - return matcher.ok(this.value); - } - - unwrap(): O { - return this.value; - } - - unwrapErr(): never { - return this.expectErr('called `Result.unwrapErr()` on an `Ok` value'); - } - - unwrapOr(_defaultValue: O): O { - return this.value; - } - - unwrapOrElse(_fn: (error: Readonly) => O): O { - return this.value; - } - - ok(): Option { - return Some(this.value); - } - - err(): None { - return None; - } - - map(fn: (value: Readonly) => T): Result { - return Ok(fn(this.value)); - } - - mapOr(_defaultValue: T, fn: (value: Readonly) => T): T { - return fn(this.value); - } - - mapOrElse( - _defaultFn: (error: Readonly) => T, - fn: (value: Readonly) => T, - ): T { - return fn(this.value); - } - - mapErr(_fn: (error: Readonly) => T): Result { - return Ok(this.value); - } - - expect(_message: string): O { - return this.value; - } - - expectErr(message: string): never { - throw new Error(`${message}`); - } -} - -export const Ok = (value: O) => new OkImpl(value); -export type Ok = OkImpl; - -class ErrImpl implements BaseResult { - constructor(public error: E) {} - - isOk(): this is Ok { - return false; - } - - isOkAnd(_fn: (value: never) => boolean): this is Ok { - return false; - } - - isErr(): this is Err { - return true; - } - - isErrAnd(fn: (error: Readonly) => boolean): this is Err { - return fn(this.error); - } - - match(matcher: { err: (error: Readonly) => K }): T | K { - return matcher.err(this.error); - } - - unwrap(): never { - return this.expect('called `Result.unwrap()` on an `Err` value'); - } - - unwrapErr(): E { - return this.error; - } - - unwrapOr(defaultValue: T): T { - return defaultValue; - } - - unwrapOrElse(fn: (error: Readonly) => T): T { - return fn(this.error); - } - - ok(): Option { - return None; - } - - err(): Option { - return Some(this.error); - } - - map(_fn: (value: never) => T): Result { - return Err(this.error); - } - - mapOr(defaultValue: T, _fn: (value: never) => T): T { - return defaultValue; - } - - mapOrElse( - defaultFn: (error: Readonly) => T, - _fn: (value: never) => T, - ): T { - return defaultFn(this.error); - } - - mapErr(fn: (error: Readonly) => T): Result { - return Err(fn(this.error)); - } - - expect(message: string): never { - throw new Error(`${message}`); - } - - expectErr(_message: string): E { - return this.error; - } -} - -export const Err = (error: E) => new ErrImpl(error); -export type Err = ErrImpl; - -export type Result = Ok | Err; diff --git a/web/src/types/utils.ts b/web/src/types/utils.ts deleted file mode 100644 index f2c7bcba..00000000 --- a/web/src/types/utils.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface ToString { - toString(): string; -} diff --git a/web/src/utils/localstorage.ts b/web/src/utils/localstorage.ts deleted file mode 100644 index 5caf05ee..00000000 --- a/web/src/utils/localstorage.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { Signal, createEffect, createRoot, createSignal } from 'solid-js'; -import { Option, someIfNotNull } from '../types'; - -function createStorageSignal( - storage: Storage, - name: string, -): Signal> { - const [value, setValue] = createSignal>( - someIfNotNull(storage.getItem(name)), - ); - // The session writer effect's lifecycle should be tied to that of the signal - createRoot(() => { - createEffect(() => { - value().match({ - none: () => storage.removeItem(name), - some: (currentValue) => storage.setItem(name, currentValue), - }); - }); - }); - return [value, setValue]; -} - -export function createLocalStorageSignal(name: string): Signal> { - return createStorageSignal(localStorage, name); -} diff --git a/web/src/vite-env.d.ts b/web/src/vite-env.d.ts deleted file mode 100644 index 11f02fe2..00000000 --- a/web/src/vite-env.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/web/tests/option.test.ts b/web/tests/option.test.ts deleted file mode 100644 index ca5b925a..00000000 --- a/web/tests/option.test.ts +++ /dev/null @@ -1,241 +0,0 @@ -/* eslint-disable unicorn/prevent-abbreviations */ -import { assert, describe, it } from 'vitest'; -import { Err, None, Ok, Some } from '../src/types'; - -describe('option tests', () => { - it('option isSome', () => { - const option = Some('foo'); - - assert.isTrue(option.isSome()); - assert.isFalse(option.isNone()); - }); - - it('option isSomeAnd', () => { - const option = Some('foo'); - - assert.isTrue(option.isSomeAnd((value) => value.length === 3)); - assert.isFalse(option.isSomeAnd((value) => value.length === 2)); - assert.isFalse(option.isNone()); - }); - - it('option isNone', () => { - const option = None; - - assert.isFalse(option.isSome()); - assert.isTrue(option.isNone()); - }); - - it('option map', () => { - const optionA = Some('foo'); - assert.deepEqual( - optionA.map((value) => value.length), - Some(3), - ); - - const optionB = None; - assert.deepEqual( - optionB.map(() => 3), - None, - ); - }); - - it('option mapOr', () => { - const optionA = Some('foo'); - assert.equal( - optionA.mapOr(2, (value) => value.length), - 3, - ); - - const optionB = None; - assert.equal( - optionB.mapOr(2, () => 3), - 2, - ); - }); - - it('option mapOrElse', () => { - const optionA = Some('foo'); - assert.equal( - optionA.mapOrElse( - () => 2, - (value) => value.length, - ), - 3, - ); - - const optionB = None; - assert.equal( - optionB.mapOrElse( - () => 2, - () => 3, - ), - 2, - ); - }); - - it('option okOr', () => { - const optionA = Some('foo'); - assert.deepEqual(optionA.okOr('Error'), Ok('foo')); - - const optionB = None; - assert.deepEqual(optionB.okOr('Error'), Err('Error')); - }); - - it('option okOrElse', () => { - const optionA = Some('foo'); - assert.deepEqual( - optionA.okOrElse(() => 'Error'), - Ok('foo'), - ); - - const optionB = None; - assert.deepEqual( - optionB.okOrElse(() => 'Error'), - Err('Error'), - ); - }); - - it('option and', () => { - const optionA = Some('foo'); - assert.deepEqual(optionA.and(Some('bar')), Some('bar')); - - const optionB = None; - assert.deepEqual(optionB.and(Some('var')), None); - }); - - it('option andThen', () => { - const optionA = Some('foo'); - assert.deepEqual( - optionA.andThen((value) => Some(value.length)), - Some(3), - ); - - const optionB = Some('foo'); - assert.deepEqual( - optionB.andThen(() => None), - None, - ); - - const optionC = None; - assert.deepEqual( - optionC.andThen(() => Some(3)), - None, - ); - }); - - it('option filter', () => { - const optionA = Some('foo'); - assert.deepEqual( - optionA.filter((value) => value.length === 3), - Some('foo'), - ); - - const optionB = Some('foo'); - assert.deepEqual( - optionB.filter((value) => value.length === 2), - None, - ); - - const optionC = None; - assert.deepEqual( - optionC.filter(() => true), - None, - ); - }); - - it('option or', () => { - const optionA = Some('foo'); - const optionAOr = optionA.or(Some('bar')); - - assert.deepEqual(optionAOr, Some('foo')); - - const optionB = None; - const optionBOr = optionB.or(Some('bar')); - - assert.deepEqual(optionBOr, Some('bar')); - }); - - it('option orElse', () => { - const optionA = Some('foo'); - const optionAOr = optionA.orElse(() => Some('bar')); - - assert.deepEqual(optionAOr, Some('foo')); - - const optionB = None; - const optionBOr = optionB.orElse(() => Some('bar')); - - assert.deepEqual(optionBOr, Some('bar')); - }); - - it('option xor', () => { - const optionA = Some('foo'); - const someA = optionA.xor(None); - const noneA = optionA.xor(Some('bar')); - - assert.deepEqual(someA, Some('foo')); - assert.deepEqual(noneA, None); - - const optionB = None; - const noneB = optionB.xor(None); - const someB = optionB.xor(Some('bar')); - - assert.deepEqual(noneB, None); - assert.deepEqual(someB, Some('bar')); - }); - - it('option contains', () => { - const optionA = Some('foo'); - assert.isTrue(optionA.contains('foo')); - - const optionB = Some('foo'); - assert.isFalse(optionB.contains('bar')); - }); - - it('option zip', () => { - const option = Some('foo'); - const zipped = option.zip(Some(3)); - assert.deepEqual(zipped.unwrap(), ['foo', 3]); - - const zippedNone = option.zip(None); - assert.deepEqual(zippedNone, None); - }); - - it('option zipWith', () => { - const option = Some('foo'); - const zipped = option.zipWith(Some(3), (str, num) => str.repeat(num)); - assert.deepEqual(zipped, Some('foofoofoo')); - - const zippedNone = option.zipWith(None, () => 'bar'); - assert.deepEqual(zippedNone, None); - }); - - it('option unwrap', () => { - const option = Some('foo'); - assert.equal(option.unwrap(), 'foo'); - - const optionNone = None; - assert.throw(() => optionNone.unwrap()); - }); - - it('option unwrapOr', () => { - const optionA = Some('foo'); - assert.equal(optionA.unwrapOr('bar'), 'foo'); - - const optionB = None; - assert.equal(optionB.unwrapOr(3), 3); - }); - - it('option unwrapOrElse', () => { - const optionA = Some('foo'); - assert.equal( - optionA.unwrapOrElse(() => 3), - 'foo', - ); - - const optionB = None; - assert.equal( - optionB.unwrapOrElse(() => 3), - 3, - ); - }); -}); diff --git a/web/tests/result.test.ts b/web/tests/result.test.ts deleted file mode 100644 index ca5ed15f..00000000 --- a/web/tests/result.test.ts +++ /dev/null @@ -1,126 +0,0 @@ -/* eslint-disable unicorn/prevent-abbreviations */ -import { assert, describe, it } from 'vitest'; - -import { Err, None, Ok, Some } from '../src/types'; - -describe('result tests', () => { - it('result isOk', () => { - const result = Ok('foo'); - - assert.equal(result.isOk(), true); - assert.equal(result.isErr(), false); - }); - - it('result isOkAnd', () => { - const result = Ok('foo'); - - assert.equal( - result.isOkAnd((value) => value.length === 3), - true, - ); - assert.equal( - result.isOkAnd((value) => value.length === 2), - false, - ); - }); - - it('result ok', () => { - const result = Ok('foo'); - - assert.deepEqual(result.ok(), Some('foo')); - assert.deepEqual(result.err(), None); - }); - - it('result map', () => { - const result = Ok('foo'); - const mapped = result.map((value) => value.length); - - assert.equal(mapped.unwrap(), 3); - }); - - it('result isErr', () => { - const result = Err('foo'); - - assert.equal(result.isErr(), true); - assert.equal(result.isOk(), false); - }); - - it('result isErrAnd', () => { - const result = Err('foo'); - - assert.equal( - result.isErrAnd((error) => error.length === 3), - true, - ); - assert.equal( - result.isErrAnd((error) => error.length === 2), - false, - ); - }); - - it('result err', () => { - const result = Err('foo'); - - assert.deepEqual(result.err(), Some('foo')); - assert.deepEqual(result.ok(), None); - }); - - it('result map', () => { - const result = Ok('foo'); - const mapped = result.map((value) => value.length); - - assert.isTrue(result.isOk()); - assert.isTrue(mapped.isOk()); - - assert.equal(result.unwrap(), 'foo'); - assert.equal(mapped.unwrap(), 3); - }); - - it('result mapOr', () => { - const resultA = Ok('foo'); - const mappedA = resultA.mapOr(2, (value) => value.length); - - assert.isTrue(resultA.isOk()); - assert.equal(mappedA, 3); - - const resultB = Err('bar'); - const mappedB = resultB.mapOr(2, () => 3); - - assert.isTrue(resultB.isErr()); - assert.equal(mappedB, 2); - }); - - it('result mapOrElse', () => { - const resultA = Ok('foo'); - const mappedA = resultA.mapOrElse( - () => 2, - (value) => value.length, - ); - - assert.isTrue(resultA.isOk()); - assert.equal(mappedA, 3); - - const resultB = Err('bar'); - const mappedB = resultB.mapOrElse( - (err) => err.length, - () => 2, - ); - - assert.isTrue(resultB.isErr()); - assert.equal(mappedB, 3); - }); - - it('result mapErr', () => { - const resultA = Ok('foo'); - assert.deepEqual( - resultA.mapErr(() => 'bar'), - Ok('foo'), - ); - - const resultB = Err('foo'); - assert.deepEqual( - resultB.mapErr((err) => err.length), - Err(3), - ); - }); -}); diff --git a/web/tsconfig.json b/web/tsconfig.json deleted file mode 100644 index d1ee89c9..00000000 --- a/web/tsconfig.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "compilerOptions": { - "target": "ES2020", - "useDefineForClassFields": true, - "module": "ESNext", - "lib": ["ES2022", "DOM", "DOM.Iterable"], - "skipLibCheck": true, - /* Bundler mode */ - "moduleResolution": "bundler", - "allowImportingTsExtensions": true, - "resolveJsonModule": true, - "isolatedModules": true, - "noEmit": true, - /* Linting */ - "strict": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noFallthroughCasesInSwitch": true, - "jsx": "preserve", - "jsxImportSource": "solid-js" - }, - "exclude": ["**/dist/**", "**/node_modules/**"] -} diff --git a/web/uno.config.ts b/web/uno.config.ts deleted file mode 100644 index f214078e..00000000 --- a/web/uno.config.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { defineConfig, presetUno } from 'unocss'; - -export default defineConfig({ - theme: { - colors: { - stackable: { - blue: { - light: '#1880BD', - dark: '#0B689F', - }, - }, - }, - }, - presets: [presetUno()], -}); diff --git a/web/vite.config.ts b/web/vite.config.ts deleted file mode 100644 index 9302e761..00000000 --- a/web/vite.config.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { defineConfig } from 'vite'; -import solidPlugin from 'vite-plugin-solid'; -import UnoCSS from 'unocss/vite'; - -export default defineConfig({ - plugins: [solidPlugin(), UnoCSS()], - server: { - proxy: { - // Forward API requests to stackable-cockpitd - '/api': 'http://127.0.0.1:8000', - }, - }, - css: { - modules: { - localsConvention: 'camelCaseOnly', - }, - }, -}); diff --git a/web/vitest.config.ts b/web/vitest.config.ts deleted file mode 100644 index c7c898dc..00000000 --- a/web/vitest.config.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { defineConfig } from 'vitest/config'; - -export default defineConfig({ - test: { - coverage: { - enabled: true, - provider: 'c8', - reporter: ['html', 'text'], - }, - }, -}); diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index 6b30c1c0..00000000 --- a/yarn.lock +++ /dev/null @@ -1,3931 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@ampproject/remapping@^2.2.0", "@ampproject/remapping@^2.2.1": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" - integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== - dependencies: - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.24" - -"@antfu/install-pkg@^0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@antfu/install-pkg/-/install-pkg-0.1.1.tgz#157bb04f0de8100b9e4c01734db1a6c77e98bbb5" - integrity sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ== - dependencies: - execa "^5.1.1" - find-up "^5.0.0" - -"@antfu/utils@^0.7.7": - version "0.7.8" - resolved "https://registry.yarnpkg.com/@antfu/utils/-/utils-0.7.8.tgz#86cb0974bcab7e64e29b57d6d9021102307257de" - integrity sha512-rWQkqXRESdjXtc+7NRfK9lASQjpXJu1ayp7qi1d23zZorY+wBHVLHHoVcMsEnkqEBWTFqbztO7/QdJFzyEcLTg== - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.2": - version "7.24.2" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae" - integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ== - dependencies: - "@babel/highlight" "^7.24.2" - picocolors "^1.0.0" - -"@babel/compat-data@^7.23.5": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.4.tgz#6f102372e9094f25d908ca0d34fc74c74606059a" - integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ== - -"@babel/core@^7.23.3": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.5.tgz#15ab5b98e101972d171aeef92ac70d8d6718f06a" - integrity sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.24.2" - "@babel/generator" "^7.24.5" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-module-transforms" "^7.24.5" - "@babel/helpers" "^7.24.5" - "@babel/parser" "^7.24.5" - "@babel/template" "^7.24.0" - "@babel/traverse" "^7.24.5" - "@babel/types" "^7.24.5" - convert-source-map "^2.0.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.3" - semver "^6.3.1" - -"@babel/generator@^7.23.6", "@babel/generator@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.5.tgz#e5afc068f932f05616b66713e28d0f04e99daeb3" - integrity sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA== - dependencies: - "@babel/types" "^7.24.5" - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.25" - jsesc "^2.5.1" - -"@babel/helper-compilation-targets@^7.23.6": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" - integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== - dependencies: - "@babel/compat-data" "^7.23.5" - "@babel/helper-validator-option" "^7.23.5" - browserslist "^4.22.2" - lru-cache "^5.1.1" - semver "^6.3.1" - -"@babel/helper-environment-visitor@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" - integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== - -"@babel/helper-function-name@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" - integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== - dependencies: - "@babel/template" "^7.22.15" - "@babel/types" "^7.23.0" - -"@babel/helper-hoist-variables@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" - integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-module-imports@7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" - integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.24.3": - version "7.24.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz#6ac476e6d168c7c23ff3ba3cf4f7841d46ac8128" - integrity sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg== - dependencies: - "@babel/types" "^7.24.0" - -"@babel/helper-module-transforms@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz#ea6c5e33f7b262a0ae762fd5986355c45f54a545" - integrity sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-module-imports" "^7.24.3" - "@babel/helper-simple-access" "^7.24.5" - "@babel/helper-split-export-declaration" "^7.24.5" - "@babel/helper-validator-identifier" "^7.24.5" - -"@babel/helper-plugin-utils@^7.24.0": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz#a924607dd254a65695e5bd209b98b902b3b2f11a" - integrity sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ== - -"@babel/helper-simple-access@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz#50da5b72f58c16b07fbd992810be6049478e85ba" - integrity sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ== - dependencies: - "@babel/types" "^7.24.5" - -"@babel/helper-split-export-declaration@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz#b9a67f06a46b0b339323617c8c6213b9055a78b6" - integrity sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q== - dependencies: - "@babel/types" "^7.24.5" - -"@babel/helper-string-parser@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz#f99c36d3593db9540705d0739a1f10b5e20c696e" - integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ== - -"@babel/helper-validator-identifier@^7.19.1", "@babel/helper-validator-identifier@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz#918b1a7fa23056603506370089bd990d8720db62" - integrity sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA== - -"@babel/helper-validator-option@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" - integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== - -"@babel/helpers@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.5.tgz#fedeb87eeafa62b621160402181ad8585a22a40a" - integrity sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q== - dependencies: - "@babel/template" "^7.24.0" - "@babel/traverse" "^7.24.5" - "@babel/types" "^7.24.5" - -"@babel/highlight@^7.24.2": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.5.tgz#bc0613f98e1dd0720e99b2a9ee3760194a704b6e" - integrity sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw== - dependencies: - "@babel/helper-validator-identifier" "^7.24.5" - chalk "^2.4.2" - js-tokens "^4.0.0" - picocolors "^1.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.24.0", "@babel/parser@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.5.tgz#4a4d5ab4315579e5398a82dcf636ca80c3392790" - integrity sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg== - -"@babel/plugin-syntax-jsx@^7.18.6": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz#3f6ca04b8c841811dbc3c5c5f837934e0d626c10" - integrity sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/template@^7.22.15", "@babel/template@^7.24.0": - version "7.24.0" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.0.tgz#c6a524aa93a4a05d66aaf31654258fae69d87d50" - integrity sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA== - dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/parser" "^7.24.0" - "@babel/types" "^7.24.0" - -"@babel/traverse@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.5.tgz#972aa0bc45f16983bf64aa1f877b2dd0eea7e6f8" - integrity sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA== - dependencies: - "@babel/code-frame" "^7.24.2" - "@babel/generator" "^7.24.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.24.5" - "@babel/parser" "^7.24.5" - "@babel/types" "^7.24.5" - debug "^4.3.1" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.18.6", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.6", "@babel/types@^7.24.0", "@babel/types@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.5.tgz#7661930afc638a5383eb0c4aee59b74f38db84d7" - integrity sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ== - dependencies: - "@babel/helper-string-parser" "^7.24.1" - "@babel/helper-validator-identifier" "^7.24.5" - to-fast-properties "^2.0.0" - -"@bcoe/v8-coverage@^0.2.3": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== - -"@esbuild/android-arm64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622" - integrity sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ== - -"@esbuild/android-arm@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz#fedb265bc3a589c84cc11f810804f234947c3682" - integrity sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw== - -"@esbuild/android-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz#35cf419c4cfc8babe8893d296cd990e9e9f756f2" - integrity sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg== - -"@esbuild/darwin-arm64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz#08172cbeccf95fbc383399a7f39cfbddaeb0d7c1" - integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA== - -"@esbuild/darwin-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz#d70d5790d8bf475556b67d0f8b7c5bdff053d85d" - integrity sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ== - -"@esbuild/freebsd-arm64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz#98755cd12707f93f210e2494d6a4b51b96977f54" - integrity sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw== - -"@esbuild/freebsd-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz#c1eb2bff03915f87c29cece4c1a7fa1f423b066e" - integrity sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ== - -"@esbuild/linux-arm64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz#bad4238bd8f4fc25b5a021280c770ab5fc3a02a0" - integrity sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA== - -"@esbuild/linux-arm@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz#3e617c61f33508a27150ee417543c8ab5acc73b0" - integrity sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg== - -"@esbuild/linux-ia32@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz#699391cccba9aee6019b7f9892eb99219f1570a7" - integrity sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA== - -"@esbuild/linux-loong64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz#e6fccb7aac178dd2ffb9860465ac89d7f23b977d" - integrity sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg== - -"@esbuild/linux-mips64el@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz#eeff3a937de9c2310de30622a957ad1bd9183231" - integrity sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ== - -"@esbuild/linux-ppc64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz#2f7156bde20b01527993e6881435ad79ba9599fb" - integrity sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA== - -"@esbuild/linux-riscv64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz#6628389f210123d8b4743045af8caa7d4ddfc7a6" - integrity sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A== - -"@esbuild/linux-s390x@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz#255e81fb289b101026131858ab99fba63dcf0071" - integrity sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ== - -"@esbuild/linux-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz#c7690b3417af318a9b6f96df3031a8865176d338" - integrity sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w== - -"@esbuild/netbsd-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz#30e8cd8a3dded63975e2df2438ca109601ebe0d1" - integrity sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A== - -"@esbuild/openbsd-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz#7812af31b205055874c8082ea9cf9ab0da6217ae" - integrity sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg== - -"@esbuild/sunos-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz#d5c275c3b4e73c9b0ecd38d1ca62c020f887ab9d" - integrity sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ== - -"@esbuild/win32-arm64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz#73bc7f5a9f8a77805f357fab97f290d0e4820ac9" - integrity sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg== - -"@esbuild/win32-ia32@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz#ec93cbf0ef1085cc12e71e0d661d20569ff42102" - integrity sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g== - -"@esbuild/win32-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d" - integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ== - -"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" - integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== - dependencies: - eslint-visitor-keys "^3.3.0" - -"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": - version "4.10.0" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" - integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== - -"@eslint/eslintrc@^2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" - integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.6.0" - globals "^13.19.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" - -"@eslint/js@8.57.0": - version "8.57.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" - integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== - -"@fastify/busboy@^2.0.0": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.1.1.tgz#b9da6a878a371829a0502c9b6c1c143ef6663f4d" - integrity sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA== - -"@fluent/bundle@^0.18.0": - version "0.18.0" - resolved "https://registry.yarnpkg.com/@fluent/bundle/-/bundle-0.18.0.tgz#bf67e306719a33baf3b66c88af5ac427d7800dbd" - integrity sha512-8Wfwu9q8F9g2FNnv82g6Ch/E1AW1wwljsUOolH5NEtdJdv0sZTuWvfCM7c3teB9dzNaJA8rn4khpidpozHWYEA== - -"@fluent/langneg@^0.7.0": - version "0.7.0" - resolved "https://registry.yarnpkg.com/@fluent/langneg/-/langneg-0.7.0.tgz#51c58d0b422595640195d8234c0f15687cfcb261" - integrity sha512-StAM0vgsD1QK+nFikaKs9Rxe3JGNipiXrpmemNGwM4gWERBXPe9gjzsBoKjgBgq1Vyiy+xy/C652QIWY+MPyYw== - -"@fluent/sequence@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@fluent/sequence/-/sequence-0.8.0.tgz#dd3da353a0635f1efa5f27e6d4fc59e01f162372" - integrity sha512-eV5QlEEVV/wR3AFQLXO67x4yPRPQXyqke0c8yucyMSeW36B3ecZyVFlY1UprzrfFV8iPJB4TAehDy/dLGbvQ1Q== - -"@humanwhocodes/config-array@^0.11.14": - version "0.11.14" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" - integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== - dependencies: - "@humanwhocodes/object-schema" "^2.0.2" - debug "^4.3.1" - minimatch "^3.0.5" - -"@humanwhocodes/module-importer@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" - integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== - -"@humanwhocodes/object-schema@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" - integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== - -"@iconify/types@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@iconify/types/-/types-2.0.0.tgz#ab0e9ea681d6c8a1214f30cd741fe3a20cc57f57" - integrity sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg== - -"@iconify/utils@^2.1.5": - version "2.1.23" - resolved "https://registry.yarnpkg.com/@iconify/utils/-/utils-2.1.23.tgz#1cde237dd5142a66d9fbd065b2fa7acc4f80f862" - integrity sha512-YGNbHKM5tyDvdWZ92y2mIkrfvm5Fvhe6WJSkWu7vvOFhMtYDP0casZpoRz0XEHZCrYsR4stdGT3cZ52yp5qZdQ== - dependencies: - "@antfu/install-pkg" "^0.1.1" - "@antfu/utils" "^0.7.7" - "@iconify/types" "^2.0.0" - debug "^4.3.4" - kolorist "^1.8.0" - local-pkg "^0.5.0" - mlly "^1.6.1" - -"@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" - integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== - -"@jridgewell/gen-mapping@^0.3.5": - version "0.3.5" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" - integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== - dependencies: - "@jridgewell/set-array" "^1.2.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.24" - -"@jridgewell/resolve-uri@^3.1.0": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" - integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== - -"@jridgewell/set-array@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" - integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== - -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15": - version "1.4.15" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" - integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== - -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": - version "0.3.25" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" - integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== - dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@nothing-but/utils@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@nothing-but/utils/-/utils-0.3.2.tgz#516a993bc9a4bd6367aa263d0895954c974cf3d0" - integrity sha512-y7ynAt3lVjvXF7+xVVezGnq4pJliX/ducCa9/AV6iB03M1JUcV0iq/9qK6h+4ieFPXhTAX2a/VuBNgksjnUQZw== - -"@polka/url@^1.0.0-next.24": - version "1.0.0-next.25" - resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.25.tgz#f077fdc0b5d0078d30893396ff4827a13f99e817" - integrity sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ== - -"@rollup/pluginutils@^5.0.2": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.1.0.tgz#7e53eddc8c7f483a4ad0b94afb1f7f5fd3c771e0" - integrity sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g== - dependencies: - "@types/estree" "^1.0.0" - estree-walker "^2.0.2" - picomatch "^2.3.1" - -"@solid-devtools/debugger@^0.22.4": - version "0.22.4" - resolved "https://registry.yarnpkg.com/@solid-devtools/debugger/-/debugger-0.22.4.tgz#68fd0e1e4fe6738c4782ea8c58150c0c49543d5a" - integrity sha512-rrKZB1hbteOpptH4AiK9nKT3oLoJDAU1UJnfZJB4zIvvmqZXQcpsEYfXvJjDBIYHONeuTJ3K2tpgLjGb7h7H6g== - dependencies: - "@nothing-but/utils" "^0.3.2" - "@solid-devtools/shared" "^0.12.3" - "@solid-primitives/bounds" "^0.0.114" - "@solid-primitives/cursor" "^0.0.111" - "@solid-primitives/event-bus" "^1.0.7" - "@solid-primitives/event-listener" "^2.2.13" - "@solid-primitives/keyboard" "^1.2.3" - "@solid-primitives/platform" "^0.0.105" - "@solid-primitives/rootless" "^1.4.1" - "@solid-primitives/scheduled" "^1.4.0" - "@solid-primitives/static-store" "^0.0.4" - "@solid-primitives/utils" "^6.2.0" - -"@solid-devtools/frontend@^0.10.3": - version "0.10.3" - resolved "https://registry.yarnpkg.com/@solid-devtools/frontend/-/frontend-0.10.3.tgz#4d600fb370778030755c4541f91245258011ef44" - integrity sha512-mbz+4pJcVDZvz4YKKFpAyUyFQx49DCdgvcs5b5kkJxhzVeCBN/JbxsThBIWfDE603VD0A7wjjzTDeAxrNRTrBQ== - dependencies: - "@solid-devtools/debugger" "^0.22.4" - "@solid-devtools/shared" "^0.12.3" - "@solid-primitives/context" "^0.2.1" - "@solid-primitives/cursor" "^0.0.111" - "@solid-primitives/date" "^2.0.15" - "@solid-primitives/event-bus" "^1.0.7" - "@solid-primitives/event-listener" "^2.2.13" - "@solid-primitives/jsx-tokenizer" "^1.0.6" - "@solid-primitives/keyboard" "^1.2.3" - "@solid-primitives/keyed" "^1.2.0" - "@solid-primitives/media" "^2.2.3" - "@solid-primitives/mouse" "^2.0.14" - "@solid-primitives/props" "^3.1.6" - "@solid-primitives/range" "^0.1.14" - "@solid-primitives/resize-observer" "^2.0.18" - "@solid-primitives/scheduled" "^1.4.0" - "@solid-primitives/static-store" "^0.0.4" - "@solid-primitives/styles" "^0.0.110" - "@solid-primitives/timer" "^1.3.7" - "@solid-primitives/utils" "^6.2.0" - clsx "^2.0.0" - solid-headless "^0.13.1" - -"@solid-devtools/overlay@^0.27.7": - version "0.27.9" - resolved "https://registry.yarnpkg.com/@solid-devtools/overlay/-/overlay-0.27.9.tgz#fdb60eff6bcbceeb2d25adba3e4e22df846f0cb5" - integrity sha512-kUQmTGzb+ISIaSB8eknbvUE4834ruUyHbtYpb5JJUfN4gsSdwr4q//kPEuLEoA4tZfMJp9VGjP6GuA+s3kHEqg== - dependencies: - "@solid-devtools/debugger" "^0.22.4" - "@solid-devtools/frontend" "^0.10.3" - "@solid-devtools/shared" "^0.12.3" - "@solid-primitives/cursor" "^0.0.111" - "@solid-primitives/event-listener" "^2.2.13" - "@solid-primitives/media" "^2.2.3" - "@solid-primitives/utils" "^6.2.0" - -"@solid-devtools/shared@^0.12.3": - version "0.12.3" - resolved "https://registry.yarnpkg.com/@solid-devtools/shared/-/shared-0.12.3.tgz#ccd10dcae9e8be7997c74e118c55c52b6bc0517a" - integrity sha512-GBPyj+S4lZmVO5WK73/FP1l1lHYoeDwqbSV2M15l5LSAtaG68HBE6smmMQI7G12XShfs8soM+PXwlx8YZ9ElIw== - dependencies: - "@solid-primitives/event-bus" "^1.0.7" - "@solid-primitives/event-listener" "^2.2.13" - "@solid-primitives/media" "^2.2.3" - "@solid-primitives/refs" "^1.0.4" - "@solid-primitives/rootless" "^1.4.1" - "@solid-primitives/scheduled" "^1.4.0" - "@solid-primitives/static-store" "^0.0.4" - "@solid-primitives/styles" "^0.0.110" - "@solid-primitives/utils" "^6.2.0" - -"@solid-primitives/bounds@^0.0.114": - version "0.0.114" - resolved "https://registry.yarnpkg.com/@solid-primitives/bounds/-/bounds-0.0.114.tgz#80e44d96fc50fbf75db630cee4512be0a9aee6c5" - integrity sha512-PS+PObcgzhoaY05ets7u+9/5vW+5MFcQxwaS18N9ZpxYh8dPkk8vYgJkUegz5t4jIeZrNwowI6xGBpdAQWMPqg== - dependencies: - "@solid-primitives/event-listener" "^2.2.13" - "@solid-primitives/resize-observer" "^2.0.18" - "@solid-primitives/static-store" "^0.0.4" - "@solid-primitives/utils" "^6.2.0" - -"@solid-primitives/context@^0.2.1": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@solid-primitives/context/-/context-0.2.3.tgz#3514620a973ea0703e06db34d5a32709442941ee" - integrity sha512-6/e8qu9qJf48FJ+sxc/B782NdgFw5TvI8+r6U0gHizumfZcWZg8FAJqvRZAiwlygkUNiTQOGTeO10LVbMm0kvg== - -"@solid-primitives/cursor@^0.0.111": - version "0.0.111" - resolved "https://registry.yarnpkg.com/@solid-primitives/cursor/-/cursor-0.0.111.tgz#6fdb9fa8dd13f2797f88ef08abf3354185cb974d" - integrity sha512-P/KqyIdi//VSiE+7uEkbYpO4lubnFBxd40FrNzjZ7iJcxb2woyAsvzKV6pHLIznxRRrAM7bnUsj20e3qbw5TCQ== - dependencies: - "@solid-primitives/utils" "^6.2.0" - -"@solid-primitives/date@^2.0.15": - version "2.0.21" - resolved "https://registry.yarnpkg.com/@solid-primitives/date/-/date-2.0.21.tgz#a75826b428febd4f9521fada26cc1bac444761e9" - integrity sha512-DZSmILY9YZarO0IVRzac8gQ6aMgC9QKzKJEgZnv7cF5K4QdkzhdkYud3HC/pfacZ7x1elopZrS0HbCkQllCrYg== - dependencies: - "@solid-primitives/memo" "^1.3.8" - "@solid-primitives/timer" "^1.3.9" - "@solid-primitives/utils" "^6.2.3" - -"@solid-primitives/event-bus@^1.0.7": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@solid-primitives/event-bus/-/event-bus-1.0.11.tgz#0a4c42d79f588a21c9bf061b6ace1508081d14df" - integrity sha512-bSwVA4aI2aNHomSbEroUnisMSyDDXJbrw4U8kFEvrcYdlLrJX5i6QeCFx+vj/zdQQw62KAllrEIyWP8KMpPVnQ== - dependencies: - "@solid-primitives/utils" "^6.2.3" - -"@solid-primitives/event-listener@^2.2.13", "@solid-primitives/event-listener@^2.3.3": - version "2.3.3" - resolved "https://registry.yarnpkg.com/@solid-primitives/event-listener/-/event-listener-2.3.3.tgz#ab28c8627aa7d6234617867d8b02c80e1b8f0948" - integrity sha512-DAJbl+F0wrFW2xmcV8dKMBhk9QLVLuBSW+TR4JmIfTaObxd13PuL7nqaXnaYKDWOYa6otB00qcCUIGbuIhSUgQ== - dependencies: - "@solid-primitives/utils" "^6.2.3" - -"@solid-primitives/jsx-tokenizer@^1.0.6": - version "1.0.10" - resolved "https://registry.yarnpkg.com/@solid-primitives/jsx-tokenizer/-/jsx-tokenizer-1.0.10.tgz#3ae91d47f8a753c3ca5d818f9d3e8299f5fe3026" - integrity sha512-OziPOhJcVneuEwuC4Ys2atePcBhXZK00h93Tg+dGw5GUijB8hvP97qXZ9Q8oNai0FCInlGUOYQnOgM9piBoSMQ== - dependencies: - "@solid-primitives/utils" "^6.2.3" - -"@solid-primitives/keyboard@^1.2.3": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@solid-primitives/keyboard/-/keyboard-1.2.8.tgz#99a695deede1724e03ce415ebdf5969c174fa398" - integrity sha512-pJtcbkjozS6L1xvTht9rPpyPpX55nAkfBzbFWdf3y0Suwh6qClTibvvObzKOf7uzQ+8aZRDH4LsoGmbTKXtJjQ== - dependencies: - "@solid-primitives/event-listener" "^2.3.3" - "@solid-primitives/rootless" "^1.4.5" - "@solid-primitives/utils" "^6.2.3" - -"@solid-primitives/keyed@^1.2.0": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@solid-primitives/keyed/-/keyed-1.2.2.tgz#42323c11ecfd9f6e4525af2cb53475ff2dfb4d51" - integrity sha512-oBziY40JK4XmJ57XGkFl8j0GtEarSu0hhjdkUQgqL/U0QQE3TZrRo9uhgH7I6VGJKBKG7SAraTPE6S5lVLM1ow== - -"@solid-primitives/media@^2.2.3": - version "2.2.9" - resolved "https://registry.yarnpkg.com/@solid-primitives/media/-/media-2.2.9.tgz#bbe1e30b108cd3ece2e214d529e757702eb4dd34" - integrity sha512-QUmU62D4/d9YWx/4Dvr/UZasIkIpqNXz7wosA5GLmesRW9XlPa3G5M6uOmTw73SByHNTCw0D6x8bSdtvvLgzvQ== - dependencies: - "@solid-primitives/event-listener" "^2.3.3" - "@solid-primitives/rootless" "^1.4.5" - "@solid-primitives/static-store" "^0.0.8" - "@solid-primitives/utils" "^6.2.3" - -"@solid-primitives/memo@^1.3.8": - version "1.3.8" - resolved "https://registry.yarnpkg.com/@solid-primitives/memo/-/memo-1.3.8.tgz#d9359b0fd58b3653ca9fd77c14181f2033a78b5b" - integrity sha512-U75pfLFSxFmM2xbx1+2XPPyWbaXrnUFF10spbFuOUgJ7azrC+4y+FnrVi4RKqHw9gftd8aKQuTiyMQq468YLQw== - dependencies: - "@solid-primitives/scheduled" "^1.4.3" - "@solid-primitives/utils" "^6.2.3" - -"@solid-primitives/mouse@^2.0.14": - version "2.0.19" - resolved "https://registry.yarnpkg.com/@solid-primitives/mouse/-/mouse-2.0.19.tgz#e126939f946df323f526eb2bd889f756b1eb644d" - integrity sha512-mVYhWsMjjIdZ8iLIypiYGhNGtLOFVCmCeXaNQVYUjPOZkZOm9aaKjjGqgdwVw5RtJ0ZfNvKH/A5WE1t/fOBvLA== - dependencies: - "@solid-primitives/event-listener" "^2.3.3" - "@solid-primitives/rootless" "^1.4.5" - "@solid-primitives/static-store" "^0.0.8" - "@solid-primitives/utils" "^6.2.3" - -"@solid-primitives/platform@^0.0.105": - version "0.0.105" - resolved "https://registry.yarnpkg.com/@solid-primitives/platform/-/platform-0.0.105.tgz#d282938c585d2e252b219b33ef1c8c96551a396a" - integrity sha512-GULqmMc5vNsLSsIxIEYYxJv/6ypGKG+ig9hzSi4lxVPfooX6Go6txDlhv53woUSvaG939ceZGRq+X5uADMed6g== - -"@solid-primitives/props@^3.1.6": - version "3.1.11" - resolved "https://registry.yarnpkg.com/@solid-primitives/props/-/props-3.1.11.tgz#bd40c2808ab4e2d4adecbd3ccbad5c3756a72b1c" - integrity sha512-jZAKWwvDRHjiydIumDgMj68qviIbowQ1ci7nkEAgzgvanNkhKSQV8iPgR2jMk1uv7S2ZqXYHslVQTgJel/TEyg== - dependencies: - "@solid-primitives/utils" "^6.2.3" - -"@solid-primitives/range@^0.1.14": - version "0.1.18" - resolved "https://registry.yarnpkg.com/@solid-primitives/range/-/range-0.1.18.tgz#4653887d3c2536650c7a923d1978ceaa51d6cb75" - integrity sha512-F5OTdpRFdeLOPEHs92S714GKUk1ZUUmEJ45Z/Z5h6i43DHi7fUFgUL7LeHFxVgIjtGv+Tg5Op7aM9PdSo5iqeQ== - dependencies: - "@solid-primitives/utils" "^6.2.3" - -"@solid-primitives/refs@^1.0.4": - version "1.0.8" - resolved "https://registry.yarnpkg.com/@solid-primitives/refs/-/refs-1.0.8.tgz#2f8e1db2c08601c8a9cf4479b05f490470aaa3ad" - integrity sha512-+jIsWG8/nYvhaCoG2Vg6CJOLgTmPKFbaCrNQKWfChalgUf9WrVxWw0CdJb3yX15n5lUcQ0jBo6qYtuVVmBLpBw== - dependencies: - "@solid-primitives/utils" "^6.2.3" - -"@solid-primitives/resize-observer@^2.0.18": - version "2.0.25" - resolved "https://registry.yarnpkg.com/@solid-primitives/resize-observer/-/resize-observer-2.0.25.tgz#c97a01193fe9b2c08bc240d096b92888ab44bda0" - integrity sha512-jVDXkt2MiriYRaz4DYs62185d+6jQ+1DCsR+v7f6XMsIJJuf963qdBRFjtZtKXBaxdPNMyuPeDgf5XQe3EoDJg== - dependencies: - "@solid-primitives/event-listener" "^2.3.3" - "@solid-primitives/rootless" "^1.4.5" - "@solid-primitives/static-store" "^0.0.8" - "@solid-primitives/utils" "^6.2.3" - -"@solid-primitives/rootless@^1.4.1", "@solid-primitives/rootless@^1.4.5": - version "1.4.5" - resolved "https://registry.yarnpkg.com/@solid-primitives/rootless/-/rootless-1.4.5.tgz#120244fd5e02d9ea111ed2236fedcef572010be4" - integrity sha512-GFJE9GC3ojx0aUKqAUZmQPyU8fOVMtnVNrkdk2yS4kd17WqVSpXpoTmo9CnOwA+PG7FTzdIkogvfLQSLs4lrww== - dependencies: - "@solid-primitives/utils" "^6.2.3" - -"@solid-primitives/scheduled@^1.4.0", "@solid-primitives/scheduled@^1.4.3": - version "1.4.3" - resolved "https://registry.yarnpkg.com/@solid-primitives/scheduled/-/scheduled-1.4.3.tgz#379443e759c90275f7530c11c9df63ff63c8c9fd" - integrity sha512-HfWN5w7b7FEc6VPLBKnnE302h90jsLMuR28Fcf7neRGGf8jBj6wm6/UFQ00VlKexHFMR6KQ2u4VBh5a1ZcqM8g== - -"@solid-primitives/static-store@^0.0.4": - version "0.0.4" - resolved "https://registry.yarnpkg.com/@solid-primitives/static-store/-/static-store-0.0.4.tgz#90cd12e72bcd68c5a69fd01214e0cfd8f30f805a" - integrity sha512-NcLtDNA6H+Z9LmqaUe4SKfMx0YbszIMXEqfV15cB34t5XyEeOM5TihYwsVJ/dpkmpHYzflm0SwAL+P9uwyzvWQ== - dependencies: - "@solid-primitives/utils" "^6.2.0" - -"@solid-primitives/static-store@^0.0.8": - version "0.0.8" - resolved "https://registry.yarnpkg.com/@solid-primitives/static-store/-/static-store-0.0.8.tgz#a4d7a93a254bf89d3c5c5f27a031d1a46c34f5c5" - integrity sha512-ZecE4BqY0oBk0YG00nzaAWO5Mjcny8Fc06CdbXadH9T9lzq/9GefqcSe/5AtdXqjvY/DtJ5C6CkcjPZO0o/eqg== - dependencies: - "@solid-primitives/utils" "^6.2.3" - -"@solid-primitives/styles@^0.0.110": - version "0.0.110" - resolved "https://registry.yarnpkg.com/@solid-primitives/styles/-/styles-0.0.110.tgz#7457ffdf539a8ccbfc381a4fda81fa31adc429fa" - integrity sha512-PSaM1Rl4+zwpOfxil8KlY87UC+R1rQy8b2EiCMjgTWakRK1TjvFM78KY5/ohFg42bp2V/DWRx2QaL/Unjm3HMg== - dependencies: - "@solid-primitives/rootless" "^1.4.1" - "@solid-primitives/utils" "^6.2.0" - -"@solid-primitives/timer@^1.3.7", "@solid-primitives/timer@^1.3.9": - version "1.3.9" - resolved "https://registry.yarnpkg.com/@solid-primitives/timer/-/timer-1.3.9.tgz#ad42595fbdc045804e681078364ebe56f19729f8" - integrity sha512-uD+4+boV7k+5W+hL5d30eodUXSwOfOQz8AfbMPVmLOHaTmd0mdfpw0NkYhyn1rgcx1bSn/nHTd8lraHiMhO/6w== - -"@solid-primitives/utils@^6.2.0", "@solid-primitives/utils@^6.2.3": - version "6.2.3" - resolved "https://registry.yarnpkg.com/@solid-primitives/utils/-/utils-6.2.3.tgz#1abed4c74a2696e08bd2e49cf2b86fc8b87a32bd" - integrity sha512-CqAwKb2T5Vi72+rhebSsqNZ9o67buYRdEJrIFzRXz3U59QqezuuxPsyzTSVCacwS5Pf109VRsgCJQoxKRoECZQ== - -"@solidjs/router@^0.8.2": - version "0.8.4" - resolved "https://registry.yarnpkg.com/@solidjs/router/-/router-0.8.4.tgz#aa19bee6dc6289807821b2d0dd5cf07a79da6b68" - integrity sha512-Gi/WVoVseGMKS1DBdT3pNAMgOzEOp6Q3dpgNd2mW9GUEnVocPmtyBjDvXwN6m7tjSGsqqfqJFXk7bm1hxabSRw== - -"@types/babel__core@^7.20.4": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" - integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== - dependencies: - "@babel/parser" "^7.20.7" - "@babel/types" "^7.20.7" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.8" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.8.tgz#f836c61f48b1346e7d2b0d93c6dacc5b9535d3ab" - integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f" - integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.5.tgz#7b7502be0aa80cc4ef22978846b983edaafcd4dd" - integrity sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ== - dependencies: - "@babel/types" "^7.20.7" - -"@types/chai-subset@^1.3.3": - version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/chai-subset/-/chai-subset-1.3.5.tgz#3fc044451f26985f45625230a7f22284808b0a9a" - integrity sha512-c2mPnw+xHtXDoHmdtcCXGwyLMiauiAyxWMzhGpqHC4nqI/Y5G2XhTampslK2rb59kpcuHon03UH8W6iYUzw88A== - dependencies: - "@types/chai" "*" - -"@types/chai@*", "@types/chai@^4.3.5": - version "4.3.16" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.16.tgz#b1572967f0b8b60bf3f87fe1d854a5604ea70c82" - integrity sha512-PatH4iOdyh3MyWtmHVFXLWCCIhUbopaltqddG9BzB+gMIzee2MJrvd+jouii9Z3wzQJruGWAm7WOMjgfG8hQlQ== - -"@types/estree@^1.0.0": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" - integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== - -"@types/feather-icons@^4.29.1": - version "4.29.4" - resolved "https://registry.yarnpkg.com/@types/feather-icons/-/feather-icons-4.29.4.tgz#3c1d0bba09278c88dd35f6ae102aeb293aabf4bd" - integrity sha512-cvwI455PWx/gJ33XDTIZOdauRy+XCxZggkOT/tAQYZLdySPFATD4RnDC9mxOnCIEaK9kwPm3zZigkAsMkhXb5w== - -"@types/istanbul-lib-coverage@^2.0.1": - version "2.0.6" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" - integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== - -"@types/json-schema@^7.0.9": - version "7.0.15" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" - integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== - -"@types/node@*": - version "20.12.11" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.11.tgz#c4ef00d3507000d17690643278a60dc55a9dc9be" - integrity sha512-vDg9PZ/zi+Nqp6boSOT7plNuthRugEKixDv5sFTIpkE89MmNtEArAShI4mxuX2+UrLEe9pxC1vm2cjm9YlWbJw== - dependencies: - undici-types "~5.26.4" - -"@types/normalize-package-data@^2.4.0": - version "2.4.4" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#56e2cc26c397c038fab0e3a917a12d5c5909e901" - integrity sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA== - -"@types/semver@^7.3.12": - version "7.5.8" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" - integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== - -"@typescript-eslint/eslint-plugin@^5.59.5": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db" - integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag== - dependencies: - "@eslint-community/regexpp" "^4.4.0" - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/type-utils" "5.62.0" - "@typescript-eslint/utils" "5.62.0" - debug "^4.3.4" - graphemer "^1.4.0" - ignore "^5.2.0" - natural-compare-lite "^1.4.0" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/parser@^5.59.5": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" - integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== - dependencies: - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/typescript-estree" "5.62.0" - debug "^4.3.4" - -"@typescript-eslint/scope-manager@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" - integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - -"@typescript-eslint/type-utils@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz#286f0389c41681376cdad96b309cedd17d70346a" - integrity sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew== - dependencies: - "@typescript-eslint/typescript-estree" "5.62.0" - "@typescript-eslint/utils" "5.62.0" - debug "^4.3.4" - tsutils "^3.21.0" - -"@typescript-eslint/types@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" - integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== - -"@typescript-eslint/typescript-estree@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" - integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/utils@5.62.0", "@typescript-eslint/utils@^5.55.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" - integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@types/json-schema" "^7.0.9" - "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/typescript-estree" "5.62.0" - eslint-scope "^5.1.1" - semver "^7.3.7" - -"@typescript-eslint/visitor-keys@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" - integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== - dependencies: - "@typescript-eslint/types" "5.62.0" - eslint-visitor-keys "^3.3.0" - -"@ungap/structured-clone@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" - integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== - -"@unocss/astro@0.51.13": - version "0.51.13" - resolved "https://registry.yarnpkg.com/@unocss/astro/-/astro-0.51.13.tgz#f5b1e30d9d28d27bb86f6d2fc37c4b8ad6892aba" - integrity sha512-Dul0ZJNwseGBxngBMfghfTsf0quf4HcQcqJuIDzA1T+ueavpwf4QScwbDuS0BqFO4ZiIVSItA7f6eLe31PHUmw== - dependencies: - "@unocss/core" "0.51.13" - "@unocss/reset" "0.51.13" - "@unocss/vite" "0.51.13" - -"@unocss/cli@0.51.13": - version "0.51.13" - resolved "https://registry.yarnpkg.com/@unocss/cli/-/cli-0.51.13.tgz#d29f795848c963d1e798e03fe7cb1194867ab24b" - integrity sha512-g5CmSVyMFIgw/uStVlABldw+EYsrCyGjHd9jQMMTSZbV9IWuM0Tf+ILAZ+B4iXs62ctnrxPYH3Mha6IIuuZXZg== - dependencies: - "@ampproject/remapping" "^2.2.1" - "@rollup/pluginutils" "^5.0.2" - "@unocss/config" "0.51.13" - "@unocss/core" "0.51.13" - "@unocss/preset-uno" "0.51.13" - cac "^6.7.14" - chokidar "^3.5.3" - colorette "^2.0.20" - consola "^3.1.0" - fast-glob "^3.2.12" - magic-string "^0.30.0" - pathe "^1.1.0" - perfect-debounce "^1.0.0" - -"@unocss/config@0.51.13": - version "0.51.13" - resolved "https://registry.yarnpkg.com/@unocss/config/-/config-0.51.13.tgz#1894aae4917dc6af891efb1ddd8d3b35424d51a7" - integrity sha512-EnSLt7Z1C01U3kORh+Iql+zLFm/PQTD1Np6oEW6U0/GTmD3HEilVFQFFxdM5F0X2bBZtZMkkAGGyhRWQj09hDQ== - dependencies: - "@unocss/core" "0.51.13" - unconfig "^0.3.7" - -"@unocss/core@0.51.13": - version "0.51.13" - resolved "https://registry.yarnpkg.com/@unocss/core/-/core-0.51.13.tgz#5c3aaa46d8f0e1bd04bee06b945b5e1dd8fcd108" - integrity sha512-SclWkqY2c+p5+PiqrbQkhJNEExPdeo71/aGFye10tpBkgPJWd5xC7dhg5F8M4VPNBtuNCrvBWyqNnunMyuz/WQ== - -"@unocss/extractor-arbitrary-variants@0.51.13": - version "0.51.13" - resolved "https://registry.yarnpkg.com/@unocss/extractor-arbitrary-variants/-/extractor-arbitrary-variants-0.51.13.tgz#838a692f0d7661f21097299988ae338905f81f07" - integrity sha512-lF7p0ea/MeNf4IsjzNhRNYP8u+f1h5JjhTzcvFpQo/vpBvuM5ZCyqp4mkXxYnLNLFfTLsc+MxXaU34IXxpw1QA== - dependencies: - "@unocss/core" "0.51.13" - -"@unocss/inspector@0.51.13": - version "0.51.13" - resolved "https://registry.yarnpkg.com/@unocss/inspector/-/inspector-0.51.13.tgz#31e6c1c794e1370dcdff38e0d4e9eb57490c3555" - integrity sha512-y6wCvLDmfFHfr5MHqcQLZkwRio4+VEH6j607bgUdKTRlZGVCD7/GBV8lperxsxpkspaE1eykOeDmW7Ms99SEuQ== - dependencies: - gzip-size "^6.0.0" - sirv "^2.0.3" - -"@unocss/postcss@0.51.13": - version "0.51.13" - resolved "https://registry.yarnpkg.com/@unocss/postcss/-/postcss-0.51.13.tgz#e3146cc7b395fe3923fe76e78b0a31056c8104c3" - integrity sha512-V1QJ7md9jYtBwRc6NGep1Atc+QhaR3115B1wCo8CNM+v+ZOQzpxNsAshvOfyPzfzTj+KLtp4u4zqqaTbYGX2cw== - dependencies: - "@unocss/config" "0.51.13" - "@unocss/core" "0.51.13" - css-tree "^2.3.1" - fast-glob "^3.2.12" - magic-string "^0.30.0" - postcss "^8.4.23" - -"@unocss/preset-attributify@0.51.13": - version "0.51.13" - resolved "https://registry.yarnpkg.com/@unocss/preset-attributify/-/preset-attributify-0.51.13.tgz#f5ccb15ec78e145c2980603a67c1a926b346648b" - integrity sha512-a501ylamV90E+tVf7Dgc8Plwex5LQ5oFSYwsxk06QhcxPWdLmDey3SQjL68AsP9qnLGfIez51sV4y/6H8wFqlw== - dependencies: - "@unocss/core" "0.51.13" - -"@unocss/preset-icons@0.51.13": - version "0.51.13" - resolved "https://registry.yarnpkg.com/@unocss/preset-icons/-/preset-icons-0.51.13.tgz#173f2a1d2a0c368e962d2d83fb894c96bcf87ea1" - integrity sha512-iL9s1NUVeWe3WSh5LHn7vy+veCAag9AFA50IfNlHuAARhuI8JtrMQA8dOXrWrzM0zWBMB+BVIkVaMVrF257n+Q== - dependencies: - "@iconify/utils" "^2.1.5" - "@unocss/core" "0.51.13" - ofetch "^1.0.1" - -"@unocss/preset-mini@0.51.13": - version "0.51.13" - resolved "https://registry.yarnpkg.com/@unocss/preset-mini/-/preset-mini-0.51.13.tgz#0d35d7538c1330772b0dd6c60cd4ce0824e52b30" - integrity sha512-Wa6eMq8IiJEb7F8rL+cDX4XFm4ViAULaAvn8rjk7ANGdOmeqYGyGc0IZkOjQgl3PiFJFnitsBluHhg7nMIk7QQ== - dependencies: - "@unocss/core" "0.51.13" - "@unocss/extractor-arbitrary-variants" "0.51.13" - -"@unocss/preset-tagify@0.51.13": - version "0.51.13" - resolved "https://registry.yarnpkg.com/@unocss/preset-tagify/-/preset-tagify-0.51.13.tgz#eeb608d43747bf2c718063c30054cb8c6aa1a406" - integrity sha512-9pWPTff/1OKFmOQiGolVKFPzXwJ+r77UhXTB5E793uOQFHPMWCdkjyTPiN12FlB9izjTLIFH3GCGy/koRX9S4w== - dependencies: - "@unocss/core" "0.51.13" - -"@unocss/preset-typography@0.51.13": - version "0.51.13" - resolved "https://registry.yarnpkg.com/@unocss/preset-typography/-/preset-typography-0.51.13.tgz#7b3f35ea70baae3fbf41f6e69458d45515e8da0a" - integrity sha512-9uXrPztLsc8ZMnmoIdNAC3/gD183wyFECDzXtJqjOrJhzGr1kcv1sByyQO+kRPI67eWErSsDjpJwK2arfDOihQ== - dependencies: - "@unocss/core" "0.51.13" - "@unocss/preset-mini" "0.51.13" - -"@unocss/preset-uno@0.51.13": - version "0.51.13" - resolved "https://registry.yarnpkg.com/@unocss/preset-uno/-/preset-uno-0.51.13.tgz#92db5b03f5d988d5def2182cfb41f91935a0eeb0" - integrity sha512-S9po93y87YphySfW21+Z5uzSL/GAGN5MqZURQxaGk9WGxYugAnu2PnvhhyqLCVmP05J34tMSDMkIZZqjnGaJzg== - dependencies: - "@unocss/core" "0.51.13" - "@unocss/preset-mini" "0.51.13" - "@unocss/preset-wind" "0.51.13" - -"@unocss/preset-web-fonts@0.51.13": - version "0.51.13" - resolved "https://registry.yarnpkg.com/@unocss/preset-web-fonts/-/preset-web-fonts-0.51.13.tgz#d5d4bcc60980d96f7df97b5345e86fb44996087a" - integrity sha512-jl6AhPcnLYN4oKYQZbU/40714IIuNb7TOFh2kgMkDH70r+fzLEdH+cB4l5m0yTsMhEQ6oDsppxm9aXcsVDRESA== - dependencies: - "@unocss/core" "0.51.13" - ofetch "^1.0.1" - -"@unocss/preset-wind@0.51.13": - version "0.51.13" - resolved "https://registry.yarnpkg.com/@unocss/preset-wind/-/preset-wind-0.51.13.tgz#b6bc746f92e7307ef097d1dc9f2eca3f2f3763bc" - integrity sha512-deRXLOWmKmqCJuohWCE5NUzs7XDJLn4pzgYQSUlEAVUfS6rzL49aJmSHA+p/f+HhJs5jipNdvkcrHYEBMNV1XQ== - dependencies: - "@unocss/core" "0.51.13" - "@unocss/preset-mini" "0.51.13" - -"@unocss/reset@0.51.13", "@unocss/reset@^0.51.12": - version "0.51.13" - resolved "https://registry.yarnpkg.com/@unocss/reset/-/reset-0.51.13.tgz#62b704eef8657554ef8f3e1caaee4a4805280a14" - integrity sha512-xwYJW6vNbHIpBtlFcW93fZxILZpWatcCc9nclSgsl0YlFUz9w4/aoV9KqwU62Y4VUteJxCZCCXa3pSiPO8h5KA== - -"@unocss/scope@0.51.13": - version "0.51.13" - resolved "https://registry.yarnpkg.com/@unocss/scope/-/scope-0.51.13.tgz#4334bec70b5adc33ea73faa7c7952c508b03af4f" - integrity sha512-ATwgDx1qZflR2/EPsAs/XMR9/HdcUNyAZ6VdenwQQdlmAFlIWZQ6smswKyuiJWKtcJynfbdGOWcO3vcocrnSrQ== - -"@unocss/transformer-attributify-jsx-babel@0.51.13": - version "0.51.13" - resolved "https://registry.yarnpkg.com/@unocss/transformer-attributify-jsx-babel/-/transformer-attributify-jsx-babel-0.51.13.tgz#6855b412e705f2ce032e7cb3e634d0de692906c8" - integrity sha512-HMEeTi3FIuI5gMJnRICbWdDmraL4NfpjSTjSmAo6EsraBuNO2m+/5JZL5Fc1B3olKes2G84FDSlzfofHyinWzw== - dependencies: - "@unocss/core" "0.51.13" - -"@unocss/transformer-attributify-jsx@0.51.13": - version "0.51.13" - resolved "https://registry.yarnpkg.com/@unocss/transformer-attributify-jsx/-/transformer-attributify-jsx-0.51.13.tgz#4117d3a9168ddea3d1e45a1ab3ba6360c3925793" - integrity sha512-vLAtT0K3Rfa3Xiu3LhU4tNCptuO3QlbgSsVO93K3onujfO7qZAaXjK5nj7jiLPyTKtQyl/3WOgNStfReMleF0w== - dependencies: - "@unocss/core" "0.51.13" - -"@unocss/transformer-compile-class@0.51.13": - version "0.51.13" - resolved "https://registry.yarnpkg.com/@unocss/transformer-compile-class/-/transformer-compile-class-0.51.13.tgz#2463fb3ac88d516bd60322d245917760eb855507" - integrity sha512-7G5ReCIkrZOAikwM9LN74nR4uxffJMSDAbLFDyhdh4qaumJFaxDLDQ4lxpQVZVeXQIF12QSxsnJuI9Fu1nuqmg== - dependencies: - "@unocss/core" "0.51.13" - -"@unocss/transformer-directives@0.51.13": - version "0.51.13" - resolved "https://registry.yarnpkg.com/@unocss/transformer-directives/-/transformer-directives-0.51.13.tgz#0ae7f4e644cc41f35e2743451d6545656d60f2d5" - integrity sha512-1tl8UcVpqYaKkj1zan/QmUAslEcHe9WdN0/QX3Ao663A5r91EwWhnhwKFfvujrZp1XlFnXgKLmKS8OwTRQfCQg== - dependencies: - "@unocss/core" "0.51.13" - css-tree "^2.3.1" - -"@unocss/transformer-variant-group@0.51.13": - version "0.51.13" - resolved "https://registry.yarnpkg.com/@unocss/transformer-variant-group/-/transformer-variant-group-0.51.13.tgz#847a0d7cb05938f6498170b2590ffecf0bcef80a" - integrity sha512-QT3dfnYeht9SpqPFHJrEfZjL+XeMyi0Wwc4ll4ttIQNCl1Ihiwxl4ScRs1oVXlhCAc3hCXNu9V/FWO0cYHRt/Q== - dependencies: - "@unocss/core" "0.51.13" - -"@unocss/vite@0.51.13": - version "0.51.13" - resolved "https://registry.yarnpkg.com/@unocss/vite/-/vite-0.51.13.tgz#8bda8812c5d2a8f18234a698958a05b7579b2604" - integrity sha512-WwyaPnu1XfRiFy4uxXwBuWaL7J1Rcaetsw5lJQUIUdSBTblsd6W7sW+MYTsLfAlA9FUxWDK4ESdI51Xgq4glxw== - dependencies: - "@ampproject/remapping" "^2.2.1" - "@rollup/pluginutils" "^5.0.2" - "@unocss/config" "0.51.13" - "@unocss/core" "0.51.13" - "@unocss/inspector" "0.51.13" - "@unocss/scope" "0.51.13" - "@unocss/transformer-directives" "0.51.13" - chokidar "^3.5.3" - fast-glob "^3.2.12" - magic-string "^0.30.0" - -"@vitest/coverage-c8@^0.31.1": - version "0.31.4" - resolved "https://registry.yarnpkg.com/@vitest/coverage-c8/-/coverage-c8-0.31.4.tgz#5628e415fd9bea99ee12127e0524b9d267a33e17" - integrity sha512-VPx368m4DTcpA/P0v3YdVxl4QOSh1DbUcXURLRvDShrIB5KxOgfzw4Bn2R8AhAe/GyiWW/FIsJ/OJdYXCCiC1w== - dependencies: - "@ampproject/remapping" "^2.2.1" - c8 "^7.13.0" - magic-string "^0.30.0" - picocolors "^1.0.0" - std-env "^3.3.2" - -"@vitest/expect@0.31.4": - version "0.31.4" - resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-0.31.4.tgz#115c517404488bf3cb6ce4ac411c40d8e86891b8" - integrity sha512-tibyx8o7GUyGHZGyPgzwiaPaLDQ9MMuCOrc03BYT0nryUuhLbL7NV2r/q98iv5STlwMgaKuFJkgBW/8iPKwlSg== - dependencies: - "@vitest/spy" "0.31.4" - "@vitest/utils" "0.31.4" - chai "^4.3.7" - -"@vitest/runner@0.31.4": - version "0.31.4" - resolved "https://registry.yarnpkg.com/@vitest/runner/-/runner-0.31.4.tgz#e99abee89132a500d9726a53b58dfc9160db1078" - integrity sha512-Wgm6UER+gwq6zkyrm5/wbpXGF+g+UBB78asJlFkIOwyse0pz8lZoiC6SW5i4gPnls/zUcPLWS7Zog0LVepXnpg== - dependencies: - "@vitest/utils" "0.31.4" - concordance "^5.0.4" - p-limit "^4.0.0" - pathe "^1.1.0" - -"@vitest/snapshot@0.31.4": - version "0.31.4" - resolved "https://registry.yarnpkg.com/@vitest/snapshot/-/snapshot-0.31.4.tgz#59a42046fec4950a1ac70cf0ec64aada3b995559" - integrity sha512-LemvNumL3NdWSmfVAMpXILGyaXPkZbG5tyl6+RQSdcHnTj6hvA49UAI8jzez9oQyE/FWLKRSNqTGzsHuk89LRA== - dependencies: - magic-string "^0.30.0" - pathe "^1.1.0" - pretty-format "^27.5.1" - -"@vitest/spy@0.31.4": - version "0.31.4" - resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-0.31.4.tgz#fce8e348cea32deff79996d116c67893b19cc47d" - integrity sha512-3ei5ZH1s3aqbEyftPAzSuunGICRuhE+IXOmpURFdkm5ybUADk+viyQfejNk6q8M5QGX8/EVKw+QWMEP3DTJDag== - dependencies: - tinyspy "^2.1.0" - -"@vitest/ui@^0.31.1": - version "0.31.4" - resolved "https://registry.yarnpkg.com/@vitest/ui/-/ui-0.31.4.tgz#465a4762d7937e3322fe66f94c2378bacfeba1ac" - integrity sha512-sKM16ITX6HrNFF+lNZ2AQAen4/6Bx2i6KlBfIvkUjcTgc5YII/j2ltcX14oCUv4EA0OTWGQuGhO3zDoAsTENGA== - dependencies: - "@vitest/utils" "0.31.4" - fast-glob "^3.2.12" - fflate "^0.7.4" - flatted "^3.2.7" - pathe "^1.1.0" - picocolors "^1.0.0" - sirv "^2.0.3" - -"@vitest/utils@0.31.4": - version "0.31.4" - resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-0.31.4.tgz#5cfdcecfd604a7dbe3972cfe0f2b1e0af1246ad2" - integrity sha512-DobZbHacWznoGUfYU8XDPY78UubJxXfMNY1+SUdOp1NsI34eopSA6aZMeaGu10waSOeYwE8lxrd/pLfT0RMxjQ== - dependencies: - concordance "^5.0.4" - loupe "^2.3.6" - pretty-format "^27.5.1" - -acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn-walk@^8.2.0: - version "8.3.2" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" - integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== - -acorn@^8.10.0, acorn@^8.11.3, acorn@^8.8.2, acorn@^8.9.0: - version "8.11.3" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" - integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== - -ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ansi-colors@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" - integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" - integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== - -anymatch@~3.1.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" - integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -array-buffer-byte-length@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" - integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg== - dependencies: - call-bind "^1.0.5" - is-array-buffer "^3.0.4" - -array-includes@^3.1.6: - version "3.1.8" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d" - integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.2" - es-object-atoms "^1.0.0" - get-intrinsic "^1.2.4" - is-string "^1.0.7" - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array.prototype.flat@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" - integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - -arraybuffer.prototype.slice@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6" - integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A== - dependencies: - array-buffer-byte-length "^1.0.1" - call-bind "^1.0.5" - define-properties "^1.2.1" - es-abstract "^1.22.3" - es-errors "^1.2.1" - get-intrinsic "^1.2.3" - is-array-buffer "^3.0.4" - is-shared-array-buffer "^1.0.2" - -assertion-error@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" - integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== - -available-typed-arrays@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" - integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== - dependencies: - possible-typed-array-names "^1.0.0" - -babel-plugin-jsx-dom-expressions@^0.37.20: - version "0.37.20" - resolved "https://registry.yarnpkg.com/babel-plugin-jsx-dom-expressions/-/babel-plugin-jsx-dom-expressions-0.37.20.tgz#506fd0302d6740bdea957d5f7b18eccb117342ca" - integrity sha512-0L3aC5EFyvCgIlEYIqJb4Ym29s1IDI/U5SntZ1ZK054xe0MqBmBi2GLK3f9AOklhdY7kCC3GsHD0bILh6u0Qsg== - dependencies: - "@babel/helper-module-imports" "7.18.6" - "@babel/plugin-syntax-jsx" "^7.18.6" - "@babel/types" "^7.20.7" - html-entities "2.3.3" - validate-html-nesting "^1.2.1" - -babel-preset-solid@^1.8.4: - version "1.8.17" - resolved "https://registry.yarnpkg.com/babel-preset-solid/-/babel-preset-solid-1.8.17.tgz#8d55e8e2ee800be85527425e7943534f984dc815" - integrity sha512-s/FfTZOeds0hYxYqce90Jb+0ycN2lrzC7VP1k1JIn3wBqcaexDKdYi6xjB+hMNkL+Q6HobKbwsriqPloasR9LA== - dependencies: - babel-plugin-jsx-dom-expressions "^0.37.20" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -binary-extensions@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" - integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== - -blueimp-md5@^2.10.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/blueimp-md5/-/blueimp-md5-2.19.0.tgz#b53feea5498dcb53dc6ec4b823adb84b729c4af0" - integrity sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w== - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^3.0.2, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -browserslist@^4.22.2: - version "4.23.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" - integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== - dependencies: - caniuse-lite "^1.0.30001587" - electron-to-chromium "^1.4.668" - node-releases "^2.0.14" - update-browserslist-db "^1.0.13" - -builtin-modules@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" - integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== - -c8@^7.13.0: - version "7.14.0" - resolved "https://registry.yarnpkg.com/c8/-/c8-7.14.0.tgz#f368184c73b125a80565e9ab2396ff0be4d732f3" - integrity sha512-i04rtkkcNcCf7zsQcSv/T9EbUn4RXQ6mropeMcjFOsQXQ0iGLAr/xT6TImQg4+U9hmNpN9XdvPkjUL1IzbgxJw== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@istanbuljs/schema" "^0.1.3" - find-up "^5.0.0" - foreground-child "^2.0.0" - istanbul-lib-coverage "^3.2.0" - istanbul-lib-report "^3.0.0" - istanbul-reports "^3.1.4" - rimraf "^3.0.2" - test-exclude "^6.0.0" - v8-to-istanbul "^9.0.0" - yargs "^16.2.0" - yargs-parser "^20.2.9" - -cac@^6.7.14: - version "6.7.14" - resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959" - integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== - -call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" - integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== - dependencies: - es-define-property "^1.0.0" - es-errors "^1.3.0" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - set-function-length "^1.2.1" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -caniuse-lite@^1.0.30001587: - version "1.0.30001617" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001617.tgz#809bc25f3f5027ceb33142a7d6c40759d7a901eb" - integrity sha512-mLyjzNI9I+Pix8zwcrpxEbGlfqOkF9kM3ptzmKNw5tizSyYwMe+nGLTqMK9cO+0E+Bh6TsBxNAaHWEM8xwSsmA== - -chai@^4.3.7: - version "4.4.1" - resolved "https://registry.yarnpkg.com/chai/-/chai-4.4.1.tgz#3603fa6eba35425b0f2ac91a009fe924106e50d1" - integrity sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g== - dependencies: - assertion-error "^1.1.0" - check-error "^1.0.3" - deep-eql "^4.1.3" - get-func-name "^2.0.2" - loupe "^2.3.6" - pathval "^1.1.1" - type-detect "^4.0.8" - -chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.0.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -check-error@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694" - integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== - dependencies: - get-func-name "^2.0.2" - -chokidar@^3.5.3: - version "3.6.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" - integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -ci-info@^3.8.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" - integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== - -classnames@^2.2.5: - version "2.5.1" - resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.5.1.tgz#ba774c614be0f016da105c858e7159eae8e7687b" - integrity sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow== - -clean-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/clean-regexp/-/clean-regexp-1.0.0.tgz#8df7c7aae51fd36874e8f8d05b9180bc11a3fed7" - integrity sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw== - dependencies: - escape-string-regexp "^1.0.5" - -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - -clsx@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.1.tgz#eed397c9fd8bd882bfb18deab7102049a2f32999" - integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -colorette@^2.0.20: - version "2.0.20" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" - integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -concordance@^5.0.4: - version "5.0.4" - resolved "https://registry.yarnpkg.com/concordance/-/concordance-5.0.4.tgz#9896073261adced72f88d60e4d56f8efc4bbbbd2" - integrity sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw== - dependencies: - date-time "^3.1.0" - esutils "^2.0.3" - fast-diff "^1.2.0" - js-string-escape "^1.0.1" - lodash "^4.17.15" - md5-hex "^3.0.1" - semver "^7.3.2" - well-known-symbols "^2.0.0" - -confbox@^0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/confbox/-/confbox-0.1.7.tgz#ccfc0a2bcae36a84838e83a3b7f770fb17d6c579" - integrity sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA== - -consola@^3.1.0: - version "3.2.3" - resolved "https://registry.yarnpkg.com/consola/-/consola-3.2.3.tgz#0741857aa88cfa0d6fd53f1cff0375136e98502f" - integrity sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ== - -convert-source-map@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" - integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== - -core-js@^3.1.3: - version "3.37.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.37.0.tgz#d8dde58e91d156b2547c19d8a4efd5c7f6c426bb" - integrity sha512-fu5vHevQ8ZG4og+LXug8ulUtVxjOcEYvifJr7L5Bfq9GOztVqsKd9/59hUk2ZSbCrS3BqUr3EpaYGIYzq7g3Ug== - -cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -css-tree@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.3.1.tgz#10264ce1e5442e8572fc82fbe490644ff54b5c20" - integrity sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw== - dependencies: - mdn-data "2.0.30" - source-map-js "^1.0.1" - -csstype@^3.1.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" - integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== - -data-view-buffer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz#8ea6326efec17a2e42620696e671d7d5a8bc66b2" - integrity sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA== - dependencies: - call-bind "^1.0.6" - es-errors "^1.3.0" - is-data-view "^1.0.1" - -data-view-byte-length@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz#90721ca95ff280677eb793749fce1011347669e2" - integrity sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ== - dependencies: - call-bind "^1.0.7" - es-errors "^1.3.0" - is-data-view "^1.0.1" - -data-view-byte-offset@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz#5e0bbfb4828ed2d1b9b400cd8a7d119bca0ff18a" - integrity sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA== - dependencies: - call-bind "^1.0.6" - es-errors "^1.3.0" - is-data-view "^1.0.1" - -date-time@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/date-time/-/date-time-3.1.0.tgz#0d1e934d170579f481ed8df1e2b8ff70ee845e1e" - integrity sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg== - dependencies: - time-zone "^1.0.0" - -debug@^4.1.0, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -deep-eql@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d" - integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw== - dependencies: - type-detect "^4.0.0" - -deep-is@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -define-data-property@^1.0.1, define-data-property@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" - integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== - dependencies: - es-define-property "^1.0.0" - es-errors "^1.3.0" - gopd "^1.0.1" - -define-properties@^1.2.0, define-properties@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" - integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== - dependencies: - define-data-property "^1.0.1" - has-property-descriptors "^1.0.0" - object-keys "^1.1.1" - -defu@^6.1.4: - version "6.1.4" - resolved "https://registry.yarnpkg.com/defu/-/defu-6.1.4.tgz#4e0c9cf9ff68fe5f3d7f2765cc1a012dfdcb0479" - integrity sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg== - -destr@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/destr/-/destr-2.0.3.tgz#7f9e97cb3d16dbdca7be52aca1644ce402cfe449" - integrity sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ== - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -duplexer@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" - integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== - -electron-to-chromium@^1.4.668: - version "1.4.763" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.763.tgz#64f2041ed496fd6fc710b9be806fe91da9334f91" - integrity sha512-k4J8NrtJ9QrvHLRo8Q18OncqBCB7tIUyqxRcJnlonQ0ioHKYB988GcDFF3ZePmnb8eHEopDs/wPHR/iGAFgoUQ== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.2: - version "1.23.3" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.3.tgz#8f0c5a35cd215312573c5a27c87dfd6c881a0aa0" - integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A== - dependencies: - array-buffer-byte-length "^1.0.1" - arraybuffer.prototype.slice "^1.0.3" - available-typed-arrays "^1.0.7" - call-bind "^1.0.7" - data-view-buffer "^1.0.1" - data-view-byte-length "^1.0.1" - data-view-byte-offset "^1.0.0" - es-define-property "^1.0.0" - es-errors "^1.3.0" - es-object-atoms "^1.0.0" - es-set-tostringtag "^2.0.3" - es-to-primitive "^1.2.1" - function.prototype.name "^1.1.6" - get-intrinsic "^1.2.4" - get-symbol-description "^1.0.2" - globalthis "^1.0.3" - gopd "^1.0.1" - has-property-descriptors "^1.0.2" - has-proto "^1.0.3" - has-symbols "^1.0.3" - hasown "^2.0.2" - internal-slot "^1.0.7" - is-array-buffer "^3.0.4" - is-callable "^1.2.7" - is-data-view "^1.0.1" - is-negative-zero "^2.0.3" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.3" - is-string "^1.0.7" - is-typed-array "^1.1.13" - is-weakref "^1.0.2" - object-inspect "^1.13.1" - object-keys "^1.1.1" - object.assign "^4.1.5" - regexp.prototype.flags "^1.5.2" - safe-array-concat "^1.1.2" - safe-regex-test "^1.0.3" - string.prototype.trim "^1.2.9" - string.prototype.trimend "^1.0.8" - string.prototype.trimstart "^1.0.8" - typed-array-buffer "^1.0.2" - typed-array-byte-length "^1.0.1" - typed-array-byte-offset "^1.0.2" - typed-array-length "^1.0.6" - unbox-primitive "^1.0.2" - which-typed-array "^1.1.15" - -es-define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" - integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== - dependencies: - get-intrinsic "^1.2.4" - -es-errors@^1.2.1, es-errors@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" - integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== - -es-object-atoms@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941" - integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw== - dependencies: - es-errors "^1.3.0" - -es-set-tostringtag@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777" - integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ== - dependencies: - get-intrinsic "^1.2.4" - has-tostringtag "^1.0.2" - hasown "^2.0.1" - -es-shim-unscopables@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" - integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== - dependencies: - hasown "^2.0.0" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -esbuild@^0.18.10: - version "0.18.20" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.20.tgz#4709f5a34801b43b799ab7d6d82f7284a9b7a7a6" - integrity sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA== - optionalDependencies: - "@esbuild/android-arm" "0.18.20" - "@esbuild/android-arm64" "0.18.20" - "@esbuild/android-x64" "0.18.20" - "@esbuild/darwin-arm64" "0.18.20" - "@esbuild/darwin-x64" "0.18.20" - "@esbuild/freebsd-arm64" "0.18.20" - "@esbuild/freebsd-x64" "0.18.20" - "@esbuild/linux-arm" "0.18.20" - "@esbuild/linux-arm64" "0.18.20" - "@esbuild/linux-ia32" "0.18.20" - "@esbuild/linux-loong64" "0.18.20" - "@esbuild/linux-mips64el" "0.18.20" - "@esbuild/linux-ppc64" "0.18.20" - "@esbuild/linux-riscv64" "0.18.20" - "@esbuild/linux-s390x" "0.18.20" - "@esbuild/linux-x64" "0.18.20" - "@esbuild/netbsd-x64" "0.18.20" - "@esbuild/openbsd-x64" "0.18.20" - "@esbuild/sunos-x64" "0.18.20" - "@esbuild/win32-arm64" "0.18.20" - "@esbuild/win32-ia32" "0.18.20" - "@esbuild/win32-x64" "0.18.20" - -escalade@^3.1.1, escalade@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" - integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -eslint-config-prettier@^8.8.0: - version "8.10.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz#3a06a662130807e2502fc3ff8b4143d8a0658e11" - integrity sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg== - -eslint-plugin-solid@^0.12.1: - version "0.12.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-solid/-/eslint-plugin-solid-0.12.1.tgz#6035e9e992620f916fd9d14ad9eb2bbf62a76973" - integrity sha512-fM0sEg9PcS1mcNbWklwc+W/lOv1/XyEwXf53HmFFy4GOA8E3u41h8JW+hc+Vv1m3kh01umKoTalOTET08zKdAQ== - dependencies: - "@typescript-eslint/utils" "^5.55.0" - is-html "^2.0.0" - jsx-ast-utils "^3.3.3" - kebab-case "^1.0.2" - known-css-properties "^0.24.0" - style-to-object "^0.3.0" - -eslint-plugin-unicorn@^47.0.0: - version "47.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-47.0.0.tgz#960e9d3789f656ba3e21982420793b069a911011" - integrity sha512-ivB3bKk7fDIeWOUmmMm9o3Ax9zbMz1Bsza/R2qm46ufw4T6VBFBaJIR1uN3pCKSmSXm8/9Nri8V+iUut1NhQGA== - dependencies: - "@babel/helper-validator-identifier" "^7.19.1" - "@eslint-community/eslint-utils" "^4.4.0" - ci-info "^3.8.0" - clean-regexp "^1.0.0" - esquery "^1.5.0" - indent-string "^4.0.0" - is-builtin-module "^3.2.1" - jsesc "^3.0.2" - lodash "^4.17.21" - pluralize "^8.0.0" - read-pkg-up "^7.0.1" - regexp-tree "^0.1.24" - regjsparser "^0.10.0" - safe-regex "^2.1.1" - semver "^7.3.8" - strip-indent "^3.0.0" - -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-scope@^7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" - integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: - version "3.4.3" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" - integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== - -eslint@^8.40.0: - version "8.57.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" - integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.57.0" - "@humanwhocodes/config-array" "^0.11.14" - "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - "@ungap/structured-clone" "^1.2.0" - ajv "^6.12.4" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.2.2" - eslint-visitor-keys "^3.4.3" - espree "^9.6.1" - esquery "^1.4.2" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - find-up "^5.0.0" - glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" - ignore "^5.2.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" - -espree@^9.6.0, espree@^9.6.1: - version "9.6.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" - integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== - dependencies: - acorn "^8.9.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" - -esquery@^1.4.2, esquery@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" - integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -estree-walker@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" - integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== - -esutils@^2.0.2, esutils@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -execa@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-diff@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" - integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== - -fast-glob@^3.2.12, fast-glob@^3.2.9, fast-glob@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" - integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - -fastq@^1.6.0: - version "1.17.1" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" - integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== - dependencies: - reusify "^1.0.4" - -feather-icons@^4.29.0: - version "4.29.2" - resolved "https://registry.yarnpkg.com/feather-icons/-/feather-icons-4.29.2.tgz#b03a47588a1c400f215e884504db1c18860d89f8" - integrity sha512-0TaCFTnBTVCz6U+baY2UJNKne5ifGh7sMG4ZC2LoBWCZdIyPa+y6UiR4lEYGws1JOFWdee8KAsAIvu0VcXqiqA== - dependencies: - classnames "^2.2.5" - core-js "^3.1.3" - -fflate@^0.7.4: - version "0.7.4" - resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.7.4.tgz#61587e5d958fdabb5a9368a302c25363f4f69f50" - integrity sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw== - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -flat-cache@^3.0.4: - version "3.2.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" - integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== - dependencies: - flatted "^3.2.9" - keyv "^4.5.3" - rimraf "^3.0.2" - -flatted@^3.2.7, flatted@^3.2.9: - version "3.3.1" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" - integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== - -for-each@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" - integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== - dependencies: - is-callable "^1.1.3" - -foreground-child@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-2.0.0.tgz#71b32800c9f15aa8f2f83f4a6bd9bff35d861a53" - integrity sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA== - dependencies: - cross-spawn "^7.0.0" - signal-exit "^3.0.2" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -fsevents@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - -function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - -function.prototype.name@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" - integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - functions-have-names "^1.2.3" - -functions-have-names@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" - integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-func-name@^2.0.1, get-func-name@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" - integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== - -get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" - integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== - dependencies: - es-errors "^1.3.0" - function-bind "^1.1.2" - has-proto "^1.0.1" - has-symbols "^1.0.3" - hasown "^2.0.0" - -get-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -get-symbol-description@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5" - integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg== - dependencies: - call-bind "^1.0.5" - es-errors "^1.3.0" - get-intrinsic "^1.2.4" - -glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob@^7.1.3, glob@^7.1.4: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^13.19.0: - version "13.24.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" - integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== - dependencies: - type-fest "^0.20.2" - -globalthis@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" - integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== - dependencies: - define-properties "^1.2.1" - gopd "^1.0.1" - -globby@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - -gopd@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" - integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== - dependencies: - get-intrinsic "^1.1.3" - -graphemer@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" - integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== - -gzip-size@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" - integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== - dependencies: - duplexer "^0.1.2" - -has-bigints@^1.0.1, has-bigints@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" - integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" - integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== - dependencies: - es-define-property "^1.0.0" - -has-proto@^1.0.1, has-proto@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" - integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== - -has-symbols@^1.0.2, has-symbols@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== - -has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" - integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== - dependencies: - has-symbols "^1.0.3" - -hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" - integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== - dependencies: - function-bind "^1.1.2" - -hosted-git-info@^2.1.4: - version "2.8.9" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" - integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== - -html-entities@2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.3.tgz#117d7626bece327fc8baace8868fa6f5ef856e46" - integrity sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA== - -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -html-tags@^3.0.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.3.1.tgz#a04026a18c882e4bba8a01a3d39cfe465d40b5ce" - integrity sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ== - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -ignore@^5.2.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" - integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== - -import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inline-style-parser@0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1" - integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q== - -internal-slot@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" - integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g== - dependencies: - es-errors "^1.3.0" - hasown "^2.0.0" - side-channel "^1.0.4" - -is-array-buffer@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98" - integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.1" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== - -is-bigint@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" - integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== - dependencies: - has-bigints "^1.0.1" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-boolean-object@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" - integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-builtin-module@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.1.tgz#f03271717d8654cfcaf07ab0463faa3571581169" - integrity sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A== - dependencies: - builtin-modules "^3.3.0" - -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" - integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== - -is-core-module@^2.13.0: - version "2.13.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" - integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== - dependencies: - hasown "^2.0.0" - -is-data-view@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.1.tgz#4b4d3a511b70f3dc26d42c03ca9ca515d847759f" - integrity sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w== - dependencies: - is-typed-array "^1.1.13" - -is-date-object@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" - integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== - dependencies: - has-tostringtag "^1.0.0" - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-html@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-html/-/is-html-2.0.0.tgz#b3ab2e27ccb7a12235448f51f115a6690f435fc8" - integrity sha512-S+OpgB5i7wzIue/YSE5hg0e5ZYfG3hhpNh9KGl6ayJ38p7ED6wxQLd1TV91xHpcTvw90KMJ9EwN3F/iNflHBVg== - dependencies: - html-tags "^3.0.0" - -is-negative-zero@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" - integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== - -is-number-object@^1.0.4: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" - integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== - dependencies: - has-tostringtag "^1.0.0" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -is-regex@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#1237f1cba059cdb62431d378dcc37d9680181688" - integrity sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg== - dependencies: - call-bind "^1.0.7" - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-string@^1.0.5, is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== - dependencies: - has-tostringtag "^1.0.0" - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - -is-typed-array@^1.1.13: - version "1.1.13" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" - integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== - dependencies: - which-typed-array "^1.1.14" - -is-weakref@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" - integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== - dependencies: - call-bind "^1.0.2" - -is-what@^4.1.8: - version "4.1.16" - resolved "https://registry.yarnpkg.com/is-what/-/is-what-4.1.16.tgz#1ad860a19da8b4895ad5495da3182ce2acdd7a6f" - integrity sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A== - -isarray@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" - integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" - integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== - -istanbul-lib-report@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" - integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^4.0.0" - supports-color "^7.1.0" - -istanbul-reports@^3.1.4: - version "3.1.7" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.7.tgz#daed12b9e1dca518e15c056e1e537e741280fa0b" - integrity sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - -jiti@^1.21.0: - version "1.21.0" - resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" - integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== - -js-string-escape@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz#e2625badbc0d67c7533e9edc1068c587ae4137ef" - integrity sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg== - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -jsesc@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e" - integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== - -json-buffer@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" - integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - -json5@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - -jsx-ast-utils@^3.3.3: - version "3.3.5" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" - integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== - dependencies: - array-includes "^3.1.6" - array.prototype.flat "^1.3.1" - object.assign "^4.1.4" - object.values "^1.1.6" - -kebab-case@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/kebab-case/-/kebab-case-1.0.2.tgz#5eac97d5d220acf606d40e3c0ecfea21f1f9e1eb" - integrity sha512-7n6wXq4gNgBELfDCpzKc+mRrZFs7D+wgfF5WRFLNAr4DA/qtr9Js8uOAVAfHhuLMfAcQ0pRKqbpjx+TcJVdE1Q== - -keyv@^4.5.3: - version "4.5.4" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" - integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== - dependencies: - json-buffer "3.0.1" - -known-css-properties@^0.24.0: - version "0.24.0" - resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.24.0.tgz#19aefd85003ae5698a5560d2b55135bf5432155c" - integrity sha512-RTSoaUAfLvpR357vWzAz/50Q/BmHfmE6ETSWfutT0AJiw10e6CmcdYRQJlLRd95B53D0Y2aD1jSxD3V3ySF+PA== - -kolorist@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/kolorist/-/kolorist-1.8.0.tgz#edddbbbc7894bc13302cdf740af6374d4a04743c" - integrity sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ== - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -local-pkg@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/local-pkg/-/local-pkg-0.4.3.tgz#0ff361ab3ae7f1c19113d9bb97b98b905dbc4963" - integrity sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g== - -local-pkg@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/local-pkg/-/local-pkg-0.5.0.tgz#093d25a346bae59a99f80e75f6e9d36d7e8c925c" - integrity sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg== - dependencies: - mlly "^1.4.2" - pkg-types "^1.0.3" - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash@^4.17.15, lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -loupe@^2.3.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697" - integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA== - dependencies: - get-func-name "^2.0.1" - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -magic-string@^0.30.0: - version "0.30.10" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.10.tgz#123d9c41a0cb5640c892b041d4cfb3bd0aa4b39e" - integrity sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ== - dependencies: - "@jridgewell/sourcemap-codec" "^1.4.15" - -make-dir@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" - integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== - dependencies: - semver "^7.5.3" - -md5-hex@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/md5-hex/-/md5-hex-3.0.1.tgz#be3741b510591434b2784d79e556eefc2c9a8e5c" - integrity sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw== - dependencies: - blueimp-md5 "^2.10.0" - -mdn-data@2.0.30: - version "2.0.30" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.30.tgz#ce4df6f80af6cfbe218ecd5c552ba13c4dfa08cc" - integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA== - -merge-anything@^5.1.7: - version "5.1.7" - resolved "https://registry.yarnpkg.com/merge-anything/-/merge-anything-5.1.7.tgz#94f364d2b0cf21ac76067b5120e429353b3525d7" - integrity sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ== - dependencies: - is-what "^4.1.8" - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -micromatch@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== - dependencies: - braces "^3.0.2" - picomatch "^2.3.1" - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -min-indent@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" - integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== - -minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -mlly@^1.2.0, mlly@^1.4.2, mlly@^1.6.1, mlly@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.7.0.tgz#587383ae40dda23cadb11c3c3cc972b277724271" - integrity sha512-U9SDaXGEREBYQgfejV97coK0UL1r+qnF2SyO9A3qcI8MzKnsIFKHNVEkrDyNncQTKQQumsasmeq84eNMdBfsNQ== - dependencies: - acorn "^8.11.3" - pathe "^1.1.2" - pkg-types "^1.1.0" - ufo "^1.5.3" - -mrmime@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-2.0.0.tgz#151082a6e06e59a9a39b46b3e14d5cfe92b3abb4" - integrity sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -nanoid@^3.3.7: - version "3.3.7" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" - integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== - -natural-compare-lite@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" - integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - -node-fetch-native@^1.6.3: - version "1.6.4" - resolved "https://registry.yarnpkg.com/node-fetch-native/-/node-fetch-native-1.6.4.tgz#679fc8fd8111266d47d7e72c379f1bed9acff06e" - integrity sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ== - -node-releases@^2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" - integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== - -normalize-package-data@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -object-inspect@^1.13.1: - version "1.13.1" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" - integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== - -object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object.assign@^4.1.4, object.assign@^4.1.5: - version "4.1.5" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" - integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== - dependencies: - call-bind "^1.0.5" - define-properties "^1.2.1" - has-symbols "^1.0.3" - object-keys "^1.1.1" - -object.values@^1.1.6: - version "1.2.0" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.0.tgz#65405a9d92cee68ac2d303002e0b8470a4d9ab1b" - integrity sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-object-atoms "^1.0.0" - -ofetch@^1.0.1: - version "1.3.4" - resolved "https://registry.yarnpkg.com/ofetch/-/ofetch-1.3.4.tgz#7ea65ced3c592ec2b9906975ae3fe1d26a56f635" - integrity sha512-KLIET85ik3vhEfS+3fDlc/BAZiAp+43QEC/yCo5zkNoY2YaKvNkOaFr/6wCFgFH1kuYQM5pMNi0Tg8koiIemtw== - dependencies: - destr "^2.0.3" - node-fetch-native "^1.6.3" - ufo "^1.5.3" - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -openapi-fetch@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/openapi-fetch/-/openapi-fetch-0.2.1.tgz#a5865cd030620df9047c588554b1b670b0355757" - integrity sha512-XrpiPz8fPUdYtgcXSU4u8jJ/At67PbFsj6XRZZbt6lMsrosKplWY7dUgnkstYaroschNz/NfYSPIiq0sOaY0nw== - -openapi-typescript@^6.5.0: - version "6.7.5" - resolved "https://registry.yarnpkg.com/openapi-typescript/-/openapi-typescript-6.7.5.tgz#3e7f0d080d540396ef8db3df4ed07e1a4a5bb1d8" - integrity sha512-ZD6dgSZi0u1QCP55g8/2yS5hNJfIpgqsSGHLxxdOjvY7eIrXzj271FJEQw33VwsZ6RCtO/NOuhxa7GBWmEudyA== - dependencies: - ansi-colors "^4.1.3" - fast-glob "^3.3.2" - js-yaml "^4.1.0" - supports-color "^9.4.0" - undici "^5.28.2" - yargs-parser "^21.1.1" - -optionator@^0.9.3: - version "0.9.4" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" - integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.5" - -p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-limit@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-4.0.0.tgz#914af6544ed32bfa54670b061cafcbd04984b644" - integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ== - dependencies: - yocto-queue "^1.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-json@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -pathe@^1.1.0, pathe@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.2.tgz#6c4cb47a945692e48a1ddd6e4094d170516437ec" - integrity sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ== - -pathval@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" - integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== - -perfect-debounce@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/perfect-debounce/-/perfect-debounce-1.0.0.tgz#9c2e8bc30b169cc984a58b7d5b28049839591d2a" - integrity sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA== - -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pkg-types@^1.0.3, pkg-types@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.1.1.tgz#07b626880749beb607b0c817af63aac1845a73f2" - integrity sha512-ko14TjmDuQJ14zsotODv7dBlwxKhUKQEhuhmbqo1uCi9BB0Z2alo/wAXg6q1dTR5TyuqYyWhjtfe/Tsh+X28jQ== - dependencies: - confbox "^0.1.7" - mlly "^1.7.0" - pathe "^1.1.2" - -pluralize@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" - integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== - -possible-typed-array-names@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" - integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== - -postcss@^8.4.23, postcss@^8.4.27: - version "8.4.38" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e" - integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A== - dependencies: - nanoid "^3.3.7" - picocolors "^1.0.0" - source-map-js "^1.2.0" - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prettier@^2.8.8: - version "2.8.8" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" - integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== - -pretty-format@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" - integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== - dependencies: - ansi-regex "^5.0.1" - ansi-styles "^5.0.0" - react-is "^17.0.1" - -punycode@^2.1.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" - integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -react-is@^17.0.1: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" - integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== - -read-pkg-up@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" - integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== - dependencies: - find-up "^4.1.0" - read-pkg "^5.2.0" - type-fest "^0.8.1" - -read-pkg@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" - integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== - dependencies: - "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^2.5.0" - parse-json "^5.0.0" - type-fest "^0.6.0" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -regexp-tree@^0.1.24, regexp-tree@~0.1.1: - version "0.1.27" - resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.27.tgz#2198f0ef54518ffa743fe74d983b56ffd631b6cd" - integrity sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA== - -regexp.prototype.flags@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" - integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== - dependencies: - call-bind "^1.0.6" - define-properties "^1.2.1" - es-errors "^1.3.0" - set-function-name "^2.0.1" - -regjsparser@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.10.0.tgz#b1ed26051736b436f22fdec1c8f72635f9f44892" - integrity sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA== - dependencies: - jsesc "~0.5.0" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve@^1.10.0: - version "1.22.8" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" - integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== - dependencies: - is-core-module "^2.13.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -rollup@^3.27.1: - version "3.29.4" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.29.4.tgz#4d70c0f9834146df8705bfb69a9a19c9e1109981" - integrity sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw== - optionalDependencies: - fsevents "~2.3.2" - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -safe-array-concat@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz#81d77ee0c4e8b863635227c721278dd524c20edb" - integrity sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q== - dependencies: - call-bind "^1.0.7" - get-intrinsic "^1.2.4" - has-symbols "^1.0.3" - isarray "^2.0.5" - -safe-regex-test@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377" - integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw== - dependencies: - call-bind "^1.0.6" - es-errors "^1.3.0" - is-regex "^1.1.4" - -safe-regex@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-2.1.1.tgz#f7128f00d056e2fe5c11e81a1324dd974aadced2" - integrity sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A== - dependencies: - regexp-tree "~0.1.1" - -"semver@2 || 3 || 4 || 5": - version "5.7.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" - integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== - -semver@^6.3.1: - version "6.3.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^7.3.2, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3: - version "7.6.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" - integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== - -seroval-plugins@^1.0.3: - version "1.0.5" - resolved "https://registry.yarnpkg.com/seroval-plugins/-/seroval-plugins-1.0.5.tgz#eeded50d736d5e1dba142a72b0188df9f4e42b6d" - integrity sha512-8+pDC1vOedPXjKG7oz8o+iiHrtF2WswaMQJ7CKFpccvSYfrzmvKY9zOJWCg+881722wIHfwkdnRmiiDm9ym+zQ== - -seroval@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/seroval/-/seroval-1.0.5.tgz#d71ee540d936babaed92f56eda3e52d8e2a3deed" - integrity sha512-TM+Z11tHHvQVQKeNlOUonOWnsNM+2IBwZ4vwoi4j3zKzIpc5IDw8WPwCfcc8F17wy6cBcJGbZbFOR0UCuTZHQA== - -set-function-length@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" - integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== - dependencies: - define-data-property "^1.1.4" - es-errors "^1.3.0" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - gopd "^1.0.1" - has-property-descriptors "^1.0.2" - -set-function-name@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" - integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== - dependencies: - define-data-property "^1.1.4" - es-errors "^1.3.0" - functions-have-names "^1.2.3" - has-property-descriptors "^1.0.2" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -side-channel@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" - integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== - dependencies: - call-bind "^1.0.7" - es-errors "^1.3.0" - get-intrinsic "^1.2.4" - object-inspect "^1.13.1" - -siginfo@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/siginfo/-/siginfo-2.0.0.tgz#32e76c70b79724e3bb567cb9d543eb858ccfaf30" - integrity sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g== - -signal-exit@^3.0.2, signal-exit@^3.0.3: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -sirv@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/sirv/-/sirv-2.0.4.tgz#5dd9a725c578e34e449f332703eb2a74e46a29b0" - integrity sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ== - dependencies: - "@polka/url" "^1.0.0-next.24" - mrmime "^2.0.0" - totalist "^3.0.0" - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -solid-headless@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/solid-headless/-/solid-headless-0.13.1.tgz#eed2d79043891eaebccc8aa1449f7aaa8ba24e2e" - integrity sha512-FZJai49YmdBu6oEo8aJGPMQ1Qn8xiW0cnD6vNFDIQWMKJdXEUtDEwz0hTR9aZ7Epq3IkrZs+98E0vNiv1+pZpA== - dependencies: - solid-use "^0.6.2" - -solid-js@^1.7.4: - version "1.8.17" - resolved "https://registry.yarnpkg.com/solid-js/-/solid-js-1.8.17.tgz#780ed6f0fd8633009d1b3c29d56bf6b6bb33bd50" - integrity sha512-E0FkUgv9sG/gEBWkHr/2XkBluHb1fkrHywUgA6o6XolPDCJ4g1HaLmQufcBBhiF36ee40q+HpG/vCZu7fLpI3Q== - dependencies: - csstype "^3.1.0" - seroval "^1.0.4" - seroval-plugins "^1.0.3" - -solid-refresh@^0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/solid-refresh/-/solid-refresh-0.6.3.tgz#d23ef80f04e177619c9234a809c573cb16360627" - integrity sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA== - dependencies: - "@babel/generator" "^7.23.6" - "@babel/helper-module-imports" "^7.22.15" - "@babel/types" "^7.23.6" - -solid-use@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/solid-use/-/solid-use-0.6.2.tgz#c9d997d5db3658693bf7436741439924f487d5c8" - integrity sha512-0ShJ5s+4PIN0pJB/BtsQucsZB+xnUeeTGaxErQDu6USn5jygZWXicAtOEvFbI8gv40xE751uY1Tz7Aib9lxL/Q== - -source-map-js@^1.0.1, source-map-js@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" - integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== - -spdx-correct@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" - integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz#5d607d27fc806f66d7b64a766650fa890f04ed66" - integrity sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.17" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz#887da8aa73218e51a1d917502d79863161a93f9c" - integrity sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg== - -stackback@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b" - integrity sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw== - -std-env@^3.3.2: - version "3.7.0" - resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.7.0.tgz#c9f7386ced6ecf13360b6c6c55b8aaa4ef7481d2" - integrity sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg== - -string-width@^4.1.0, string-width@^4.2.0: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string.prototype.trim@^1.2.9: - version "1.2.9" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#b6fa326d72d2c78b6df02f7759c73f8f6274faa4" - integrity sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.0" - es-object-atoms "^1.0.0" - -string.prototype.trimend@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz#3651b8513719e8a9f48de7f2f77640b26652b229" - integrity sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-object-atoms "^1.0.0" - -string.prototype.trimstart@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#7ee834dda8c7c17eff3118472bb35bfedaa34dde" - integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-object-atoms "^1.0.0" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-indent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" - integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== - dependencies: - min-indent "^1.0.0" - -strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -strip-literal@^1.0.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/strip-literal/-/strip-literal-1.3.0.tgz#db3942c2ec1699e6836ad230090b84bb458e3a07" - integrity sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg== - dependencies: - acorn "^8.10.0" - -style-to-object@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.3.0.tgz#b1b790d205991cc783801967214979ee19a76e46" - integrity sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA== - dependencies: - inline-style-parser "0.1.1" - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-color@^9.4.0: - version "9.4.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-9.4.0.tgz#17bfcf686288f531db3dea3215510621ccb55954" - integrity sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw== - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== - dependencies: - "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - -time-zone@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/time-zone/-/time-zone-1.0.0.tgz#99c5bf55958966af6d06d83bdf3800dc82faec5d" - integrity sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA== - -tinybench@^2.5.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/tinybench/-/tinybench-2.8.0.tgz#30e19ae3a27508ee18273ffed9ac7018949acd7b" - integrity sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw== - -tinypool@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-0.5.0.tgz#3861c3069bf71e4f1f5aa2d2e6b3aaacc278961e" - integrity sha512-paHQtnrlS1QZYKF/GnLoOM/DN9fqaGOFbCbxzAhwniySnzl9Ebk8w73/dd34DAhe/obUbPAOldTyYXQZxnPBPQ== - -tinyspy@^2.1.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-2.2.1.tgz#117b2342f1f38a0dbdcc73a50a454883adf861d1" - integrity sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A== - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -totalist@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/totalist/-/totalist-3.0.1.tgz#ba3a3d600c915b1a97872348f79c127475f6acf8" - integrity sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ== - -tslib@^1.8.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-detect@^4.0.0, type-detect@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -type-fest@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" - integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== - -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - -typed-array-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3" - integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ== - dependencies: - call-bind "^1.0.7" - es-errors "^1.3.0" - is-typed-array "^1.1.13" - -typed-array-byte-length@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#d92972d3cff99a3fa2e765a28fcdc0f1d89dec67" - integrity sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw== - dependencies: - call-bind "^1.0.7" - for-each "^0.3.3" - gopd "^1.0.1" - has-proto "^1.0.3" - is-typed-array "^1.1.13" - -typed-array-byte-offset@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#f9ec1acb9259f395093e4567eb3c28a580d02063" - integrity sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA== - dependencies: - available-typed-arrays "^1.0.7" - call-bind "^1.0.7" - for-each "^0.3.3" - gopd "^1.0.1" - has-proto "^1.0.3" - is-typed-array "^1.1.13" - -typed-array-length@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.6.tgz#57155207c76e64a3457482dfdc1c9d1d3c4c73a3" - integrity sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g== - dependencies: - call-bind "^1.0.7" - for-each "^0.3.3" - gopd "^1.0.1" - has-proto "^1.0.3" - is-typed-array "^1.1.13" - possible-typed-array-names "^1.0.0" - -typescript@^5.0.4: - version "5.4.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611" - integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== - -ufo@^1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.5.3.tgz#3325bd3c977b6c6cd3160bf4ff52989adc9d3344" - integrity sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw== - -unbox-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" - integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== - dependencies: - call-bind "^1.0.2" - has-bigints "^1.0.2" - has-symbols "^1.0.3" - which-boxed-primitive "^1.0.2" - -unconfig@^0.3.7: - version "0.3.13" - resolved "https://registry.yarnpkg.com/unconfig/-/unconfig-0.3.13.tgz#8612d57811c1316f30d95f45bb96ce8ce8afc10c" - integrity sha512-N9Ph5NC4+sqtcOjPfHrRcHekBCadCXWTBzp2VYYbySOHW0PfD9XLCeXshTXjkPYwLrBr9AtSeU0CZmkYECJhng== - dependencies: - "@antfu/utils" "^0.7.7" - defu "^6.1.4" - jiti "^1.21.0" - -undici-types@~5.26.4: - version "5.26.5" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" - integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== - -undici@^5.28.2: - version "5.28.4" - resolved "https://registry.yarnpkg.com/undici/-/undici-5.28.4.tgz#6b280408edb6a1a604a9b20340f45b422e373068" - integrity sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g== - dependencies: - "@fastify/busboy" "^2.0.0" - -unocss@^0.51.8: - version "0.51.13" - resolved "https://registry.yarnpkg.com/unocss/-/unocss-0.51.13.tgz#f41c0d186559f2375f319334f4811ed21b427b23" - integrity sha512-EAhuQ97D7E+EsTdlCL+xoWEsvz46Se9ZAtHhJ+1W+DzMky9qrDLRyR8Caf2TPbz8dw/z0qYhoPr6/aJARG4r0g== - dependencies: - "@unocss/astro" "0.51.13" - "@unocss/cli" "0.51.13" - "@unocss/core" "0.51.13" - "@unocss/extractor-arbitrary-variants" "0.51.13" - "@unocss/postcss" "0.51.13" - "@unocss/preset-attributify" "0.51.13" - "@unocss/preset-icons" "0.51.13" - "@unocss/preset-mini" "0.51.13" - "@unocss/preset-tagify" "0.51.13" - "@unocss/preset-typography" "0.51.13" - "@unocss/preset-uno" "0.51.13" - "@unocss/preset-web-fonts" "0.51.13" - "@unocss/preset-wind" "0.51.13" - "@unocss/reset" "0.51.13" - "@unocss/transformer-attributify-jsx" "0.51.13" - "@unocss/transformer-attributify-jsx-babel" "0.51.13" - "@unocss/transformer-compile-class" "0.51.13" - "@unocss/transformer-directives" "0.51.13" - "@unocss/transformer-variant-group" "0.51.13" - "@unocss/vite" "0.51.13" - -update-browserslist-db@^1.0.13: - version "1.0.15" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.15.tgz#60ed9f8cba4a728b7ecf7356f641a31e3a691d97" - integrity sha512-K9HWH62x3/EalU1U6sjSZiylm9C8tgq2mSvshZpqc7QE69RaA2qjhkW2HlNA0tFpEbtyFz7HTqbSdN4MSwUodA== - dependencies: - escalade "^3.1.2" - picocolors "^1.0.0" - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -v8-to-istanbul@^9.0.0: - version "9.2.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz#2ed7644a245cddd83d4e087b9b33b3e62dfd10ad" - integrity sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA== - dependencies: - "@jridgewell/trace-mapping" "^0.3.12" - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^2.0.0" - -validate-html-nesting@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/validate-html-nesting/-/validate-html-nesting-1.2.2.tgz#2d74de14b598a0de671fad01bd71deabb93b8aca" - integrity sha512-hGdgQozCsQJMyfK5urgFcWEqsSSrK63Awe0t/IMR0bZ0QMtnuaiHzThW81guu3qx9abLi99NEuiaN6P9gVYsNg== - -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -vite-node@0.31.4: - version "0.31.4" - resolved "https://registry.yarnpkg.com/vite-node/-/vite-node-0.31.4.tgz#0437f76c35fa83f0a868d3fb5896ca9e164291f5" - integrity sha512-uzL377GjJtTbuc5KQxVbDu2xfU/x0wVjUtXQR2ihS21q/NK6ROr4oG0rsSkBBddZUVCwzfx22in76/0ZZHXgkQ== - dependencies: - cac "^6.7.14" - debug "^4.3.4" - mlly "^1.2.0" - pathe "^1.1.0" - picocolors "^1.0.0" - vite "^3.0.0 || ^4.0.0" - -vite-plugin-solid@^2.7.2: - version "2.10.2" - resolved "https://registry.yarnpkg.com/vite-plugin-solid/-/vite-plugin-solid-2.10.2.tgz#180f5ec9d8ac03d19160dd5728b313fe9b62ee0d" - integrity sha512-AOEtwMe2baBSXMXdo+BUwECC8IFHcKS6WQV/1NEd+Q7vHPap5fmIhLcAzr+DUJ04/KHx/1UBU0l1/GWP+rMAPQ== - dependencies: - "@babel/core" "^7.23.3" - "@types/babel__core" "^7.20.4" - babel-preset-solid "^1.8.4" - merge-anything "^5.1.7" - solid-refresh "^0.6.3" - vitefu "^0.2.5" - -"vite@^3.0.0 || ^4.0.0", vite@^4.5.3: - version "4.5.3" - resolved "https://registry.yarnpkg.com/vite/-/vite-4.5.3.tgz#d88a4529ea58bae97294c7e2e6f0eab39a50fb1a" - integrity sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg== - dependencies: - esbuild "^0.18.10" - postcss "^8.4.27" - rollup "^3.27.1" - optionalDependencies: - fsevents "~2.3.2" - -vitefu@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/vitefu/-/vitefu-0.2.5.tgz#c1b93c377fbdd3e5ddd69840ea3aa70b40d90969" - integrity sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q== - -vitest@^0.31.4: - version "0.31.4" - resolved "https://registry.yarnpkg.com/vitest/-/vitest-0.31.4.tgz#5abe02562675262949c10e40811f348a80f6b2a6" - integrity sha512-GoV0VQPmWrUFOZSg3RpQAPN+LPmHg2/gxlMNJlyxJihkz6qReHDV6b0pPDcqFLNEPya4tWJ1pgwUNP9MLmUfvQ== - dependencies: - "@types/chai" "^4.3.5" - "@types/chai-subset" "^1.3.3" - "@types/node" "*" - "@vitest/expect" "0.31.4" - "@vitest/runner" "0.31.4" - "@vitest/snapshot" "0.31.4" - "@vitest/spy" "0.31.4" - "@vitest/utils" "0.31.4" - acorn "^8.8.2" - acorn-walk "^8.2.0" - cac "^6.7.14" - chai "^4.3.7" - concordance "^5.0.4" - debug "^4.3.4" - local-pkg "^0.4.3" - magic-string "^0.30.0" - pathe "^1.1.0" - picocolors "^1.0.0" - std-env "^3.3.2" - strip-literal "^1.0.1" - tinybench "^2.5.0" - tinypool "^0.5.0" - vite "^3.0.0 || ^4.0.0" - vite-node "0.31.4" - why-is-node-running "^2.2.2" - -well-known-symbols@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/well-known-symbols/-/well-known-symbols-2.0.0.tgz#e9c7c07dbd132b7b84212c8174391ec1f9871ba5" - integrity sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q== - -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which-typed-array@^1.1.14, which-typed-array@^1.1.15: - version "1.1.15" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" - integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== - dependencies: - available-typed-arrays "^1.0.7" - call-bind "^1.0.7" - for-each "^0.3.3" - gopd "^1.0.1" - has-tostringtag "^1.0.2" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -why-is-node-running@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/why-is-node-running/-/why-is-node-running-2.2.2.tgz#4185b2b4699117819e7154594271e7e344c9973e" - integrity sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA== - dependencies: - siginfo "^2.0.0" - stackback "0.0.2" - -word-wrap@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" - integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yargs-parser@^20.2.2, yargs-parser@^20.2.9: - version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - -yargs-parser@^21.1.1: - version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -yargs@^16.2.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - -yocto-queue@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251" - integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== From 3ab83b6c659e4aca129a120fed9e16fec530c697 Mon Sep 17 00:00:00 2001 From: Nick <10092581+NickLarsenNZ@users.noreply.github.com> Date: Thu, 23 Apr 2026 09:06:54 +0200 Subject: [PATCH 61/63] feat: stacks and demo supports OCI helmCharts (#440) * chore: Add ChartSourceKind for oci/repo/local Note: Local isn't yet supported, but it is a fallback for when the URL doesn't match oci:// or http(s):// * feat: Add support for OCI repositories Note: Only non-OCI remote charts need the helm::add_repo() call. We emit an error if a Local (non oci:// or http(s)://) value is given. * test: Ensure ChartRepo::source_kind gives expected variants This seems trivial now in this set of changes, but is intended to catch future regressions * chore: Update changelog * chore: cargo update -p rustls-webpki * chore: Rename path to chart_source, and use the Debug impl * test: Use rstest Also use str::to_owned() --- Cargo.lock | 4 +- Cargo.nix | 4 +- rust/stackable-cockpit/src/helm.rs | 58 +++++++++++++++++++ .../src/platform/manifests.rs | 29 +++++++--- rust/stackablectl/CHANGELOG.md | 2 + 5 files changed, 86 insertions(+), 11 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 100f6188..600b48dd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3145,9 +3145,9 @@ checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" [[package]] name = "rustls-webpki" -version = "0.103.12" +version = "0.103.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8279bb85272c9f10811ae6a6c547ff594d6a7f3c6c6b02ee9726d1d0dcfcdd06" +checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e" dependencies = [ "aws-lc-rs", "ring", diff --git a/Cargo.nix b/Cargo.nix index db19601b..9abd0950 100644 --- a/Cargo.nix +++ b/Cargo.nix @@ -10491,9 +10491,9 @@ rec { }; "rustls-webpki" = rec { crateName = "rustls-webpki"; - version = "0.103.12"; + version = "0.103.13"; edition = "2021"; - sha256 = "01nxzkfd1l96jzp04svc7iznlkarzx3wb9p63a0i17rc4y2vnyc2"; + sha256 = "0vkm7z9pnxz5qz66p2kmyy2pwx0g4jnsbqk5xzfhs4czcjl2ki31"; libName = "webpki"; dependencies = [ { diff --git a/rust/stackable-cockpit/src/helm.rs b/rust/stackable-cockpit/src/helm.rs index 76528584..baad9ee1 100644 --- a/rust/stackable-cockpit/src/helm.rs +++ b/rust/stackable-cockpit/src/helm.rs @@ -38,6 +38,40 @@ pub struct ChartRepo { pub url: String, } +/// The kind of source a chart repo URL refers to. +/// +/// [Self::Oci] and [Self::Local] don't need special handling, but [Self::Repo] +/// needs to call `helm::add_repo`. +/// +/// Note: We don't yet support local repositories, so an error should be emitted +/// if the source is [Self::Local]. +#[derive(Debug, PartialEq)] +pub enum ChartSourceKind { + /// OCI registry (url starts with `oci://`) + Oci, + + /// Traditional index.yaml-based repository (url starts with `http://` or `https://`) + Repo, + + /// Local filesystem path (not yet supported) + /// + /// This is the fallback if not oci or http(s). + Local, +} + +impl ChartRepo { + /// Determine the kind of chart source based on the URL scheme. + pub fn source_kind(&self) -> ChartSourceKind { + if self.url.starts_with("oci://") { + ChartSourceKind::Oci + } else if self.url.starts_with("http://") || self.url.starts_with("https://") { + ChartSourceKind::Repo + } else { + ChartSourceKind::Local + } + } +} + #[derive(Debug, Snafu)] pub enum Error { #[snafu(display("failed to parse URL"))] @@ -505,3 +539,27 @@ where serde_yaml::from_str(&index_file_content).context(DeserializeYamlSnafu) } + +#[cfg(test)] +mod tests { + use rstest::rstest; + + use super::*; + + #[rstest] + #[case("oci://oci.stackable.tech/sdp-charts", ChartSourceKind::Oci)] + #[case( + "https://repo.stackable.tech/repository/helm-stable", + ChartSourceKind::Repo + )] + #[case("http://example.com/charts", ChartSourceKind::Repo)] + #[case("./charts/my-chart", ChartSourceKind::Local)] + #[case("/absolute/path/to/chart", ChartSourceKind::Local)] + fn source_kind(#[case] url: &str, #[case] expected: ChartSourceKind) { + let repo = ChartRepo { + name: "test".to_owned(), + url: url.to_owned(), + }; + assert_eq!(repo.source_kind(), expected); + } +} diff --git a/rust/stackable-cockpit/src/platform/manifests.rs b/rust/stackable-cockpit/src/platform/manifests.rs index 6e5dd45d..36531ded 100644 --- a/rust/stackable-cockpit/src/platform/manifests.rs +++ b/rust/stackable-cockpit/src/platform/manifests.rs @@ -56,6 +56,10 @@ pub enum Error { source: helm::Error, }, + /// This error indicates that the Helm chart source kind is not supported. + #[snafu(display("local Helm chart sources are not yet supported (source: {chart_source:?})"))] + UnsupportedChartSource { chart_source: String }, + /// This error indicates that Helm chart options could not be serialized /// into YAML. #[snafu(display("failed to serialize Helm chart options"))] @@ -104,12 +108,23 @@ pub trait InstallManifestsExt { info!(helm_chart.name, helm_chart.version, "Installing Helm chart",); - // Assumption: that all manifest helm charts refer to repos not registries - helm::add_repo(&helm_chart.repo.name, &helm_chart.repo.url).context( - AddHelmRepositorySnafu { - repo_name: helm_chart.repo.name.clone(), - }, - )?; + let chart_source = match helm_chart.repo.source_kind() { + helm::ChartSourceKind::Repo => { + helm::add_repo(&helm_chart.repo.name, &helm_chart.repo.url).context( + AddHelmRepositorySnafu { + repo_name: helm_chart.repo.name.clone(), + }, + )?; + &helm_chart.repo.name + } + helm::ChartSourceKind::Oci => &helm_chart.repo.url, + helm::ChartSourceKind::Local => { + return UnsupportedChartSourceSnafu { + chart_source: helm_chart.repo.url.clone(), + } + .fail(); + } + }; // Serialize chart options to string let values_yaml = serde_yaml::to_string(&helm_chart.options) @@ -119,7 +134,7 @@ pub trait InstallManifestsExt { helm::upgrade_or_install_release_from_repo_or_registry( &helm_chart.release_name, helm::ChartVersion { - chart_source: &helm_chart.repo.name, + chart_source, chart_name: &helm_chart.name, chart_version: Some(&helm_chart.version), }, diff --git a/rust/stackablectl/CHANGELOG.md b/rust/stackablectl/CHANGELOG.md index bc493c58..91507e68 100644 --- a/rust/stackablectl/CHANGELOG.md +++ b/rust/stackablectl/CHANGELOG.md @@ -10,9 +10,11 @@ All notable changes to this project will be documented in this file. - Add `uninstall` subcommand for `demo`/`stack` commands ([#429]). - Add confirmation prompt to `install` subcommand for namespace selection ([#429]). - Add `--assume-yes` option for running commands non-interactively ([#429]). +- Support Helm charts sourced from OCI registries in demo/stack manifests ([#440]). [#429]: https://github.com/stackabletech/stackable-cockpit/pull/429 [#438]: https://github.com/stackabletech/stackable-cockpit/pull/438 +[#440]: https://github.com/stackabletech/stackable-cockpit/pull/440 ## [1.4.0] - 2026-03-18 From 42b93d859129ee3ffedc80fc2475108e9a618516 Mon Sep 17 00:00:00 2001 From: Benedikt Labrenz Date: Mon, 11 May 2026 09:08:39 +0200 Subject: [PATCH 62/63] chore: Remove old frontend docs (#441) * remove old frontend docs & clean up gh workflows * remove images of old frontend --- .github/workflows/pr_cockpit.yml | 1 - docs/antora.yml | 1 - docs/modules/ROOT/pages/index.adoc | 1 - docs/modules/cockpit/images/login-view.png | Bin 150892 -> 0 bytes .../modules/cockpit/images/stacklets-view.png | Bin 134286 -> 0 bytes docs/modules/cockpit/nav.adoc | 2 - docs/modules/cockpit/pages/index.adoc | 16 ------ docs/modules/cockpit/pages/installation.adoc | 51 ------------------ 8 files changed, 72 deletions(-) delete mode 100644 docs/modules/cockpit/images/login-view.png delete mode 100644 docs/modules/cockpit/images/stacklets-view.png delete mode 100644 docs/modules/cockpit/nav.adoc delete mode 100644 docs/modules/cockpit/pages/index.adoc delete mode 100644 docs/modules/cockpit/pages/installation.adoc diff --git a/.github/workflows/pr_cockpit.yml b/.github/workflows/pr_cockpit.yml index 1248c07b..599b4226 100644 --- a/.github/workflows/pr_cockpit.yml +++ b/.github/workflows/pr_cockpit.yml @@ -7,7 +7,6 @@ on: - ".github/workflows/pr_cockpit.yml" - "rust/stackable-cockpitd/**" - "rust/stackable-cockpit/**" - - "docs/modules/cockpit/**" - "docs/modules/ROOT/**" - "Cargo.lock" - "deploy/**" diff --git a/docs/antora.yml b/docs/antora.yml index 45968107..3578e46a 100644 --- a/docs/antora.yml +++ b/docs/antora.yml @@ -3,5 +3,4 @@ name: management title: SDP Management version: "nightly" nav: - - modules/cockpit/nav.adoc - modules/stackablectl/nav.adoc diff --git a/docs/modules/ROOT/pages/index.adoc b/docs/modules/ROOT/pages/index.adoc index 6dd74e8c..6c54f67f 100644 --- a/docs/modules/ROOT/pages/index.adoc +++ b/docs/modules/ROOT/pages/index.adoc @@ -1,4 +1,3 @@ = Management Tools for the Stackable Data Platform -* xref:cockpit:index.adoc[] * xref:stackablectl:index.adoc[] diff --git a/docs/modules/cockpit/images/login-view.png b/docs/modules/cockpit/images/login-view.png deleted file mode 100644 index c9cc996c702894d3649626cbc3a1f936221c3857..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 150892 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 MxSUw2h~9_)1-8$+r~m)} diff --git a/docs/modules/cockpit/images/stacklets-view.png b/docs/modules/cockpit/images/stacklets-view.png deleted file mode 100644 index 9c76e034214e8f45862d4174f3459a47aed6ea21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 134286 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 D633c5 diff --git a/docs/modules/cockpit/nav.adoc b/docs/modules/cockpit/nav.adoc deleted file mode 100644 index fd44482e..00000000 --- a/docs/modules/cockpit/nav.adoc +++ /dev/null @@ -1,2 +0,0 @@ -* xref:index.adoc[Cockpit] -** xref:installation.adoc[Installation] diff --git a/docs/modules/cockpit/pages/index.adoc b/docs/modules/cockpit/pages/index.adoc deleted file mode 100644 index 41139372..00000000 --- a/docs/modules/cockpit/pages/index.adoc +++ /dev/null @@ -1,16 +0,0 @@ -= Stackable Cockpit - -IMPORTANT: The Stackable Cockpit is currently an early preview, and is not yet a fully supported component of the -Stackable Data Platform. - -The `Cockpit` application is a browser-based management tool which interacts with the Stackable data platform. Currently -it can display deployed stacklets and their status. The display can be compared with the -xref:management:stackablectl:commands/stacklet.adoc#list-stacklets[`stackablectl stacklet list`] command output. - -The installation is described in the xref:installation.adoc[installation guide]. - -.Stackable Cockpit login page -image::login-view.png[Image of the Stackable Cockpit login page] - -.Stackable Cockpit Stacklet list page -image::stacklets-view.png[Image of the Stackable Cockpit Stacklet list page] diff --git a/docs/modules/cockpit/pages/installation.adoc b/docs/modules/cockpit/pages/installation.adoc deleted file mode 100644 index 09d2115a..00000000 --- a/docs/modules/cockpit/pages/installation.adoc +++ /dev/null @@ -1,51 +0,0 @@ -= Installation - -The Stackable Cockpit is normally installed using Helm. - -== Prerequisites - -You will need: - -* a Kubernetes cluster -* kubectl -* Helm -* htpasswd (from Apache HTTPD) - -Resource sizing depends on cluster type(s), usage and scope, but as a starting point we recommend a minimum of the -following resources for this service: - -* 0.2 cores (e.g. i5 or similar) -* 256MB RAM - -== Authentication - -The Stackable Cockpit authenticates users using a htpasswd database. This file can be -created and maintained using the `htpasswd` tool: - -[source,console] ----- -$ htpasswd -Bc my-htpasswd first-user -$ htpasswd -B my-htpasswd second-user ----- - -NOTE: Stackable Cockpit _only_ supports bcrypt passwords (controlled by the - `-B` flag). - -== Installing - -First ensure that you have installed the Stackable Operators Helm repository: - -[source,console] ----- -$ helm repo add stackable-dev https://repo.stackable.tech/repository/helm-dev/ ----- - -Then install the Stackable Cockpit: - -[source,console] ----- -$ helm upgrade stackable-cockpit stackable-dev/stackable-cockpit --install \ - --version 0.0.0-dev --set-file htpasswd=my-htpasswd ----- - -Helm will deploy the service in Kubernetes containers. You're now ready to access the cockpit! From d4ddda43fbcea284b0ea2033eef50b43ff72a252 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCller?= Date: Mon, 1 Jun 2026 18:35:16 +0200 Subject: [PATCH 63/63] feat(stackablectl): check for namespace before attempting uninstall (#442) * feat(stackablectl): check for namespace before attempting uninstall * chore: extend changelog * Update rust/stackablectl/CHANGELOG.md Co-authored-by: Xenia --------- Co-authored-by: Xenia --- rust/stackablectl/CHANGELOG.md | 5 +++++ rust/stackablectl/src/cmds/demo.rs | 12 ++++++++++++ rust/stackablectl/src/cmds/stack.rs | 12 ++++++++++++ 3 files changed, 29 insertions(+) diff --git a/rust/stackablectl/CHANGELOG.md b/rust/stackablectl/CHANGELOG.md index 91507e68..25c586f9 100644 --- a/rust/stackablectl/CHANGELOG.md +++ b/rust/stackablectl/CHANGELOG.md @@ -12,9 +12,14 @@ All notable changes to this project will be documented in this file. - Add `--assume-yes` option for running commands non-interactively ([#429]). - Support Helm charts sourced from OCI registries in demo/stack manifests ([#440]). +### Changed + +- Abort early if `uninstall` is issued for `default` namespace ([#442]). + [#429]: https://github.com/stackabletech/stackable-cockpit/pull/429 [#438]: https://github.com/stackabletech/stackable-cockpit/pull/438 [#440]: https://github.com/stackabletech/stackable-cockpit/pull/440 +[#442]: https://github.com/stackabletech/stackable-cockpit/pull/442 ## [1.4.0] - 2026-03-18 diff --git a/rust/stackablectl/src/cmds/demo.rs b/rust/stackablectl/src/cmds/demo.rs index d01cf01b..2a7b5488 100644 --- a/rust/stackablectl/src/cmds/demo.rs +++ b/rust/stackablectl/src/cmds/demo.rs @@ -183,6 +183,11 @@ pub enum CmdError { demo_name: String, }, + #[snafu(display( + "demo {demo_name:?} cannot be uninstalled from the {DEFAULT_NAMESPACE:?} namespace, because Kubernetes does not allow deleting it. Pass --namespace if the demo was installed in a different namespace, or delete the demo's resources manually" + ))] + UninstallFromDefaultNamespace { demo_name: String }, + #[snafu(display("failed to build labels for demo resources"))] BuildLabels { source: LabelError }, @@ -525,6 +530,13 @@ async fn uninstall_cmd( // Init result output and progress output let mut output = Cli::result(); + ensure!( + args.namespaces.namespace != DEFAULT_NAMESPACE, + UninstallFromDefaultNamespaceSnafu { + demo_name: args.demo_name.clone(), + } + ); + let proceed_with_uninstall = args.prompt_args.assume_yes || { tracing_indicatif::suspend_tracing_indicatif(|| -> Result { diff --git a/rust/stackablectl/src/cmds/stack.rs b/rust/stackablectl/src/cmds/stack.rs index 11b7452a..d57f60a4 100644 --- a/rust/stackablectl/src/cmds/stack.rs +++ b/rust/stackablectl/src/cmds/stack.rs @@ -178,6 +178,11 @@ pub enum CmdError { stack_name: String, }, + #[snafu(display( + "stack {stack_name:?} cannot be uninstalled from the {DEFAULT_NAMESPACE:?} namespace, because Kubernetes does not allow deleting it. Pass --namespace if the stack was installed in a different namespace, or delete the stack's resources manually" + ))] + UninstallFromDefaultNamespace { stack_name: String }, + #[snafu(display("failed to build labels for stack resources"))] BuildLabels { source: LabelError }, @@ -496,6 +501,13 @@ async fn uninstall_cmd( ) -> Result { let mut output = Cli::result(); + ensure!( + args.namespaces.namespace != DEFAULT_NAMESPACE, + UninstallFromDefaultNamespaceSnafu { + stack_name: args.stack_name.clone(), + } + ); + let proceed_with_uninstall = args.prompt_args.assume_yes || tracing_indicatif::suspend_tracing_indicatif(|| -> Result { Confirm::new()