Skip to content

v0.24.1 Allow control of letter case of outputs

Compare
Choose a tag to compare
@cloudpossebot cloudpossebot released this 04 Feb 09:20
dc69999
Allow control of letter case of outputs @SweetOps (#107)

You now have control over the letter case of generated tag names and supplied labels, which means you also have control over the letter case of the ultimate id.

Labels are the elements you can include in label_order, namely namespace, environment, stage, name, and attributes. For every non-empty label, a corresponding tag name is generated. For namespace, environment, stage, the output is the formatted, normalized input. (By "normalized" we mean that it goes through regex_replace_chars.), For attributes, which is a list, each element is normalized, duplicates are removed, and the resulting list is converted to a string by joining the elements with the delimiter (defaults to hyphen). For name, which is special, the output is the same as id, which is the joining of the labels in the order specified by label_order and separated by delimiter.

  • You can set label_key_case to one of upper, lower, or title, which will result in generated tag names in the corresponding case: NAME, name, or Name. For backwards compatibility, title is the default
  • You can set label_value_case to one of upper, lower, title, or none, which will result in output label values in the corresponding case (with none meaning no case conversion of any kind will be done, though the labels will still be subject to regex_replace_chars). The case converted labels will show up not just in the module output of the labels themselves, but also in the tag values and in the id string.

You can look at the test cases in examples/complete and the expected results in test/src/examples_complete_test.go to see examples of how this is supposed to work.

One interesting example is that you can create ids in Pascal case by setting label_value_case = "title" and delimiter = "".

Include updates to exports/context.tf @Nuru (#122 and #123)

what

  • Include updates to exports/context.tf
  • Update README with features and compatibilty
  • Add validation for id_length_limit

why

  • The exports/context.tf is what gets distributed and needs to be in sync
  • Replace outdated information
  • Was not validated earlier because validators are not supported in TF 0.12 but now we are dropping support for TF 0.12 and so we can add validators
Restore backward compatibility with v0.22.1 and earlier @Nuru (#121)

what

  • Restore backward compatibility with v0.22.1 and earlier
  • Allow setting of label_key_case and label_value_case by vars, not just by context attributes.

why

  • Allow interoperability of old and new modules
  • Normally, root modules make settings via individual variables, not by setting an entire context block.

Incorporates and closes #120

🐛 Bug fix/Breaking change

This version introduced a bug fix that technically is a breaking change.

The input regex_replace_chars specifies a regular expression, and characters matching it are removed
from labels/id elements. Prior to this release, if the delimiter itself matched the regular expression,
then the delimiter would be removed from the attributes portion of the id. This was not a problem
for most users, since the default delimiter was - (dash) and the default regex allowed dashes, but
if you customized the delimiter and/or regex, this could affect you.