@@ -146,15 +146,39 @@ export class ResourceGroup {
146146 return depName ;
147147 }
148148
149- private updateOverrideParameters ( parameters : Object ) : Object {
149+ private castToType ( value : string , type : string ) {
150+ switch ( type ) {
151+ case "int" :
152+ return parseInt ( value ) ;
153+ case "object" :
154+ return JSON . parse ( value ) ;
155+ case "secureObject" :
156+ return JSON . parse ( value ) ;
157+ case "array" :
158+ return JSON . parse ( value ) ;
159+ case "bool" :
160+ return value === "true" ;
161+ default :
162+ // Sending as string
163+ break ;
164+ }
165+ return value ;
166+ }
167+
168+ private updateOverrideParameters ( template : Object , parameters : Object ) : Object {
150169 tl . debug ( "Overriding Parameters.." ) ;
151170
152- var override = parameterParser ( this . taskParameters . overrideParameters ) ;
153- for ( var key in override ) {
171+ var overrideParameters = parameterParser ( this . taskParameters . overrideParameters ) ;
172+ for ( var key in overrideParameters ) {
154173 tl . debug ( "Overriding key: " + key ) ;
155- parameters [ key ] = override [ key ] ;
156- }
174+ try {
175+ overrideParameters [ key ] [ "value" ] = this . castToType ( overrideParameters [ key ] [ "value" ] , template [ "parameters" ] [ key ] [ "type" ] ) ;
176+ } catch ( error ) {
177+ tl . debug ( tl . loc ( "ErrorWhileParsingParameter" , key , error . toString ( ) ) ) ;
178+ }
179+ parameters [ key ] = overrideParameters [ key ] ;
157180
181+ }
158182 return parameters ;
159183 }
160184
@@ -171,17 +195,17 @@ export class ResourceGroup {
171195 } ) ;
172196 }
173197
174- private downloadParametersFile ( url ) : Promise < string > {
198+ private downloadFile ( url ) : Promise < string > {
175199 return new Promise < string > ( ( resolve , reject ) => {
176200 httpObj . get ( "GET" , url , { } , ( error , result , contents ) => {
177201 if ( error ) {
178- return reject ( tl . loc ( "ParametersFileFetchFailed" , error ) ) ;
202+ return reject ( tl . loc ( "FileFetchFailed" , url , error ) ) ;
179203 }
180204 if ( result . statusCode === 200 )
181205 resolve ( contents ) ;
182206 else {
183207 var errorMessage = result . statusCode . toString ( ) + ": " + result . statusMessage ;
184- return reject ( tl . loc ( "ParametersFileFetchFailed" , errorMessage ) ) ;
208+ return reject ( tl . loc ( "FileFetchFailed" , url , errorMessage ) ) ;
185209 }
186210 } ) ;
187211 } ) ;
@@ -214,7 +238,7 @@ export class ResourceGroup {
214238 }
215239
216240 if ( utils . isNonEmpty ( this . taskParameters . overrideParameters ) ) {
217- parameters = this . updateOverrideParameters ( parameters ) ;
241+ parameters = this . updateOverrideParameters ( template , parameters ) ;
218242 }
219243
220244 var deployment = new Deployment ( {
@@ -235,7 +259,7 @@ export class ResourceGroup {
235259
236260 if ( utils . isNonEmpty ( this . taskParameters . csmParametersFileLink ) ) {
237261 if ( utils . isNonEmpty ( this . taskParameters . overrideParameters ) ) {
238- var contents = await this . downloadParametersFile ( this . taskParameters . csmParametersFileLink )
262+ var contents = await this . downloadFile ( this . taskParameters . csmParametersFileLink ) ;
239263 parameters = JSON . parse ( contents ) . parameters ;
240264 }
241265 else {
@@ -246,7 +270,17 @@ export class ResourceGroup {
246270 }
247271
248272 if ( utils . isNonEmpty ( this . taskParameters . overrideParameters ) ) {
249- parameters = this . updateOverrideParameters ( parameters ) ;
273+ tl . debug ( "Downloading CSM Template File.. " + this . taskParameters . csmFileLink ) ;
274+ var templateFile = await this . downloadFile ( this . taskParameters . csmFileLink ) ;
275+ var template ;
276+ try {
277+ var template = JSON . parse ( templateFile ) ;
278+ tl . debug ( "Loaded CSM File" ) ;
279+ }
280+ catch ( error ) {
281+ throw ( tl . loc ( "TemplateParsingFailed" , utils . getError ( error . message ) ) ) ;
282+ }
283+ parameters = this . updateOverrideParameters ( template , parameters ) ;
250284 deployment . properties [ "parameters" ] = parameters ;
251285 }
252286
0 commit comments