mirror of
https://github.com/esphome/esphome.git
synced 2026-10-02 17:30:22 +00:00
[substitutions] substitutions pass and !include redesign (package refactor part 2b) (#14918)
Co-authored-by: J. Nick Koston <nick@home-assistant.io> Co-authored-by: J. Nick Koston <nick@koston.org>
This commit is contained in:
co-authored by
J. Nick Koston
J. Nick Koston
parent
332118db56
commit
bf6000ef3d
@@ -38,3 +38,20 @@ test_list:
|
||||
- '{ 79, 82 }'
|
||||
- a: 15 should be 15, overridden from command line
|
||||
b: 20 should stay as 20, not overridden
|
||||
- aa:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
- 5
|
||||
- 6
|
||||
bb:
|
||||
- 7
|
||||
- 8
|
||||
- 9
|
||||
- aa:
|
||||
x: 1
|
||||
y: 3
|
||||
z: 4
|
||||
bb:
|
||||
w: 5
|
||||
|
||||
@@ -44,3 +44,13 @@ test_list:
|
||||
- '{ ${position.x}, ${position.y} }'
|
||||
- a: ${a} should be 15, overridden from command line
|
||||
b: ${b} should stay as 20, not overridden
|
||||
|
||||
# Test merging lists when substituted keys resolve to an existing key
|
||||
- ${ "aa" }: [1, 2, 3]
|
||||
${ "a" + "a" }: [4, 5, 6]
|
||||
${ "bb" }: [7, 8, 9]
|
||||
|
||||
# Test merging dicts when substituted keys resolve to an existing key
|
||||
- ${ "aa" }: {"x": 1, "y": 2}
|
||||
${ "a" + "a" }: {"y": 3, "z": 4}
|
||||
${ "bb" }: {"w": 5}
|
||||
|
||||
@@ -9,6 +9,11 @@ substitutions:
|
||||
numberOne: 1
|
||||
var1: 79
|
||||
double_width: 14
|
||||
double_height: 16
|
||||
y: ${x}
|
||||
x: ${y}
|
||||
b: 79
|
||||
c: 80
|
||||
test_list:
|
||||
- The area is 56
|
||||
- 56
|
||||
@@ -27,3 +32,4 @@ test_list:
|
||||
- chr(97) = a
|
||||
- len([1,2,3]) = 3
|
||||
- width = 7, double_width = 14
|
||||
- a = ${a}
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
substitutions:
|
||||
y: ${x} # Circular reference, expect to pass unresolved.
|
||||
x: ${y} # Circular reference, expect to pass unresolved.
|
||||
double_height: ${height * 2}
|
||||
width: 7
|
||||
height: 8
|
||||
enabled: true
|
||||
@@ -9,6 +12,8 @@ substitutions:
|
||||
numberOne: 1
|
||||
var1: 79
|
||||
double_width: ${width * 2}
|
||||
c: ${b+1}
|
||||
b: ${undefined_variable | default(79) }
|
||||
|
||||
test_list:
|
||||
- "The area is ${width * height}"
|
||||
@@ -25,3 +30,4 @@ test_list:
|
||||
- chr(97) = ${ chr(97) }
|
||||
- len([1,2,3]) = ${ len([1,2,3]) }
|
||||
- width = ${width}, double_width = ${double_width}
|
||||
- a = ${a}
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
fancy_component: &id001
|
||||
- id: component9
|
||||
value: 9
|
||||
some_component:
|
||||
- id: component1
|
||||
value: 1
|
||||
- id: component2
|
||||
value: 2
|
||||
- id: component3
|
||||
value: 3
|
||||
- id: component4
|
||||
value: 4
|
||||
- id: component5
|
||||
value: 79
|
||||
power: 200
|
||||
- id: component6
|
||||
value: 6
|
||||
- id: component7
|
||||
value: 7
|
||||
switch: &id002
|
||||
- platform: gpio
|
||||
id: switch1
|
||||
pin: 12
|
||||
- platform: gpio
|
||||
id: switch2
|
||||
pin: 13
|
||||
display:
|
||||
- platform: ili9xxx
|
||||
dimensions:
|
||||
width: 100
|
||||
height: 480
|
||||
substitutions:
|
||||
extended_component: component5
|
||||
package_options:
|
||||
alternative_package:
|
||||
alternative_component:
|
||||
- id: component8
|
||||
value: 8
|
||||
fancy_package:
|
||||
substitutions:
|
||||
fancy_subst: 42
|
||||
fancy_component: *id001
|
||||
pin: 12
|
||||
some_switches: *id002
|
||||
package_selection: fancy_package
|
||||
fancy_subst: 42
|
||||
@@ -0,0 +1,63 @@
|
||||
substitutions:
|
||||
package_options:
|
||||
alternative_package:
|
||||
alternative_component:
|
||||
- id: component8
|
||||
value: 8
|
||||
fancy_package:
|
||||
substitutions:
|
||||
fancy_subst: 42
|
||||
fancy_component:
|
||||
- id: component9
|
||||
value: 9
|
||||
|
||||
pin: 12
|
||||
some_switches:
|
||||
- platform: gpio
|
||||
id: switch1
|
||||
pin: ${pin}
|
||||
- platform: gpio
|
||||
id: switch2
|
||||
pin: ${pin+1}
|
||||
|
||||
package_selection: fancy_package
|
||||
|
||||
packages:
|
||||
- ${ package_options[package_selection] }
|
||||
- some_component:
|
||||
- id: component1
|
||||
value: 1
|
||||
- some_component:
|
||||
- id: component2
|
||||
value: 2
|
||||
- switch: ${ some_switches }
|
||||
- packages:
|
||||
package_with_defaults: !include
|
||||
file: display.yaml
|
||||
vars:
|
||||
native_width: 100
|
||||
high_dpi: false
|
||||
my_package:
|
||||
packages:
|
||||
- packages:
|
||||
special_package:
|
||||
substitutions:
|
||||
extended_component: component5
|
||||
some_component:
|
||||
- id: component3
|
||||
value: 3
|
||||
some_component:
|
||||
- id: component4
|
||||
value: 4
|
||||
- id: !extend ${ extended_component }
|
||||
power: 200
|
||||
value: 79
|
||||
some_component:
|
||||
- id: component5
|
||||
value: 5
|
||||
|
||||
some_component:
|
||||
- id: component6
|
||||
value: 6
|
||||
- id: component7
|
||||
value: 7
|
||||
@@ -0,0 +1,5 @@
|
||||
values:
|
||||
- var1: $var1
|
||||
- a: 10
|
||||
- b: B-default
|
||||
- c: The value of C is 79
|
||||
@@ -0,0 +1,7 @@
|
||||
# Test that include_vars with vars works even when there are no substitutions key defined.
|
||||
packages:
|
||||
- !include
|
||||
file: inc1.yaml
|
||||
vars:
|
||||
a: 10
|
||||
c: 79
|
||||
Reference in New Issue
Block a user