usr/src/lib/install_manifest_input/__init__.py
author Jack Schwartz <Jack.Schwartz@Oracle.COM>
Fri, 05 Aug 2011 12:08:36 -0700
changeset 1360 8559e4b4c3f4
parent 1352 1697c11284b8
permissions -rw-r--r--
7075427 Make aimanifest friendly for script checkout
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
1309
a58fac510fb6 7047801 Derived Manifests Module should remove script restrictions of only ksh93 or python
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1087
diff changeset
    73
class MimMultMsgError(MimError):
1087
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
    74
    '''
1309
a58fac510fb6 7047801 Derived Manifests Module should remove script restrictions of only ksh93 or python
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1087
diff changeset
    75
    Exception class handling multiple error messages
1087
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
        '''
1309
a58fac510fb6 7047801 Derived Manifests Module should remove script restrictions of only ksh93 or python
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1087
diff changeset
    85
        super(MimMultMsgError, self).__init__()
1087
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
1309
a58fac510fb6 7047801 Derived Manifests Module should remove script restrictions of only ksh93 or python
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1087
diff changeset
    96
class MimDTDInvalid(MimMultMsgError):
a58fac510fb6 7047801 Derived Manifests Module should remove script restrictions of only ksh93 or python
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1087
diff changeset
    97
    '''
a58fac510fb6 7047801 Derived Manifests Module should remove script restrictions of only ksh93 or python
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1087
diff changeset
    98
    DTD did not validate
a58fac510fb6 7047801 Derived Manifests Module should remove script restrictions of only ksh93 or python
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1087
diff changeset
    99
    '''
a58fac510fb6 7047801 Derived Manifests Module should remove script restrictions of only ksh93 or python
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1087
diff changeset
   100
    pass
a58fac510fb6 7047801 Derived Manifests Module should remove script restrictions of only ksh93 or python
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1087
diff changeset
   101
a58fac510fb6 7047801 Derived Manifests Module should remove script restrictions of only ksh93 or python
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1087
diff changeset
   102
a58fac510fb6 7047801 Derived Manifests Module should remove script restrictions of only ksh93 or python
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1087
diff changeset
   103
