@@ -49,35 +49,59 @@ function installJava(javaVersion: string, jabbaVersion: string) {
49
49
shell . set ( "-ev" ) ;
50
50
shell . exec ( `curl -sL -o ${ jabba } ${ jabbaUrl } ` , { silent : true } ) ;
51
51
shell . chmod ( 755 , jabba ) ;
52
- // if a string using the 'version=url' format is provided, respect it (e.g. 1.14.0=tgz+https://link.to.tarball.tgz)
53
- const javaVersionSearch = javaVersion . split ( '=' ) [ 0 ] ;
54
- const useVersion = shell
55
- . exec ( `${ jabba } ls-remote` )
56
- . grep ( javaVersionSearch )
57
- . head ( { "-n" : 1 } )
58
- . stdout . trim ( ) ;
59
- var toInstall = useVersion ;
60
- if ( ! useVersion ) {
61
- core . setFailed ( `Couldn't find Java ${ javaVersionSearch } . To fix this problem, run 'jabba ls-remote' to see the list of valid Java versions.` ) ;
62
- return ;
63
- }
64
- if ( javaVersion !== javaVersionSearch ) {
65
- toInstall = javaVersion ;
66
- }
67
- console . log ( `Installing ${ toInstall } ` ) ;
68
- const result = shell . exec ( `${ jabba } install ${ toInstall } ` ) ;
52
+ const jabbaInstall = javaVersion . includes ( "=" )
53
+ ? installJavaByExactVersion ( javaVersion )
54
+ : installJavaByFuzzyVersion ( jabba , javaVersion ) ;
55
+ if ( ! jabbaInstall ) return ;
56
+ console . log ( `Installing ${ jabbaInstall . name } ` ) ;
57
+ const result = shell . exec ( `${ jabba } install ${ jabbaInstall . install } ` ) ;
69
58
if ( result . code > 0 ) {
70
- core . setFailed ( `Failed to install Java ${ toInstall } , Jabba stderr: ${ result . stderr } ` ) ;
59
+ core . setFailed (
60
+ `Failed to install Java ${ javaVersion } , Jabba stderr: ${ result . stderr } `
61
+ ) ;
71
62
return ;
72
63
}
73
64
const javaHome = shell
74
- . exec ( `${ jabba } which --home ${ useVersion } ` )
65
+ . exec ( `${ jabba } which --home ${ jabbaInstall . name } ` )
75
66
. stdout . trim ( ) ;
76
67
core . exportVariable ( "JAVA_HOME" , javaHome ) ;
77
68
core . addPath ( path . join ( javaHome , "bin" ) ) ;
78
69
core . endGroup ( ) ;
79
70
}
80
71
72
+ interface JabbaInstall {
73
+ name : string ;
74
+ install : string ;
75
+ }
76
+
77
+ function installJavaByFuzzyVersion (
78
+ jabba : string ,
79
+ javaVersion : string
80
+ ) : JabbaInstall | undefined {
81
+ const toInstall = shell
82
+ . exec ( `${ jabba } ls-remote` )
83
+ . grep ( javaVersion )
84
+ . head ( { "-n" : 1 } )
85
+ . stdout . trim ( ) ;
86
+ if ( ! toInstall ) {
87
+ core . setFailed (
88
+ `Couldn't find Java ${ javaVersion } . To fix this problem, run 'jabba ls-remote' to see the list of valid Java versions.`
89
+ ) ;
90
+ return ;
91
+ }
92
+ return {
93
+ name : toInstall ,
94
+ install : toInstall ,
95
+ } ;
96
+ }
97
+
98
+ function installJavaByExactVersion ( javaVersion : string ) : JabbaInstall {
99
+ return {
100
+ name : javaVersion . split ( "=" ) [ 0 ] ,
101
+ install : javaVersion ,
102
+ } ;
103
+ }
104
+
81
105
function installSbt ( ) {
82
106
core . startGroup ( "Install sbt" ) ;
83
107
core . addPath ( bin ) ;
0 commit comments