// cmd/tag/show_cmd.mbt
//
// 统一 `show` 子命令:自动识别格式,用统一模型打印常用字段。

///|
/// 打印统一标签视图。
fn cmd_show_unified(path : String) -> Unit {
  let data = @fs.read_file_to_bytes(path) catch {
    _ => {
      println("读取失败:\{path}")
      @sys.exit(1)
      return
    }
  }
  let info = @moontag.read_track_info(data.exact_view()) catch {
    e => {
      println("解析失败: \{e.message()}")
      @sys.exit(1)
      return
    }
  }
  println("格式: \{info.format.name()}  (\{data.length()} 字节)")
  print_opt("标题", info.title)
  print_opt("艺术家", info.artist)
  print_opt("专辑", info.album)
  print_opt("音轨", info.track)
  print_opt("日期", info.date)
  print_opt("流派", info.genre)
  print_opt("备注", info.comment)
  println("封面: \{if info.has_cover { "有" } else { "无" }}")
}

///|
/// 打印一个可选字段。
fn print_opt(label : String, value : String?) -> Unit {
  match value {
    Some(v) => println("  \{label}: \{v}")
    None => ()
  }
}