NBash
bash-doxygen
A basic doxygen filter (originally written in GNU sed) allowing you to add inline-documentation to your bash shell scripts.
Supported shell syntaxes
-
All lines starting with a
(without any leading blanks) are passed to doxygen. You can use all the doxygen commands you want in those lines. (see doxygen documentation).## -
Some top level declarations will be recognized if you use the
primitive:declare
for arraysdeclare -a
for associative arraysdeclare -A
for integersdeclare -i- Any other top-level
statement will consider variable is a string.declare - Those additional declaration attributes can be combined with -A/-a/-i/:
will mark the variable as LowerCasedeclare -l
will mark the variable as UpperCasedeclare -u
will mark the variable as Exporteddeclare -x
will mark the variable as ReadOnlydeclare -r
- Additionally, declaring a variable with an
statement will also be recognized and the variable will be marked as an Exported String.export
-
Functions declaration will be recognized if all these conditions are met:
- a
line is found above the function declaration,## @fn - the function is declared either with or without the non-posix
keyword, but always withfunction
.() - the body-opening
char is on the same line as the{
instruction.funcname()
- a
How to use it
- If you do not have a Doxygen configuration file (usually named
Doxyfile), you can generate one by simply running
.doxygen -g - Edit the Doxyfile to map shell files to C parser: EXTENSION_MAPPING = sh=C
- Set your shell script file names pattern as Doxygen inputs, like
e.g.: FILE_PATTERNS = *.sh
- Mention doxygen-bash.sed in either the
or theINTPUT_FILTER
directive of your Doxyfile. If doxygen-bash.sed is in your $PATH, then you can just invoke it as is, else useFILTER_PATTERN
.sed -n -f /path/to/doxygen-bash.sed --
CAREFUL: If you are a BSD and or a Mac user, you will definitely want
to use
instead of
to make it work.
Known limitations
Yes.
FAQ
Q. Does it actually work ? A. The bash-argsparse project uses this filter. Check the result. Click on the links. See by yourself.
Q. Is it rock-solid ? A. No.
Q. Do you accept patches ? A. Definitely.
Q. Why is the project named bash-doxygen while the filter is named doxygen-bash ? A. Yeah, haha. Seriously.
Q. Can I include the doxygen-bash.sed file in my own tarball ? A. See the COPYING file.
Q. Dude. sed ? Seriously ? A. Are you.. Jealous ?
Q. ... ? A. Don't you dare !