Skip to content

Update variable regex to support hyphens#503

Merged
pietern merged 7 commits intodatabricks:mainfrom
stikkireddy:fix/support-hyphens-interpolate
Jun 23, 2023
Merged

Update variable regex to support hyphens#503
pietern merged 7 commits intodatabricks:mainfrom
stikkireddy:fix/support-hyphens-interpolate

Conversation

@stikkireddy
Copy link
Copy Markdown
Contributor

@stikkireddy stikkireddy commented Jun 20, 2023

Changes

Modified interpolation logic to use: \$\{([a-zA-Z]+([-_]*[a-zA-Z0-9]+)*(\.[a-zA-Z]+([-_]*[a-zA-Z0-9]+)*)*)\}

Edit: Suggested by @pietern \$\{([a-zA-Z]+([-_]?[a-zA-Z0-9]+)*(\.[a-zA-Z]+([-_]?[a-zA-Z0-9]+)*)*)\} to be more selective and not allow consequent hyphens or underscores to make the keys more readable.

Explanation:

  1. All interpolation starts with ${ and ends with }
  2. All interpolated locations are split by by .
  3. All sections are expected to start with a alphabet [a-zA-Z]; no numbers, hyphens or underscores.
  4. All sections are expected to end with an alphanumeric [a-zA-Z0-9] no hyphens or underscores

This change allows the current interpolation to be more permissive.

Note it does break backwards compatibility because [a-zA-Z] != [\w]. \w includes alphanumeric and underscores. \w = [a-zA-Z0-9_]

Tests

There are two tests with examples of valid and invalid interpolation and a test to validate expansion.

Copy link
Copy Markdown
Contributor

@pietern pietern left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

WDYT?

@stikkireddy stikkireddy requested a review from pietern June 21, 2023 12:33
@pietern pietern changed the title added more complex regex for supporting hyphens Update variable regex to support hyphens Jun 23, 2023
@pietern pietern merged commit 3c1e69a into databricks:main Jun 23, 2023
@pietern pietern mentioned this pull request Jun 28, 2023
pietern added a commit that referenced this pull request Jun 28, 2023
## Changes

CLI:
* Add --absolute flag for ls command
([#508](#508)).
* Add dbfs scheme prefix to paths in cp command output
([#516](#516)).
* Add provider detection to the repos create command
([#528](#528)).
* Added configure-cluster flag for auth login
([#500](#500)).
* Added prompts for Databricks profile for auth login command
([#502](#502)).
* Allow specifying repo by path for repos commands
([#526](#526)).
* Decode contents by default in workspace export command
([#531](#531)).
* Fixed jobs create command to only accept JSON payload
([#498](#498)).
* Make local files default for fs commands
([#506](#506)).
* Remove \r from new line print statments
([#509](#509)).
* Remove extra call to filer.Stat in dbfs filer.Read
([#515](#515)).
* Update alerts command integration test
([#512](#512)).
* Update variable regex to support hyphens
([#503](#503)).

Bundles:
* Add DATABRICKS_BUNDLE_TMP env variable
([#462](#462)).
* Update Terraform provider schema structs
([#504](#504)).

Dependencies:
* Bump github.com/databricks/databricks-sdk-go from
0.9.1-0.20230614092458-b5bbc1c8dabb to 0.10.0
([#497](#497)).

Internal:
* Use direct download for workspace filer read
([#514](#514)).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants