anitazha / rpms / ndctl

Forked from rpms/ndctl 2 years ago
Clone

Blame 0048-scripts-Add-a-man-page-template-generator.patch

Jeff Moyer 2c91dc
From 706a418798633ccb550b114eca7cc11038ab2695 Mon Sep 17 00:00:00 2001
Jeff Moyer 2c91dc
From: Vishal Verma <vishal.l.verma@intel.com>
Jeff Moyer 2c91dc
Date: Tue, 14 Dec 2021 19:01:02 -0700
Jeff Moyer 2c91dc
Subject: [PATCH 048/217] scripts: Add a man page template generator
Jeff Moyer 2c91dc
Jeff Moyer 2c91dc
Add a script to generate man page templates for the utils and libraries
Jeff Moyer 2c91dc
under ndctl - including cxl, libcxl, ndctl, and daxctl.
Jeff Moyer 2c91dc
Jeff Moyer 2c91dc
The script can control certain include options depending on the options
Jeff Moyer 2c91dc
supplied, and either dump the templates to stdout, or write the actual
Jeff Moyer 2c91dc
files in their eventual directories, and open up an editor to further
Jeff Moyer 2c91dc
edit them (unless --no-edit is used).
Jeff Moyer 2c91dc
Jeff Moyer 2c91dc
Link: https://lore.kernel.org/r/20211215020102.97880-1-vishal.l.verma@intel.com
Jeff Moyer 2c91dc
Cc: Dan Williams <dan.j.williams@intel.com>
Jeff Moyer 2c91dc
Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>
Jeff Moyer 2c91dc
---
Jeff Moyer 2c91dc
 scripts/docsurgeon                     | 339 +++++++++++++++++++++++++
Jeff Moyer 2c91dc
 scripts/docsurgeon_parser_generator.m4 |  23 ++
Jeff Moyer 2c91dc
 2 files changed, 362 insertions(+)
Jeff Moyer 2c91dc
 create mode 100755 scripts/docsurgeon
Jeff Moyer 2c91dc
 create mode 100644 scripts/docsurgeon_parser_generator.m4
