@generated is used by various tools to identify generated files. For example, Phabricator will not display diffs in generated files by default. Reviewed by: gjb Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D28446
		
			
				
	
	
		
			72 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # -*- coding: utf-8 -*-
 | |
| """
 | |
| BSD 2-Clause License
 | |
| 
 | |
| Copyright (c) 2020-2021, The FreeBSD Project
 | |
| Copyright (c) 2020-2021, Sergio Carlavilla <carlavilla@FreeBSD.org>
 | |
| 
 | |
| This script will convert the releases.adoc file to releases.toml
 | |
| in this way we can share the releases variables between AsciiDoctor and Hugo
 | |
| """
 | |
| #!/usr/bin/env python3
 | |
| 
 | |
| import sys, getopt
 | |
| import re
 | |
| 
 | |
| variables = {}
 | |
| 
 | |
| def getValueByKey(key):
 | |
|   return variables[key.replace("{", "").replace("}", "")].replace("\"", "")
 | |
| 
 | |
| def loadVariables(path):
 | |
|   with open(path, 'r', encoding = 'utf-8') as releasesFile:
 | |
|     line = releasesFile.readline()
 | |
| 
 | |
|     while line:
 | |
|       if (re.match(r"^:{1}[^\n]+", line)):
 | |
|         variable = re.sub(':', '', line.strip(), 1)
 | |
|         variable = re.sub(': ', '="', variable)
 | |
|         variable += "\""
 | |
|         data = variable.split("=")
 | |
| 
 | |
|         if (len(data) == 2):
 | |
|           variables.update( {data[0] : data[1]} )
 | |
| 
 | |
|       line = releasesFile.readline()
 | |
| 
 | |
| def main(argv):
 | |
|   path = ''
 | |
| 
 | |
|   try:
 | |
|     opts, args = getopt.getopt(argv,"hp:",["path="])
 | |
|   except getopt.GetoptError:
 | |
|     print('releases-toml.py -p <path>')
 | |
|     sys.exit(2)
 | |
|   for opt, arg in opts:
 | |
|     if opt == '-h':
 | |
|       print('releases-toml.py -p <path>')
 | |
|       sys.exit()
 | |
|     elif opt in ("-p", "--path"):
 | |
|       path = arg
 | |
| 
 | |
|   releasesTOML =  "# Code @" + "generated by the FreeBSD Documentation toolchain. DO NOT EDIT.\n"
 | |
|   releasesTOML += "# Please don't change this file manually but run `make` to update it.\n"
 | |
|   releasesTOML += "# For more information, please read the FreeBSD Documentation Project Primer\n"
 | |
|   releasesTOML += '\n'
 | |
| 
 | |
|   loadVariables(path)
 | |
| 
 | |
|   for key in variables:
 | |
|     foundBraces = re.search(r"\{.*?\}", variables[key])
 | |
| 
 | |
|     if (foundBraces):
 | |
|       braces = foundBraces.group(0)
 | |
|       releasesTOML += key + "=" + variables[key].replace(braces, getValueByKey(braces)) + "\n"
 | |
|     else:
 | |
|       releasesTOML += key + "=" + variables[key] + "\n"
 | |
| 
 | |
|   with open('./data/releases.toml', 'w', encoding = 'utf-8') as releasesTOMLFile:
 | |
|     releasesTOMLFile.write(releasesTOML)
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|   main(sys.argv[1:])
 |