usr/src/lib/install_manifest_input/__init__.py
author Jack Schwartz <Jack.Schwartz@Oracle.COM>
Thu, 21 Apr 2011 12:16:26 -0700
changeset 1087 96b6cc8130c5
child 1309 a58fac510fb6
permissions -rw-r--r--
6994260 Implement Auto-Installer Derived Manifests 7033335 If root is the first user of InstallLogger, only root can use 7036438 update-manifest command needed 15491 installadm needs to list default custom manifests
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1087
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
     1
#!/usr/bin/python
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
     2
#
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
     3
# CDDL HEADER START
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
     4
#
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
     5
# The contents of this file are subject to the terms of the
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
     6
# Common Development and Distribution License (the "License").
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
     7
# You may not use this file except in compliance with the License.
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
     8
#
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
     9
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    10
# or http://www.opensolaris.org/os/licensing.
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    11
# See the License for the specific language governing permissions
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    12
# and limitations under the License.
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    13
#
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    14
# When distributing Covered Code, include this CDDL HEADER in each
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    15
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    16
# If applicable, add the following below this CDDL HEADER, with the
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    17
# fields enclosed by brackets "[]" replaced with your own identifying
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    18
# information: Portions Copyright [yyyy] [name of copyright owner]
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    19
#
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    20
# CDDL HEADER END
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    21
#
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    22
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    23
#
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    24
# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    25
#
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    26
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    27
""" Module body for manifest_input package
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    28
"""
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    29
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    30
import gettext
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    31
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    32
_ = gettext.translation("mim", "/usr/share/locale", fallback=True).gettext
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    33
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    34
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    35
# Errors created for this library.
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    36
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    37
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    38
class MimError(StandardError):
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    39
    '''
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    40
    Granddaddy of all Manifest Input Module errors
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    41
    '''
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    42
    pass
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    43
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    44
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    45
class MimDTDFmtError(MimError):
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    46
    '''
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    47
    DTD format error
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    48
    '''
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    49
    pass
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    50
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    51
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    52
class MimDTDExpnError(MimError):
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    53
    '''
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    54
    DTD expression error
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    55
    '''
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    56
    pass
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    57
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    58
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    59
class MimDTDInternalError(MimError):
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    60
    '''
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    61
    DTD internal error
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    62
    '''
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    63
    pass
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    64
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    65
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    66
class MimDTDError(MimError):
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    67
    '''
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    68
    DTD processing error
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    69
    '''
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    70
    pass
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    71
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    72
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    73
class MimDTDInvalid(MimError):
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    74
    '''
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    75
    DTD did not validate
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    76
    '''
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    77
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    78
    def __init__(self, validation_error_list):
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    79
        '''
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    80
        Constructor.
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    81
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    82
        Args:
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    83
          validation_error_list: list of validation errors.
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    84
        '''
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    85
        super(MimDTDInvalid, self).__init__()
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    86
        self._errors = validation_error_list
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    87
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    88
    @property
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    89
    def errors(self):
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    90
        '''
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    91
        Return validation errors
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    92
        '''
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    93
        return self._errors
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    94
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    95
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    96
class MimEtreeParseError(MimError, IOError):
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    97
    '''
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    98
    Etree parsing error
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    99
    '''
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   100
    pass
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   101
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   102
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   103
class MimEmptyTreeError(MimError):
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   104
    '''
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   105
    Empty tree (no data) error
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   106
    '''
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   107
    pass
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   108
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   109
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   110
class MimMatchError(MimError):
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   111
    '''
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   112
    Matching errors
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   113
    '''
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   114
    pass
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   115
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   116
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   117
class MimInvalidError(MimError, ValueError):
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   118
    '''
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   119
    Invalidity errors
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   120
    '''
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   121
    pass
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   122
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   123
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   124
# Error messages
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   125
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   126
# IOErrors
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   127
IOERR_DTD_ACCESS = _("Could not access DTD file: %(mserr)s: %(mfile)s")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   128
IOERR_DTD_DIGEST = _("Could not digest DTD file: %(mserr)s: %(mfile)s")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   129
IOERR_DTD_DEST = _("Could not open destination file for "
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   130
                   "writing: %(mserr)s: %(mdest)s")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   131
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   132
# Other MIM module errors
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   133
ERR_ARG_INVALID = _("Argument is missing or invalid")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   134
ERR_NO_SCHEMA = _("No schema name provided.")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   135
ERR_NO_OUTFILE = _("No output file name provided.")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   136
ERR_ETREE_PROC = _("Etree error processing DTD data from "
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   137
                   "file \"%(mfile)s\": %(merr)s")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   138
