ligen_core/generator/context/
arguments.rs1use crate::prelude::*;
4use crate::generator::context::BuildType;
5
6use serde::{Deserialize, Serialize};
7use std::path::PathBuf;
8
9#[derive(Debug, Default, Clone, Serialize, Deserialize)]
11pub struct Arguments {
12 pub crate_name: String,
14 pub build_type: BuildType,
16 pub target_dir: PathBuf,
18 pub manifest_path: PathBuf,
20 pub workspace_path: Option<PathBuf>,
22 pub workspace_member_package_id: Option<String>,
24}
25
26impl Arguments {
27 pub fn to_env(&self) {
29 let json = serde_json::to_string(self).expect("Couldn't serialize.");
30 std::env::set_var("CARGO_LIGEN_ARGUMENTS", json);
31 }
32
33 pub fn from_env() -> Result<Self> {
35 match std::env::var("CARGO_LIGEN_ARGUMENTS") {
36 Ok(json_string) => match serde_json::from_str(&json_string) {
37 Ok(arguments) => Ok(arguments),
38 Err(err) => Err(err.into()),
39 },
40 Err(_) => Err("Couldn't find CARGO_LIGEN_ARGUMENTS env var".into()),
41 }
42 }
43}