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