diff --git a/package-lock.json b/package-lock.json index 2cfd9d6..0500845 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ardunno-cli-gen", - "version": "0.1.5", + "version": "0.1.6", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "ardunno-cli-gen", - "version": "0.1.5", + "version": "0.1.6", "license": "MIT", "dependencies": { "commander": "^10.0.1", diff --git a/package.json b/package.json index ad5d338..241914c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ardunno-cli-gen", - "version": "0.1.5", + "version": "0.1.6", "description": "Generates nice-grpc API for the Arduino CLI", "main": "./dist/index.js", "types": "./dist/index.d.ts", diff --git a/src/__tests__/generate.spec.ts b/src/__tests__/generate.spec.ts index 4a4d0f3..066d334 100644 --- a/src/__tests__/generate.spec.ts +++ b/src/__tests__/generate.spec.ts @@ -188,6 +188,18 @@ describe('generate', () => { assert.equal(parseSemver('v0.29.1'), '0.29.1')); it("should parse valid semver '>=0.29.0' as a semver [arduino/arduino-cli#1931]", () => assert.equal(parseSemver('0.29.0'), '0.29.0')); + describe("should trim the 'v' prefix in semver if ' { + [ + ['v0.34.2', '0.34.2'], + ['v0.35.0-rc.0', '0.35.0-rc.0'], + ['v0.35.0-rc.1', 'v0.35.0-rc.1'], + ['v0.35.0', 'v0.35.0'], + ['v0.35.1', 'v0.35.1'], + ].forEach(([toParse, expected]) => + it(`from '${toParse}' to ${expected}`, () => + assert.equal(parseSemver(toParse), expected)) + ); + }); it("should parse to GitHub ref when version is not greater than '0.28.0'", () => assert.deepEqual(parseSemver('0.28.0'), { owner: 'arduino', diff --git a/src/generate.ts b/src/generate.ts index cf70012..eb24832 100644 --- a/src/generate.ts +++ b/src/generate.ts @@ -315,7 +315,15 @@ export function parseSemver(src: string): string | GitHub | undefined { return undefined; } const semver = new SemVer(src, true); - const version = semver.version; + let version = semver.version; + if (hasSemverPrefix(version)) { + log( + 'parsed semver %s is >=v0.35.0-rc.1. using raw version %s', + version, + semver.raw + ); + version = semver.raw; + } if (canDownloadProtos(semver)) { log('parsed semver %s is >=0.29.0', version); return version; @@ -333,12 +341,19 @@ export function parseSemver(src: string): string | GitHub | undefined { } /** - * The `.proto` files were not part of the Arduino CLI release before version 0.29.0 ([`arduino/arduino-cli#1931`](https://github.com/arduino/arduino-cli/pull/1931)). + * The `.proto` files were not part of the Arduino CLI release before version `0.29.0` ([`arduino/arduino-cli#1931`](https://github.com/arduino/arduino-cli/pull/1931)). */ function canDownloadProtos(semver: SemVer | string): boolean { return gte(semver, new SemVer('0.29.0')); } +/** + * The Arduino CLI GitHub release has the `'v'` prefix from version `>=v0.35.0-rc.1` ([`arduino/arduino-cli#2374`](https://github.com/arduino/arduino-cli/pull/2374)). + */ +function hasSemverPrefix(semver: SemVer | string): boolean { + return gte(semver, new SemVer('0.35.0-rc.1')); +} + // Taken from https://github.com/microsoft/TypeScript/issues/32098#issuecomment-1212501932 type RegExpGroups = | (RegExpMatchArray & {