boltops-tools/terraspace

unable to use UTF-8 char in tfvars

scauglog opened this issue · 0 comments

Checklist

  • Upgrade Terraspace: Are you using the latest version of Terraspace? This allows Terraspace to fix issues fast. There's an Upgrading Guide: https://terraspace.cloud/docs/misc/upgrading/
  • Reproducibility: Are you reporting a bug others will be able to reproduce and not asking a question. If you're unsure or want to ask a question, do so on https://community.boltops.com
  • Code sample: Have you put together a code sample to reproduce the issue and make it available? Code samples help speed up fixes dramatically. If it's an easily reproducible issue, then code samples are not needed. If you're unsure, please include a code sample.

My Environment

Software Version
Operating System mac/arm64 and linux/amd64
Terraform 1.4.2
Terraspace 2.2.3
Ruby 3.0.3

Expected Behaviour

we can use string with non ascii character in tfvars

Current Behavior

when we switched from terraspace 2.1.6 to 2.2.3 using string with non ascii character made the plan or apply fail with the following message Exception ArgumentError: invalid byte sequence in US-ASCII

Step-by-step reproduction instructions

create tfvars file and add a non ascii character in a string

test = "héllo"

run terraspace plan

terraspace plan stack
Error stack trace
Exception ArgumentError: invalid byte sequence in US-ASCII
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/compiler/erb/rewrite.rb:19:in `split'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/compiler/erb/rewrite.rb:19:in `replace'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/compiler/erb/rewrite.rb:9:in `rewrite'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/compiler/erb/render.rb:13:in `build'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/compiler/strategy/tfvar/tfvars.rb:4:in `run'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/compiler/strategy/tfvar.rb:17:in `block in run'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/compiler/strategy/tfvar.rb:11:in `each'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/compiler/strategy/tfvar.rb:11:in `run'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/compiler/perform.rb:34:in `compile_tfvars'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/dependency/resolver.rb:12:in `block in resolve'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/compiler/dirs_concern.rb:18:in `block in with_each_mod'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/compiler/dirs_concern.rb:15:in `each'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/compiler/dirs_concern.rb:15:in `with_each_mod'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/dependency/resolver.rb:10:in `resolve'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/builder.rb:36:in `resolve_dependencies'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/builder.rb:30:in `run'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/cli/commander.rb:9:in `run'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/cli/plan.rb:43:in `plan_only'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/cli/plan.rb:17:in `perform'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/cli/plan.rb:11:in `run'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/cli.rb:161:in `plan'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/command.rb:76:in `dispatch'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/thor-1.2.1/lib/thor/base.rb:485:in `start'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/cli/concern.rb:65:in `start'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/exe/terraspace:7:in `<top (required)>'
/root/.rbenv/versions/3.0.3/bin/terraspace:25:in `load'
/root/.rbenv/versions/3.0.3/bin/terraspace:25:in `<main>'
root@3f5a6fea82e4:/usr/src/app/terraform/users# terraspace plan people
Exception ArgumentError: invalid byte sequence in US-ASCII
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/compiler/erb/rewrite.rb:19:in `split'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/compiler/erb/rewrite.rb:19:in `replace'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/compiler/erb/rewrite.rb:9:in `rewrite'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/compiler/erb/render.rb:13:in `build'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/compiler/strategy/tfvar/tfvars.rb:4:in `run'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/compiler/strategy/tfvar.rb:17:in `block in run'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/compiler/strategy/tfvar.rb:11:in `each'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/compiler/strategy/tfvar.rb:11:in `run'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/compiler/perform.rb:34:in `compile_tfvars'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/dependency/resolver.rb:12:in `block in resolve'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/compiler/dirs_concern.rb:18:in `block in with_each_mod'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/compiler/dirs_concern.rb:15:in `each'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/compiler/dirs_concern.rb:15:in `with_each_mod'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/dependency/resolver.rb:10:in `resolve'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/builder.rb:36:in `resolve_dependencies'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/builder.rb:30:in `run'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/cli/commander.rb:9:in `run'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/cli/plan.rb:43:in `plan_only'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/cli/plan.rb:17:in `perform'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/cli/plan.rb:11:in `run'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/cli.rb:161:in `plan'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/command.rb:76:in `dispatch'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/thor-1.2.1/lib/thor/base.rb:485:in `start'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/lib/terraspace/cli/concern.rb:65:in `start'
/root/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/terraspace-2.2.3/exe/terraspace:7:in `<top (required)>'
/root/.rbenv/versions/3.0.3/bin/terraspace:25:in `load'
/root/.rbenv/versions/3.0.3/bin/terraspace:25:in `<main>'

Code Sample

Solution Suggestion

We should be able to set the encoding used in the config section of the app.rb