main.rs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. // Copyright 2019-2021 Tauri Programme within The Commons Conservancy
  2. // SPDX-License-Identifier: Apache-2.0
  3. // SPDX-License-Identifier: MIT
  4. pub use anyhow::Result;
  5. mod build;
  6. mod dev;
  7. mod helpers;
  8. mod info;
  9. mod init;
  10. mod interface;
  11. mod plugin;
  12. mod signer;
  13. use clap::{AppSettings, FromArgMatches, IntoApp, Parser, Subcommand};
  14. #[derive(serde::Deserialize)]
  15. pub struct VersionMetadata {
  16. tauri: String,
  17. #[serde(rename = "tauri-build")]
  18. tauri_build: String,
  19. }
  20. #[derive(Parser)]
  21. #[clap(author, version, about, bin_name("cargo tauri"))]
  22. #[clap(global_setting(AppSettings::PropagateVersion))]
  23. #[clap(global_setting(AppSettings::UseLongFormatForHelpSubcommand))]
  24. #[clap(setting(AppSettings::SubcommandRequiredElseHelp))]
  25. struct Cli {
  26. #[clap(subcommand)]
  27. command: Commands,
  28. }
  29. #[derive(Subcommand)]
  30. enum Commands {
  31. Build(build::Options),
  32. Dev(dev::Options),
  33. Info(info::Options),
  34. Init(init::Options),
  35. Plugin(plugin::Cli),
  36. Signer(signer::Cli),
  37. }
  38. fn format_error<I: IntoApp>(err: clap::Error) -> clap::Error {
  39. let mut app = I::into_app();
  40. err.format(&mut app)
  41. }
  42. fn main() -> Result<()> {
  43. let matches = <Cli as IntoApp>::into_app()
  44. .arg(clap::Arg::new("cargo").hide(true).possible_value("tauri"))
  45. .get_matches();
  46. let res = <Cli as FromArgMatches>::from_arg_matches(&matches).map_err(format_error::<Cli>);
  47. let cli = match res {
  48. Ok(s) => s,
  49. Err(e) => e.exit(),
  50. };
  51. match cli.command {
  52. Commands::Build(options) => build::command(options)?,
  53. Commands::Dev(options) => dev::command(options)?,
  54. Commands::Info(options) => info::command(options)?,
  55. Commands::Init(options) => init::command(options)?,
  56. Commands::Plugin(cli) => plugin::command(cli)?,
  57. Commands::Signer(cli) => signer::command(cli)?,
  58. }
  59. /*if let Some(matches) = matches.subcommand_matches("dev") {
  60. dev::command(matches)?;
  61. } else if let Some(matches) = matches.subcommand_matches("build") {
  62. build::command(matches)?;
  63. } else if let Some(matches) = matches.subcommand_matches("signer") {
  64. signer::command(matches)?;
  65. } else if let Some(_) = matches.subcommand_matches("info") {
  66. info::command()?;
  67. } else if let Some(matches) = matches.subcommand_matches("init") {
  68. init::command(matches)?;
  69. } else if let Some(matches) = matches.subcommand_matches("plugin") {
  70. plugin::command(matches)?;
  71. }*/
  72. Ok(())
  73. }