pleme 0.0.6 → 0.0.12

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ee152d7f162e7296409c23e961197d3ec95a2fcdd6e6518c38ef872d6b207ed3
4
- data.tar.gz: 847a0fd32bdd6f98660838344eca1b0787552acc378d0ae640b891c25b0f765e
3
+ metadata.gz: 16d1b118e0cf51e61a4ceac40e0adf03532495b04b9389bc6573d2c470d1bbd6
4
+ data.tar.gz: fbe63cd9f68f9a8fc9ebb0f6d1e05639ac93fd57c42bd39a627839822ff2f8d3
5
5
  SHA512:
6
- metadata.gz: 6668dd45e0285f8a479539d182b66a49eca32cac121de0ddb91082bacc35817a08a382d2a51f2cfaca5ced30d6b14d5a1dd6c3475a9e31ce9a66622187e93761
7
- data.tar.gz: 15b4e71f6e51ae02eb8e5ce99346a21939fbf519d46a66fa29a308bdddba89cdb1cf6f7fb58412fd95235363db457b41eed4f41eac88823ca0a2414e65478323
6
+ metadata.gz: 8531036660f63c120de718575ce6714bcc450282e51c3d7122774a62a94d8d05d1b7f1eb3590ad9f177a568ec5e4208860069f70cdc6ebaa5ac79efb466f2268
7
+ data.tar.gz: 53693e53765fd562da81ea0a947cb2ce81527b57b980763dd4ce018d6ecd230b5a2dfb2f8750e746ecc798bb02c9805d478dcfb8ced98866dcd79ecc3aade1c1
@@ -16,6 +16,9 @@ class Cli
16
16
  Usage:
17
17
  pleme
18
18
  pleme dotfiles
19
+ pleme plan
20
+ pleme apply
21
+ pleme destroy
19
22
  DOCOPT
20
23
  end
21
24
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Pleme
4
4
  module Gem
5
- VERSION = '0.0.6'
5
+ VERSION = '0.0.12'
6
6
  end
7
7
  end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'pleme/abstract_translator'
4
+
5
+ class PlemecTranslation < AbstractTranslation
6
+ end
7
+ class PlemecTranslator < AbstractTranslator
8
+ attr_accessor :translation
9
+ attr_reader :resource_symbols
10
+
11
+ def initialize
12
+ @translation = PlemecTranslation.new
13
+ @resource_symbols = %i[pleme]
14
+ end
15
+
16
+ def method_missing(method_name, *args, &block)
17
+ abstract_method_missing(
18
+ @translation,
19
+ method_name,
20
+ @resource_symbols,
21
+ *args,
22
+ &block
23
+ )
24
+ end
25
+ end
@@ -5,16 +5,93 @@
5
5
  # then dispatch accordingly
6
6
  ###############################################################################
7
7
 
8
+ require 'pleme/plemec_translator'
9
+ require 'yaml'
10
+ require 'json'
11
+
8
12
  class Runner
9
- def dotfiles
10
- hax_portal
13
+ def initialize
14
+ @translator = PlemecTranslator.new
15
+ @spec = nil
16
+ @config_path = 'plemec.rb'
17
+ end
18
+
19
+ # run a shell command
20
+ # hard exit if command has a failure
21
+ # like set -e
22
+ def sh(cmd)
23
+ exit 1 unless system(cmd)
24
+ end
25
+
26
+ # pipe hash to yaml without
27
+ # weird symbol issues
28
+ def yamilify(rhash)
29
+ YAML.safe_load(rhash.to_json).to_yaml
11
30
  end
12
31
 
13
32
  def run(spec)
14
- dotfiles(spec) unless spec[:dotfiles].nil?
33
+ @spec = spec if @spec.nil?
34
+ %i[dotfiles apply plan destroy].each do |cli_cmd|
35
+ send(cli_cmd, spec) unless spec[cli_cmd].nil?
36
+ end
37
+ end
38
+
39
+ def read_config
40
+ @translator.eval_in_context(File.read(@config_path))
41
+ @translator.inspect
42
+ end
43
+
44
+ def dotfiles(_spec)
45
+ hax_portal
46
+ end
47
+
48
+ def docker_compose(cwd = :cache)
49
+ sh "mkdir -p #{cwd}" unless Dir.exist?(cwd)
50
+ end
51
+
52
+ # shell interface for docker-compose
53
+ def dc(cmd, cwd = :cache)
54
+ sh "mkdir -p #{cwd}" unless Dir.exist?(cwd)
55
+ @translator.eval_in_context(File.read(@config_path))
56
+ cmd = "cd #{cwd} && docker-compose #{cmd}"
57
+ @translator.inspect[:pleme].keys.each do |pkey|
58
+ pkey = pkey.to_sym if pkey.instance_of?(String)
59
+ next unless pkey.eql? :compose
60
+
61
+ @translator.inspect[:pleme][:environment].keys.each do |env|
62
+ File.write(
63
+ yamilify(inspect[:pleme][:environment][env][:compose]),
64
+ File.join(cwd, 'docker-compose.yml')
65
+ )
66
+ end
67
+ end
68
+ sh cmd
69
+ end
70
+
71
+ # shell interface for terraform
72
+ def tf(cmd, cwd = :cache)
73
+ sh "mkdir -p #{cwd}" unless Dir.exist?(cwd)
74
+ cmd = "cd #{cwd} && terraform #{cmd}"
75
+ @translator.eval_in_context(File.read(@config_path))
76
+ sh cmd
77
+ sh "rm -rf #{File.join(cmd, 'template.json')}"
78
+ end
79
+
80
+ def apply(_spec)
81
+ tf 'apply'
82
+ end
83
+
84
+ def plan(_spec)
85
+ tf 'plan'
86
+ end
87
+
88
+ def destroy(_spec)
89
+ tf 'destroy'
15
90
  end
16
91
 
17
- # enter the world of hax
92
+ # read a local file into this space
93
+ # so you can test locally while importing
94
+ # good code to this class
18
95
  def hax_portal
19
96
  instance_eval(File.read('hax.rb')) if File.exist?('hax.rb')
20
97
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pleme
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - ''
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-18 00:00:00.000000000 Z
11
+ date: 2020-09-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: docopt
@@ -104,6 +104,7 @@ files:
104
104
  - lib/pleme/abstract_translator.rb
105
105
  - lib/pleme/cli.rb
106
106
  - lib/pleme/gem/version.rb
107
+ - lib/pleme/plemec_translator.rb
107
108
  - lib/pleme/resource_translator.rb
108
109
  - lib/pleme/runner.rb
109
110
  - pkg/ltk-gem-0.0.1.gem