VirtualBox

source: vbox/trunk/doc/manual/dita-refentry-flat-to-single-topic.sh@ 99497

Last change on this file since 99497 was 99497, checked in by vboxsync, 13 months ago

manual: Split out the topics of converted manpages into separate files and generate ditamap files for each manpage to avoid needing to hardcode anything in UserManual.xml. This means that the topics inside a manpage can be supressed from the toc, but otoh, they get numbered (with 4.x). The per-topic files are named by refentry/refsect1/refsect2 @id and are currently not cleaned up by 'kmk clean'. bugref:10302

  • Property svn:eol-style set to LF
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 2.6 KB
Line 
1#!/usr/bin/env kmk_ash
2# $Id: dita-refentry-flat-to-single-topic.sh 99497 2023-04-21 01:55:02Z vboxsync $
3## @file
4# Helper Script for splitting up a convert manpage into separate topic
5# files (named by @id).
6#
7
8#
9# Copyright (C) 2023 Oracle and/or its affiliates.
10#
11# This file is part of VirtualBox base platform packages, as
12# available from https://www.virtualbox.org.
13#
14# This program is free software; you can redistribute it and/or
15# modify it under the terms of the GNU General Public License
16# as published by the Free Software Foundation, in version 3 of the
17# License.
18#
19# This program is distributed in the hope that it will be useful, but
20# WITHOUT ANY WARRANTY; without even the implied warranty of
21# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
22# General Public License for more details.
23#
24# You should have received a copy of the GNU General Public License
25# along with this program; if not, see <https://www.gnu.org/licenses>.
26#
27# SPDX-License-Identifier: GPL-3.0-only
28#
29
30
31#
32# This script is very internal, so we got the following fixed position parameters:
33# 1: The input DITA file (output from docbook-refentry-to-manual-dita.xsl).
34# 2: dita-refentry-flat-topic-ids.xsl
35# 3: dita-refentry-flat-to-single-topic.xsl
36# 4: The out directory.
37# 5: '--'
38# 6+: xsltproc invocation (sans output, input and xslt file).
39#
40if test $# -lt 6; then
41 echo "syntax error: too few arguments" 1>&2;
42 exit 2;
43fi
44MY_INPUT_FILE="$1"
45MY_XSLT_TOPIC_IDS="$2"
46MY_XSLT_TO_SINGLE_TOPIC="$3"
47MY_OUTPUT_DIR="$4"
48if test "$5" != "--"; then
49 echo "syntax error: Expected '--' as the 3rd parameter, got: $3" 1>&2;
50 exit 2;
51fi
52shift 5
53
54if ! test -f "${MY_INPUT_FILE}"; then
55 echo "error: Input file does not exists or is not a regular file: ${MY_INPUT_FILE}" 1>&2;
56 exit 1;
57fi
58if ! test -f "${MY_XSLT_TOPIC_IDS}"; then
59 echo "error: The given dita-refentry-flat-topic-ids.xsl file does not exists or is not a regular file: ${MY_XSLT_TOPIC_IDS}" 1>&2;
60 exit 1;
61fi
62if ! test -f "${MY_XSLT_TO_SINGLE_TOPIC}"; then
63 echo "error: The given dita-refentry-flat-to-single-topic.xsl file does not exists or is not a regular file: ${MY_XSLT_TO_SINGLE_TOPIC}" 1>&2;
64 exit 1;
65fi
66if ! test -d "${MY_OUTPUT_DIR}"; then
67 echo "error: Destination directory does not exists or not a directory: ${MY_OUTPUT_DIR}" 1>&2;
68 exit 1;
69fi
70
71# Exit on failure.
72set -e
73
74#
75# First get the ID list from it.
76#
77MY_TOPIC_IDS=$($* "${MY_XSLT_TOPIC_IDS}" "${MY_INPUT_FILE}")
78
79#
80# Extract each topic.
81#
82for MY_ID in ${MY_TOPIC_IDS};
83do
84 $* \
85 --stringparam g_sMode topic \
86 --stringparam g_idTopic "${MY_ID}" \
87 --output "${MY_OUTPUT_DIR}/${MY_ID}.dita" "${MY_XSLT_TO_SINGLE_TOPIC}" "${MY_INPUT_FILE}"
88done
89exit 0
Note: See TracBrowser for help on using the repository browser.

© 2023 Oracle
ContactPrivacy policyTerms of Use