mirror of
https://github.com/CachyOS/New-Cli-Installer.git
synced 2025-02-02 22:07:13 +08:00
👷 gucc: use std ranges from C++23 in crypttab
This commit is contained in:
parent
c32faf3dfa
commit
c48438a70f
@ -3,33 +3,13 @@
|
|||||||
#include "gucc/partition.hpp"
|
#include "gucc/partition.hpp"
|
||||||
|
|
||||||
#include <algorithm> // for any_of, sort, unique_copy
|
#include <algorithm> // for any_of, sort, unique_copy
|
||||||
|
#include <ranges> // for ranges::*
|
||||||
#include <filesystem>
|
|
||||||
|
|
||||||
#include <fmt/compile.h>
|
#include <fmt/compile.h>
|
||||||
#include <fmt/format.h>
|
#include <fmt/format.h>
|
||||||
|
|
||||||
#include <spdlog/spdlog.h>
|
#include <spdlog/spdlog.h>
|
||||||
|
|
||||||
#if defined(__clang__)
|
|
||||||
#pragma clang diagnostic push
|
|
||||||
#pragma clang diagnostic ignored "-Wold-style-cast"
|
|
||||||
#elif defined(__GNUC__)
|
|
||||||
#pragma GCC diagnostic push
|
|
||||||
#pragma GCC diagnostic ignored "-Wuseless-cast"
|
|
||||||
#pragma GCC diagnostic ignored "-Wold-style-cast"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <range/v3/algorithm/any_of.hpp>
|
|
||||||
#include <range/v3/algorithm/sort.hpp>
|
|
||||||
#include <range/v3/algorithm/unique_copy.hpp>
|
|
||||||
|
|
||||||
#if defined(__clang__)
|
|
||||||
#pragma clang diagnostic pop
|
|
||||||
#elif defined(__GNUC__)
|
|
||||||
#pragma GCC diagnostic pop
|
|
||||||
#endif
|
|
||||||
|
|
||||||
using namespace std::string_literals;
|
using namespace std::string_literals;
|
||||||
using namespace std::string_view_literals;
|
using namespace std::string_view_literals;
|
||||||
|
|
||||||
@ -78,18 +58,18 @@ auto generate_crypttab_content(const std::vector<Partition>& partitions, std::st
|
|||||||
|
|
||||||
// sort by mountpoint & device
|
// sort by mountpoint & device
|
||||||
auto partitions_sorted{partitions};
|
auto partitions_sorted{partitions};
|
||||||
ranges::sort(partitions_sorted, {}, &Partition::mountpoint);
|
std::ranges::sort(partitions_sorted, {}, &Partition::mountpoint);
|
||||||
ranges::sort(partitions_sorted, {}, &Partition::device);
|
std::ranges::sort(partitions_sorted, {}, &Partition::device);
|
||||||
|
|
||||||
// filter duplicates
|
// filter duplicates
|
||||||
std::vector<Partition> partitions_filtered{};
|
std::vector<Partition> partitions_filtered{};
|
||||||
ranges::unique_copy(
|
std::ranges::unique_copy(
|
||||||
partitions_sorted, std::back_inserter(partitions_filtered),
|
partitions_sorted, std::back_inserter(partitions_filtered),
|
||||||
{},
|
{},
|
||||||
&Partition::device);
|
&Partition::device);
|
||||||
|
|
||||||
const bool is_root_encrypted = ranges::any_of(partitions, [](auto&& part) { return part.mountpoint == "/"sv && part.luks_mapper_name; });
|
const bool is_root_encrypted = std::ranges::any_of(partitions, [](auto&& part) { return part.mountpoint == "/"sv && part.luks_mapper_name; });
|
||||||
const bool is_boot_encrypted = ranges::any_of(partitions, [](auto&& part) { return part.mountpoint == "/bool"sv && part.luks_mapper_name; });
|
const bool is_boot_encrypted = std::ranges::any_of(partitions, [](auto&& part) { return part.mountpoint == "/bool"sv && part.luks_mapper_name; });
|
||||||
|
|
||||||
for (auto&& partition : partitions_filtered) {
|
for (auto&& partition : partitions_filtered) {
|
||||||
auto crypttab_entry = gen_crypttab_entry(partition, crypttab_opts, is_root_encrypted, is_boot_encrypted);
|
auto crypttab_entry = gen_crypttab_entry(partition, crypttab_opts, is_root_encrypted, is_boot_encrypted);
|
||||||
|
Loading…
Reference in New Issue
Block a user