# common pyparsing variables # # Copyright (C) 2016 Intel Corporation # # SPDX-License-Identifier: GPL-2.0-only import pyparsing # general colon = pyparsing.Literal(":") line_start = pyparsing.LineStart() line_end = pyparsing.LineEnd() lessthan = pyparsing.Literal("<") greaterthan = pyparsing.Literal(">") inappropriate = pyparsing.CaselessLiteral("Inappropriate") submitted = pyparsing.CaselessLiteral("Submitted") # word related nestexpr = pyparsing.nestedExpr(opener='[', closer=']') inappropriateinfo = pyparsing.Literal("Inappropriate") + nestexpr submittedinfo = pyparsing.Literal("Submitted") + nestexpr word = pyparsing.Word(pyparsing.alphas) worddot = pyparsing.Word(pyparsing.alphas+".") # metadata metadata_lic = 'LICENSE' invalid_license = 'PATCHTESTINVALID' metadata_chksum = 'LIC_FILES_CHKSUM' license_var = 'LICENSE' closed = 'CLOSED' lictag_re = pyparsing.AtLineStart("License-Update:") lic_chksum_added = pyparsing.AtLineStart("+" + metadata_chksum) lic_chksum_removed = pyparsing.AtLineStart("-" + metadata_chksum) add_mark = pyparsing.Regex('\\+ ') patch_max_line_length = 200 metadata_src_uri = 'SRC_URI' metadata_summary = 'SUMMARY' cve_check_ignore_var = 'CVE_CHECK_IGNORE' cve_status_var = 'CVE_STATUS' # mbox auh_email = 'auh@yoctoproject.org' invalid_submitters = [pyparsing.Regex("^Upgrade Helper.+"), pyparsing.Regex(auh_email), pyparsing.Regex("uh@not\.set"), pyparsing.Regex("\S+@example\.com")] mbox_bugzilla = pyparsing.Regex('\[\s?YOCTO.*\]') mbox_bugzilla_validation = pyparsing.Regex('\[(\s?YOCTO\s?#\s?(\d+)\s?,?)+\]') mbox_revert_shortlog_regex = pyparsing.Regex('Revert\s+".*"') mbox_shortlog_maxlength = 90 # patch cve = pyparsing.Regex("CVE\-\d{4}\-\d+") cve_payload_tag = pyparsing.Regex("\+CVE:(\s+CVE\-\d{4}\-\d+)+") upstream_status_regex = pyparsing.AtLineStart("+" + "Upstream-Status") # shortlog shortlog_target = pyparsing.OneOrMore(pyparsing.Word(pyparsing.printables.replace(':',''))) shortlog_summary = pyparsing.OneOrMore(pyparsing.Word(pyparsing.printables)) shortlog = line_start + shortlog_target + colon + shortlog_summary + line_end # signed-off-bys email_pattern = pyparsing.Regex(r"(?P[A-Za-z0-9._%+-]+)@(?P[A-Za-z0-9.-]+)\.(?P[A-Za-z]{2,})") signed_off_by_prefix = pyparsing.Literal("Signed-off-by:") signed_off_by_name = pyparsing.Regex('\S+.*(?= <)') signed_off_by_email = lessthan + email_pattern + greaterthan signed_off_by = pyparsing.AtLineStart(signed_off_by_prefix + signed_off_by_name + signed_off_by_email) patch_signed_off_by = pyparsing.AtLineStart("+" + signed_off_by_prefix + signed_off_by_name + signed_off_by_email) # upstream-status upstream_status_literal_valid_status = ["Pending", "Backport", "Denied", "Inappropriate", "Submitted"] upstream_status_nonliteral_valid_status = ["Pending", "Backport", "Denied", "Inappropriate [reason]", "Submitted [where]"] upstream_status_valid_status = pyparsing.Or( [pyparsing.Literal(status) for status in upstream_status_literal_valid_status] ) upstream_status_prefix = pyparsing.Literal("Upstream-Status") upstream_status = line_start + upstream_status_prefix + colon + upstream_status_valid_status upstream_status_inappropriate_info = line_start + upstream_status_prefix + colon + inappropriateinfo upstream_status_submitted_info = line_start + upstream_status_prefix + colon + submittedinfo