1use serde::{Deserialize, Serialize};
7use std::collections::HashMap;
8use std::path::PathBuf;
9use toml::Value;
10
11mod document;
12
13pub use document::*;
14
15pub const YARNER_VERSION: &str = env!(
17 "CARGO_PKG_VERSION",
18 "Environmental variable CARGO_PKG_VERSION not found"
19);
20
21#[derive(Debug, Serialize, Deserialize)]
23pub struct YarnerData {
24 pub context: Context,
26 pub documents: HashMap<PathBuf, Document>,
28}
29
30#[derive(Debug, Serialize, Deserialize)]
32pub struct Context {
33 pub config: Value,
35 pub name: String,
37 pub yarner_version: String,
39}
40
41pub fn parse_input() -> serde_json::Result<YarnerData> {
43 serde_json::from_reader(std::io::stdin())
44}
45
46pub fn write_output(data: &YarnerData) -> serde_json::Result<()> {
48 println!("{}", serde_json::to_string_pretty(data)?);
49 Ok(())
50}