Simplify mkdwarfs options and make more predictable

This commit is contained in:
Marcus Holland-Moritz 2021-04-02 18:01:36 +02:00
parent cda25a0d84
commit fb4a236be7

View File

@ -334,7 +334,7 @@ int mkdwarfs(int argc, char** argv) {
schema_compression, metadata_compression, log_level_str, timestamp,
time_resolution, order, progress_mode, recompress_opts, pack_metadata;
size_t num_workers;
bool no_progress = false, plain_string_tables = false, remove_header = false;
bool no_progress = false, remove_header = false;
unsigned level;
uint16_t uid, gid;
@ -393,14 +393,10 @@ int mkdwarfs(int argc, char** argv) {
po::value<std::string>(&metadata_compression),
"metadata compression algorithm")
("pack-metadata,P",
po::value<std::string>(&pack_metadata)->default_value("all"),
"pack certain metadata elements (all, none, mmap, chunk_table, "
po::value<std::string>(&pack_metadata)->default_value("auto"),
"pack certain metadata elements (auto, all, none, chunk_table, "
"directories, shared_files, names, names_index, symlinks, "
"symlinks_index)")
("plain-string-tables",
po::value<bool>(&plain_string_tables)->zero_tokens(),
"use plain string tables in metadata (overrides string table "
"packing options)")
"symlinks_index, force, plain)")
("recompress",
po::value<std::string>(&recompress_opts)->implicit_value("all"),
"recompress an existing filesystem (none, block, metadata, all)")
@ -741,19 +737,9 @@ int mkdwarfs(int argc, char** argv) {
return 1;
}
options.plain_names_table = plain_string_tables;
options.plain_symlinks_table = plain_string_tables;
if (!pack_metadata.empty() and pack_metadata != "none") {
if (pack_metadata == "all") {
options.pack_chunk_table = true;
options.pack_directories = true;
options.pack_shared_files_table = true;
options.pack_names = true;
options.pack_names_index = true;
options.pack_symlinks = true;
options.pack_symlinks_index = true;
} else if (pack_metadata == "mmap") {
if (pack_metadata == "auto") {
options.force_pack_string_tables = false;
options.pack_chunk_table = false;
options.pack_directories = false;
options.pack_shared_files_table = false;
@ -779,6 +765,19 @@ int mkdwarfs(int argc, char** argv) {
options.pack_symlinks = true;
} else if (opt == "symlinks_index") {
options.pack_symlinks_index = true;
} else if (opt == "force") {
options.force_pack_string_tables = true;
} else if (opt == "plain") {
options.plain_names_table = true;
options.plain_symlinks_table = true;
} else if (opt == "all") {
options.pack_chunk_table = true;
options.pack_directories = true;
options.pack_shared_files_table = true;
options.pack_names = true;
options.pack_names_index = true;
options.pack_symlinks = true;
options.pack_symlinks_index = true;
} else {
std::cerr << "error: the argument ('" << opt
<< "') to '--pack-metadata' is invalid" << std::endl;