File tree Expand file tree Collapse file tree 3 files changed +31
-10
lines changed Expand file tree Collapse file tree 3 files changed +31
-10
lines changed Original file line number Diff line number Diff line change @@ -11,7 +11,7 @@ import {
1111 processDynamicAttributesForHcl ,
1212} from "./util" ;
1313import { ITerraformDependable } from "./terraform-dependable" ;
14- import { ref , dependable } from "./tfExpression" ;
14+ import { ref , dependable , replaceTriggeredBy } from "./tfExpression" ;
1515import { IResolvable } from "./tokens/resolvable" ;
1616import { IInterpolatingParent } from "./terraform-addressable" ;
1717import { ITerraformIterator } from "./terraform-iterator" ;
@@ -78,13 +78,9 @@ export function lifecycleToTerraform(
7878 ...lifecycle ,
7979 ...( lifecycle ?. replaceTriggeredBy ?. length
8080 ? {
81- replaceTriggeredBy : lifecycle ?. replaceTriggeredBy ?. map ( ( x ) => {
82- if ( typeof x === "string" ) {
83- return x ;
84- } else {
85- return x . fqn ;
86- }
87- } ) ,
81+ replaceTriggeredBy : lifecycle ?. replaceTriggeredBy ?. map ( ( x ) =>
82+ replaceTriggeredBy ( x ) ,
83+ ) ,
8884 }
8985 : undefined ) ,
9086 } ;
Original file line number Diff line number Diff line change @@ -466,6 +466,31 @@ export function dependable(dependable: ITerraformDependable): string {
466466 return Token . asString ( new Dependable ( dependable ) ) ;
467467}
468468
469+ // eslint-disable-next-line jsdoc/require-jsdoc
470+ class ReplaceTriggeredBy extends TFExpression {
471+ constructor ( private readonly trigger : ITerraformDependable | string ) {
472+ super ( trigger ) ;
473+ }
474+
475+ public resolve ( context : IResolveContext ) {
476+ context . suppressBraces = true ;
477+
478+ if ( typeof this . trigger === "string" ) {
479+ return context . resolve ( this . trigger ) ;
480+ }
481+ return context . resolve ( this . trigger . fqn ) ;
482+ }
483+ }
484+
485+ /**
486+ * Takes either a full resource or a resource property and then
487+ * returns the logical address without braces/interpolation to
488+ * be used in replaceTriggeredBy directives.
489+ */
490+ export function replaceTriggeredBy ( trigger : ITerraformDependable | string ) {
491+ return Token . asString ( new ReplaceTriggeredBy ( trigger ) ) ;
492+ }
493+
469494export type Expression =
470495 | Reference
471496 | FunctionCall
Original file line number Diff line number Diff line change @@ -456,8 +456,8 @@ exports[`supports resource and attribute references in lifecycle.replaceTriggere
456456 " simple" : {
457457 " lifecycle" : {
458458 " replace_triggered_by" : [
459- " \$ { test_resource.other} " ,
460- " \$ { test_resource.other.string_value} "
459+ " test_resource.other" ,
460+ " test_resource.other.string_value"
461461 ]
462462 },
463463 " name" : " foo"
You can’t perform that action at this time.
0 commit comments