@@ -284,25 +284,17 @@ function removeInArray(arr, name, isArray, propName) {
284
284
}
285
285
286
286
function makePath ( /** @type {HTMLElement } */ setting , /** @type {string[] } */ path , /** @type {boolean } */ addSuffix , /** @type {boolean? } */ addOverrides ) {
287
- let suffix = "" ;
287
+ let suffix = getPlatformSuffix ( setting ) ;
288
288
let prefix = [ ] ;
289
- if ( setting . getAttribute ( "has-suffix" ) == "true" ) {
290
- if ( platformSelector . value != OPTION_EMPTY_VALUE )
291
- suffix += "-" + platformSelector . value ;
292
- if ( architectureSelector . value != OPTION_EMPTY_VALUE )
293
- suffix += "-" + architectureSelector . value ;
294
- if ( compilerSelector . value != OPTION_EMPTY_VALUE )
295
- suffix += "-" + compilerSelector . value ;
296
-
297
- if ( overridesSelector . value != OPTION_EMPTY_VALUE
298
- && overridesSelector . value . startsWith ( "build:" ) )
299
- prefix = [ "buildTypes" , overridesSelector . value . substring ( "build:" . length ) ] ;
300
- }
289
+ let dubBuildType = getDUBBuildType ( setting ) ;
290
+ let dubConfig = getDUBConfig ( setting ) ;
291
+ if ( dubBuildType )
292
+ prefix = [ "buildTypes" , dubBuildType ] ;
293
+ if ( dubConfig )
294
+ prefix = [ "configurations" , ":name=" + dubConfig ] ;
301
295
// important: config and buildtypes cant mix!
302
- if ( setting . getAttribute ( "has-config" ) != "false"
303
- && overridesSelector . value != OPTION_EMPTY_VALUE
304
- && overridesSelector . value . startsWith ( "config:" ) )
305
- prefix = [ "configurations" , ":name=" + overridesSelector . value . substring ( "config:" . length ) ] ;
296
+ if ( dubBuildType && dubConfig )
297
+ throw new Error ( "invalid state: can't have both config and build type set on a setting" ) ;
306
298
307
299
if ( addOverrides === false )
308
300
prefix = [ ] ;
@@ -313,6 +305,54 @@ function makePath(/** @type {HTMLElement} */ setting, /** @type {string[]} */ pa
313
305
return ret ;
314
306
}
315
307
308
+ /**
309
+ * @param {HTMLElement } [forSetting] optional, return empty string if this setting doesn't support any build type
310
+ * @returns {string }
311
+ */
312
+ function getDUBBuildType ( forSetting ) {
313
+ if ( forSetting && forSetting . getAttribute ( "has-suffix" ) != "true" )
314
+ return "" ;
315
+
316
+ if ( overridesSelector . value != OPTION_EMPTY_VALUE
317
+ && overridesSelector . value . startsWith ( "build:" ) )
318
+ return overridesSelector . value . substring ( "build:" . length ) ;
319
+ else
320
+ return "" ;
321
+ }
322
+
323
+ /**
324
+ * @param {HTMLElement } [forSetting] optional, return empty string if this setting doesn't support any config
325
+ * @returns {string }
326
+ */
327
+ function getDUBConfig ( forSetting ) {
328
+ if ( forSetting ?. getAttribute ( "has-config" ) == "false" )
329
+ return "" ;
330
+
331
+ if ( overridesSelector . value != OPTION_EMPTY_VALUE
332
+ && overridesSelector . value . startsWith ( "config:" ) )
333
+ return overridesSelector . value . substring ( "config:" . length ) ;
334
+ else
335
+ return "" ;
336
+ }
337
+
338
+ /**
339
+ * @param {HTMLElement } [forSetting] optional, return empty string if this setting doesn't support any platform suffix
340
+ * @returns {string }
341
+ */
342
+ function getPlatformSuffix ( forSetting ) {
343
+ if ( forSetting ?. getAttribute ( "has-suffix" ) != "true" )
344
+ return "" ;
345
+
346
+ let suffix = "" ;
347
+ if ( platformSelector . value != OPTION_EMPTY_VALUE )
348
+ suffix += "-" + platformSelector . value ;
349
+ if ( architectureSelector . value != OPTION_EMPTY_VALUE )
350
+ suffix += "-" + architectureSelector . value ;
351
+ if ( compilerSelector . value != OPTION_EMPTY_VALUE )
352
+ suffix += "-" + compilerSelector . value ;
353
+ return suffix ;
354
+ }
355
+
316
356
function updateOverrides ( ) {
317
357
/**
318
358
* @type {[string, string][] }
@@ -709,7 +749,7 @@ function loadJsonIntoUI() {
709
749
var newVal ;
710
750
if ( type == "string[]" ) {
711
751
if ( ! isOverride && setting . value . trim ( ) == "" )
712
- newVal = undefined ; // allow empty strings in overrides
752
+ newVal = [ ] ; // allow empty arrays in overrides
713
753
else
714
754
newVal = setting . value . split ( "\n" ) ;
715
755
}
@@ -718,7 +758,10 @@ function loadJsonIntoUI() {
718
758
? setting . value // allow empty strings in overrides
719
759
: ( setting . value || undefined ) ;
720
760
return newVal ;
721
- } ) . bind ( this , type , setting , isOverride ) ;
761
+ } ) . bind ( this , type , setting , usedAccess
762
+ && ( getDUBBuildType ( setting )
763
+ || getDUBConfig ( setting )
764
+ || getPlatformSuffix ( setting ) ) ) ;
722
765
}
723
766
var configSetting ;
724
767
if ( configPath !== undefined )
0 commit comments