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

Support python hcl2 object to hcl2 text #23

Closed
jordiclariana opened this issue Jan 17, 2020 · 12 comments · Fixed by #169
Closed

Support python hcl2 object to hcl2 text #23

jordiclariana opened this issue Jan 17, 2020 · 12 comments · Fixed by #169

Comments

@jordiclariana
Copy link

Is there any plan to support going backwards (from dict to hcl2)?
Something like this:

import hcl2
with(open("test.py", 'r')) as file:
    dict = hcl2.load(file)
# Now dict holds a python representation of the test.tf file

hcl2_text = hcl2.dumps(dict)
# Now hcl2_text holds same content as test.py original file
@danieladams456
Copy link

I think the terraform json syntax is preferred for machine generated code. That would be much easier to implement than going back to HCL2.

@vikas027
Copy link

vikas027 commented Mar 3, 2020

hey @danieladams456 , that is true but it is still a good idea to have the option to convert the dict back to hcl2. In my use case, I am not converting all my tf files to json just one or two of those.

@ChristophShyper
Copy link

It would be great to have possibility to write HCL back to a file. Imagine one wants to parse something during CI/CD phase and commit it back to GitHub after, while still having neat HCL code. Not a nasty JSON :)

@antonbabenko
Copy link

+1 for having this feature. It would be great to have this feature as you say, but from what I see here:

def new_line_or_comment(self, args: List) -> Discard:
return Discard()

The comments are simply ignored, so we can't really combine an updated file from the dict object.

The only solution which can do correct manipulation is the official Go library - https://github.com/hashicorp/hcl/tree/hcl2 .

Please correct me if I am wrong and you know another solution (preferably in Python).

@tr-fernandocunha
Copy link

+1

In my case, I want to dynamically update a tfvars file and create a PR using a custom bot.

@thereforsunrise
Copy link

ChatGPT brought me here. It keeps suggesting I use hcldumps to convert the json back to HCL - no doubt because of this thread. :D

@swarner1033
Copy link

This is my current work around https://nklya.medium.com/how-to-write-hcl2-from-python-53ac12e45874

@kvendingoldo
Copy link

any news here? :)

@cah-david-schaffner
Copy link

any news here?

@weaversam8
Copy link
Contributor

Hi everyone! I've implemented a big first step in this direction in my PR #169. While this wouldn't allow you to directly convert a dictionary back to HCL, it does allow you to manipulate an AST (produced by this library) in Python code and convert that back to HCL. See my PR for more details.

@kkozik-amplify
Copy link
Collaborator

kkozik-amplify commented Oct 7, 2024

Hey everyone.
Following up on @weaversam8, we just released #169 under version 5.0.0.
Furthermore, we will keep looking into supporting reconstruction of JSON/dict to HCL2 text.
Thanks!

@weaversam8
Copy link
Contributor

@kkozik-amplify I have an experimental branch in the works for going from dict to HCL2 as well - I will share a PR (or draft PR) for that when I make a bit more progress :)

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 a pull request may close this issue.