class MimEtreeParseError(MimMultMsgError, IOError):
1087
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
    Etree parsing 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 MimEmptyTreeError(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
    Empty tree (no data) error
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 MimMatchError(MimError):
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
    Matching 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
class MimInvalidError(MimError, ValueError):
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
    Invalidity errors
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   127
    '''
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   128
    pass
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   129
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   130
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   131
# Error messages
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   132
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   133
# IOErrors
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   134
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
   135
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
   136
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
   137
                   "writing: %(mserr)s: %(mdest)s")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   138
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   139
# Other MIM module errors
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   140
ERR_ARG_INVALID = _("Argument is missing or invalid")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   141
ERR_NO_SCHEMA = _("No schema name provided.")
1352
1697c11284b8 7071849 Simplify Manifest Input Module input and output file processing and remove dead code
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1309
diff changeset
   142
ERR_NO_EVFILE = _("No evolving manifest filename provided.")
1087
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   143
ERR_SCHDATA_PROC = _("SchemaData error processing "
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   144
                     "DTD data from file \"%(mfile)s\": %(merr)s")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   145
ERR_EMPTY_TREE = _("No XML data present.")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   146
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
   147
ERR_AMBIG_PARENT_PATH = _("Ambiguity error: "
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   148
                          "Parent path matches more than one element")
1360
8559e4b4c3f4 7075427 Make aimanifest friendly for script checkout
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1352
diff changeset
   149
ERR_NO_PARENT_PATH = _("No matching parent path exists")
8559e4b4c3f4 7075427 Make aimanifest friendly for script checkout
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1352
diff changeset
   150
ERR_NO_ELEM_MATCH = _("Path matches no elements")
8559e4b4c3f4 7075427 Make aimanifest friendly for script checkout
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents: 1352
diff changeset
   151
ERR_NO_ATTR_MATCH = _("Path matches no attributes")
1087
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   152
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
   153
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
   154
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
   155
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
   156
                       "child of \"%(mparent)s\"")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   157
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
   158
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
   159
ERR_INVALID_CHARS = _("Path has invalid characters")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   160
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
   161
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
   162
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   163
# process_DTD module errors
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   164
ERR_NESTED_COMMENTS = _("DTD has nested comments")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   165
ERR_MISMATCHED_DELIM = _("DTD has mismatched comment delimiters")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   166
ERR_EXTRA_CLOSE_PAREND = _("Malformed expression: too many \")\"")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   167
ERR_EXTRA_OPEN_PAREND = _("Malformed expression: too many \"(\"")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   168
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
   169
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
   170
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
   171
                        "specification: %(mspec)s")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   172
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
   173
ERR_MISMATCHED_PARENDS = _("Malformed expression: Parentheses mismatch")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   174
ERR_INVALID_QUANTIFIER = _("Malformed expression: invalid "
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   175
                           "quantifier: %(mquant)s")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   176
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
   177
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
   178
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
   179
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   180
# Other notices
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   181
IOERR_MFEST_ACCESS = _("Notice: Error reading XML manifest "
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   182
                       "file \"%(mfile)s\"")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   183
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
# Utility functions
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   186
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   187
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
   188
                           backward=False):
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
    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
   191
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   192
    This function is used in parsing a nodepath.
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   193
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   194
    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
   195
        incremented only if found bracket is not quoted.
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   196
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   197
    Args:
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   198
      path: path to search through.
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
      ch: character to search for.
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   201
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   202
      start_idx: where in "path" to start searching.
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   203
          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
   204
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   205
      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
   206
          previous search, which terminated at (start_idx - 1).
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
      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
   209
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   210
    Returns:
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   211
      idx: index of found character
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
      brkt_active_lvl: nesting level of [ ].
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
    Raises: N/A
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   216
    '''
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   217
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   218
    idx = 0
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   219
    single_active = double_active = False
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   220
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   221
    if backward:
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   222
        if start_idx == 0:
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   223
            start_idx = len(path) - 1
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   224
        stop = -1
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   225
        step = -1
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   226
    else:
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   227
        stop = len(path)
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   228
        step = 1
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   229
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   230
    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
   231
    for idx in range(start_idx, stop, step):
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   232
        curr = path[idx]
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
            single_active = (single_active == False)
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   235
        if curr == '"':
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   236
            double_active = (double_active == False)
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   237
        if not (double_active or single_active):
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   238
            if curr == ch:
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   239
                break
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
            elif curr == "]":
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   243
                brkt_active_lvl -= 1
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   244
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   245
    else:
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   246
        idx = -1
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   247
    return idx, brkt_active_lvl
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   248
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
def branch_split(path):
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
    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
   253
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   254
    Args:
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   255
      path: path to split
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   256
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   257
    Returns:
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   258
      list of branches
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   259
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   260
    Raises:
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   261
      MimInvalidError - Unbalanced brackets or quotation marks
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   262
    '''
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   263
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   264
    # 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
   265
    path = path.strip("/")
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
    return noquote_nobkt_split(path, "/")
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   268
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
def noquote_nobkt_split(path, split_char):
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
    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
   273
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   274
    Args:
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   275
      path: path to split
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
      split_char: character to split on
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   278
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   279
    Returns:
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   280
      list of branches
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   281
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   282
    Raises:
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   283
      MimInvalidError - Unbalanced brackets or quotation marks
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   284
    '''
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   285
    branches = []
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   286
    idx = start_idx = 0
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   287
    brkt_active_lvl = 0
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   288
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   289
    while (True):
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   290
        idx, brkt_active_lvl = \
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   291
             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
   292
        if brkt_active_lvl == 0:
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   293
            if idx > 0:
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   294
                branches.append(path[start_idx:idx])
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   295
            else:
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   296
                branches.append(path[start_idx:])
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   297
                break
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   298
            start_idx = idx + 1
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   299
        elif idx < 0:
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   300
            raise MimInvalidError(ERR_UNBAL_QUOTES_BKTS)
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   301
        idx += 1
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   302
96b6cc8130c5 6994260 Implement Auto-Installer Derived Manifests
Jack Schwartz <Jack.Schwartz@Oracle.COM>
parents:
diff changeset
   303
    return branches