diff --git a/scripts/generate-versions-h.js b/scripts/generate-versions-h.js new file mode 100755 index 0000000..8be92b5 --- /dev/null +++ b/scripts/generate-versions-h.js @@ -0,0 +1,41 @@ +#!/usr/bin/env node +const fs = require('fs'); + +const versionPropertyPrefixes = ['firmware', 'deviceProtocol', 'moduleProtocol', 'userConfig', 'hardwareConfig']; +const patchVersions = ['Major', 'Minor', 'Patch']; +const package = JSON.parse(fs.readFileSync(`${__dirname}/package.json`)); + +const versionVariables = versionPropertyPrefixes.map(versionPropertyPrefix => { + const versionPropertyName = `${versionPropertyPrefix}Version` + const versionPropertyValues = package[versionPropertyName].split('.'); + return patchVersions.map(patchVersion => { + const versionPropertyValue = versionPropertyValues.shift(); + const versionPropertyMacroName = `${versionPropertyPrefix}${patchVersion}Version`.split(/(?=[A-Z])/).join('_').toUpperCase() + return ` #define ${versionPropertyMacroName} ${versionPropertyValue}`; + }).join('\n') + '\n'; +}).join('\n'); + +fs.writeFileSync(`${__dirname}/../shared/versions.h`, +`// Please do not edit this file by hand! +// It is to be regenerated by /scripts/generate-versions-h.js + +#ifndef __VERSIONS_H__ +#define __VERSIONS_H__ + +// Includes: + + #include "fsl_common.h" + +// Typedefs: + + typedef struct { + uint16_t major; + uint16_t minor; + uint16_t patch; + } version_t; + +// Variables: + +${versionVariables} +#endif +`); diff --git a/scripts/make-release.js b/scripts/make-release.js index 945cd6b..89ca0f4 100755 --- a/scripts/make-release.js +++ b/scripts/make-release.js @@ -5,6 +5,8 @@ require('shelljs/global'); config.fatal = true; config.verbose = true; +exec(`${__dirname}/generate-versions-h.js`); + const package = JSON.parse(fs.readFileSync(`${__dirname}/package.json`)); const version = package.firmwareVersion; const releaseName = `uhk-firmware-${version}`; diff --git a/shared/versions.h b/shared/versions.h new file mode 100644 index 0000000..3bc6b1e --- /dev/null +++ b/shared/versions.h @@ -0,0 +1,41 @@ +// Please do not edit this file by hand! +// It is to be regenerated by /scripts/generate-versions-h.js + +#ifndef __VERSIONS_H__ +#define __VERSIONS_H__ + +// Includes: + + #include "fsl_common.h" + +// Typedefs: + + typedef struct { + uint16_t major; + uint16_t minor; + uint16_t patch; + } version_t; + +// Variables: + + #define FIRMWARE_MAJOR_VERSION 6 + #define FIRMWARE_MINOR_VERSION 0 + #define FIRMWARE_PATCH_VERSION 0 + + #define DEVICE_PROTOCOL_MAJOR_VERSION 3 + #define DEVICE_PROTOCOL_MINOR_VERSION 0 + #define DEVICE_PROTOCOL_PATCH_VERSION 0 + + #define MODULE_PROTOCOL_MAJOR_VERSION 3 + #define MODULE_PROTOCOL_MINOR_VERSION 0 + #define MODULE_PROTOCOL_PATCH_VERSION 0 + + #define USER_CONFIG_MAJOR_VERSION 4 + #define USER_CONFIG_MINOR_VERSION 0 + #define USER_CONFIG_PATCH_VERSION 0 + + #define HARDWARE_CONFIG_MAJOR_VERSION 1 + #define HARDWARE_CONFIG_MINOR_VERSION 0 + #define HARDWARE_CONFIG_PATCH_VERSION 0 + +#endif