rkubectl_app/cli/command/
get.rs1use super::*;
2
3#[derive(Clone, Debug, Args)]
15
16pub struct Get {
17 #[command(flatten)]
18 params: ShowParams,
19
20 #[arg(long, conflicts_with = "regular")]
22 raw: Option<String>,
23
24 #[arg(group = "regular", long)]
26 subresource: Option<String>,
27
28 #[arg(group = "regular", required = true)]
30 resources: Option<Vec<String>>,
31}
32
33impl Get {
34 pub async fn exec(&self, context: &Context) -> RkResult<()> {
35 let kubeapi = context.kubeapi();
36 if let Some(raw) = self.raw.as_deref() {
37 let name = raw.strip_prefix("/").unwrap_or(raw);
38 let text = kubeapi.raw_get(name).await?;
39 println!("{text}");
40 } else {
41 let resources = self.resources(kubeapi)?;
42 let mut params = self.params;
43 params.show_kind |= resources.len() > 1;
44 let namespace = kubeapi.show_namespace();
45 for resource in resources {
46 let data = resource.get(kubeapi).await?;
47 let output = context.output_deprecated();
48 println!("{}", data.output(namespace, params, output));
49 }
50 }
51 Ok(())
52 }
53
54 fn resources(&self, kubeapi: &Kubeapi) -> kube::Result<Vec<ResourceArg>> {
55 let resources = self.resources.as_deref().unwrap_or_default();
56 ResourceArg::from_strings(resources, kubeapi)
57 .inspect(|resources| info!(args=?self.resources, ?resources))
58 .map_err(|_err| kube::Error::LinesCodecMaxLineLengthExceeded)
59 }
60}