| 486 | } |
| 487 | |
| 488 | bool PackageManager::is_installed(const std::string& package) const { |
| 489 | const auto packages = list_installed(); |
| 490 | auto normalize = [](std::string s) { |
| 491 | std::replace(s.begin(), s.end(), '-', '_'); |
| 492 | return s; |
| 493 | }; |
| 494 | const auto normalized = normalize(package); |
| 495 | |
| 496 | for (const auto& pkg : packages) { |
| 497 | if (pkg.name == package || normalize(pkg.name) == normalized) |
| 498 | return true; |
| 499 | } |
| 500 | return false; |
| 501 | } |
| 502 | |
| 503 | bool PackageManager::install_async(const std::string& package, |
| 504 | UvRunner::OutputCallback on_output, |