]> git.proxmox.com Git - ceph.git/blob - ceph/src/arrow/dev/release/check-rat-report.py
import quincy 17.2.0
[ceph.git] / ceph / src / arrow / dev / release / check-rat-report.py
1 #!/usr/bin/env python
2 ##############################################################################
3 # Licensed to the Apache Software Foundation (ASF) under one
4 # or more contributor license agreements. See the NOTICE file
5 # distributed with this work for additional information
6 # regarding copyright ownership. The ASF licenses this file
7 # to you under the Apache License, Version 2.0 (the
8 # "License"); you may not use this file except in compliance
9 # with the License. You may obtain a copy of the License at
10 #
11 # http://www.apache.org/licenses/LICENSE-2.0
12 #
13 # Unless required by applicable law or agreed to in writing,
14 # software distributed under the License is distributed on an
15 # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 # KIND, either express or implied. See the License for the
17 # specific language governing permissions and limitations
18 # under the License.
19 ##############################################################################
20 import fnmatch
21 import re
22 import sys
23 import xml.etree.ElementTree as ET
24
25 if len(sys.argv) != 3:
26 sys.stderr.write("Usage: %s exclude_globs.lst rat_report.xml\n" %
27 sys.argv[0])
28 sys.exit(1)
29
30 exclude_globs_filename = sys.argv[1]
31 xml_filename = sys.argv[2]
32
33 globs = [line.strip() for line in open(exclude_globs_filename, "r")]
34
35 tree = ET.parse(xml_filename)
36 root = tree.getroot()
37 resources = root.findall('resource')
38
39 all_ok = True
40 for r in resources:
41 approvals = r.findall('license-approval')
42 if not approvals or approvals[0].attrib['name'] == 'true':
43 continue
44 clean_name = re.sub('^[^/]+/', '', r.attrib['name'])
45 excluded = False
46 for g in globs:
47 if fnmatch.fnmatch(clean_name, g):
48 excluded = True
49 break
50 if not excluded:
51 sys.stdout.write("NOT APPROVED: %s (%s): %s\n" % (
52 clean_name, r.attrib['name'], approvals[0].attrib['name']))
53 all_ok = False
54
55 if not all_ok:
56 sys.exit(1)
57
58 print('OK')
59 sys.exit(0)