diff --git a/npm/firmware/.gitignore b/npm/firmware/.gitignore new file mode 100644 index 000000000..9668f4d20 --- /dev/null +++ b/npm/firmware/.gitignore @@ -0,0 +1 @@ +version.ts diff --git a/npm/firmware/CHANGELOG.md b/npm/firmware/CHANGELOG.md index ee9660f18..8dbfe7cde 100644 --- a/npm/firmware/CHANGELOG.md +++ b/npm/firmware/CHANGELOG.md @@ -1,3 +1,7 @@ +## Unreleased +### Added +- Added firmware version constant. + ## 4.13.0-alpha.3 - 2021-07-19 ### Changed - Updated firmware to v3.1.0a3. diff --git a/npm/firmware/index.test.ts b/npm/firmware/index.test.ts index 188fcd0c7..f4827e5b6 100644 --- a/npm/firmware/index.test.ts +++ b/npm/firmware/index.test.ts @@ -4,10 +4,14 @@ import * as fs from 'fs'; import * as path from 'path'; import * as util from 'util'; -import { FirmwareReader, FirmwareReaderErrorCode } from '.'; +import { firmwareVersion, FirmwareReader, FirmwareReaderErrorCode } from '.'; const readFile = util.promisify(fs.readFile); +test('firmware version', () => { + expect(firmwareVersion).toMatch(/^\d+\.\d+\.\d+/); +}); + test('bad zip data', async () => { try { await FirmwareReader.load(new Uint8Array(100)); diff --git a/npm/firmware/index.ts b/npm/firmware/index.ts index 25a92f330..8024bec79 100644 --- a/npm/firmware/index.ts +++ b/npm/firmware/index.ts @@ -1,7 +1,13 @@ // SPDX-License-Identifier: MIT -// Copyright (c) 2020 The Pybricks Authors +// Copyright (c) 2020-2021 The Pybricks Authors import JSZip, { JSZipObject } from 'jszip'; +import {PACKAGE_VERSION} from './version'; + +/** + * String containing the firmware version. + */ +export const firmwareVersion = PACKAGE_VERSION.substring(PACKAGE_VERSION.lastIndexOf('v') + 1); /** * LEGO Powered Up Hub IDs diff --git a/npm/firmware/package.json b/npm/firmware/package.json index d9cfd401c..ed2df26ea 100644 --- a/npm/firmware/package.json +++ b/npm/firmware/package.json @@ -19,6 +19,7 @@ "author": "The Pybricks Authors", "license": "MIT", "scripts": { + "prebuild": "node -p \"'export const PACKAGE_VERSION = ' + JSON.stringify(require('./package.json').version) + ';'\" > version.ts", "build": "./download-firmware.py && tsc", "test": "tsc && jest" },