From a8d57daa4b7a98176a98af29e52c1df1295659cb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hr=C3=A1zk=C3=BD?= <lhrazky@redhat.com>
Date: Wed, 20 Feb 2019 17:18:00 +0100
Subject: [PATCH 1/4] Reformat the commands listing in --help
Use just spaces as a separator to be consistent with dnf, at least two
spaces are needed so that help2man formats the commands correctly in the
man page.
---
dnf/dnf-main.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/dnf/dnf-main.c b/dnf/dnf-main.c
index 2381f20..fd6406d 100644
--- a/dnf/dnf-main.c
+++ b/dnf/dnf-main.c
@@ -215,7 +215,11 @@ main (int argc,
if (!peas_engine_load_plugin (engine, info))
continue;
if (peas_engine_provides_extension (engine, info, DNF_TYPE_COMMAND))
- g_string_append_printf (cmd_summary, "\n %s - %s", peas_plugin_info_get_name (info), peas_plugin_info_get_description (info));
+ /*
+ * At least 2 spaces between the command and its description are needed
+ * so that help2man formats it correctly.
+ */
+ g_string_append_printf (cmd_summary, "\n %-16s %s", peas_plugin_info_get_name (info), peas_plugin_info_get_description (info));
}
g_option_context_set_summary (opt_ctx, cmd_summary->str);
g_string_free (cmd_summary, TRUE);
--
2.24.0
From 838a235bba14d48f65ba760f35f32f9d090043fe Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hr=C3=A1zk=C3=BD?= <lhrazky@redhat.com>
Date: Mon, 17 Jun 2019 12:48:13 +0200
Subject: [PATCH 2/4] Print only the binary name instead of the full path in
--help
Removes the directory path from argv[0] for the program name in --help.
This is required for generating the man page with help2man, as the
build directory would appear in the man page.
---
dnf/dnf-main.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/dnf/dnf-main.c b/dnf/dnf-main.c
index fd6406d..e35ace0 100644
--- a/dnf/dnf-main.c
+++ b/dnf/dnf-main.c
@@ -298,7 +298,10 @@ main (int argc,
if (cmd_name == NULL && show_help)
{
- g_set_prgname (argv[0]);
+ const char *prg_name = strrchr(argv[0], '/') + 1;
+ prg_name = prg_name ? prg_name : argv[0];
+
+ g_set_prgname (prg_name);
g_autofree gchar *help = g_option_context_get_help (opt_ctx, TRUE, NULL);
g_print ("%s", help);
goto out;
--
2.24.0
From b00e2adb2520f11442f3a7cf3710e64f5f60dab2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hr=C3=A1zk=C3=BD?= <lukkash@email.cz>
Date: Wed, 20 Feb 2019 15:17:33 +0100
Subject: [PATCH 3/4] Add generating a manpage using help2man to meson.build
Generates a man page using help2man. Note:
- The version in meson.build now needs to be updated on every release,
it is used in the man page.
- help2man is a new build dependency.
- Packagers should add the generated man page to packages.
---
dnf/meson.build | 2 +-
meson.build | 21 ++++++++++++++++++++-
2 files changed, 21 insertions(+), 2 deletions(-)
diff --git a/dnf/meson.build b/dnf/meson.build
index fe37998..f8f1bf3 100644
--- a/dnf/meson.build
+++ b/dnf/meson.build
@@ -40,7 +40,7 @@ microdnf_srcs = [
'plugins/clean/dnf-command-clean.c',
]
-executable(
+microdnf = executable(
'microdnf',
sources : microdnf_srcs,
dependencies : [
diff --git a/meson.build b/meson.build
index 1f01ae0..a3601aa 100644
--- a/meson.build
+++ b/meson.build
@@ -1,5 +1,5 @@
project('microdnf', 'c',
- version : '1',
+ version : '3.0.1',
license : 'GPL-3.0+',
default_options : [
'b_asneeded=True',
@@ -44,3 +44,22 @@ add_project_arguments(
)
subdir('dnf')
+
+help2man = find_program('help2man', required: true)
+if help2man.found()
+ help2man_opts = [
+ '--version-string=' + meson.project_version(),
+ '--no-info',
+ '--section=8',
+ '--name=Micro DNF',
+ ]
+
+ custom_target('microdnf.8',
+ output: 'microdnf.8',
+ command: [
+ help2man, help2man_opts, '--output=@OUTPUT@', microdnf
+ ],
+ install: true,
+ install_dir: get_option('mandir') + '/man8',
+ )
+endif
--
2.24.0
From a1c777a4383ccc5f35396e86e6f3b0a1af92bc7c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hr=C3=A1zk=C3=BD?= <lhrazky@redhat.com>
Date: Mon, 17 Jun 2019 15:10:33 +0200
Subject: [PATCH 4/4] Add generating a manpage using help2man to CMakeLists.txt
Generates a man page using help2man. Note:
- The version in CMakeLists.txt now needs to be updated on every
release, it is used in the man page.
- help2man is a new build dependency.
- Packagers should add the generated man page to packages.
---
CMakeLists.txt | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 435d7e8..dcf8e2f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,5 +1,6 @@
cmake_minimum_required (VERSION 2.8.5)
project (microdnf C)
+set (PROJECT_VERSION 3.0.1)
list (APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
@@ -25,6 +26,25 @@ set (PKG_DATADIR ${CMAKE_INSTALL_FULL_DATADIR}/dnf)
add_definitions (-DPACKAGE_LIBDIR="${PKG_LIBDIR}")
add_definitions (-DPACKAGE_DATADIR="${PKG_DATADIR}")
+find_file (HELP2MAN_EXECUTABLE help2man)
+if (NOT HELP2MAN_EXECUTABLE)
+ message (FATAL_ERROR "unable to find help2man")
+endif ()
+
+set (MANPAGE ${CMAKE_CURRENT_BINARY_DIR}/microdnf.8)
+add_custom_command (
+ DEPENDS microdnf
+ OUTPUT ${MANPAGE}
+ COMMAND ${HELP2MAN_EXECUTABLE} $<TARGET_FILE:microdnf>
+ --version-string=${PROJECT_VERSION}
+ --no-info
+ --section=8
+ --name="Micro DNF"
+ --output=${MANPAGE}
+)
+add_custom_target (manpage ALL DEPENDS ${MANPAGE})
+install (FILES ${MANPAGE} DESTINATION ${CMAKE_INSTALL_FULL_MANDIR}/man8)
+
include_directories (${GLIB_INCLUDE_DIRS})
include_directories (${GOBJECT_INCLUDE_DIRS})
include_directories (${PEAS_INCLUDE_DIRS})
--
2.24.0