add WebSocketsVersion.h and some build checks

This commit is contained in:
Links
2021-01-07 09:59:49 +01:00
parent 0e729cd896
commit fd83d6ad45
5 changed files with 143 additions and 14 deletions

View File

@ -14,6 +14,14 @@ on:
# A workflow run is made up of one or more jobs that can run sequentially or in parallel # A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs: jobs:
check_version_files:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: check version
run: |
$GITHUB_WORKSPACE/travis/version.py --check
prepare_example_json: prepare_example_json:
runs-on: ubuntu-latest runs-on: ubuntu-latest
@ -147,6 +155,7 @@ jobs:
- name: copy code - name: copy code
run: | run: |
mkdir -p $HOME/Arduino/libraries/
cp -r $GITHUB_WORKSPACE $HOME/Arduino/libraries/arduinoWebSockets cp -r $GITHUB_WORKSPACE $HOME/Arduino/libraries/arduinoWebSockets
- name: config IDE - name: config IDE
@ -158,6 +167,7 @@ jobs:
arduino --pref update.check=false arduino --pref update.check=false
- name: build example - name: build example
timeout-minutes: 20
run: | run: |
export DISPLAY=:1.0 export DISPLAY=:1.0
export PATH="$HOME/arduino_ide:$PATH" export PATH="$HOME/arduino_ide:$PATH"
@ -166,7 +176,7 @@ jobs:
build_sketch arduino $SKETCH build_sketch arduino $SKETCH
done: done:
needs: [prepare_ide, prepare_example_json, build] needs: [prepare_ide, prepare_example_json, build, check_version_files]
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Done - name: Done

View File

@ -1,25 +1,25 @@
{ {
"name": "WebSockets",
"description": "WebSocket Server and Client for Arduino based on RFC6455",
"keywords": "wifi, http, web, server, client, websocket",
"authors": [ "authors": [
{ {
"maintainer": true,
"name": "Markus Sattler", "name": "Markus Sattler",
"url": "https://github.com/Links2004", "url": "https://github.com/Links2004"
"maintainer": true
} }
], ],
"repository": { "description": "WebSocket Server and Client for Arduino based on RFC6455",
"type": "git",
"url": "https://github.com/Links2004/arduinoWebSockets.git"
},
"version": "2.3.2",
"license": "LGPL-2.1",
"export": { "export": {
"exclude": [ "exclude": [
"tests" "tests"
] ]
}, },
"frameworks": "arduino", "frameworks": "arduino",
"platforms": "atmelavr, espressif8266, espressif32" "keywords": "wifi, http, web, server, client, websocket",
"license": "LGPL-2.1",
"name": "WebSockets",
"platforms": "atmelavr, espressif8266, espressif32",
"repository": {
"type": "git",
"url": "https://github.com/Links2004/arduinoWebSockets.git"
},
"version": "2.3.2"
} }

View File

@ -40,6 +40,8 @@
#include <functional> #include <functional>
#endif #endif
#include "WebSocketsVersion.h"
#ifndef NODEBUG_WEBSOCKETS #ifndef NODEBUG_WEBSOCKETS
#ifdef DEBUG_ESP_PORT #ifdef DEBUG_ESP_PORT
#define DEBUG_WEBSOCKETS(...) \ #define DEBUG_WEBSOCKETS(...) \

36
src/WebSocketsVersion.h Normal file
View File

@ -0,0 +1,36 @@
/**
* @file WebSocketsVersion.h
* @date 07.01.2021
* @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 "2.3.2"
#define WEBSOCKETS_VERSION_MAJOR 2
#define WEBSOCKETS_VERSION_MINOR 3
#define WEBSOCKETS_VERSION_PATCH 2
#define WEBSOCKETS_VERSION_INT 2003002
#endif /* WEBSOCKETSVERSION_H_ */

81
travis/version.py Executable file
View File

@ -0,0 +1,81 @@
#!/usr/bin/python3
import json
import configparser
import argparse
import re
import os
travis_dir = os.path.dirname(os.path.abspath(__file__))
base_dir = os.path.abspath(travis_dir + "/../")
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=argparse.BooleanOptionalAction, default=False)
parser.add_argument(
'--check', action=argparse.BooleanOptionalAction, 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)
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!')