getmeta 2026.2.10

Not just gold builds anymore!
Documentation
use polars::prelude::*;
use std::path::PathBuf;

#[tokio::main]
async fn main() {
    let args: Vec<String> = std::env::args().collect();
    let amiid = getmeta::hostname();
    println!("Hostname: {}", amiid);
    let csvfile;
    let path: String;
    let local = std::env::current_dir().unwrap();
    if cfg!(target_os = "windows") {
        path = format!("{}\\mmi-{}.parquet", local.display(), &amiid);
        csvfile = getmeta::collectmsft(amiid.clone());
    } else {
        path = format!("{}/mmi-{}.parquet", local.display(), &amiid);
        csvfile = getmeta::collectunix(amiid.clone());
    }
    println!("CSV File: {}", &csvfile);
    let file = std::fs::File::create(&path).unwrap();
    let mut df = CsvReadOptions::default().with_has_header(true).try_into_reader_with_file_path(Some(PathBuf::from(&csvfile))).unwrap().finish().unwrap();
    ParquetWriter::new(file).with_compression(ParquetCompression::Snappy).finish(&mut df).unwrap();
    println!("Parquet File: {}", &path);
    if args.len() == 4 {
        let uuid = uuid::Uuid::new_v4();
        let s3file = format!("{}/mmi-{}-uuid-{}.parquet", args[3], &amiid, uuid);
        println!("Bucket: s3://{}/{}", args[1], s3file);
        let body = aws_sdk_s3::primitives::ByteStream::from_path(std::path::Path::new(&path)).await.unwrap();
        let region = aws_sdk_s3::config::Region::new(args[2].clone());
        let config = aws_config::from_env().region(region).load().await;
        let client = aws_sdk_s3::Client::new(&config);
        let response = client.put_object().bucket(&args[1]).key(&s3file).body(body).send().await.unwrap();
        println!("Response: {:?}", response);
    } else {
        println!("getmeta <bucket> <region> <prefix>");
    }
}