# ============LICENSE_START======================================================= # Copyright (C) 2022 Nordix Foundation # ================================================================================ # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # SPDX-License-Identifier: Apache-2.0 # ============LICENSE_END========================================================= import csv import datetime import hashlib import sys import re yang_source = '' checksum = '' regexForModuleName = '(?<=module)(.*)(?={)' regexForRevision = '(?<=revision)(.*)(?={)' def main(): for yang_source in sys.argv[1:]: checksum = hashlib.sha256(str(yang_source).encode()).hexdigest() with open('changelog/db/changes/data/yang-models/' + yang_source + '.yang', 'r') as content: dmiRegistry = content.read() try: latestRevision = re.search(regexForRevision, dmiRegistry).group(0).replace('\"','').strip() except: print("ERROR IN in yangResourceCsvGenerator.py: Unable to find revision for " + yang_source + '.yang') try: module_name = re.search(regexForModuleName, dmiRegistry).group(0).strip() except: print("ERROR IN in yangResourceCsvGenerator.py: Unable to find module name for " + yang_source + '.yang') #If true, file was created after module_name and revision columns were added to yang-resources table writeWithModuleNameAndRevision = yang_source != 'dmi-registry@2021-12-13' try: # open the file in the write mode with open('changelog/db/changes/data/dmi/generated-csv/generated_yang_resource_' + yang_source + '.csv', 'w', newline='') \ as file: writer = csv.writer(file, delimiter='|') if(writeWithModuleNameAndRevision): writer.writerow(["name", "content", "checksum", "module_name", "revision"]) writer.writerow([yang_source + '.yang', dmiRegistry, checksum, module_name, latestRevision]) else: writer.writerow(["name", "content", "checksum"]) writer.writerow([yang_source + '.yang', dmiRegistry, checksum]) except: print("ERROR IN in yangResourceCsvGenerator.py: Unable to write to changelog/db/changes/data/dmi/generated-csv/generated_yang_resource_" + yang_source + ".csv") main()