pleme 0.0.5 → 0.0.11

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: ce38ecda6d30cc5b49beab5fac2ff84e6ff08513112c16e4e342a156547bb2be
4
- data.tar.gz: 53ba37e6042c9c69fada43e341e630b6c8b7207c07716c899b7290d712504310
3
+ metadata.gz: fcd0b3e57aafa2ca97c4fe4622e968d6a72bdd6fc26b52568f16a06b506beb42
4
+ data.tar.gz: 4bc9de4677a0fa82c6d8758b0a6777cfe7f5c67e3226a76919cbd65b04390a4c
5
5
  SHA512:
6
- metadata.gz: a2796479d7a8a8a47cdbb3272dea8573f30635d86fd64c8e927ae7a01240294d8f55be5d3ea0afb99a97b98176d677e1b13e01769115661b213b4567887c40b4
7
- data.tar.gz: 5d38e9a903a02bfaf988e22ec28a155a683dae19e0cecdc9c73aed8b81f611ea142ed0481679542b0001a7a3807175996c2c5f74c807e47e441a867fd98298cd
6
+ metadata.gz: 30d83c8767a7e4e37ad645d4d2b37f13ce4633a90d04ba19bdb0c55b97977a5c617e98ee618d46172bfc9949b8d4cdc2affe5151a40c5b5e47e67bfcbc088768
7
+ data.tar.gz: 8fc27ed834e664449948b4606b9d0e7a039362fb369206232d96538b8b90dd310c9ec408f2e56666bf250a38ca960979b5b778262153ac14215577e218b954a0
data/Rakefile CHANGED
@@ -18,4 +18,7 @@ task :test do
18
18
  .invoke
19
19
  end
20
20
  end
21
- task default: :test
21
+ task :default do
22
+ Rake::Task['test'].invoke
23
+ Rake::Task['release'].invoke
24
+ end
data/bin/pleme CHANGED
File without changes
@@ -8,7 +8,7 @@ require 'docopt'
8
8
  require 'json'
9
9
  require 'pleme/runner'
10
10
 
11
- module Cli
11
+ class Cli
12
12
  def initialize
13
13
  @doc = <<~DOCOPT
14
14
  pleme.
@@ -16,6 +16,9 @@ module 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.5'
5
+ VERSION = '0.0.11'
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
81
+ tf 'apply'
82
+ end
83
+
84
+ def plan
85
+ tf 'plan'
86
+ end
87
+
88
+ def destroy
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.5
4
+ version: 0.0.11
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