|
8 | 8 | #define MAMBA_CORE_SUBDIRDATA_HPP
|
9 | 9 |
|
10 | 10 | #include <algorithm>
|
| 11 | +#include <optional> |
11 | 12 | #include <string>
|
12 | 13 |
|
13 | 14 | #include <nlohmann/json_fwd.hpp>
|
@@ -240,9 +241,10 @@ namespace mamba
|
240 | 241 | auto build_check_requests(const SubdirParams& params) -> download::MultiRequest;
|
241 | 242 |
|
242 | 243 | template <typename First, typename End>
|
243 |
| - static auto build_all_index_requests(First subdirs_first, End subdirs_last) |
| 244 | + static auto |
| 245 | + build_all_index_requests(First subdirs_first, End subdirs_last, const SubdirParams& params) |
244 | 246 | -> download::MultiRequest;
|
245 |
| - auto build_index_request() -> download::Request; |
| 247 | + auto build_index_request(const SubdirParams& params) -> std::optional<download::Request>; |
246 | 248 |
|
247 | 249 | [[nodiscard]] static auto download_requests(
|
248 | 250 | download::MultiRequest index_requests,
|
@@ -309,19 +311,14 @@ namespace mamba
|
309 | 311 | // Allow to continue if failed checks, unless asked to stop.
|
310 | 312 | constexpr auto is_interrupted = [](const auto& e)
|
311 | 313 | { return e.error_code() == mamba_error_code::user_interrupted; };
|
| 314 | + |
312 | 315 | if (!result.has_value() && result.map_error(is_interrupted).error())
|
313 | 316 | {
|
314 | 317 | return result;
|
315 | 318 | }
|
316 | 319 |
|
317 |
| - // TODO load local channels even when offline if (!ctx.offline) |
318 |
| - if (subdir_params.offline) |
319 |
| - { |
320 |
| - return expected_t<void>(); |
321 |
| - } |
322 |
| - |
323 | 320 | return download_requests(
|
324 |
| - build_all_index_requests(subdirs_first, subdirs_last), |
| 321 | + build_all_index_requests(subdirs_first, subdirs_last, subdir_params), |
325 | 322 | auth_info,
|
326 | 323 | mirrors,
|
327 | 324 | download_options,
|
@@ -373,15 +370,19 @@ namespace mamba
|
373 | 370 | }
|
374 | 371 |
|
375 | 372 | template <typename First, typename End>
|
376 |
| - auto SubdirData::build_all_index_requests(First subdirs_first, End subdirs_last) |
| 373 | + auto |
| 374 | + SubdirData::build_all_index_requests(First subdirs_first, End subdirs_last, const SubdirParams& params) |
377 | 375 | -> download::MultiRequest
|
378 | 376 | {
|
379 | 377 | download::MultiRequest requests;
|
380 | 378 | for (; subdirs_first != subdirs_last; ++subdirs_first)
|
381 | 379 | {
|
382 | 380 | if (!subdirs_first->valid_cache_found())
|
383 | 381 | {
|
384 |
| - requests.push_back(subdirs_first->build_index_request()); |
| 382 | + if (auto request = subdirs_first->build_index_request(params)) |
| 383 | + { |
| 384 | + requests.push_back(*std::move(request)); |
| 385 | + } |
385 | 386 | }
|
386 | 387 | }
|
387 | 388 | return requests;
|
|
0 commit comments