Signed-off-by: ZePan110 <ze.pan@intel.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
47 lines
1.5 KiB
Python
47 lines
1.5 KiB
Python
# Copyright (C) 2024 Intel Corporation
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
import argparse
|
|
|
|
from ruamel.yaml import YAML
|
|
|
|
|
|
def parse_yaml_file(file_path):
|
|
yaml = YAML()
|
|
with open(file_path, "r") as file:
|
|
data = yaml.load(file)
|
|
return data
|
|
|
|
|
|
def check_service_image_consistency(data):
|
|
inconsistencies = []
|
|
for service_name, service_details in data.get("services", {}).items():
|
|
image_name = service_details.get("image", "")
|
|
# Extract the image name part after the last '/'
|
|
image_name_part = image_name.split("/")[-1].split(":")[0]
|
|
# Check if the service name is a substring of the image name part
|
|
if service_name not in image_name_part:
|
|
# Get the line number of the service name
|
|
line_number = service_details.lc.line + 1
|
|
inconsistencies.append((service_name, image_name, line_number))
|
|
return inconsistencies
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(description="Check service name and image name consistency in a YAML file.")
|
|
parser.add_argument("file_path", type=str, help="The path to the YAML file.")
|
|
args = parser.parse_args()
|
|
|
|
data = parse_yaml_file(args.file_path)
|
|
|
|
inconsistencies = check_service_image_consistency(data)
|
|
if inconsistencies:
|
|
for service_name, image_name, line_number in inconsistencies:
|
|
print(f"Service name: {service_name}, Image name: {image_name}, Line number: {line_number}")
|
|
else:
|
|
print("All consistent")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|