()
| 149 | |
| 150 | #[tokio::main] |
| 151 | async fn main() -> Result<()> { |
| 152 | env_logger::init(); |
| 153 | |
| 154 | let Command { |
| 155 | workspace_root, |
| 156 | firedbg_home, |
| 157 | sub_command, |
| 158 | } = Command::from_args(); |
| 159 | |
| 160 | let workspace = &parse_workspace(&workspace_root) |
| 161 | .with_context(|| format!("Fail to parse metadata of workspace `{}`", workspace_root))?; |
| 162 | |
| 163 | log::info!("cargo_workspace\n{:#?}", workspace); |
| 164 | |
| 165 | check_firedbg_version_updated(workspace) |
| 166 | .await |
| 167 | .context("Fail to check FireDBG version updated")?; |
| 168 | |
| 169 | match sub_command { |
| 170 | SubCommand::Cache {} => { |
| 171 | cache_workspace(workspace) |
| 172 | .await |
| 173 | .context("Fail to cache workspace")?; |
| 174 | } |
| 175 | SubCommand::Clean {} => { |
| 176 | remove_firedbg_dir(workspace) |
| 177 | .await |
| 178 | .context("Fail to remove FireDBG directory")?; |
| 179 | } |
| 180 | SubCommand::Run { |
| 181 | binary_name, |
| 182 | mut args, |
| 183 | config, |
| 184 | output, |
| 185 | } => { |
| 186 | let binary_names = workspace.binary_names(); |
| 187 | if binary_names.is_empty() { |
| 188 | println!("No binary."); |
| 189 | exit(1); |
| 190 | } |
| 191 | let list = || { |
| 192 | println!("Available binaries are:"); |
| 193 | println!("\t{}", binary_names.join("\n\t")); |
| 194 | exit(1); |
| 195 | }; |
| 196 | let find_binary = |binary_name: &str| { |
| 197 | let Some((package, binary)) = workspace.find_binary(binary_name) else { |
| 198 | println!("Unknown binary `{binary_name}`."); |
| 199 | list() |
| 200 | }; |
| 201 | (package, binary) |
| 202 | }; |
| 203 | let (package, binary) = if let Some(binary_name) = binary_name { |
| 204 | find_binary(&binary_name) |
| 205 | } else if binary_names.len() == 1 { |
| 206 | find_binary(&binary_names[0]) |
| 207 | } else { |
| 208 | list() |
nothing calls this directly
no test coverage detected