diff --git a/Readme.md b/Readme.md index a5cf890785..4180d136b6 100644 --- a/Readme.md +++ b/Readme.md @@ -128,21 +128,21 @@ Usage: convert [options]... [FILE]... Options: -h, --help show this help message and exit -u USER, --user=USER User folder path, required for temporary processing - files.Will be automatically created if this option is + files. Will be automatically created if this option is not set. -i FILE, --input=FILE Path to disc image FILE. -o FILE, --output=FILE Path to the destination FILE. - -f FORMAT, --format=FORMAT - Container format to use. Default is RVZ. [iso|gcz|wia|rvz] + -f rvz|iso|gcz|wia, --format=rvz|iso|gcz|wia + Container format to use. Default is RVZ. -s, --scrub Scrub junk data as part of conversion. -b BLOCK_SIZE, --block_size=BLOCK_SIZE Block size for GCZ/WIA/RVZ formats, as an integer. Suggested value for RVZ: 131072 (128 KiB) - -c COMPRESSION, --compression=COMPRESSION + -c none|zstd|bzip2|lzma|lzma2, --compression=none|zstd|bzip2|lzma|lzma2 Compression method to use when converting to WIA/RVZ. - Suggested value for RVZ: zstd [none|zstd|bzip|lzma|lzma2] + Suggested value for RVZ: zstd -l COMPRESSION_LEVEL, --compression_level=COMPRESSION_LEVEL Level of compression for the selected method. Ignored if 'none'. Suggested value for zstd: 5 @@ -154,13 +154,13 @@ Usage: verify [options]... Options: -h, --help show this help message and exit -u USER, --user=USER User folder path, required for temporary processing - files.Will be automatically created if this option is + files. Will be automatically created if this option is not set. -i FILE, --input=FILE - Path to disc image FILE. - -a ALGORITHM, --algorithm=ALGORITHM + Path to input file. + -a crc32|md5|sha1|rchash, --algorithm=crc32|md5|sha1|rchash Optional. Compute and print the digest using the - selected algorithm, then exit. [crc32|md5|sha1|rchash] + selected algorithm, then exit. ``` ``` diff --git a/Source/Core/DolphinTool/ConvertCommand.cpp b/Source/Core/DolphinTool/ConvertCommand.cpp index a590c3071c..3cdf792786 100644 --- a/Source/Core/DolphinTool/ConvertCommand.cpp +++ b/Source/Core/DolphinTool/ConvertCommand.cpp @@ -3,6 +3,7 @@ #include "DolphinTool/ConvertCommand.h" +#include #include #include #include @@ -12,6 +13,7 @@ #include #include +#include #include "Common/CommonTypes.h" #include "DiscIO/Blob.h" @@ -56,6 +58,7 @@ static std::optional ParseFormatString(const std::string& form int ConvertCommand(const std::vector& args) { + using namespace std::literals; optparse::OptionParser parser; parser.usage("usage: convert [options]... [FILE]..."); @@ -79,11 +82,14 @@ int ConvertCommand(const std::vector& args) .help("Path to the destination FILE.") .metavar("FILE"); + static constexpr std::array formats{"rvz"sv, "iso"sv, "gcz"sv, "wia"sv}; parser.add_option("-f", "--format") .type("string") .action("store") - .help("Container format to use. Default is RVZ. [%choices]") - .choices({"iso", "gcz", "wia", "rvz"}); + .help("Container format to use. Default is RVZ.") + .metavar(fmt::format("{}", fmt::join(formats, "|"))) + .choices(formats.begin(), formats.end()) + .set_default(formats[0]); parser.add_option("-s", "--scrub") .action("store_true") @@ -95,12 +101,14 @@ int ConvertCommand(const std::vector& args) .help("Block size for GCZ/WIA/RVZ formats, as an integer. Suggested value for RVZ: 131072 " "(128 KiB)"); + static constexpr std::array compression_methods{"none"sv, "zstd"sv, "bzip2"sv, "lzma"sv, + "lzma2"sv}; parser.add_option("-c", "--compression") .type("string") .action("store") - .help("Compression method to use when converting to WIA/RVZ. Suggested value for RVZ: zstd " - "[%choices]") - .choices({"none", "zstd", "bzip2", "lzma", "lzma2"}); + .help("Compression method to use when converting to WIA/RVZ. Suggested value for RVZ: zstd") + .metavar(fmt::format("{}", fmt::join(compression_methods, "|"))) + .choices(compression_methods.begin(), compression_methods.end()); parser.add_option("-l", "--compression_level") .type("int") @@ -135,11 +143,6 @@ int ConvertCommand(const std::vector& args) // --format const std::optional format_o = ParseFormatString(options["format"]); - if (!format_o.has_value()) - { - fmt::print(std::cerr, "Error: No output format set\n"); - return EXIT_FAILURE; - } const DiscIO::BlobType format = format_o.value(); // Open the blob reader diff --git a/Source/Core/DolphinTool/VerifyCommand.cpp b/Source/Core/DolphinTool/VerifyCommand.cpp index 975cfde14d..1b043ea930 100644 --- a/Source/Core/DolphinTool/VerifyCommand.cpp +++ b/Source/Core/DolphinTool/VerifyCommand.cpp @@ -3,12 +3,14 @@ #include "DolphinTool/VerifyCommand.h" +#include #include #include #include #include #include +#include #include "Core/AchievementManager.h" #include "DiscIO/Volume.h" @@ -74,6 +76,7 @@ static void PrintFullReport(const DiscIO::VolumeVerifier::Result& result) int VerifyCommand(const std::vector& args) { + using namespace std::literals; optparse::OptionParser parser; parser.usage("usage: verify [options]..."); @@ -91,12 +94,13 @@ int VerifyCommand(const std::vector& args) .help("Path to input file.") .metavar("FILE"); + static constexpr std::array algorithms{"crc32"sv, "md5"sv, "sha1"sv, "rchash"sv}; parser.add_option("-a", "--algorithm") .type("string") .action("store") - .help("Optional. Compute and print the digest using the selected algorithm, then exit. " - "[%choices]") - .choices({"crc32", "md5", "sha1", "rchash"}); + .help("Optional. Compute and print the digest using the selected algorithm, then exit.") + .metavar(fmt::format("{}", fmt::join(algorithms, "|"))) + .choices(algorithms.begin(), algorithms.end()); const optparse::Values& options = parser.parse_args(args);