From 7743c9de29ac3312650884eb75f9ff54aa8148af Mon Sep 17 00:00:00 2001 From: Shlomi Fish Date: Sat, 15 Aug 2020 18:44:15 +0300 Subject: [PATCH] Convert more manpages to DocBook 5 XML. See: * https://github.com/shlomif/fortune-mod/issues/41 Made use of doclifter ( http://www.catb.org/~esr/doclifter/ ), docmake ( https://www.shlomifish.org/open-source/projects/docmake/ ), cmake, and Perl 5. Thanks! The current plan is to provide the resultant nroff outputs (or easily 's/.../.../'able templates of them) inside the source tarballs to avoid a build time dependency on DocBook XSL and docmake. --- fortune-mod/CMakeLists.txt | 16 ++++- fortune-mod/fortune/gen-randstr-manpage.pl | 50 ++++++++++++++ fortune-mod/util/randstr.docbook5.xml | 76 ++++++++++++++++++++++ fortune-mod/util/randstr.man | 53 --------------- 4 files changed, 141 insertions(+), 54 deletions(-) create mode 100644 fortune-mod/fortune/gen-randstr-manpage.pl create mode 100644 fortune-mod/util/randstr.docbook5.xml delete mode 100644 fortune-mod/util/randstr.man diff --git a/fortune-mod/CMakeLists.txt b/fortune-mod/CMakeLists.txt index 5481812..8a285fd 100644 --- a/fortune-mod/CMakeLists.txt +++ b/fortune-mod/CMakeLists.txt @@ -210,11 +210,25 @@ ADD_CUSTOM_COMMAND( OUTPUT "${_my_man_page}" COMMAND "${PERL_EXECUTABLE}" ARGS "${_my_man_gen}" ${_my_args} - DEPENDS "${_my_man_gen}" + DEPENDS "${_my_man_gen}" "${_my_man_docbook}" ) LIST(APPEND _my_man_pages_list "${_my_man_page}") INSTALL_RENAME_MAN("strfile.man" "1" "strfile" "${_my_man_page_dir}") + +SET (_my_man_page_dir "${CMAKE_CURRENT_SOURCE_DIR}/util") +SET (_my_man_page "${_my_man_page_dir}/randstr.man") +SET (_my_man_docbook "${_my_man_page_dir}/randstr.docbook5.xml") +SET (_my_man_gen "${CMAKE_CURRENT_SOURCE_DIR}/fortune/gen-randstr-manpage.pl") +SET (_my_args "--src-dir" "${CMAKE_CURRENT_SOURCE_DIR}") +ADD_CUSTOM_COMMAND( + OUTPUT "${_my_man_page}" + COMMAND "${PERL_EXECUTABLE}" + ARGS "${_my_man_gen}" ${_my_args} + DEPENDS "${_my_man_gen}" "${_my_man_docbook}" +) + +LIST(APPEND _my_man_pages_list "${_my_man_page}") ADD_CUSTOM_TARGET( generate_man_page ALL DEPENDS ${_my_man_pages_list} diff --git a/fortune-mod/fortune/gen-randstr-manpage.pl b/fortune-mod/fortune/gen-randstr-manpage.pl new file mode 100644 index 0000000..05e0cf5 --- /dev/null +++ b/fortune-mod/fortune/gen-randstr-manpage.pl @@ -0,0 +1,50 @@ +#!/usr/bin/perl + +use strict; +use warnings; +use autodie; + +use Getopt::Long qw/ GetOptions /; +use Path::Tiny qw/ path tempdir tempfile cwd /; + +sub do_system +{ + my ( $self, $args ) = @_; + + my $cmd = $args->{cmd}; + print "Running [@$cmd]\n"; + if ( system(@$cmd) ) + { + die "Running [@$cmd] failed!"; + } + + return; +} + +my $output_fn; +my $cookiedir; +my $ocookiedir; +my $no_offensive = 0; +my $CMAKE_CURRENT_SOURCE_DIR; +GetOptions( + '--src-dir=s' => \$CMAKE_CURRENT_SOURCE_DIR, + '--cookiedir=s' => \$cookiedir, + '--ocookiedir=s' => \$ocookiedir, + '--without-offensive!' => \$no_offensive, + '--output=s' => \$output_fn, +) or die "Wrong options - $!"; + +die "missing --src-dir" if ( not $CMAKE_CURRENT_SOURCE_DIR ); +__PACKAGE__->do_system( + { + cmd => [ + "docmake", "manpages", + "${CMAKE_CURRENT_SOURCE_DIR}/util/randstr.docbook5.xml", + ], + }, +); + +path("${CMAKE_CURRENT_SOURCE_DIR}/util/randstr.man") + ->spew_utf8( + cwd()->child("randstr.1")->slurp_utf8() =~ s#^\s+(\.RE|\.PP)\s*$#$1#gmsr =~ + s#^\s+$##gmsr ); diff --git a/fortune-mod/util/randstr.docbook5.xml b/fortune-mod/util/randstr.docbook5.xml new file mode 100644 index 0000000..5a32fc1 --- /dev/null +++ b/fortune-mod/util/randstr.docbook5.xml @@ -0,0 +1,76 @@ + + + + + + + +RANDSTR +1 +October 1995 +Linux hackery + + +randstr +fetch a random text string from a specified file + + + +SYNOPIS +randstr filename + + +DESCRIPTION +In essence, +randstr +is a stripped-down, minimalist version of the popular +fortune6 +program. + +It reads files with the same structure as the fortunes databases, and +displays a random string. + +Usage +randstr +might be used, with a database of signatures created with a text editor +and the +strfile8 and unstr8 +utilities, to randomly change the +$HOME/.signature +file. To do so, create the necessary database as, for example, +signatures and signatures.dat +in the home directory, and add the following line to +.profile or .login: +
+randstr signatures +>.signature +
+ +As superuser, a similar sort of thing could be placed in the +Pnews1 or Rnmail1 +scripts, although it should certainly test to be certain that the files +exist, and creating the files of signatures might require a good deal of +help for a lot of users. + +Also as superuser, one might use +randstr +with a shell or +Perl +script to read the +etc/passwd +database and create a +strfile +type database, and use this database to run a monthly lottery. +
+
+ +BUGS +None known. + + +SEE ALSO +fortune6, strfile1 + +
+ diff --git a/fortune-mod/util/randstr.man b/fortune-mod/util/randstr.man deleted file mode 100644 index f55581f..0000000 --- a/fortune-mod/util/randstr.man +++ /dev/null @@ -1,53 +0,0 @@ -.\" -.\" Randstr: grab a random text string from a specified text file -.\" Amy A. Lewis, October, 1995 -.\" -.TH RANDSTR 1 "October 1995" "Linux hackery" -.SH NAME -randstr \- fetch a random text string from a specified file -.SH SYNOPIS -.BI "randstr " filename -.SH DESCRIPTION -In essence, -.B randstr -is a stripped-down, minimalist version of the popular -.BR fortune (6) -program. -.PP -It reads files with the same structure as the fortunes databases, and -displays a random string. -.SS Usage -.B randstr -might be used, with a database of signatures created with a text editor -and the -.BR strfile "(8) and " unstr (8) -utilities, to randomly change the -.I $HOME/.signature -file. To do so, create the necessary database as, for example, -.IR signatures " and " signatures.dat -in the home directory, and add the following line to -.IR .profile " or " .login : -.RS -.BI "randstr " signatures -.RI > .signature -.RE -.PP -As superuser, a similar sort of thing could be placed in the -.BR Pnews "(1) or " Rnmail (1) -scripts, although it should certainly test to be certain that the files -exist, and creating the files of signatures might require a good deal of -help for a lot of users. -.PP -Also as superuser, one might use -.B randstr -with a shell or -.B Perl -script to read the -.I etc/passwd -database and create a -.I strfile -type database, and use this database to run a monthly lottery. -.SH BUGS -None known. -.SH SEE ALSO -.BR fortune "(6), " strfile (1) -- 2.40.0