@@ -2,40 +2,51 @@ import * as semver from "semver";
22import * as core from "@actions/core" ;
33import { System , OS } from "./os" ;
44
5- const AVAILABLE_VERSIONS = [
6- "5.3" ,
7- "5.2.4" ,
8- "5.2.2" ,
9- "5.2.1" ,
10- "5.2" ,
11- "5.1.1" ,
12- "5.1" ,
13- "5.0.3" ,
14- "5.0.2" ,
15- "5.0.1" ,
16- "5.0" ,
17- "4.2.4" ,
18- "4.2.3" ,
19- "4.2.2" ,
20- "4.2.1" ,
21- "4.2" ,
22- "4.1.3" ,
23- "4.1.2" ,
24- "4.1.1" ,
25- "4.1" ,
26- "4.0.3" ,
27- "4.0.2" ,
28- "4.0" ,
29- "3.1.1" ,
30- "3.1" ,
31- "3.0.2" ,
32- "3.0.1" ,
33- "3.0" ,
34- "2.2.1" ,
35- "2.2" ,
36- ]
37- . map ( ( version ) => semver . coerce ( version ) )
38- . filter ( notEmpty ) ;
5+ const VERSIONS_LIST : [ string , OS [ ] ] [ ] = [
6+ [ "5.3" , [ OS . MacOS , OS . Ubuntu ] ] ,
7+ [ "5.2.5" , [ OS . Ubuntu ] ] ,
8+ [ "5.2.4" , [ OS . MacOS , OS . Ubuntu ] ] ,
9+ [ "5.2.3" , [ OS . Ubuntu ] ] ,
10+ [ "5.2.2" , [ OS . MacOS , OS . Ubuntu ] ] ,
11+ [ "5.2.1" , [ OS . Ubuntu ] ] ,
12+ [ "5.2" , [ OS . MacOS , OS . Ubuntu ] ] ,
13+ [ "5.1.5" , [ OS . Ubuntu ] ] ,
14+ [ "5.1.4" , [ OS . Ubuntu ] ] ,
15+ [ "5.1.3" , [ OS . MacOS , OS . Ubuntu ] ] ,
16+ [ "5.1.2" , [ OS . MacOS , OS . Ubuntu ] ] ,
17+ [ "5.1.1" , [ OS . Ubuntu ] ] ,
18+ [ "5.1" , [ OS . MacOS , OS . Ubuntu ] ] ,
19+ [ "5.0.3" , [ OS . Ubuntu ] ] ,
20+ [ "5.0.2" , [ OS . Ubuntu ] ] ,
21+ [ "5.0.1" , [ OS . MacOS , OS . Ubuntu ] ] ,
22+ [ "5.0" , [ OS . MacOS , OS . Ubuntu ] ] ,
23+ [ "4.2.4" , [ OS . Ubuntu ] ] ,
24+ [ "4.2.3" , [ OS . Ubuntu ] ] ,
25+ [ "4.2.2" , [ OS . Ubuntu ] ] ,
26+ [ "4.2.1" , [ OS . MacOS , OS . Ubuntu ] ] ,
27+ [ "4.2" , [ OS . MacOS , OS . Ubuntu ] ] ,
28+ [ "4.1.3" , [ OS . Ubuntu ] ] ,
29+ [ "4.1.2" , [ OS . MacOS , OS . Ubuntu ] ] ,
30+ [ "4.1.1" , [ OS . Ubuntu ] ] ,
31+ [ "4.1" , [ OS . MacOS , OS . Ubuntu ] ] ,
32+ [ "4.0.3" , [ OS . MacOS , OS . Ubuntu ] ] ,
33+ [ "4.0.2" , [ OS . MacOS , OS . Ubuntu ] ] ,
34+ [ "4.0" , [ OS . MacOS , OS . Ubuntu ] ] ,
35+ [ "3.1.1" , [ OS . MacOS , OS . Ubuntu ] ] ,
36+ [ "3.1" , [ OS . MacOS , OS . Ubuntu ] ] ,
37+ [ "3.0.2" , [ OS . MacOS , OS . Ubuntu ] ] ,
38+ [ "3.0.1" , [ OS . MacOS , OS . Ubuntu ] ] ,
39+ [ "3.0" , [ OS . MacOS , OS . Ubuntu ] ] ,
40+ [ "2.2.1" , [ OS . MacOS , OS . Ubuntu ] ] ,
41+ [ "2.2" , [ OS . MacOS , OS . Ubuntu ] ] ,
42+ ] ;
43+
44+ const AVAILABLE_VERSIONS : [ semver . SemVer , OS [ ] ] [ ] = VERSIONS_LIST . map (
45+ ( [ version , os ] ) => {
46+ const semverVersion = semver . coerce ( version ) ;
47+ return < [ semver . SemVer , OS [ ] ] > [ semverVersion , os ] ;
48+ }
49+ ) ;
3950
4051function notEmpty < T > ( value : T | null | undefined ) : value is T {
4152 return value !== null && value !== undefined ;
@@ -72,15 +83,19 @@ export function swiftPackage(version: string, system: System): Package {
7283 } ;
7384}
7485
75- export function verify ( version : string ) {
86+ export function verify ( version : string , system : System ) {
7687 let range = semver . validRange ( version ) ;
7788 if ( range === null ) {
7889 throw new Error ( "Version must be a valid semver format." ) ;
7990 }
8091
8192 core . debug ( `Resolved range ${ range } ` ) ;
8293
83- let matchingVersion = evaluateVersions ( AVAILABLE_VERSIONS , version ) ;
94+ let systemVersions = AVAILABLE_VERSIONS . filter ( ( [ _ , os ] ) =>
95+ os . includes ( system . os )
96+ ) . map ( ( [ version , _ ] ) => version ) ;
97+
98+ let matchingVersion = evaluateVersions ( systemVersions , version ) ;
8499 if ( matchingVersion === null ) {
85100 throw new Error ( `Version "${ version } " is not available` ) ;
86101 }
0 commit comments