mirror of
				https://github.com/luc-github/ESP3D.git
				synced 2025-10-24 11:50:52 -07:00 
			
		
		
		
	
		
			
				
	
	
		
			133 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			133 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| #!/usr/bin/python3
 | |
| 
 | |
| import json
 | |
| import configparser
 | |
| import argparse
 | |
| import re
 | |
| import os
 | |
| import datetime
 | |
| 
 | |
| travis_dir = os.path.dirname(os.path.abspath(__file__))
 | |
| base_dir = os.path.abspath(travis_dir + "/../")
 | |
| 
 | |
| def write_header_file(version):
 | |
|     hvs = version.split('.')
 | |
|     intversion = int(hvs[0]) * 1000000 + int(hvs[1]) * 1000 + int(hvs[2])
 | |
|     now = datetime.datetime.now()
 | |
| 
 | |
|     text = f'''/**
 | |
|  * @file WebSocketsVersion.h
 | |
|  * @date {now.strftime("%d.%m.%Y")}
 | |
|  * @author Markus Sattler
 | |
|  *
 | |
|  * Copyright (c) 2015 Markus Sattler. All rights reserved.
 | |
|  * This file is part of the WebSockets for Arduino.
 | |
|  *
 | |
|  * This library is free software; you can redistribute it and/or
 | |
|  * modify it under the terms of the GNU Lesser General Public
 | |
|  * License as published by the Free Software Foundation; either
 | |
|  * version 2.1 of the License, or (at your option) any later version.
 | |
|  *
 | |
|  * This library is distributed in the hope that it will be useful,
 | |
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | |
|  * Lesser General Public License for more details.
 | |
|  *
 | |
|  * You should have received a copy of the GNU Lesser General Public
 | |
|  * License along with this library; if not, write to the Free Software
 | |
|  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 | |
|  *
 | |
|  */
 | |
| 
 | |
| #ifndef WEBSOCKETSVERSION_H_
 | |
| #define WEBSOCKETSVERSION_H_
 | |
| 
 | |
| #define WEBSOCKETS_VERSION "{version}"
 | |
| 
 | |
| #define WEBSOCKETS_VERSION_MAJOR {hvs[0]}
 | |
| #define WEBSOCKETS_VERSION_MINOR {hvs[1]}
 | |
| #define WEBSOCKETS_VERSION_PATCH {hvs[2]}
 | |
| 
 | |
| #define WEBSOCKETS_VERSION_INT {intversion}
 | |
| 
 | |
| #endif /* WEBSOCKETSVERSION_H_ */
 | |
| '''
 | |
|     with open(f'{base_dir}/src/WebSocketsVersion.h', 'w') as f:
 | |
|         f.write(text)
 | |
| 
 | |
| 
 | |
| def get_library_properties_version():
 | |
|     library_properties = {}
 | |
|     with open(f'{base_dir}/library.properties', 'r') as f:
 | |
|         library_properties = configparser.ConfigParser()
 | |
|         library_properties.read_string('[root]\n' + f.read())
 | |
|     return library_properties['root']['version']
 | |
| 
 | |
| 
 | |
| def get_library_json_version():
 | |
|     library_json = {}
 | |
|     with open(f'{base_dir}/library.json', 'r') as f:
 | |
|         library_json = json.load(f)
 | |
|     return library_json['version']
 | |
| 
 | |
| 
 | |
| def get_header_versions():
 | |
|     data = {}
 | |
|     define = re.compile('^#define WEBSOCKETS_VERSION_?(.*) "?([0-9\.]*)"?$')
 | |
|     with open(f'{base_dir}/src/WebSocketsVersion.h', 'r') as f:
 | |
|         for line in f:
 | |
|             m = define.match(line)
 | |
|             if m:
 | |
|                 name = m[1]
 | |
|                 if name == "":
 | |
|                     name = "VERSION"
 | |
|                 data[name] = m[2]
 | |
|     return data
 | |
| 
 | |
| 
 | |
| parser = argparse.ArgumentParser(description='Checks and update Version files')
 | |
| parser.add_argument(
 | |
|     '--update', action='store_true', default=False)
 | |
| parser.add_argument(
 | |
|     '--check', action='store_true', default=True)
 | |
| 
 | |
| args = parser.parse_args()
 | |
| 
 | |
| if args.update:
 | |
|     library_properties_version = get_library_properties_version()
 | |
| 
 | |
|     with open(f'{base_dir}/library.json', 'r') as f:
 | |
|         library_json = json.load(f)
 | |
| 
 | |
|     library_json['version'] = library_properties_version
 | |
| 
 | |
|     with open(f'{base_dir}/library.json', 'w') as f:
 | |
|         json.dump(library_json, f, indent=4, sort_keys=True)
 | |
| 
 | |
|     write_header_file(library_properties_version)
 | |
| 
 | |
| 
 | |
| library_json_version = get_library_json_version()
 | |
| library_properties_version = get_library_properties_version()
 | |
| header_version = get_header_versions()
 | |
| 
 | |
| print("WebSocketsVersion.h", header_version)
 | |
| print(f"library.json: {library_json_version}")
 | |
| print(f"library.properties: {library_properties_version}")
 | |
| 
 | |
| if args.check:
 | |
|     if library_json_version != library_properties_version or header_version['VERSION'] != library_properties_version:
 | |
|         raise Exception('versions did not match!')
 | |
| 
 | |
|     hvs = header_version['VERSION'].split('.')
 | |
|     if header_version['MAJOR'] != hvs[0]:
 | |
|         raise Exception('header MAJOR version wrong!')
 | |
|     if header_version['MINOR'] != hvs[1]:
 | |
|         raise Exception('header MINOR version wrong!')
 | |
|     if header_version['PATCH'] != hvs[2]:
 | |
|         raise Exception('header PATCH version wrong!')
 | |
| 
 | |
|     intversion = int(hvs[0]) * 1000000 + int(hvs[1]) * 1000 + int(hvs[2])
 | |
|     if int(header_version['INT']) != intversion:
 | |
|         raise Exception('header INT version wrong!')
 |