pleme 0.0.6 → 0.0.12

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.
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