fix: tool header was incorrectly formatted for universal binary

This commit is contained in:
Marcus Holland-Moritz 2025-03-17 15:34:03 +01:00
parent 068573a457
commit 1b1e5fc3c5
6 changed files with 28 additions and 24 deletions

View File

@ -47,6 +47,8 @@ using extra_deps_fn = std::function<void(library_dependencies&)>;
std::string tool_header(std::string_view tool_name, std::string_view extra_info,
extra_deps_fn const& extra_deps);
std::string tool_header_nodeps(std::string_view tool_name);
inline std::string
tool_header(std::string_view tool_name, std::string_view extra_info = {}) {
return tool_header(tool_name, extra_info, {});

View File

@ -1161,7 +1161,6 @@ int op_rename(char const* from, char const* to, unsigned int flags) {
void usage(std::ostream& os, std::filesystem::path const& progname) {
os << tool::tool_header("dwarfs",
fmt::format(", fuse version {}", FUSE_USE_VERSION))
<< "\n\n"
#if !DWARFS_FUSE_LOWLEVEL
<< "USING HIGH-LEVEL FUSE API\n\n"
#endif

View File

@ -256,9 +256,7 @@ int dwarfsck_main(int argc, sys_char** argv, iolayer const& iol) {
auto constexpr usage = "Usage: dwarfsck [OPTIONS...]\n";
if (vm.contains("help") or !vm.contains("input")) {
iol.out << tool::tool_header("dwarfsck") << "\n\n"
<< usage << "\n"
<< opts << "\n";
iol.out << tool::tool_header("dwarfsck") << usage << "\n" << opts << "\n";
return 0;
}

View File

@ -145,8 +145,7 @@ int dwarfsextract_main(int argc, sys_char** argv, iolayer const& iol) {
utility::filesystem_extractor::add_library_dependencies(deps);
};
iol.out << tool::tool_header("dwarfsextract", extra_deps) << "\n\n"
<< usage << "\n"
iol.out << tool::tool_header("dwarfsextract", extra_deps) << usage << "\n"
<< opts << "\n";
return 0;
}

View File

@ -716,8 +716,7 @@ int mkdwarfs_main(int argc, sys_char** argv, iolayer const& iol) {
std::string sep(30 + l_dc + l_sc + l_mc + l_or, '-');
iol.out << tool::tool_header("mkdwarfs") << "\n\n"
<< usage << opts << "\n"
iol.out << tool::tool_header("mkdwarfs") << usage << opts << "\n"
<< "Compression level defaults:\n"
<< " " << sep << "\n"
<< fmt::format(" Level Block {:{}s} {:s} Inode\n",
@ -769,8 +768,7 @@ int mkdwarfs_main(int argc, sys_char** argv, iolayer const& iol) {
if (vm.contains("help") or
!(vm.contains("input") or vm.contains("input-list")) or
(!vm.contains("output") and !vm.contains("debug-filter"))) {
iol.out << tool::tool_header("mkdwarfs") << "\n\n"
<< usage << "\n"
iol.out << tool::tool_header("mkdwarfs") << usage << "\n"
<< basic_opts << "\n";
return 0;
}

View File

@ -75,16 +75,29 @@ std::string get_jemalloc_version() {
}
#endif
} // namespace
std::string tool_header(std::string_view tool_name, std::string_view extra_info,
extra_deps_fn const& extra_deps) {
std::string
tool_header_impl(std::string_view tool_name, std::string_view extra_info = {}) {
std::string date;
if (DWARFS_GIT_DATE) {
date = fmt::format(" [{}]", DWARFS_GIT_DATE);
}
return fmt::format(
// clang-format off
R"( ___ ___ ___)""\n"
R"( | \__ __ ____ _ _ _| __/ __| Deduplicating Warp-speed)""\n"
R"( | |) \ V V / _` | '_| _|\__ \ Advanced Read-only File System)""\n"
R"( |___/ \_/\_/\__,_|_| |_| |___/ by Marcus Holland-Moritz)""\n\n"
// clang-format on
"{} ({}{}{})\nbuilt for {}\n\n",
tool_name, DWARFS_GIT_ID, date, extra_info, DWARFS_BUILD_ID);
}
} // namespace
std::string tool_header(std::string_view tool_name, std::string_view extra_info,
extra_deps_fn const& extra_deps) {
library_dependencies deps;
deps.add_common_libraries();
@ -96,16 +109,11 @@ std::string tool_header(std::string_view tool_name, std::string_view extra_info,
extra_deps(deps);
}
return fmt::format(
// clang-format off
R"( ___ ___ ___)""\n"
R"( | \__ __ ____ _ _ _| __/ __| Deduplicating Warp-speed)""\n"
R"( | |) \ V V / _` | '_| _|\__ \ Advanced Read-only File System)""\n"
R"( |___/ \_/\_/\__,_|_| |_| |___/ by Marcus Holland-Moritz)""\n\n"
// clang-format on
"{} ({}{}{})\nbuilt for {}\n\n{}",
tool_name, DWARFS_GIT_ID, date, extra_info, DWARFS_BUILD_ID,
deps.as_string());
return tool_header_impl(tool_name, extra_info) + deps.as_string() + "\n\n";
}
std::string tool_header_nodeps(std::string_view tool_name) {
return tool_header_impl(tool_name);
}
void add_common_options(po::options_description& opts,