| pub async fn ffx_plugin_impl<D, DFut, R, RFut, E, EFut, F, FFut>( |
| {% if not includes_execution and not includes_subcommands %} |
| _daemon_factory: D, |
| _remote_factory: R, |
| _fastboot_factory: F, |
| _is_experiment: E, |
| _cmd: {{suite_args_lib}}::FfxPluginCommand, |
| {% else %} |
| daemon_factory: D, |
| remote_factory: R, |
| fastboot_factory: F, |
| is_experiment: E, |
| cmd: {{suite_args_lib}}::FfxPluginCommand, |
| {% endif %} |
| ) -> Result<(), anyhow::Error> |
| where |
| D: FnOnce() -> DFut, |
| DFut: std::future::Future< |
| Output = anyhow::Result<fidl_fuchsia_developer_bridge::DaemonProxy>, |
| >, |
| R: FnOnce() -> RFut, |
| RFut: std::future::Future< |
| Output = anyhow::Result< |
| fidl_fuchsia_developer_remotecontrol::RemoteControlProxy, |
| >, |
| >, |
| F: FnOnce() -> FFut, |
| FFut: std::future::Future< |
| Output = anyhow::Result<fidl_fuchsia_developer_bridge::FastbootProxy>, |
| >, |
| E: FnOnce(&'static str) -> EFut, |
| EFut: std::future::Future<Output = bool>, |
| { |
| {% if includes_execution %} |
| {% if includes_subcommands %} |
| match cmd.subcommand { |
| Some(sub) => match sub { |
| {% for plugin in plugins %} |
| {{suite_subcommand_lib}}::Subcommand::{{plugin.enum}}(c) => {{plugin.lib}}_suite::ffx_plugin_impl(daemon_factory, remote_factory, fastboot_factory, is_experiment, c).await, |
| {% endfor %} |
| }, |
| None => {{execution_lib}}::ffx_plugin_impl(daemon_factory, remote_factory, fastboot_factory, is_experiment, cmd).await |
| } |
| {% else %} |
| {{execution_lib}}::ffx_plugin_impl(daemon_factory, remote_factory, fastboot_factory, is_experiment, cmd).await |
| {% endif %} |
| |
| {% else %} |
| {% if includes_subcommands %} |
| match cmd.subcommand { |
| {% for plugin in plugins %} |
| {{suite_subcommand_lib}}::Subcommand::{{plugin.enum}}(c) => {{plugin.lib}}_suite::ffx_plugin_impl(daemon_factory, remote_factory, fastboot_factory, is_experiment, c).await, |
| {% endfor %} |
| } |
| {% else %} |
| println!("Subcommand not implemented yet."); |
| Ok(()) |
| {% endif %} |
| {% endif %} |
| } |