zoi_cli/cmd/package/
inspect.rs1use std::path::PathBuf;
4
5use anyhow::{Result, anyhow};
6use clap::Parser;
7
8#[derive(Parser, Debug)]
10pub struct InspectCommand {
11 #[arg(required = true)]
13 pub package_file: PathBuf,
14
15 #[arg(long)]
17 pub json: bool,
18
19 #[arg(long)]
21 pub platform: Option<String>,
22
23 #[arg(long)]
25 pub version_override: Option<String>
26}
27
28pub fn run(args: InspectCommand) -> Result<()> {
39 let platform = match args.platform {
40 Some(p) => p,
41 None => crate::pkg::utils::get_platform()?
42 };
43
44 let file_path = args.package_file.to_str().ok_or_else(|| {
45 anyhow!(
46 "Path contains invalid UTF-8 characters: {}",
47 args.package_file.display()
48 )
49 })?;
50
51 let package = crate::pkg::lua::parser::parse_lua_package_for_platform(
52 file_path,
53 &platform,
54 args.version_override.as_deref(),
55 None,
56 true
57 )?;
58
59 if args.json {
60 let json = serde_json::to_string_pretty(&package)?;
61 println!("{json}");
62 } else {
63 println!(
64 "{} {} - {}",
65 package.name,
66 package.version.as_deref().unwrap_or("latest"),
67 package.repo
68 );
69 println!("{}", package.description);
70 }
71
72 Ok(())
73}