| #!/usr/bin/python |
| ##################################################################### |
| # Copyright (c) 2023 Boeing |
| # |
| # This program and the accompanying materials are made |
| # available under the terms of the Eclipse Public License 2.0 |
| # which is available at https://www.eclipse.org/legal/epl-2.0/ |
| # |
| # SPDX-License-Identifier: EPL-2.0 |
| # |
| # Contributors: |
| # Boeing - initial API and implementation |
| ##################################################################### |
| |
| from subprocess import check_output |
| import sys, json |
| from validationUtils import * |
| |
| # argv[1] should be the keywords string, argv[2] should be the gitlab api url for merge request commits, argv[3] should be the gitlab api token |
| def main(argv): |
| keywords = argv[1] |
| api_url = argv[2] |
| api_token = argv[3] |
| findings = [] |
| |
| regexPattern = createKeywordRegex(keywords) |
| |
| commitsJson = check_output(["curl", "-H", "PRIVATE-TOKEN: " + api_token, api_url]) |
| commits = json.loads(commitsJson) |
| |
| for commit in commits: |
| message = commit['message'] |
| for line in message.split('\n'): |
| # Ignore empty lines and change ids |
| if line == '': |
| continue |
| if len(line) > 10 and line[0:10] == 'Change-Id:': |
| continue |
| if len(line) > 14 and line [0:14] == 'Signed-off-by:': |
| continue |
| searchResults = searchTextIgnoreCase(regexPattern, line) |
| if searchResults != None: |
| findings.append("Found keyword \"" + searchResults[0] + "\" in commit message: " + "\n --> " + line) |
| |
| if len(findings) > 0: |
| print("\n\n\n") |
| print("--- FINDINGS ---") |
| for finding in findings: |
| print(finding) |
| sys.exit(-1) |
| |
| sys.exit(0) |
| |
| if __name__ == "__main__": |
| main(sys.argv) |