You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Terraform configuration language has the fileset() function which returns a set of all files matching a glob pattern given a path, however it does not currently handle directories. Even if it was adjusted to support directories (or created as a separate function), as with most configuration language functions, the result is evaluated before the rest of the graph. This can cause issues for practitioners wishing to use a collection of directories generated/updated during the graph for purposes such as calculating checksums to explicitly cause resource replacement.
While today we generally rely on the function documentation to warn practitioners about this potential issue, it may make sense to provide a graph-aware solution for the use case.
Proposal
Create a new local_directories data source which operates similarly to the fileset() function or the proposed local_files data source. It can pair nicely with the proposed local_directory data source as well. As a design sketch of potential usage:
data"local_directories""example" {
path=path.modulepattern="{one,three,five}"# optional
}
data"local_directory""example" {
for_each=data.local_files.example.directory_pathsfilename=each.value
}
# further logic on data.local_directory.example[*]
Proposed data source configurable attributes:
path - String, required, the starting path for matching
pattern - String, optional, defaults to *, the glob pattern (using the same doublestar dependency as Terraform CLI)
Proposed data source computed attributes:
directory_paths - Set of strings, the paths to all directories found by the glob pattern
One concern is the proliferation of such data sources based on the file type: regular files, directories, single directory etc, and in time more types like symbolic links, sockets etc (however unlikely they appear to be at this time). So I've created an alternative proposal (#217) as it is sufficiently different from this one and local_directory and covers (AFAICT) both sets of use cases.
Terraform CLI and Provider Versions
N/A
Use Cases or Problem Statement
The Terraform configuration language has the fileset() function which returns a set of all files matching a glob pattern given a path, however it does not currently handle directories. Even if it was adjusted to support directories (or created as a separate function), as with most configuration language functions, the result is evaluated before the rest of the graph. This can cause issues for practitioners wishing to use a collection of directories generated/updated during the graph for purposes such as calculating checksums to explicitly cause resource replacement.
While today we generally rely on the function documentation to warn practitioners about this potential issue, it may make sense to provide a graph-aware solution for the use case.
Proposal
Create a new
local_directories
data source which operates similarly to thefileset()
function or the proposedlocal_files
data source. It can pair nicely with the proposedlocal_directory
data source as well. As a design sketch of potential usage:Proposed data source configurable attributes:
path
- String, required, the starting path for matchingpattern
- String, optional, defaults to*
, the glob pattern (using the same doublestar dependency as Terraform CLI)Proposed data source computed attributes:
directory_paths
- Set of strings, the paths to all directories found by the glob patternHow much impact is this issue causing?
Medium
Additional Information
local_directory
data source proposal: Consider local_directory Data Source #216Code of Conduct
The text was updated successfully, but these errors were encountered: