1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- use std::fs;
- use std::path::{Path, PathBuf};
- #[derive(serde::Deserialize, Clone, Debug)]
- pub struct FlowyConfig {
- #[serde(default)]
- pub event_files: Vec<String>,
- // Collect AST from the file or directory specified by proto_input to generate the proto files.
- #[serde(default)]
- pub proto_input: Vec<String>,
- // Output path for the generated proto files. The default value is default_proto_output()
- #[serde(default = "default_proto_output")]
- pub proto_output: String,
- // Create a crate that stores the generated protobuf Rust structures. The default value is default_protobuf_crate()
- #[serde(default = "default_protobuf_crate")]
- pub protobuf_crate_path: String,
- }
- fn default_proto_output() -> String {
- "resources/proto".to_owned()
- }
- fn default_protobuf_crate() -> String {
- "src/protobuf".to_owned()
- }
- impl FlowyConfig {
- pub fn from_toml_file(path: &Path) -> Self {
- let content = fs::read_to_string(path).unwrap();
- let config: FlowyConfig = toml::from_str(content.as_ref()).unwrap();
- config
- }
- }
- pub struct CrateConfig {
- pub crate_path: PathBuf,
- pub crate_folder: String,
- pub flowy_config: FlowyConfig,
- }
- pub fn parse_crate_config_from(entry: &walkdir::DirEntry) -> Option<CrateConfig> {
- let mut config_path = entry.path().parent().unwrap().to_path_buf();
- config_path.push("Flowy.toml");
- if !config_path.as_path().exists() {
- return None;
- }
- let crate_path = entry.path().parent().unwrap().to_path_buf();
- let flowy_config = FlowyConfig::from_toml_file(config_path.as_path());
- let crate_folder = crate_path.file_stem().unwrap().to_str().unwrap().to_string();
- Some(CrateConfig {
- crate_path,
- crate_folder,
- flowy_config,
- })
- }
|