Пример #1
0
Файл: ref.py Проект: uael/conan
def validate_conan_name(name, version=False):
    """Check for name compliance with pattern rules"""
    try:
        if name == '*':
            return name
        if ConanFileReference.validation_pattern.match(name) is None:
            if version and name.startswith("[") and name.endswith("]"):
                return name
            if len(name) > ConanFileReference.max_chars:
                message = "'%s' is too long. Valid names must " \
                          "contain at most %s characters." % (name,
                                                              ConanFileReference.max_chars)
            elif len(name) < ConanFileReference.min_chars:
                message = "'%s' is too short. Valid names must contain"\
                          " at least %s characters." % (name, ConanFileReference.min_chars)
            else:
                message = "'%s' is an invalid name. Valid names MUST begin with a "\
                          "letter or number, have between %s-%s chars, including "\
                          "letters, numbers, underscore,"\
                          " dot and dash" % (name, ConanFileReference.min_chars,
                                             ConanFileReference.max_chars)
            raise InvalidNameException(message)
        return name
    except AttributeError:
        raise InvalidNameException('Empty name provided', None)
Пример #2
0
    def __new__(cls,
                name,
                version,
                user,
                channel,
                revision=None,
                validate=True):
        """Simple name creation.
        @param name:        string containing the desired name
        @param version:     string containing the desired version
        @param user:        string containing the user name
        @param channel:     string containing the user channel
        @param revision:    string containing the revision (optional)
        """
        if (user and not channel) or (channel and not user):
            raise InvalidNameException(
                "Specify the 'user' and the 'channel' or neither of them")

        version = Version(version) if version is not None else None
        user = _noneize(user)
        channel = _noneize(channel)

        obj = super(cls, ConanFileReference).__new__(cls, name, version, user,
                                                     channel, revision)
        if validate:
            obj._validate()
        return obj
Пример #3
0
    def _validate(self):
        if self.name is not None:
            ConanName.validate_name(self.name, reference_token="package name")
        if self.version is not None:
            ConanName.validate_name(self.version, True, reference_token="package version")
        if self.user is not None:
            ConanName.validate_name(self.user, reference_token="user name")
        if self.channel is not None:
            ConanName.validate_name(self.channel, reference_token="channel")
        if self.revision is not None:
            ConanName.validate_revision(self.revision)

        if not self.name or not self.version:
            raise InvalidNameException("Specify the 'name' and the 'version'")

        if (self.user and not self.channel) or (self.channel and not self.user):
            raise InvalidNameException("Specify the 'user' and the 'channel' or neither of them")
Пример #4
0
 def raise_invalid_version_error(name, version):
     message = (
         "Package {} has an invalid version number: '{}'. Valid names "
         "MUST begin with a letter, number or underscore, have "
         "between {}-{} chars, including letters, numbers, "
         "underscore, dot and dash").format(name, version,
                                            ConanName._min_chars,
                                            ConanName._max_chars)
     raise InvalidNameException(message)
Пример #5
0
 def validate_string(value, reference_token=None):
     """Check for string"""
     if not isinstance(value, string_types):
         message = "Value provided{ref_token}, '{value}' (type {type}), {reason}".format(
             ref_token=" for {}".format(reference_token) if reference_token else "",
             value=value, type=type(value).__name__,
             reason="is not a string"
         )
         raise InvalidNameException(message)
Пример #6
0
 def invalid_name_message(name):
     if len(name) > ConanName._max_chars:
         message = ("'%s' is too long. Valid names must contain at most %s characters."
                    % (name, ConanName._max_chars))
     elif len(name) < ConanName._min_chars:
         message = ("'%s' is too short. Valid names must contain at least %s characters."
                    % (name, ConanName._min_chars))
     else:
         message = ("'%s' is an invalid name. Valid names MUST begin with a "
                    "letter or number, have between %s-%s chars, including "
                    "letters, numbers, underscore, dot and dash"
                    % (name, ConanName._min_chars, ConanName._max_chars))
     raise InvalidNameException(message)
Пример #7
0
 def invalid_name_message(value, reference_token=None):
     if len(value) > ConanName._max_chars:
         reason = "is too long. Valid names must contain at most %s characters."\
                  % ConanName._max_chars
     elif len(value) < ConanName._min_chars:
         reason = "is too short. Valid names must contain at least %s characters."\
                  % ConanName._min_chars
     else:
         reason = ("is an invalid name. Valid names MUST begin with a "
                   "letter, number or underscore, have between %s-%s chars, including "
                   "letters, numbers, underscore, dot and dash"
                   % (ConanName._min_chars, ConanName._max_chars))
     message = "Value provided{ref_token}, '{value}' (type {type}), {reason}".format(
         ref_token=" for {}".format(reference_token) if reference_token else "",
         value=value, type=type(value).__name__, reason=reason
     )
     raise InvalidNameException(message)
Пример #8
0
 def validate(name, pattern=False):
     """Check for name compliance with pattern rules. User names can be
        with upper/lower case
     """
     if Username.pattern.match(name) is None:
         if pattern and name == "*":
             return
         if len(name) > Username.max_len:
             message = "'%s' is too long. Valid names must contain at most %s characters." \
                       "" % (name, Username.max_len)
         elif len(name) < Username.min_len:
             message = "'%s' is too short. Valid names must contain at least %s characters." \
                       "" % (name, Username.min_len)
         else:
             message = "'%s' is an invalid name. "\
                       "Valid names should begin with alphanumerical characters, '_' and '-'." % name
         raise InvalidNameException(message)
Пример #9
0
 def validate_revision(revision):
     if ConanName._validation_revision_pattern.match(revision) is None:
         raise InvalidNameException(
             "The revision field, must contain only letters "
             "and numbers with a length between 1 and "
             "%s" % ConanName._max_chars)