Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update variable regex to support hyphens #503

Merged
merged 7 commits into from
Jun 23, 2023

Conversation

stikkireddy
Copy link
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
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?

bundle/config/interpolation/interpolation.go Outdated Show resolved Hide resolved
@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
4 checks passed
@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.

None yet

2 participants