use miette::{Context, IntoDiagnostic, Result}; use serde::Deserialize; use std::collections::HashMap; use std::env::args; use std::fs::read_to_string; use vdf_reader::from_str; #[derive(Debug, Deserialize)] #[allow(dead_code)] struct LibraryFolders { #[serde(rename = "libraryfolders")] folders: Vec, } #[derive(Debug, Deserialize)] #[allow(dead_code)] struct LibraryFolder { path: String, label: String, #[serde(rename = "contentid")] content_id: i64, #[serde(rename = "totalsize")] total_size: u64, update_clean_bytes_tally: u64, time_last_update_verified: u64, apps: HashMap, } fn main() -> Result<()> { let path = args().nth(1).expect("no path provided"); let raw = read_to_string(path) .into_diagnostic() .wrap_err("failed to read input")?; let folders: LibraryFolders = from_str(&raw)?; dbg!(folders); Ok(()) }