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