Our own Helm Command/Resource/Executor #13
							
								
								
									
										133
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										133
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							| @ -4,19 +4,13 @@ version = 4 | ||||
| 
 | ||||
| [[package]] | ||||
| name = "addr2line" | ||||
| version = "0.21.0" | ||||
| version = "0.24.2" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" | ||||
| 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" | ||||
| @ -198,17 +192,17 @@ checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "backtrace" | ||||
| version = "0.3.71" | ||||
| version = "0.3.75" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" | ||||
| checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" | ||||
| dependencies = [ | ||||
|  "addr2line", | ||||
|  "cc", | ||||
|  "cfg-if", | ||||
|  "libc", | ||||
|  "miniz_oxide 0.7.4", | ||||
|  "miniz_oxide", | ||||
|  "object", | ||||
|  "rustc-demangle", | ||||
|  "windows-targets 0.52.6", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| @ -356,9 +350,9 @@ dependencies = [ | ||||
| 
 | ||||
| [[package]] | ||||
| name = "cc" | ||||
| version = "1.2.20" | ||||
| version = "1.2.21" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "04da6a0d40b948dfc4fa8f5bbf402b0fc1a64a28dbf7d12ffd683550f2c1b63a" | ||||
| checksum = "8691782945451c1c383942c4874dbe63814f61cb57ef773cda2972682b7bb3c0" | ||||
| dependencies = [ | ||||
|  "shlex", | ||||
| ] | ||||
| @ -453,9 +447,9 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "color-eyre" | ||||
| version = "0.6.3" | ||||
| version = "0.6.4" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "55146f5e46f237f7423d74111267d4597b59b0dad0ffaf7303bce9945d843ad5" | ||||
| checksum = "e6e1761c0e16f8883bbbb8ce5990867f4f06bf11a0253da6495a04ce4b6ef0ec" | ||||
| dependencies = [ | ||||
|  "backtrace", | ||||
|  "color-spantrace", | ||||
| @ -468,9 +462,9 @@ dependencies = [ | ||||
| 
 | ||||
| [[package]] | ||||
| name = "color-spantrace" | ||||
| version = "0.2.1" | ||||
| version = "0.2.2" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "cd6be1b2a7e382e2b98b43b2adcca6bb0e465af0bdd38123873ae61eb17a72c2" | ||||
| checksum = "2ddd8d5bfda1e11a501d0a7303f3bfed9aa632ebdb859be40d0fd70478ed70d5" | ||||
| dependencies = [ | ||||
|  "once_cell", | ||||
|  "owo-colors", | ||||
| @ -1121,7 +1115,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "7ced92e76e966ca2fd84c8f7aa01a4aea65b0eb6648d72f7c8f3e2764a67fece" | ||||
| dependencies = [ | ||||
|  "crc32fast", | ||||
|  "miniz_oxide 0.8.8", | ||||
|  "miniz_oxide", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| @ -1343,9 +1337,9 @@ dependencies = [ | ||||
| 
 | ||||
| [[package]] | ||||
| name = "gimli" | ||||
| version = "0.28.1" | ||||
| version = "0.31.1" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" | ||||
| checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "group" | ||||
| @ -1379,9 +1373,9 @@ dependencies = [ | ||||
| 
 | ||||
| [[package]] | ||||
| name = "h2" | ||||
| version = "0.4.9" | ||||
| version = "0.4.10" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "75249d144030531f8dee69fe9cea04d3edf809a017ae445e2abdff6629e86633" | ||||
| checksum = "a9421a676d1b147b16b82c9225157dc629087ef8ec4d5e2960f9437a90dac0a5" | ||||
| dependencies = [ | ||||
|  "atomic-waker", | ||||
|  "bytes", | ||||
| @ -1430,6 +1424,7 @@ dependencies = [ | ||||
|  "serde-value", | ||||
|  "serde_json", | ||||
|  "serde_yaml", | ||||
|  "temp-dir", | ||||
|  "temp-file", | ||||
|  "tokio", | ||||
|  "url", | ||||
| @ -1487,9 +1482,9 @@ dependencies = [ | ||||
| 
 | ||||
| [[package]] | ||||
| name = "hashbrown" | ||||
| version = "0.15.2" | ||||
| version = "0.15.3" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" | ||||
| checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3" | ||||
| dependencies = [ | ||||
|  "allocator-api2", | ||||
|  "equivalent", | ||||
| @ -1703,7 +1698,7 @@ dependencies = [ | ||||
|  "bytes", | ||||
|  "futures-channel", | ||||
|  "futures-util", | ||||
|  "h2 0.4.9", | ||||
|  "h2 0.4.10", | ||||
|  "http 1.3.1", | ||||
|  "http-body 1.0.1", | ||||
|  "httparse", | ||||
| @ -2086,9 +2081,9 @@ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "jiff" | ||||
| version = "0.2.10" | ||||
| version = "0.2.13" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "5a064218214dc6a10fbae5ec5fa888d80c45d611aba169222fc272072bf7aef6" | ||||
| checksum = "f02000660d30638906021176af16b17498bd0d12813dbfe7b276d8bc7f3c0806" | ||||
| dependencies = [ | ||||
|  "jiff-static", | ||||
|  "log", | ||||
| @ -2099,9 +2094,9 @@ dependencies = [ | ||||
| 
 | ||||
| [[package]] | ||||
| name = "jiff-static" | ||||
| version = "0.2.10" | ||||
| version = "0.2.13" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "199b7932d97e325aff3a7030e141eafe7f2c6268e1d1b24859b753a627f45254" | ||||
| checksum = "f3c30758ddd7188629c6713fc45d1188af4f44c90582311d0c8d8c9907f60c48" | ||||
| dependencies = [ | ||||
|  "proc-macro2", | ||||
|  "quote", | ||||
| @ -2260,9 +2255,9 @@ checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "libm" | ||||
| version = "0.2.13" | ||||
| version = "0.2.15" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "c9627da5196e5d8ed0b0495e61e518847578da83483c37288316d9b2e03a7f72" | ||||
| checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "libredfish" | ||||
| @ -2357,15 +2352,6 @@ version = "0.3.17" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "miniz_oxide" | ||||
| version = "0.7.4" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" | ||||
| dependencies = [ | ||||
|  "adler", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "miniz_oxide" | ||||
| version = "0.8.8" | ||||
| @ -2510,18 +2496,18 @@ dependencies = [ | ||||
| 
 | ||||
| [[package]] | ||||
| name = "object" | ||||
| version = "0.32.2" | ||||
| version = "0.36.7" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" | ||||
| checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" | ||||
| dependencies = [ | ||||
|  "memchr", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "octocrab" | ||||
| version = "0.44.0" | ||||
| version = "0.44.1" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "aaf799a9982a4d0b4b3fa15b4c1ff7daf5bd0597f46456744dcbb6ddc2e4c827" | ||||
| checksum = "86996964f8b721067b6ed238aa0ccee56ecad6ee5e714468aa567992d05d2b91" | ||||
| dependencies = [ | ||||
|  "arc-swap", | ||||
|  "async-trait", | ||||
| @ -2603,9 +2589,9 @@ checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "openssl-sys" | ||||
| version = "0.9.107" | ||||
| version = "0.9.108" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "8288979acd84749c744a9014b4382d42b8f7b2592847b5afb2ed29e5d16ede07" | ||||
| checksum = "e145e1651e858e820e4860f7b9c5e169bc1d8ce1c86043be79fa7b7634821847" | ||||
| dependencies = [ | ||||
|  "cc", | ||||
|  "libc", | ||||
| @ -2669,9 +2655,9 @@ dependencies = [ | ||||
| 
 | ||||
| [[package]] | ||||
| name = "owo-colors" | ||||
| version = "3.5.0" | ||||
| version = "4.2.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" | ||||
| checksum = "1036865bb9422d3300cf723f657c2851d0e9ab12567854b1f4eba3d77decf564" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "p256" | ||||
| @ -3136,9 +3122,9 @@ dependencies = [ | ||||
| 
 | ||||
| [[package]] | ||||
| name = "redox_syscall" | ||||
| version = "0.5.11" | ||||
| version = "0.5.12" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "d2f103c6d277498fbceb16e84d317e2a400f160f46904d5f5410848c829511a3" | ||||
| checksum = "928fca9cf2aa042393a8325b9ead81d2f0df4cb12e1e24cef072922ccd99c5af" | ||||
| dependencies = [ | ||||
|  "bitflags 2.9.0", | ||||
| ] | ||||
| @ -3234,7 +3220,7 @@ dependencies = [ | ||||
|  "encoding_rs", | ||||
|  "futures-core", | ||||
|  "futures-util", | ||||
|  "h2 0.4.9", | ||||
|  "h2 0.4.10", | ||||
|  "http 1.3.1", | ||||
|  "http-body 1.0.1", | ||||
|  "http-body-util", | ||||
| @ -3480,9 +3466,9 @@ dependencies = [ | ||||
| 
 | ||||
| [[package]] | ||||
| name = "rustix" | ||||
| version = "1.0.5" | ||||
| version = "1.0.7" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "d97817398dd4bb2e6da002002db259209759911da105da92bec29ccb12cf58bf" | ||||
| checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" | ||||
| dependencies = [ | ||||
|  "bitflags 2.9.0", | ||||
|  "errno", | ||||
| @ -3493,9 +3479,9 @@ dependencies = [ | ||||
| 
 | ||||
| [[package]] | ||||
| name = "rustls" | ||||
| version = "0.23.26" | ||||
| version = "0.23.27" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "df51b5869f3a441595eac5e8ff14d486ff285f7b8c0df8770e49c3b56351f0f0" | ||||
| checksum = "730944ca083c1c233a75c09f199e973ca499344a2b7ba9e755c457e86fb4a321" | ||||
| dependencies = [ | ||||
|  "log", | ||||
|  "once_cell", | ||||
| @ -3551,15 +3537,18 @@ dependencies = [ | ||||
| 
 | ||||
| [[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 = [ | ||||
|  "zeroize", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "rustls-webpki" | ||||
| version = "0.103.1" | ||||
| version = "0.103.2" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "fef8b8769aaccf73098557a87cd1816b4f9c7c16811c9c77142aa695c16f2c03" | ||||
| checksum = "7149975849f1abb3832b246010ef62ccc80d3a76169517ada7188252b9cfb437" | ||||
| dependencies = [ | ||||
|  "ring", | ||||
|  "rustls-pki-types", | ||||
| @ -3786,9 +3775,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", | ||||
| @ -4050,9 +4039,9 @@ dependencies = [ | ||||
| 
 | ||||
| [[package]] | ||||
| name = "synstructure" | ||||
| version = "0.13.1" | ||||
| version = "0.13.2" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" | ||||
| checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" | ||||
| dependencies = [ | ||||
|  "proc-macro2", | ||||
|  "quote", | ||||
| @ -4107,6 +4096,12 @@ version = "1.0.1" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "temp-dir" | ||||
| version = "0.1.16" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "83176759e9416cf81ee66cb6508dbfe9c96f20b8b56265a39917551c23c70964" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "temp-file" | ||||
| version = "0.1.9" | ||||
| @ -4122,7 +4117,7 @@ dependencies = [ | ||||
|  "fastrand", | ||||
|  "getrandom 0.3.2", | ||||
|  "once_cell", | ||||
|  "rustix 1.0.5", | ||||
|  "rustix 1.0.7", | ||||
|  "windows-sys 0.59.0", | ||||
| ] | ||||
| 
 | ||||
| @ -4234,9 +4229,9 @@ dependencies = [ | ||||
| 
 | ||||
| [[package]] | ||||
| name = "tokio" | ||||
| version = "1.44.2" | ||||
| version = "1.45.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "e6b88822cbe49de4185e3a4cbf8321dd487cf5fe0c5c65695fef6346371e9c48" | ||||
| checksum = "2513ca694ef9ede0fb23fe71a4ee4107cb102b9dc1930f6d0fd77aae068ae165" | ||||
| dependencies = [ | ||||
|  "backtrace", | ||||
|  "bytes", | ||||
| @ -4323,9 +4318,9 @@ dependencies = [ | ||||
| 
 | ||||
| [[package]] | ||||
| name = "tower-http" | ||||
| version = "0.6.2" | ||||
| version = "0.6.3" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "403fa3b783d4b626a8ad51d766ab03cb6d2dbfc46b1c5d4448395e6628dc9697" | ||||
| checksum = "a1cfca9ae570b2a6efc764a88e914c29b3dfaa1fafe5f495812ae97ec9bc4d53" | ||||
| dependencies = [ | ||||
|  "base64 0.22.1", | ||||
|  "bitflags 2.9.0", | ||||
|  | ||||
| @ -47,3 +47,4 @@ fqdn = { version = "0.4.6", features = [ | ||||
|     "punycode", | ||||
|     "serde", | ||||
| ] } | ||||
| temp-dir = "0.1.14" | ||||
|  | ||||
| @ -1,15 +1,68 @@ | ||||
| use std::collections::HashMap; | ||||
| use std::path::PathBuf; | ||||
| use std::process::Command; | ||||
| use std::path::{Path, PathBuf}; | ||||
| use std::process::{Command, Output}; | ||||
| 
 | ||||
| pub struct HelmCommand { | ||||
|     pub env: HashMap<String, String>, | ||||
|     pub path: PathBuf, | ||||
|     pub args: Vec<String>, | ||||
|     pub api_versions: Vec<String>, | ||||
|     pub kube_version: String, | ||||
|     pub debug: bool, | ||||
|     pub globals: HelmGlobals, | ||||
|     pub chart: HelmChart, | ||||
| } | ||||
| 
 | ||||
| pub struct HelmGlobals { | ||||
|     chart_home: PathBuf, | ||||
|     config_home: PathBuf, | ||||
| } | ||||
| 
 | ||||
| enum MergeMode { | ||||
|     Merge, | ||||
|     Override, | ||||
|     Replace, | ||||
| } | ||||
| 
 | ||||
| pub struct HelmChart { | ||||
|     name: String, | ||||
|     version: String, | ||||
|     repo: String, | ||||
|     release_name: String, | ||||
|     namespace: String, | ||||
|     additional_values_files: Vec<PathBuf>, | ||||
|     values_file: PathBuf, | ||||
|     values_inline: serde_yaml::Mapping, | ||||
|     values_merge: MergeMode, | ||||
|     include_crds: bool, | ||||
|     skip_hooks: bool, | ||||
|     api_versions: Vec<String>, | ||||
|     kube_version: String, | ||||
|     name_template: String, | ||||
|     skip_tests: bool, | ||||
|     debug: bool, | ||||
| } | ||||
| 
 | ||||
| impl HelmCommand { | ||||
|     pub fn generate() -> Result<Ok, Err> { | ||||
|         Ok(()) | ||||
|     pub fn generate(self) -> Result<Output, std::io::Error> { | ||||
|         self.run_command(vec![]) | ||||
|     } | ||||
| 
 | ||||
|     pub fn version(self) -> Result<Output, std::io::Error> { | ||||
|         self.run_command(vec!["version", "-c", "--short"]) | ||||
|     } | ||||
| 
 | ||||
|     pub fn run_command(self, mut args: Vec<&str>) -> Result<Output, std::io::Error> { | ||||
|         if self.debug { | ||||
|             args.push("--debug"); | ||||
|         } | ||||
| 
 | ||||
|         Command::new(self.path) | ||||
|             .envs(self.env) | ||||
|             .env("HELM_CONFIG_HOME", &self.globals.config_home) | ||||
|             .env("HELM_CACHE_HOME", &self.globals.config_home) | ||||
|             .env("HELM_DATA_HOME", &self.globals.config_home) | ||||
|             .args(args) | ||||
|             .output() | ||||
|     } | ||||
| } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user