Jeff Moyer 2c91dc
Jeff Moyer 2c91dc
diff --git a/scripts/docsurgeon b/scripts/docsurgeon
Jeff Moyer 2c91dc
new file mode 100755
Jeff Moyer 2c91dc
index 0000000..ca0ad78
Jeff Moyer 2c91dc
--- /dev/null
Jeff Moyer 2c91dc
+++ b/scripts/docsurgeon
Jeff Moyer 2c91dc
@@ -0,0 +1,339 @@
Jeff Moyer 2c91dc
+#!/bin/bash -eE
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+this_script="docsurgeon"
Jeff Moyer 2c91dc
+script_dir="$(cd "$(dirname "$(readlink -e "${BASH_SOURCE[0]}")")" && pwd)"
Jeff Moyer 2c91dc
+env_file="${script_dir}/.env"
Jeff Moyer 2c91dc
+if [ -e "$env_file" ]; then
Jeff Moyer 2c91dc
+	# shellcheck source=.env
Jeff Moyer 2c91dc
+	. "$env_file"
Jeff Moyer 2c91dc
+fi
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+sources_file="${script_dir}/.sources"
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+parser_generator="${script_dir}/${this_script}_parser_generator.m4"
Jeff Moyer 2c91dc
+parser_lib="${script_dir}/${this_script}_parser.sh"
Jeff Moyer 2c91dc
+if [ ! -e "$parser_lib" ] || [ "$parser_generator" -nt "$parser_lib" ]; then
Jeff Moyer 2c91dc
+	if command -V argbash > /dev/null; then
Jeff Moyer 2c91dc
+		argbash --strip user-content "$parser_generator" -o "$parser_lib"
Jeff Moyer 2c91dc
+	else
Jeff Moyer 2c91dc
+		echo "error: please install argbash" >&2
Jeff Moyer 2c91dc
+		exit 1
Jeff Moyer 2c91dc
+	fi
Jeff Moyer 2c91dc
+fi
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+if [[ $1 != "bin" ]]; then
Jeff Moyer 2c91dc
+	# shellcheck source=docsurgeon_parser.sh
Jeff Moyer 2c91dc
+	. "${script_dir}/${this_script}_parser.sh" || { echo "Couldn't find $parser_lib" >&2; exit 1; }
Jeff Moyer 2c91dc
+fi
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+# some script defaults - override using '.env'
Jeff Moyer 2c91dc
+docbase="Documentation"
Jeff Moyer 2c91dc
+copyright_cli="// SPDX-License-Identifier: GPL-2.0"
Jeff Moyer 2c91dc
+copyright_footer_cli="include::../copyright.txt[]"
Jeff Moyer 2c91dc
+copyright_lib="// SPDX-License-Identifier: LGPL-2.0"
Jeff Moyer 2c91dc
+copyright_footer_lib="include::../../copyright.txt[]"
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+# List of files we're creating, to be edited/renamed later
Jeff Moyer 2c91dc
+# This starts out blank, and is filled in as we go by gen_*() functions
Jeff Moyer 2c91dc
+declare -a outfiles
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+cleanup()
Jeff Moyer 2c91dc
+{
Jeff Moyer 2c91dc
+	if [ ${#outfiles[@]} -gt 0 ]; then
Jeff Moyer 2c91dc
+		rm -f "${outfiles[@]}"
Jeff Moyer 2c91dc
+	fi
Jeff Moyer 2c91dc
+	set +x
Jeff Moyer 2c91dc
+}
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+trap cleanup EXIT
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+auto_detect_params()
Jeff Moyer 2c91dc
+{
Jeff Moyer 2c91dc
+	fs=""
Jeff Moyer 2c91dc
+	module=""
Jeff Moyer 2c91dc
+	section=""
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+	# if module and section were explicitly specified, respect them
Jeff Moyer 2c91dc
+	if [[ $_arg_module ]] && [[ $_arg_section ]]; then
Jeff Moyer 2c91dc
+		return
Jeff Moyer 2c91dc
+	fi
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+	# check if names are self-consistent, and determine 'fs'
Jeff Moyer 2c91dc
+	for name in ${_arg_name[@]}; do
Jeff Moyer 2c91dc
+		if [[ ! $fs ]]; then
Jeff Moyer 2c91dc
+			if [[ $name == *-* ]]; then
Jeff Moyer 2c91dc
+				fs="-"
Jeff Moyer 2c91dc
+			elif [[ $name == *_* ]]; then
Jeff Moyer 2c91dc
+				fs="_"
Jeff Moyer 2c91dc
+			else
Jeff Moyer 2c91dc
+				# can't autodetect section
Jeff Moyer 2c91dc
+				return
Jeff Moyer 2c91dc
+			fi
Jeff Moyer 2c91dc
+		fi
Jeff Moyer 2c91dc
+		if [[ $fs == "-" ]] && [[ $name == *_* ]]; then
Jeff Moyer 2c91dc
+			die "can't auto-detect params with mixed-style names"
Jeff Moyer 2c91dc
+		fi
Jeff Moyer 2c91dc
+		if [[ $fs == "_" ]] && [[ $name == *-* ]]; then
Jeff Moyer 2c91dc
+			die "can't auto-detect params with mixed-style names"
Jeff Moyer 2c91dc
+		fi
Jeff Moyer 2c91dc
+	done
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+	# try to detect module name
Jeff Moyer 2c91dc
+	for name in ${_arg_name[@]}; do
Jeff Moyer 2c91dc
+		str=${name%%$fs*}
Jeff Moyer 2c91dc
+		if [[ $module ]]; then
Jeff Moyer 2c91dc
+			if [[ $str != $module ]]; then
Jeff Moyer 2c91dc
+				die "Can't autodetect module because of mixed names ($str and $module)"
Jeff Moyer 2c91dc
+			fi
Jeff Moyer 2c91dc
+		else
Jeff Moyer 2c91dc
+			module="$str"
Jeff Moyer 2c91dc
+		fi
Jeff Moyer 2c91dc
+	done
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+	# try to detect section number
Jeff Moyer 2c91dc
+	case "$fs" in
Jeff Moyer 2c91dc
+	-)
Jeff Moyer 2c91dc
+		section=1
Jeff Moyer 2c91dc
+		;;
Jeff Moyer 2c91dc
+	_)
Jeff Moyer 2c91dc
+		section=3
Jeff Moyer 2c91dc
+		;;
Jeff Moyer 2c91dc
+	*)
Jeff Moyer 2c91dc
+		die "Unknown fs, can't autodetect section number"
Jeff Moyer 2c91dc
+		;;
Jeff Moyer 2c91dc
+	esac
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+	if [[ $module ]]; then
Jeff Moyer 2c91dc
+		_arg_module="$module"
Jeff Moyer 2c91dc
+	fi
Jeff Moyer 2c91dc
+	if [[ $section ]]; then
Jeff Moyer 2c91dc
+		_arg_section="$section"
Jeff Moyer 2c91dc
+	fi
Jeff Moyer 2c91dc
+}
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+process_options_logic()
Jeff Moyer 2c91dc
+{
Jeff Moyer 2c91dc
+	if [[ $_arg_debug == "on" ]]; then
Jeff Moyer 2c91dc
+		set -x
Jeff Moyer 2c91dc
+	fi
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+	auto_detect_params
Jeff Moyer 2c91dc
+}
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+gen_underline()
Jeff Moyer 2c91dc
+{
Jeff Moyer 2c91dc
+	name="$1"
Jeff Moyer 2c91dc
+	char="$2"
Jeff Moyer 2c91dc
+	num="${#name}"
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+	printf -v tmpstring "%-${num}s" " "
Jeff Moyer 2c91dc
+	echo "${tmpstring// /$char}"
Jeff Moyer 2c91dc
+}
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+gen_header()
Jeff Moyer 2c91dc
+{
Jeff Moyer 2c91dc
+	printf "\n%s\n%s\n" "$1" "$(gen_underline "$1" "=")"
Jeff Moyer 2c91dc
+}
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+gen_section()
Jeff Moyer 2c91dc
+{
Jeff Moyer 2c91dc
+	printf "\n%s\n%s\n" "$1" "$(gen_underline "$1" "-")"
Jeff Moyer 2c91dc
+}
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+gen_section_name()
Jeff Moyer 2c91dc
+{
Jeff Moyer 2c91dc
+	name="$1"
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+	gen_section "NAME"
Jeff Moyer 2c91dc
+	cat <<- EOF
Jeff Moyer 2c91dc
+		$name - 
Jeff Moyer 2c91dc
+	EOF
Jeff Moyer 2c91dc
+}
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+gen_section_synopsis_1()
Jeff Moyer 2c91dc
+{
Jeff Moyer 2c91dc
+	name="$1"
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+	gen_section "SYNOPSIS"
Jeff Moyer 2c91dc
+	cat <<- EOF
Jeff Moyer 2c91dc
+		[verse]
Jeff Moyer 2c91dc
+		'$_arg_module ${name#*-} [<options>]'
Jeff Moyer 2c91dc
+	EOF
Jeff Moyer 2c91dc
+}
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+gen_section_synopsis_3()
Jeff Moyer 2c91dc
+{
Jeff Moyer 2c91dc
+	name="$1"
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+	gen_section "SYNOPSIS"
Jeff Moyer 2c91dc
+	cat <<- EOF
Jeff Moyer 2c91dc
+		[verse]
Jeff Moyer 2c91dc
+		----
Jeff Moyer 2c91dc
+		#include <$_arg_module/lib$_arg_module.h>
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+		<type> $name();
Jeff Moyer 2c91dc
+		----
Jeff Moyer 2c91dc
+	EOF
Jeff Moyer 2c91dc
+}
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+gen_section_example_1()
Jeff Moyer 2c91dc
+{
Jeff Moyer 2c91dc
+	name="$1"
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+	gen_section "EXAMPLE"
Jeff Moyer 2c91dc
+	cat <<- EOF
Jeff Moyer 2c91dc
+		----
Jeff Moyer 2c91dc
+		# $_arg_module ${name#*-}
Jeff Moyer 2c91dc
+		----
Jeff Moyer 2c91dc
+	EOF
Jeff Moyer 2c91dc
+}
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+gen_section_example_3()
Jeff Moyer 2c91dc
+{
Jeff Moyer 2c91dc
+	name="$1"
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+	gen_section "EXAMPLE"
Jeff Moyer 2c91dc
+	cat <<- EOF
Jeff Moyer 2c91dc
+		See example usage in test/lib$_arg_module.c
Jeff Moyer 2c91dc
+	EOF
Jeff Moyer 2c91dc
+}
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+gen_section_options_1()
Jeff Moyer 2c91dc
+{
Jeff Moyer 2c91dc
+	gen_section "OPTIONS"
Jeff Moyer 2c91dc
+cat << EOF
Jeff Moyer 2c91dc
+-o::
Jeff Moyer 2c91dc
+--option::
Jeff Moyer 2c91dc
+	Description
Jeff Moyer 2c91dc
+EOF
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+	if [[ $_arg_human_option == "on" ]]; then
Jeff Moyer 2c91dc
+		printf "\n%s\n" "include::human-option.txt[]"
Jeff Moyer 2c91dc
+	fi
Jeff Moyer 2c91dc
+	if [[ $_arg_verbose_option == "on" ]]; then
Jeff Moyer 2c91dc
+		printf "\n%s\n" "include::verbose-option.txt[]"
Jeff Moyer 2c91dc
+	fi
Jeff Moyer 2c91dc
+}
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+gen_section_seealso_1()
Jeff Moyer 2c91dc
+{
Jeff Moyer 2c91dc
+	gen_section "SEE ALSO"
Jeff Moyer 2c91dc
+	cat <<- EOF
Jeff Moyer 2c91dc
+	link$_arg_module:$_arg_module-list[$_arg_section],
Jeff Moyer 2c91dc
+	EOF
Jeff Moyer 2c91dc
+}
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+gen_section_seealso_3()
Jeff Moyer 2c91dc
+{
Jeff Moyer 2c91dc
+	gen_section "SEE ALSO"
Jeff Moyer 2c91dc
+	cat <<- EOF
Jeff Moyer 2c91dc
+	linklib$_arg_module:${_arg_module}_other_API[$_arg_section],
Jeff Moyer 2c91dc
+	EOF
Jeff Moyer 2c91dc
+}
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+gen_cli()
Jeff Moyer 2c91dc
+{
Jeff Moyer 2c91dc
+	name="$1"
Jeff Moyer 2c91dc
+	path="$docbase/$_arg_module"
Jeff Moyer 2c91dc
+	if [ ! -d "$path" ]; then
Jeff Moyer 2c91dc
+		die "Not found: $path"
Jeff Moyer 2c91dc
+	fi
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+	tmp="$(mktemp -p "$path" "$name.txt.XXXX")"
Jeff Moyer 2c91dc
+	outfiles+=("$tmp")
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+	# Start template generation
Jeff Moyer 2c91dc
+	printf "%s\n" "$copyright_cli" > "$tmp"
Jeff Moyer 2c91dc
+	gen_header "$name" >> "$tmp"
Jeff Moyer 2c91dc
+	gen_section_name "$name" >> "$tmp"
Jeff Moyer 2c91dc
+	gen_section_synopsis_1 "$name" >> "$tmp"
Jeff Moyer 2c91dc
+	gen_section "DESCRIPTION" >> "$tmp"
Jeff Moyer 2c91dc
+	gen_section_example_1 "$name" >> "$tmp"
Jeff Moyer 2c91dc
+	gen_section_options_1 >> "$tmp"
Jeff Moyer 2c91dc
+	printf "\n%s\n" "$copyright_footer_cli" >> "$tmp"
Jeff Moyer 2c91dc
+	gen_section_seealso_1 >> "$tmp"
Jeff Moyer 2c91dc
+}
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+gen_lib()
Jeff Moyer 2c91dc
+{
Jeff Moyer 2c91dc
+	name="$1"
Jeff Moyer 2c91dc
+	path="$docbase/$_arg_module/lib"
Jeff Moyer 2c91dc
+	if [ ! -d "$path" ]; then
Jeff Moyer 2c91dc
+		die "Not found: $path"
Jeff Moyer 2c91dc
+	fi
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+	tmp="$(mktemp -p "$path" "$name.txt.XXXX")"
Jeff Moyer 2c91dc
+	outfiles+=("$tmp")
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+	# Start template generation
Jeff Moyer 2c91dc
+	printf "%s\n" "$copyright_lib" > "$tmp"
Jeff Moyer 2c91dc
+	gen_header "$name($_arg_section)" >> "$tmp"
Jeff Moyer 2c91dc
+	gen_section_name "$name" >> "$tmp"
Jeff Moyer 2c91dc
+	gen_section_synopsis_3 "$name" >> "$tmp"
Jeff Moyer 2c91dc
+	gen_section "DESCRIPTION" >> "$tmp"
Jeff Moyer 2c91dc
+	gen_section "RETURN VALUE" >> "$tmp"
Jeff Moyer 2c91dc
+	gen_section_example_3 "$name" >> "$tmp"
Jeff Moyer 2c91dc
+	printf "\n%s\n" "$copyright_footer_lib" >> "$tmp"
Jeff Moyer 2c91dc
+	gen_section_seealso_3 >> "$tmp"
Jeff Moyer 2c91dc
+}
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+gen_man()
Jeff Moyer 2c91dc
+{
Jeff Moyer 2c91dc
+	name="$1"
Jeff Moyer 2c91dc
+	case "$_arg_section" in
Jeff Moyer 2c91dc
+	1)
Jeff Moyer 2c91dc
+		gen_cli "$name"
Jeff Moyer 2c91dc
+		;;
Jeff Moyer 2c91dc
+	3)
Jeff Moyer 2c91dc
+		gen_lib "$name"
Jeff Moyer 2c91dc
+		;;
Jeff Moyer 2c91dc
+	*)
Jeff Moyer 2c91dc
+		die "Unknown section: $_arg_section"
Jeff Moyer 2c91dc
+		;;
Jeff Moyer 2c91dc
+	esac
Jeff Moyer 2c91dc
+}
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+gen_include()
Jeff Moyer 2c91dc
+{
Jeff Moyer 2c91dc
+	echo "in gen_include"
Jeff Moyer 2c91dc
+}
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+main()
Jeff Moyer 2c91dc
+{
Jeff Moyer 2c91dc
+	process_options_logic
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+	cmd="$_arg_command"
Jeff Moyer 2c91dc
+	case "$cmd" in
Jeff Moyer 2c91dc
+	gen-man)
Jeff Moyer 2c91dc
+		for name in ${_arg_name[@]}; do
Jeff Moyer 2c91dc
+			gen_man "$name"
Jeff Moyer 2c91dc
+		done
Jeff Moyer 2c91dc
+		;;
Jeff Moyer 2c91dc
+	gen-include)
Jeff Moyer 2c91dc
+		for name in ${_arg_name[@]}; do
Jeff Moyer 2c91dc
+			gen_include
Jeff Moyer 2c91dc
+		done
Jeff Moyer 2c91dc
+		;;
Jeff Moyer 2c91dc
+	*)
Jeff Moyer 2c91dc
+		die "Unknown command: $cmd"
Jeff Moyer 2c91dc
+		;;
Jeff Moyer 2c91dc
+	esac
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+	if [[ $_arg_dump == "on" ]]; then
Jeff Moyer 2c91dc
+		for file in ${outfiles[@]}; do
Jeff Moyer 2c91dc
+			echo "${file##*/}"
Jeff Moyer 2c91dc
+			cat "$file"
Jeff Moyer 2c91dc
+			rm "$file"
Jeff Moyer 2c91dc
+		done
Jeff Moyer 2c91dc
+	elif [ ${#outfiles[@]} -gt 0 ]; then
Jeff Moyer 2c91dc
+		if [[ $_arg_edit = "on" ]]; then
Jeff Moyer 2c91dc
+			vim -p "${outfiles[@]}"
Jeff Moyer 2c91dc
+		fi
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+		for file in ${outfiles[@]}; do
Jeff Moyer 2c91dc
+			mv "$file" "${file%.*}"
Jeff Moyer 2c91dc
+		done
Jeff Moyer 2c91dc
+	fi
Jeff Moyer 2c91dc
+}
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+main "$@"
Jeff Moyer 2c91dc
diff --git a/scripts/docsurgeon_parser_generator.m4 b/scripts/docsurgeon_parser_generator.m4
Jeff Moyer 2c91dc
new file mode 100644
Jeff Moyer 2c91dc
index 0000000..9283c7c
Jeff Moyer 2c91dc
--- /dev/null
Jeff Moyer 2c91dc
+++ b/scripts/docsurgeon_parser_generator.m4
Jeff Moyer 2c91dc
@@ -0,0 +1,23 @@
Jeff Moyer 2c91dc
+#!/bin/bash
Jeff Moyer 2c91dc
+
Jeff Moyer 2c91dc
+# m4_ignore(
Jeff Moyer 2c91dc
+echo "This is just a parsing library template, not the library - pass this file to 'argbash' to fix this." >&2
Jeff Moyer 2c91dc
+exit 11  #)Created by argbash-init v2.9.0
Jeff Moyer 2c91dc
+# Rearrange the order of options below according to what you would like to see in the help message.
Jeff Moyer 2c91dc
+# ARG_OPTIONAL_REPEATED([name], [n], [Command or function name to generate a template for.\n Can be repeated for multiple names. ], [])
Jeff Moyer 2c91dc
+# ARG_OPTIONAL_BOOLEAN([edit], [e], [Edit template files after creation], [on])
Jeff Moyer 2c91dc
+# ARG_OPTIONAL_BOOLEAN([debug], [], [Debug script problems (enables set -x)], )
Jeff Moyer 2c91dc
+# ARG_OPTIONAL_BOOLEAN([dump], [], [Write generated file to stdout instead of a file], )
Jeff Moyer 2c91dc
+# ARG_OPTIONAL_SINGLE([module], [m], [Module (Docs subdir) in which to create the template], [])
Jeff Moyer 2c91dc
+# ARG_OPTIONAL_SINGLE([section], [s], [man section for which to create the template], [])
Jeff Moyer 2c91dc
+# ARG_OPTIONAL_BOOLEAN([human-option], [u], [Include the human option in 'OPTIONS'], )
Jeff Moyer 2c91dc
+# ARG_OPTIONAL_BOOLEAN([verbose-option], [V], [Include the verbose option in 'OPTIONS'], )
Jeff Moyer 2c91dc
+# ARG_POSITIONAL_DOUBLEDASH()
Jeff Moyer 2c91dc
+# ARG_POSITIONAL_SINGLE([command], [Operation to perform:\n  gen-man\n  gen-include], [])
Jeff Moyer 2c91dc
+# ARGBASH_SET_DELIM([ =])
Jeff Moyer 2c91dc
+# ARG_OPTION_STACKING([getopt])
Jeff Moyer 2c91dc
+# ARG_RESTRICT_VALUES([no-local-options])
Jeff Moyer 2c91dc
+# ARG_DEFAULTS_POS
Jeff Moyer 2c91dc
+# ARG_HELP([Tool to aid in creating and managing man page templates])
Jeff Moyer 2c91dc
+# ARG_VERSION([echo "docsurgeon 0.1"])
Jeff Moyer 2c91dc
+# ARGBASH_GO
Jeff Moyer 2c91dc
-- 
Jeff Moyer 2c91dc
2.27.0
Jeff Moyer 2c91dc