1+ #!/usr/bin/python3
2+
3+ import json
4+ import configparser
5+ import argparse
6+ import re
7+ import os
8+
9+ travis_dir = os .path .dirname (os .path .abspath (__file__ ))
10+ base_dir = os .path .abspath (travis_dir + "/../" )
11+
12+ def get_library_properties_version ():
13+ library_properties = {}
14+ with open (f'{ base_dir } /library.properties' , 'r' ) as f :
15+ library_properties = configparser .ConfigParser ()
16+ library_properties .read_string ('[root]\n ' + f .read ())
17+ return library_properties ['root' ]['version' ]
18+
19+ def get_library_json_version ():
20+ library_json = {}
21+ with open (f'{ base_dir } /library.json' , 'r' ) as f :
22+ library_json = json .load (f )
23+ return library_json ['version' ]
24+
25+ def get_header_versions ():
26+ data = {}
27+ define = re .compile ('^#define WEBSOCKETS_VERSION_?(.*) "?([0-9\.]*)"?$' )
28+ with open (f'{ base_dir } /src/WebSocketsVersion.h' , 'r' ) as f :
29+ for line in f :
30+ m = define .match (line )
31+ if m :
32+ name = m [1 ]
33+ if name == "" :
34+ name = "VERSION"
35+ data [name ] = m [2 ]
36+ return data
37+
38+
39+ parser = argparse .ArgumentParser (description = 'Checks and update Version files' )
40+ parser .add_argument (
41+ '--update' , action = argparse .BooleanOptionalAction , default = False )
42+ parser .add_argument (
43+ '--check' , action = argparse .BooleanOptionalAction , default = True )
44+
45+ args = parser .parse_args ()
46+
47+ if args .update :
48+ library_properties_version = get_library_properties_version ()
49+
50+ with open (f'{ base_dir } /library.json' , 'r' ) as f :
51+ library_json = json .load (f )
52+
53+ library_json ['version' ] = library_properties_version
54+
55+ with open (f'{ base_dir } /library.json' , 'w' ) as f :
56+ json .dump (library_json , f , indent = 4 , sort_keys = True )
57+
58+
59+ library_json_version = get_library_json_version ()
60+ library_properties_version = get_library_properties_version ()
61+ header_version = get_header_versions ()
62+
63+ print ("WebSocketsVersion.h" , header_version )
64+ print (f"library.json: { library_json_version } " )
65+ print (f"library.properties: { library_properties_version } " )
66+
67+ if args .check :
68+ if library_json_version != library_properties_version or header_version ['VERSION' ] != library_properties_version :
69+ raise Exception ('versions did not match!' )
70+
71+ hvs = header_version ['VERSION' ].split ('.' )
72+ if header_version ['MAJOR' ] != hvs [0 ]:
73+ raise Exception ('header MAJOR version wrong!' )
74+ if header_version ['MINOR' ] != hvs [1 ]:
75+ raise Exception ('header MINOR version wrong!' )
76+ if header_version ['PATCH' ] != hvs [2 ]:
77+ raise Exception ('header PATCH version wrong!' )
78+
79+ intversion = int (hvs [0 ]) * 1000000 + int (hvs [1 ]) * 1000 + int (hvs [2 ])
80+ if int (header_version ['INT' ]) != intversion :
81+ raise Exception ('header INT version wrong!' )
0 commit comments