From 70ff29e3d5e7d4f9f3edbe416d8718c7bafc674d Mon Sep 17 00:00:00 2001 From: Přemysl Eric Janouch Date: Mon, 26 Oct 2020 13:24:46 +0100 Subject: Add a real manual page Closes #3 --- CMakeLists.txt | 16 ++++++----- README.adoc | 42 ++++++---------------------- nncmpp.adoc | 87 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 104 insertions(+), 41 deletions(-) create mode 100644 nncmpp.adoc diff --git a/CMakeLists.txt b/CMakeLists.txt index c52334d..1eaac55 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -70,19 +70,21 @@ install (TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR}) install (FILES LICENSE DESTINATION ${CMAKE_INSTALL_DOCDIR}) install (DIRECTORY contrib DESTINATION ${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}) -# Generate documentation from program help -find_program (HELP2MAN_EXECUTABLE help2man) -if (NOT HELP2MAN_EXECUTABLE) - message (FATAL_ERROR "help2man not found") +# Generate documentation from text markup +find_program (ASCIIDOCTOR_EXECUTABLE asciidoctor) +if (NOT ASCIIDOCTOR_EXECUTABLE) + message (FATAL_ERROR "asciidoctor not found") endif () foreach (page ${PROJECT_NAME}) set (page_output "${PROJECT_BINARY_DIR}/${page}.1") list (APPEND project_MAN_PAGES "${page_output}") add_custom_command (OUTPUT ${page_output} - COMMAND ${HELP2MAN_EXECUTABLE} -N - "${PROJECT_BINARY_DIR}/${page}" -o ${page_output} - DEPENDS ${page} + COMMAND ${ASCIIDOCTOR_EXECUTABLE} -b manpage + -a release-version=${PROJECT_VERSION} + "${PROJECT_SOURCE_DIR}/${page}.adoc" + -o "${page_output}" + DEPENDS ${page}.adoc COMMENT "Generating man page for ${page}" VERBATIM) endforeach () diff --git a/README.adoc b/README.adoc index 9b588d0..ce6e8b3 100644 --- a/README.adoc +++ b/README.adoc @@ -22,9 +22,14 @@ Packages Regular releases are sporadic. git master should be stable enough. You can get a package with the latest development version from Archlinux's AUR. -Building and Running --------------------- -Build dependencies: CMake, pkg-config, help2man, liberty (included), +Documentation +------------- +See the link:nncmpp.adoc[man page] for information about usage. +The rest of this README will concern itself with externalities. + +Building +-------- +Build dependencies: CMake, pkg-config, asciidoctor, liberty (included), termo (included) + Runtime dependencies: ncursesw, libunistring, cURL @@ -43,37 +48,6 @@ Or you can try telling CMake to make a package for you. For Debian it is: $ cpack -G DEB # dpkg -i nncmpp-*.deb -Having the program installed, create a configuration file and run it. - -Configuration -------------- -Create _~/.config/nncmpp/nncmpp.conf_ with contents like the following: - -.... -settings = { - address = "localhost:6600" - password = "" - root = "~/Music" -} -colors = { - normal = "" - highlight = "bold" - elapsed = "reverse" - remains = "ul" - tab_bar = "reverse" - tab_active = "ul" - even = "" - odd = "" - selection = "reverse" - multiselect = "-1 6" - scrollbar = "" -} -streams = { - "dnbradio.com" = "http://www.dnbradio.com/hi.m3u" - "BassDrive.com" = "http://bassdrive.com/v2/streams/BassDrive.pls" -} -.... - Terminal caveats ---------------- This application aspires to be as close to a GUI as possible. It expects you diff --git a/nncmpp.adoc b/nncmpp.adoc new file mode 100644 index 0000000..fd4f888 --- /dev/null +++ b/nncmpp.adoc @@ -0,0 +1,87 @@ +nncmpp(1) +========= +:doctype: manpage +:manmanual: nncmpp Manual +:mansource: nncmpp {release-version} + +Name +---- +nncmpp - terminal-based MPD client + +Synopsis +-------- +*nncmpp* [_OPTION_]... + +Description +----------- +*nncmpp* is a terminal-based GUI-like MPD client. On start up it will welcome +you with an overview of all key bindings and the actions they're assigned to. +Individual tabs can be switched to either using the mouse or by pressing *M-1* +through *M-9*, corresponding to the order they appear in. + +Options +------- +*-d*, *--debug*:: + Adds a "Debug" tab showing all MPD communication and other information + that help debug various issues. + +*-h*, *--help*:: + Display a help message and exit. + +*-V*, *--version*:: + Output version information and exit. + +Configuration +------------- +Unless you run MPD on a remote machine, on an unusual port, or protected by +a password, the client doesn't need a configuration file to work. It is, +however, likely that you'll want to customize the looks or add some streams. +You can start off with the following snippet: + +.... +settings = { + address = "localhost:6600" + password = "" + root = "~/Music" +} +colors = { + normal = "" + highlight = "bold" + elapsed = "reverse" + remains = "ul" + tab_bar = "reverse" + tab_active = "ul" + even = "" + odd = "" + selection = "reverse" + multiselect = "-1 6" + scrollbar = "" +} +streams = { + "dnbradio.com" = "http://www.dnbradio.com/hi.m3u" + "BassDrive.com" = "http://bassdrive.com/v2/streams/BassDrive.pls" +} +.... + +Terminal attributes are accepted in a format similar to that of *git-config*(1), +only named colours aren't supported. The distribution contains example colour +schemes in the _contrib_ directory. + +// TODO: it seems like liberty should contain an includable snippet about +// the format, which could form a part of nncmpp.conf(5). + +Files +----- +*nncmpp* follows the XDG Base Directory Specification. + +_~/.config/nncmpp/nncmpp.conf_:: + The configuration file. + +Reporting bugs +-------------- +Use https://git.janouch.name/p/nncmpp to report bugs, request features, +or submit pull requests. + +See also +-------- +*mpd*(1) -- cgit v1.2.3-70-g09d2