Skip to content

Commit 23e6739

Browse files
authored
Merge pull request #16 from YakDriver/tfvars
Tfvars
2 parents a004172 + f5dfb70 commit 23e6739

File tree

8 files changed

+66
-14
lines changed

8 files changed

+66
-14
lines changed

.bumpversion.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[bumpversion]
2-
current_version = 0.4.0
2+
current_version = 0.5.0
33
commit = False
44
tag = False
55
tag_name = {new_version}

README.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ pip install scratchrelaxtv
2727

2828
# tip
2929

30-
Once installed, you can just type "relaxtv."
30+
Once installed, you can run *scratchrelaxtv* by typing either `relaxtv` or `scratchrelaxtv`.
3131

3232
# workflows
3333

@@ -62,7 +62,7 @@ resource "aws_s3_bucket" "this" {
6262

6363
Run *scratchrelaxtv*:
6464
```console
65-
$ scratchrelaxtv
65+
$ relaxtv
6666
2019-04-26 08:02:54,011 - INFO - generating variables file
6767
2019-04-26 08:02:54,011 - INFO - input file: main.tf
6868
2019-04-26 08:02:54,011 - INFO - output file: variables.tf
@@ -115,7 +115,7 @@ variable "bucket" {
115115
Run *scratchrelaxtv* to automatically add any missing variables:
116116

117117
```console
118-
$ scratchrelaxtv -cf
118+
$ relaxtv -cf
119119
2019-04-26 08:21:27,289 - INFO - checking for missing variables
120120
2019-04-26 08:21:27,289 - INFO - input file: main.tf
121121
2019-04-26 08:21:27,289 - INFO - output file: variables.tf
@@ -167,7 +167,7 @@ variable "region" {
167167

168168
Run *scratchrelaxtv* with the module stub option:
169169
```console
170-
$ scratchrelaxtv -m
170+
$ relaxtv -m
171171
2019-04-26 08:09:27,147 - INFO - generating module usage stub
172172
2019-04-26 08:09:27,147 - INFO - input file: variables.tf
173173
2019-04-26 08:09:27,147 - INFO - output file: modstub.tf
@@ -204,7 +204,7 @@ resource "aws_s3_bucket" "this" {
204204

205205
Run *scratchrelaxtv* with the generate `.env` and sort-ascending options:
206206
```console
207-
$ scratchrelaxtv -ea
207+
$ relaxtv -ea
208208
2019-06-21 20:01:35,362 - INFO - generating .env file
209209
2019-06-21 20:01:35,362 - INFO - input file: main.tf
210210
2019-06-21 20:01:35,362 - INFO - output file: .env
@@ -222,7 +222,7 @@ TF_VAR_region=replace
222222
## example: remove files
223223

224224
```console
225-
$ scratchrelaxtv -r
225+
$ relaxtv -r
226226
```
227227

228228
*scratchrelaxtv* can also tidy up your directories by removing its own extra generated files. Presumably it will only remove files you no longer need but *be careful*. This chart shows examples of what would be deleted or not.
@@ -246,7 +246,7 @@ $ scratchrelaxtv -r
246246
*scratchrelaxtv* includes help:
247247

248248
```console
249-
$ scratchrelaxtv --help
249+
$ relaxtv --help
250250
usage: scratchrelaxtv [-h] [-i INPUT] [-o OUTPUT] [-f] [-m] [-n MODNAME] [-r]
251251
[-c] [-e] [-a | -d]
252252

scratchrelaxtv/__init__.py

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
import re
2121

2222

23-
__version__ = "0.4.0"
23+
__version__ = "0.5.0"
2424
EXIT_OKAY = 0
2525
EXIT_NOT_OKAY = 1
2626

@@ -72,6 +72,8 @@ def log_arguments(self):
7272
logger.info("checking for missing variables")
7373
elif self.args.env:
7474
logger.info("generating .env file")
75+
elif self.args.tfvars:
76+
logger.info("generating .tfvars file")
7577
else:
7678
logger.info("generating variables file")
7779

@@ -249,14 +251,16 @@ def __init__(self, args):
249251
if not args.input:
250252
args.input = "main.tf"
251253

252-
if not args.output:
254+
if not args.output and args.env:
253255
args.output = ".env"
254256

257+
if not args.output and args.tfvars:
258+
args.output = "terraform.tfvars"
259+
255260
super().__init__(args)
256261

257-
def write_file(self):
262+
def _write_env(self):
258263
"""Output vars to .env file."""
259-
self._find_non_existing_filename()
260264
with open(self.args.output, "w", encoding='utf_8') as file_handle:
261265
file_handle.write('unset "${!TF_VAR_@}"\n')
262266
for tf_var in self.tf_vars:
@@ -265,6 +269,22 @@ def write_file(self):
265269
tf_var,
266270
"=replace\n"]))
267271

272+
def _write_tfvars(self):
273+
"""Output vars to .tfvars file."""
274+
with open(self.args.output, "w", encoding='utf_8') as file_handle:
275+
for tf_var in self.tf_vars:
276+
file_handle.write("".join([
277+
tf_var,
278+
' = "replace"\n']))
279+
280+
def write_file(self):
281+
"""Output vars to file."""
282+
self._find_non_existing_filename()
283+
if self.args.env:
284+
self._write_env()
285+
elif self.args.tfvars:
286+
self._write_tfvars()
287+
268288
def extract(self):
269289
"""Extract vars from .tf file."""
270290
self.find_vars_in_file(self.main_phrase_find, self.main_token_find)

scratchrelaxtv/cli.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ def parse_args(args):
3939
help="check that all vars are listed")
4040
task.add_argument("-e", "--env", default=False, action="store_true",
4141
help="generate .env with Terraform vars")
42+
task.add_argument("-t", "--tfvars", default=False, action="store_true",
43+
help="generate .tfvars with Terraform vars")
4244

4345
sort_order = parser.add_mutually_exclusive_group()
4446
sort_order.add_argument("-a", "--asc", action="store_true",
@@ -61,7 +63,7 @@ def main():
6163
extractor = scratchrelaxtv.StubMaker(args)
6264
elif args.check:
6365
extractor = scratchrelaxtv.Checker(args)
64-
elif args.env:
66+
elif args.env or args.tfvars:
6567
extractor = scratchrelaxtv.EnvGenerator(args)
6668
else:
6769
extractor = scratchrelaxtv.VarExtractor(args)

setup.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ name = scratchrelaxtv
33
description = Terraform developer tool to extract variables and generate variables.tf files.
44
long_description = file: README.md, CHANGELOG.md
55
long_description_content_type = text/markdown
6-
version = 0.4.0
6+
version = 0.5.0
77
author = YakDriver
88
author_email = [email protected]
99
url = https://github.com/YakDriver/scratchrelaxtv

test.tf

Whitespace-only changes.

tests/terraform.1.tfvars

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
acl = "replace"
2+
bucket = "replace"
3+
create_2 = "replace"
4+
create_keystore_bucket = "replace"
5+
org_ids = "replace"
6+
prefix = "replace"
7+
problem_var = "replace"
8+
region = "replace"
9+
tags = "replace"
10+
versioning = "replace"

tests/test_scratchrelaxtv.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,3 +160,23 @@ def test_gen_env():
160160
second_list = file_handle.read().splitlines()
161161
assert first_list == second_list
162162
os.remove(filename)
163+
164+
165+
def test_gen_tfvars():
166+
"""Test extracting variables."""
167+
with change_dir("tests"):
168+
filename = "terraform.2.tfvars"
169+
if os.path.isfile(filename):
170+
os.remove(filename)
171+
172+
args = cli.parse_args(["-fta", "-o", filename])
173+
174+
extractor = EnvGenerator(args)
175+
176+
assert extractor.extract() == EXIT_OKAY
177+
with open("terraform.1.tfvars", "r", encoding='utf_8') as file_handle:
178+
first_list = file_handle.read().splitlines()
179+
with open(filename, "r", encoding='utf_8') as file_handle:
180+
second_list = file_handle.read().splitlines()
181+
assert first_list == second_list
182+
os.remove(filename)

0 commit comments

Comments
 (0)