terrascript 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
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