terrascript 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. checksums.yaml +5 -5
  2. data/bin/terrascript +15 -67
  3. data/lib/terrascript.rb +59 -0
  4. metadata +60 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 4c40419f50c827ccfc419581cbe5980e3e07579b
4
- data.tar.gz: a9bfa1e0dd746f5532884dbbdc4920f2beb493db
2
+ SHA256:
3
+ metadata.gz: a82a83d476331a0d279f31854598ae9ca3f18df09a610973798221564e40c08e
4
+ data.tar.gz: a0ca074f292a87f79c8a8fb3bea2b0631dfcc1e482934eb82402ed06c1e147d4
5
5
  SHA512:
6
- metadata.gz: '0528ceb6ec770de3a8678be730a480b98eebdeb97de4264b4f093b0df9aa448d5f54287de7ade8d927d205dfe28da1a76bceee2674033190d2d92a4ac0c0790e'
7
- data.tar.gz: d40bb8eb2eadac06cef9d7c6332d6ca8bab2686e26f085f177998ca77602bc7e5548a8c71a6cb248912a65a262ee0190ab702e693c755d4b0eb61ee7b95f5cbf
6
+ metadata.gz: bfff4a2a1b061fb57fe1b33ca14c87c0eb41e148916d728fa959af2a9e51ef62eb583b942b0573c0a542bfcc9de9ebc276af8ecf4f434d541b6dedd987a2e4fa
7
+ data.tar.gz: 9f4a3cf889816a7ebc08ba45492ad903e4c975237eef44ac8adfedc194839487eb710b3134ddaabe44df54de5656b8e4a4a22430b0cb4629e2cfa9d25d75296f
@@ -1,71 +1,14 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'digest'
4
3
  require 'fileutils'
4
+ require 'digest'
5
+ require 'terrascript'
5
6
 
6
- class Transform
7
- def transform
8
- eval("lambda { |#{@argName}|\n#{@body}\n}").call(@arg)
9
- end
10
-
11
- def initialize(fname)
12
- @fname = fname
13
- @mode = :read
14
- @argName = "block"
15
- @arg = ""
16
- @body = ""
17
- end
18
-
19
- def process
20
- $stdout = File.new(@fname.gsub(".tfrb", ".tf"), "w")
21
- File.open(@fname).each do |line|
22
- processLine line
23
- end
24
- $stdout.close
25
- $stdout = STDOUT
26
- end
27
-
28
- def processLine(line)
29
- case @mode
30
-
31
- when :read
32
- if line.lstrip.start_with?("@inline")
33
- args = line.split(' ')
34
- if !args[1].nil?
35
- @argName = args[1]
36
- end
37
- @mode = :body
38
- else
39
- puts line
40
- end
41
-
42
- when :arg
43
- if line.lstrip.start_with?("@end")
44
- @arg << "\n"
45
- transform
46
- @arg = ""
47
- @body = ""
48
- @mode = :read
49
- else
50
- @arg << line
51
- end
52
-
53
- when :body
54
- @body << line
55
- if line.lstrip.start_with?("return")
56
- @mode = :arg
57
- end
58
-
59
- end
60
- end
61
-
62
- end
63
-
64
- def processFile f
7
+ def processFile fname
65
8
  hash_dir = ".terraform/.tfrb"
66
9
  FileUtils.mkdir_p(hash_dir)
67
10
 
68
- fname_hash = Digest::SHA256.hexdigest f
11
+ fname_hash = Digest::SHA256.hexdigest fname
69
12
 
70
13
  hash_file = "#{hash_dir}/#{fname_hash}"
71
14
 
@@ -74,14 +17,17 @@ def processFile f
74
17
  old_sha = File.read hash_file
75
18
  end
76
19
 
77
- sha = Digest::SHA256.hexdigest File.read f
20
+ versionContents = Gem.loaded_specs['terrascript'].version.version << (File.read fname)
21
+ sha = Digest::SHA256.hexdigest versionContents
78
22
 
79
23
  if old_sha != sha
80
- File.open(hash_file, "w") { |hash_fd| hash_fd.write sha}
81
-
82
- File.open(f).each do |l|
83
- Transform.new(f).process
24
+ File.open(fname) do |f|
25
+ File.open(fname.gsub(".tfrb", ".tf"), "w") do |out|
26
+ Transform.new(f, out).process
27
+ end
84
28
  end
29
+
30
+ File.open(hash_file, "w") { |hash_fd| hash_fd.write sha}
85
31
  puts "=> Done"
86
32
  else
87
33
  puts "=> Unchanged"
@@ -93,4 +39,6 @@ Dir.glob("**/*.tfrb").each do |f|
93
39
  processFile(f)
94
40
  end
95
41
 
96
- exec("terraform", *ARGV)
42
+ if !ENV.has_key? "TFSC_NOEXEC"
43
+ exec("terraform", *ARGV)
44
+ end
@@ -0,0 +1,59 @@
1
+
2
+
3
+ class Transform
4
+ def transform
5
+ s = $stdout
6
+ $stdout = @out
7
+ eval("lambda { |#{@argName}|\n#{@body}\n}").call(@arg)
8
+ $stdout = s
9
+ end
10
+
11
+ def initialize(inFd, outFd = $stdout)
12
+ @in = inFd
13
+ @out = outFd
14
+ @mode = :read
15
+ @argName = "block"
16
+ @arg = ""
17
+ @body = ""
18
+ end
19
+
20
+ def process
21
+ @in.each do |line|
22
+ processLine line
23
+ end
24
+ end
25
+
26
+ def processLine(line)
27
+ case @mode
28
+
29
+ when :read
30
+ if line.lstrip.start_with?("@inline")
31
+ args = line.split(' ')
32
+ if !args[1].nil?
33
+ @argName = args[1]
34
+ end
35
+ @mode = :body
36
+ else
37
+ @out.puts line
38
+ end
39
+
40
+ when :arg
41
+ if line.lstrip.start_with?("@end")
42
+ transform
43
+ @arg = ""
44
+ @body = ""
45
+ @mode = :read
46
+ else
47
+ @arg << line
48
+ end
49
+
50
+ when :body
51
+ @body << line
52
+ if line.lstrip.start_with?("return")
53
+ @mode = :arg
54
+ end
55
+
56
+ end
57
+ end
58
+
59
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: terrascript
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marcin Chmiel
@@ -9,7 +9,63 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
  date: 2018-04-10 00:00:00.000000000 Z
12
- dependencies: []
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: minitest
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: pry
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: pry-doc
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
13
69
  description:
14
70
  email: marcin.k.chmiel@gmail.com
15
71
  executables:
@@ -19,6 +75,7 @@ extra_rdoc_files: []
19
75
  files:
20
76
  - ".gitignore"
21
77
  - bin/terrascript
78
+ - lib/terrascript.rb
22
79
  homepage: https://github.com/mewa/terrascript
23
80
  licenses:
24
81
  - MIT
@@ -39,7 +96,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
39
96
  version: '0'
40
97
  requirements: []
41
98
  rubyforge_project:
42
- rubygems_version: 2.6.12
99
+ rubygems_version: 2.7.6
43
100
  signing_key:
44
101
  specification_version: 4
45
102
  summary: Terraform wrapper which adds Ruby scripting capabilities to your infrastructure