50 lines
2.0 KiB
C++
50 lines
2.0 KiB
C++
/*
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "ArchiveType.hpp"
|
|
#include <string>
|
|
#include <filesystem>
|
|
|
|
namespace OpenVulkano
|
|
{
|
|
enum class CompressionType { AUTO = 0, NONE, GZIP, BZIP2, XZ, LZ4, ZSTD };
|
|
|
|
struct ArchiveConfiguration final
|
|
{
|
|
ArchiveType type;
|
|
CompressionType compression;
|
|
int compressionLevel;
|
|
|
|
constexpr ArchiveConfiguration(ArchiveType archiveType = ArchiveType::TAR,
|
|
CompressionType compressionType = CompressionType::AUTO,
|
|
int level = -1)
|
|
: type(archiveType), compression(compressionType), compressionLevel(level)
|
|
{}
|
|
|
|
[[nodiscard]] static ArchiveConfiguration FromFileName(const std::filesystem::path& fileName);
|
|
|
|
[[nodiscard]] std::string GetFileExtension() const;
|
|
|
|
[[nodiscard]] int GetLibArchiveArchiveType() const;
|
|
|
|
[[nodiscard]] int GetLibArchiveCompressionType() const;
|
|
};
|
|
|
|
namespace ArchiveConfig
|
|
{
|
|
[[maybe_unused]] inline constexpr ArchiveConfiguration TAR = { ArchiveType::TAR, CompressionType::NONE, 0 };
|
|
[[maybe_unused]] inline constexpr ArchiveConfiguration TAR_GZ = { ArchiveType::TAR, CompressionType::GZIP, 6 };
|
|
[[maybe_unused]] inline constexpr ArchiveConfiguration TAR_GZ1 = { ArchiveType::TAR, CompressionType::GZIP, 1 };
|
|
[[maybe_unused]] inline constexpr ArchiveConfiguration TAR_GZ9 = { ArchiveType::TAR, CompressionType::GZIP, 9 };
|
|
[[maybe_unused]] inline constexpr ArchiveConfiguration TAR_LZ4 = { ArchiveType::TAR, CompressionType::LZ4, 4 };
|
|
[[maybe_unused]] inline constexpr ArchiveConfiguration TAR_ZSTD = { ArchiveType::TAR, CompressionType::ZSTD, 3 };
|
|
[[maybe_unused]] inline constexpr ArchiveConfiguration TAR_ZSTD1 = { ArchiveType::TAR, CompressionType::ZSTD, 1 };
|
|
[[maybe_unused]] inline constexpr ArchiveConfiguration TAR_ZSTD5 = { ArchiveType::TAR, CompressionType::ZSTD, 5 };
|
|
}
|
|
}
|