terrascript 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/bin/terrascript +15 -67
- data/lib/terrascript.rb +59 -0
- metadata +60 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: a82a83d476331a0d279f31854598ae9ca3f18df09a610973798221564e40c08e
|
4
|
+
data.tar.gz: a0ca074f292a87f79c8a8fb3bea2b0631dfcc1e482934eb82402ed06c1e147d4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bfff4a2a1b061fb57fe1b33ca14c87c0eb41e148916d728fa959af2a9e51ef62eb583b942b0573c0a542bfcc9de9ebc276af8ecf4f434d541b6dedd987a2e4fa
|
7
|
+
data.tar.gz: 9f4a3cf889816a7ebc08ba45492ad903e4c975237eef44ac8adfedc194839487eb710b3134ddaabe44df54de5656b8e4a4a22430b0cb4629e2cfa9d25d75296f
|
data/bin/terrascript
CHANGED
@@ -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
|
-
|
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
|
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
|
-
|
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(
|
81
|
-
|
82
|
-
|
83
|
-
|
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
|
-
|
42
|
+
if !ENV.has_key? "TFSC_NOEXEC"
|
43
|
+
exec("terraform", *ARGV)
|
44
|
+
end
|
data/lib/terrascript.rb
ADDED
@@ -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.
|
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
|
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
|