main.rs 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. mod config;
  2. mod dart_event;
  3. mod proto;
  4. mod util;
  5. use clap::{App, Arg};
  6. fn main() {
  7. std::env::set_var("RUST_LOG", "Info");
  8. env_logger::init();
  9. let matches = app().get_matches();
  10. if let Some(ref matches) = matches.subcommand_matches("pb-gen") {
  11. let rust_source = matches.value_of("rust_source").unwrap();
  12. let derive_meta = matches.value_of("derive_meta").unwrap();
  13. let flutter_package_lib = matches.value_of("flutter_package_lib").unwrap();
  14. proto::ProtoGenBuilder::new()
  15. .set_rust_source_dir(rust_source)
  16. .set_derive_meta_dir(derive_meta)
  17. .set_flutter_package_lib(flutter_package_lib)
  18. .build()
  19. .gen();
  20. }
  21. if let Some(ref matches) = matches.subcommand_matches("dart-event") {
  22. let rust_source = matches.value_of("rust_source").unwrap().to_string();
  23. let output_dir = matches.value_of("output").unwrap().to_string();
  24. let code_gen = dart_event::DartEventCodeGen {
  25. rust_source,
  26. output_dir,
  27. };
  28. code_gen.gen();
  29. }
  30. }
  31. pub fn app<'a, 'b>() -> App<'a, 'b> {
  32. let app = App::new("flowy-tool")
  33. .version("0.1")
  34. .author("nathan")
  35. .about("flowy tool")
  36. .subcommand(
  37. App::new("pb-gen")
  38. .about("Generate proto file from rust code")
  39. .arg(
  40. Arg::with_name("rust_source")
  41. .long("rust_source")
  42. .value_name("DIRECTORY")
  43. .help("Directory of the cargo workspace"),
  44. )
  45. .arg(
  46. Arg::with_name("derive_meta")
  47. .long("derive_meta")
  48. .value_name("PATH")
  49. .help("Caching information used by flowy-derive"),
  50. )
  51. .arg(
  52. Arg::with_name("flutter_package_lib")
  53. .long("flutter_package_lib")
  54. .value_name("DIRECTORY"),
  55. ),
  56. )
  57. .subcommand(
  58. App::new("dart-event")
  59. .about("Generate the codes that sending events from rust ast")
  60. .arg(
  61. Arg::with_name("rust_source")
  62. .long("rust_source")
  63. .value_name("DIRECTORY")
  64. .help("Directory of the cargo workspace"),
  65. )
  66. .arg(
  67. Arg::with_name("output")
  68. .long("output")
  69. .value_name("DIRECTORY"),
  70. ),
  71. );
  72. app
  73. }