|
@@ -7,6 +7,7 @@ mod proto_info;
|
|
|
mod template;
|
|
|
|
|
|
use crate::code_gen::util::path_string_with_component;
|
|
|
+use itertools::Itertools;
|
|
|
use log::info;
|
|
|
pub use proto_gen::*;
|
|
|
pub use proto_info::*;
|
|
@@ -132,7 +133,7 @@ fn generate_dart_protobuf_files(
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-fn check_pb_dart_plugin() {
|
|
|
+pub fn check_pb_dart_plugin() {
|
|
|
if cfg!(target_os = "windows") {
|
|
|
//Command::new("cmd")
|
|
|
// .arg("/C")
|
|
@@ -141,15 +142,39 @@ fn check_pb_dart_plugin() {
|
|
|
// .expect("failed to execute process");
|
|
|
//panic!("{}", format!("\n❌ The protoc-gen-dart was not installed correctly."))
|
|
|
} else {
|
|
|
- let is_success = Command::new("sh")
|
|
|
+ let exit_result = Command::new("sh")
|
|
|
.arg("-c")
|
|
|
.arg("command -v protoc-gen-dart")
|
|
|
.status()
|
|
|
- .expect("failed to execute process")
|
|
|
- .success();
|
|
|
+ .expect("failed to execute process");
|
|
|
+
|
|
|
+ if !exit_result.success() {
|
|
|
+ let mut msg = "\n❌ Can't find protoc-gen-dart in $PATH:\n".to_string();
|
|
|
+ let output = Command::new("sh").arg("-c").arg("echo $PATH").output();
|
|
|
+ let paths = String::from_utf8(output.unwrap().stdout)
|
|
|
+ .unwrap()
|
|
|
+ .split(":")
|
|
|
+ .map(|s| s.to_string())
|
|
|
+ .collect::<Vec<String>>();
|
|
|
+
|
|
|
+ paths.iter().for_each(|s| msg.push_str(&format!("{}\n", s)));
|
|
|
+
|
|
|
+ match Command::new("sh").arg("-c").arg("which protoc-gen-dart").output() {
|
|
|
+ Ok(output) => {
|
|
|
+ msg.push_str(&format!(
|
|
|
+ "Installed protoc-gen-dart path: {:?}\n",
|
|
|
+ String::from_utf8(output.stdout).unwrap()
|
|
|
+ ));
|
|
|
+ }
|
|
|
+ Err(_) => {}
|
|
|
+ }
|
|
|
|
|
|
- if !is_success {
|
|
|
- panic!("{}", format!("\n❌ The protoc-gen-dart was not installed correctly. \n✅ You can fix that by adding \"{}\" to your shell's config file.(.bashrc, .bash, etc.)", "dart pub global activate protoc_plugin"))
|
|
|
+ msg.push_str(&format!("✅ You can fix that by adding:"));
|
|
|
+ msg.push_str(&format!("\n\texport PATH=\"$PATH\":\"$HOME/.pub-cache/bin\"\n",));
|
|
|
+ msg.push_str(&format!(
|
|
|
+ "to your shell's config file.(.bashrc, .bash, .profile, .zshrc etc.)"
|
|
|
+ ));
|
|
|
+ panic!("{}", msg)
|
|
|
}
|
|
|
}
|
|
|
}
|