@@ -57,9 +57,17 @@ export async function start(context: theia.PluginContext) {
57
57
}
58
58
59
59
async function ocLogIn ( ) : Promise < void > {
60
+ const errorMessage = 'Failed to authenticated the OpenShift connector plugin: ' ;
60
61
let error = '' ;
61
- const server = await getServerUrl ( ) ;
62
- const token = await che . openshift . getToken ( ) ;
62
+ let server = '' ;
63
+ let token = '' ;
64
+ try {
65
+ server = await getServerUrl ( ) ;
66
+ token = await che . openshift . getToken ( ) ;
67
+ } catch ( e ) {
68
+ theia . window . showErrorMessage ( errorMessage + e ) ;
69
+ return ;
70
+ }
63
71
const osCommand = spawn ( 'oc' , [ 'login' , server , '--certificate-authority=/var/run/secrets/kubernetes.io/serviceaccount/ca.crt' , '--token' , token ] ) ;
64
72
osCommand . stderr . on ( 'data' , data => {
65
73
error += data
@@ -72,26 +80,30 @@ export async function start(context: theia.PluginContext) {
72
80
}
73
81
theia . window . showInformationMessage ( 'OpenShift connector plugin is successfully authenticated' ) ;
74
82
} else {
75
- theia . window . showErrorMessage ( 'Failed to authenticated the OpenShift connector plugin: ' + error ) ;
83
+ theia . window . showErrorMessage ( errorMessage + error ) ;
76
84
}
77
85
} ) ;
78
86
}
79
87
80
88
function getServerUrl ( ) : Promise < string > {
81
- return new Promise < string > ( resolve => {
89
+ return new Promise < string > ( ( resolve , reject ) => {
82
90
let result = '' ;
83
91
const versionCommand = spawn ( 'odo' , [ 'version' ] ) ;
84
92
// tslint:disable-next-line:no-any
85
- versionCommand . stdout . on ( 'data' , ( data : any ) => {
93
+ versionCommand . stdout . on ( 'data' , data => {
86
94
result += data . toString ( ) ;
87
95
} ) ;
88
96
// tslint:disable-next-line:no-any
89
- versionCommand . stderr . on ( 'data' , ( data : any ) => {
90
- resolve ( '' ) ;
97
+ versionCommand . stderr . on ( 'data' , data => {
98
+ reject ( data )
91
99
} ) ;
92
- versionCommand . on ( 'close' , ( code : number | null ) => {
93
- const server : string = result . substring ( result . indexOf ( 'Server: ' ) + 8 , result . indexOf ( 'Kubernetes: ' ) - 1 ) ;
94
- resolve ( server ) ;
100
+ versionCommand . on ( 'close' , ( ) => {
101
+ const match = result . match ( / h t t p s ? : \/ \/ ( w w w .) ? [ - a - z A - Z 0 - 9 . [ a - z ] ( [ - a - z A - Z 0 - 9 @ : % _ + . ~ # ? & / = ] * ) / g) ;
102
+ if ( match && match . length === 1 ) {
103
+ resolve ( match [ 0 ] ) ;
104
+ } else {
105
+ reject ( 'Failed to get the server url' ) ;
106
+ }
95
107
} ) ;
96
108
} )
97
109
}
0 commit comments