| 389 | } |
| 390 | |
| 391 | InstallResult PackageManager::execute_uv(const std::vector<std::string>& args) const { |
| 392 | const auto uv = uv_path(); |
| 393 | if (uv.empty()) |
| 394 | return {.error = "uv not found"}; |
| 395 | |
| 396 | LOG_INFO("Executing uv command with {} args", args.size()); |
| 397 | LOG_DEBUG("UV command: {}", detail::format_command_for_log(uv, args)); |
| 398 | const auto [exit_code, output] = execute_process_capture(uv, args); |
| 399 | |
| 400 | InstallResult result; |
| 401 | result.output = output; |
| 402 | result.success = (exit_code == 0); |
| 403 | if (!result.success) |
| 404 | result.error = output.empty() ? "Exit code " + std::to_string(exit_code) : output; |
| 405 | return result; |
| 406 | } |
| 407 | |
| 408 | InstallResult PackageManager::install(const std::string& package) { |
| 409 | if (!ensure_venv()) |
nothing calls this directly
no test coverage detected