Files
podman/docs/remote-docs.sh
Ashley Cui 4dc934080b Fix remote docs
Fix renaming bug in remote-docs.sh
Remove mentions of 'remote' in windows and mac dos
Remove podman-remote.conf.5

Signed-off-by: Ashley Cui <acui@redhat.com>
2020-06-18 12:13:46 -04:00

120 lines
3.2 KiB
Bash
Executable File

#!/bin/bash -e
# Assemble remote man pages for darwin or windows from markdown files
PLATFORM=$1 ## linux, windows or darwin
TARGET=${2} ## where to output files
SOURCES=${@:3} ## directories to find markdown files
PODMAN=${PODMAN:-bin/podman-remote} ## location overridden for testing
function usage() {
echo >&2 "$0 PLATFORM TARGET SOURCES..."
echo >&2 "PLATFORM: Is either linux, darwin or windows."
echo >&2 "TARGET: Is the directory where files will be staged. eg, docs/build/remote/linux"
echo >&2 "SOURCES: Are the directories of source files. eg, docs/markdown"
}
function fail() {
echo >&2 -e "$@\n"
usage
exit 1
}
case $PLATFORM in
darwin|linux)
PUBLISHER=man_fn
;;
windows)
PUBLISHER=html_fn
;;
-help)
usage
exit 0
;;
*) fail '"linux", "darwin" and "windows" are the only supported platforms.' ;;
esac
if [[ -z $TARGET ]]; then
fail 'TARGET directory is required'
fi
if [[ -z $SOURCES ]]; then
fail 'At least one SOURCE directory is required'
fi
if [[ ! -x $PODMAN ]]; then
fail "$PODMAN does not exist"
fi
## man_fn copies the man page or link to flattened directory
function man_fn() {
local page=$1
local file=$(basename $page)
local dir=$(dirname $page)
if [[ ! -f $page ]]; then
page=$dir/links/${file%.*}.1
fi
install $page $TARGET/${file%%.*}.1
}
## html_fn converts the markdown page or link to HTML
function html_fn() {
local markdown=$1
local file=$(basename $markdown)
local dir=$(dirname $markdown)
if [[ ! -f $markdown ]]; then
local link=$(sed -e 's?.so man1/\(.*\)?\1?' <$dir/links/${file%.md})
markdown=$dir/$link.md
fi
pandoc --ascii --lua-filter=docs/links-to-html.lua -o $TARGET/${file%%.*}.html $markdown
}
## pub_pages finds and publishes the remote manual pages
function pub_pages() {
local source=$1
local publisher=$2
for f in $(ls $source/podman-remote*); do
$publisher $f
done
for c in "container" "image" "pod" "volume" ""; do
local cmd=${c:+-$c}
for s in $($PODMAN $c --help | sed -n '/^Available Commands:/,/^Flags:/p' | sed -e '1d;$d' -e '/^$/d' | awk '{print $1}'); do
$publisher $(echo $source/podman$cmd-$s.*)
done
done
}
## rename renames podman-remote.ext to podman.ext, and fixes up contents to reflect change
function rename (){
if [[ "$PLATFORM" != linux ]]; then
local remote=$(echo $TARGET/podman-remote.*)
local ext=${remote##*.}
mv $remote $TARGET/podman.$ext
$(sed -i "s/podman\\\*-remote/podman/g" $TARGET/podman.$ext)
$(sed -i "s/A\ remote\ CLI\ for\ Podman\:\ //g" $TARGET/podman.$ext)
case $PLATFORM in
darwin|linux)
$(sed -i "s/Podman\\\*-remote/Podman\ for\ Mac/g" $TARGET/podman.$ext)
;;
windows)
$(sed -i "s/Podman\\\*-remote/Podman\ for\ Windows/g" $TARGET/podman.$ext)
;;
esac
fi
}
## walk the SOURCES for markdown sources
mkdir -p $TARGET
for s in $SOURCES; do
if [[ -d $s ]]; then
pub_pages $s $PUBLISHER
else
echo >&2 "Warning: $s does not exist"
fi
done
rename