coretech / terrafile

A binary written in Go to systematically manage external modules from Github for use in Terraform
Apache License 2.0
142 stars 28 forks source link

support to fetch only a selected directory (support monorepo) #10

Open Cajga opened 3 years ago

Cajga commented 3 years ago

Currently the config only allows to fetch a full git repository. We are using a huge monorepo in which we store all of our modules together (we have a very complex CI pipleline and having them in one repo makes it easier). It would be nice if terrafile would support to fetch only a subdirectory from the repo.

Implementation idea:

onemodule:
  source: "git@github.com:awsomecompany/hugemonorepo"
  version: "v2.66.0"
  path: "modules/onemodule"

As git support is pretty weak in this area we could fetch the whole repo and then move it around to keep only the selected directory at the end. A possible implementation can be found here: https://github.com/devopsmakers/xterrafile/blob/master/cmd/install.go#L91