ERR_SCHDATA_PROC = _("SchemaData error processing "
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   139
                     "DTD data from file \"%(mfile)s\": %(merr)s")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   140
ERR_ETREE_PARSE_FILE = _("Error parsing XML manifest file %(mfile)s: %(merr)s")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   141
ERR_EMPTY_TREE = _("No XML data present.")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   142
ERR_AMBIG_PATH = _("Ambiguity error:  Path matches more than one element")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   143
ERR_AMBIG_PARENT_PATH = _("Ambiguity error: "
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   144
                          "Parent path matches more than one element")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   145
ERR_NO_PARENT_PATH = _("Error: no matching parent path exists")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   146
ERR_NO_ELEM_MATCH = _("Error:  Path matches no elements")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   147
ERR_NO_ATTR_MATCH = _("Error: Path matches no attributes")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   148
ERR_FINAL_BRANCH_VAL_INVALID = _("Final path branch has a value or is invalid")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   149
ERR_FINAL_BRANCH_INVALID = _("Final path branch is invalid")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   150
ERR_ETREE_PARSE_XPATH = _("Etree error parsing path %(mxpath)s: %(merr)s")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   151
ERR_NODE_PLACEMENT = _("Node \"%(mnode)s\" cannot be placed as "
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   152
                       "child of \"%(mparent)s\"")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   153
ERR_UNBAL_QUOTES_BKTS = _("Unbalanced brackets or quotation marks")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   154
ERR_BRANCH_BEGIN_AT = _("Path branch cannot begin with @")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   155
ERR_INVALID_CHARS = _("Path has invalid characters")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   156
ERR_2ND_ROOT = _("Cannot add a second tree root node")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   157
ERR_LEAF_DUPS = _("Cannot add sibling node with same tag as found leaf node.")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   158
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   159
# process_DTD module errors
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   160
ERR_NESTED_COMMENTS = _("DTD has nested comments")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   161
ERR_MISMATCHED_DELIM = _("DTD has mismatched comment delimiters")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   162
ERR_EXTRA_CLOSE_PAREND = _("Malformed expression: too many \")\"")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   163
ERR_EXTRA_OPEN_PAREND = _("Malformed expression: too many \"(\"")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   164
ERR_BAD_ELT_LINE = _("Malformed element line: %(mline)s")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   165
ERR_ELT_LINE_NO_BKT = _("Malformed element line.  Missing final \">\"")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   166
ERR_PQS_QTY_INVALID = _("DDObj.qty.setter: Invalid quantity "
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   167
                        "specification: %(mspec)s")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   168
ERR_PTELT_LIST_FULL = _("DDElt list already has one item: %(mitem)s")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   169
ERR_MISMATCHED_PARENDS = _("Malformed expression: Parentheses mismatch")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   170
ERR_INVALID_QUANTIFIER = _("Malformed expression: invalid "
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   171
                           "quantifier: %(mquant)s")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   172
ERR_INVALID_DTD_EXPR = _("Malformed expression: \",\" and \"|\" at same level")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   173
ERR_SEI_INVALID_TYPE = _("_search_element_info: invalid type \"%(mtype)s\"")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   174
ERR_INVALID_STATE = _("SearchState mode is invalid: %(mmode)d")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   175
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   176
# Other notices
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   177
IOERR_MFEST_ACCESS = _("Notice: Error reading XML manifest "
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   178
                       "file \"%(mfile)s\"")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   179
ERR_MFEST_NOENV = _("Manifest name could not be determined from "
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   180
                    "environment (AIM_MANIFEST)")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   181
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   182
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   183
# Utility functions
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   184
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   185
def search_and_get_context(path, ch, start_idx=0, brkt_active_lvl=0,
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   186
                           backward=False):
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   187
    '''
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   188
    Return indices of where unquoted "ch" occur in a string.
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   189
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   190
    This function is used in parsing a nodepath.
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   191
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   192
    Return bracket level along with each index.  Bracket level is
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   193
        incremented only if found bracket is not quoted.
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   194
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   195
    Args:
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   196
      path: path to search through.
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   197
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   198
      ch: character to search for.
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   199
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   200
      start_idx: where in "path" to start searching.
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   201
          If zero and backward = True, starting index is the last character.
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   202
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   203
      brkt_active_lvl: nesting level of [ ].  Usually carried over from a
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   204
          previous search, which terminated at (start_idx - 1).
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   205
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   206
      backward: Search from the end if set to True.
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   207
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   208
    Returns:
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   209
      idx: index of found character
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   210
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   211
      brkt_active_lvl: nesting level of [ ].
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   212
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   213
    Raises: N/A
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   214
    '''
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   215
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   216
    idx = 0
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   217
    single_active = double_active = False
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   218
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   219
    if backward:
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   220
        if start_idx == 0:
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   221
            start_idx = len(path) - 1
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   222
        stop = -1
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   223
        step = -1
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   224
    else:
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   225
        stop = len(path)
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   226
        step = 1
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   227
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   228
    curr = None  # Set to something not found in a string.
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   229
    for idx in range(start_idx, stop, step):
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   230
        curr = path[idx]
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   231
        if curr == "'":
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   232
            single_active = (single_active == False)
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   233
        if curr == '"':
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   234
            double_active = (double_active == False)
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   235
        if not (double_active or single_active):
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   236
            if curr == ch:
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   237
                break
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   238
            elif curr == "[":
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   239
                brkt_active_lvl += 1
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   240
            elif curr == "]":
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   241
                brkt_active_lvl -= 1
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   242
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   243
    else:
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   244
        idx = -1
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   245
    return idx, brkt_active_lvl
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   246
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   247
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   248
def branch_split(path):
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   249
    '''
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   250
    Break path into branches on non-quoted, non-bracketed slashes.
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   251
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   252
    Args:
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   253
      path: path to split
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   254
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   255
    Returns:
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   256
      list of branches
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   257
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   258
    Raises:
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   259
      MimInvalidError - Unbalanced brackets or quotation marks
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   260
    '''
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   261
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   262
    # So _search_and_get_context() can split only on inner /.
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   263
    path = path.strip("/")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   264
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   265
    return noquote_nobkt_split(path, "/")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   266
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   267
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   268
def noquote_nobkt_split(path, split_char):
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   269
    '''
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   270
    Break path into branches on non-quoted, non-bracketed slashes.
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   271
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   272
    Args:
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   273
      path: path to split
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   274
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   275
      split_char: character to split on
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   276
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   277
    Returns:
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   278
      list of branches
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   279
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   280
    Raises:
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   281
      MimInvalidError - Unbalanced brackets or quotation marks
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   282
    '''
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   283
    branches = []
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   284
    idx = start_idx = 0
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   285
    brkt_active_lvl = 0
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   286
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   287
    while (True):
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   288
        idx, brkt_active_lvl = \
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   289
             search_and_get_context(path, split_char, idx, brkt_active_lvl)
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   290
        if brkt_active_lvl == 0:
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   291
            if idx > 0:
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   292
                branches.append(path[start_idx:idx])
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   293
            else:
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   294
                branches.append(path[start_idx:])
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   295
                break
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   296
            start_idx = idx + 1
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   297
        elif idx < 0:
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   298
            raise MimInvalidError(ERR_UNBAL_QUOTES_BKTS)
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   299
        idx += 1
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   300
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   301
    return branches