File: xmlformat

package info (click to toggle)
daps 3.3.2%2Bcleaned1-7
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 5,540 kB
  • sloc: xml: 9,773; sh: 3,059; python: 1,322; lisp: 380; makefile: 239
file content (95 lines) | stat: -rw-r--r-- 3,443 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# -*-Shell-script-*-
#
# Copyright (C) 2015-2020 SUSE Software Solutions Germany GmbH
#
# Author:
# Frank Sundermeyer <fsundermeyer at opensuse dot org>
#
###########################################################################
#
# XMLformat
#
# Prettyfies the XML sources
#
###########################################################################
function xmlformat {
    local _BINARY DAPSXMLFORMAT SHORT_OPTS LONG_OPTS SUB_CMD XMLFORMAT_CMD
    local _XMLFORMAT_FLAGS
    SUB_CMD=$1
    shift

    SHORT_OPTS="h"
    LONG_OPTS="file:,help,rootid:"

    parse_args "$SHORT_OPTS" "$LONG_OPTS" "$SUB_CMD" "$@"
    eval set -- "$P_REMAIN_ARGS"

    # check whether xmlformat is installed:
    for _BINARY in xmlformat xmlformat.pl xmlformat.rb; do
        XMLFORMAT_CMD="$(which  --skip-alias --skip-functions "$_BINARY" 2>/dev/null)" && break
    done
    if [[ -z $XMLFORMAT_CMD ]]; then
        ccecho "error" "Error: xmlformat is not installed"
        exit 1
    fi

    #------ Computing the values returned from the parser -----
    if [[ 1 -eq $P_HELP ]]; then
        help_scmd_head "$SUB_CMD" "${HELP_SUBCOMMAND[$SUB_CMD]}"
        help_file
        help_help
        help_rootid
        echo -e "    NOTES: * Options --file and --rootid exclude one another.\n           * If neither file nor rootid is specified, the rootid\n             from the DC-file is used\n           * $SUB_CMD follows xi:includes\n           * MAIN is ignored when --file or when a ROOTID is specified\n           * This command will directly alter your source xml files!"
        exit 0
    fi

    if [[ -z "$P_ROOTID" && -z "$P_FILE" ]]; then
        if [[ 0 -ne $VERBOSITY ]]; then
            ccecho "info" "Neither file nor rootid specified, using rootid from DC-file"
        fi
    elif [[ -n "$P_ROOTID" && -n "$P_FILE" ]]; then
        exit_on_error "Options --file (-f) and --rootid exclude one another.\nPlease specify only one of these options"
    fi

    # define which dpas-xmlformat to use
    #
    if [[ -n "$DAPSROOT" && "$DAPSROOT" != "$DAPSROOT_DEFAULT" ]]; then
        # use daps-xmlformat from DAPSROOT if the latter is set
        DAPSXMLFORMAT="${DAPSROOT}/bin/daps-xmlformat"
    else
        DAPSXMLFORMAT="$(which --skip-alias --skip-functions daps-xmlformat 2>/dev/null)" || exit_on_error "Cannot find a daps-xmlformat executable"
    fi

    # if --file was specified, FILELIST contains just one file
    # if --rootid was specified, we need to get the list of files

    if [[ -n "$P_FILE" ]]; then
        FILELIST[0]="$P_FILE"
    else
        [[ -n "$P_ROOTID" ]] && export ROOTID="$P_ROOTID"
        FILELIST=( $(call_make list-srcfiles silent LIST_NODC=1 LIST_NOENT=1 LIST_NOIMG=1 ) )
        if [[ 0 -ne $? ]]; then
            exit_on_error "Failed to get filelist for ROOTID \"$ROOTID\""
        fi
    fi

    # Be more verbose in debug or -vv mode
    #
    if [[ 1 -eq $DEBUG || 2 -le "$VERBOSITY" ]]; then
        _XMLFORMAT_FLAGS="-i -v"
    else
        _XMLFORMAT_FLAGS="-i"
    fi
    # run daps-xmlformat
    #
    # ignore $MAIN with --file or --rootid
    #
    [[ 0 -ne $VERBOSITY ]] && echo "Prettifying the following files:"
    for FILE in "${FILELIST[@]}"; do
        if [[ -n "$P_FILE" || -n "$ROOTID" ]]; then
            [[ "$FILE" = "$MAIN" ]] && continue
        fi
        [[ 0 -ne $VERBOSITY ]] && echo -e "  $FILE"
        $DAPSXMLFORMAT $_XMLFORMAT_FLAGS "$FILE" >/dev/null
    done
}