pleme 0.0.3 → 0.0.10

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: c46216be9589f9031645a10ca830a59639985d6e8d417939efe47bb6a4d63445
4
- data.tar.gz: 66644531a50cb45e9f82ad620d149875a562c2f3afe95d8027a7e63b05cab368
3
+ metadata.gz: 12b543618ac3bd363d1e2ff383a64b89856c1a38f8bb6559644a86cd0c519694
4
+ data.tar.gz: a30f4a2496f3f1e0b2a39282b1f473e2be2fac7a3d1b863a68c553dd27ec142d
5
5
  SHA512:
6
- metadata.gz: 7391d3ca14c3b169e0f15e51ed9d052a9a6d6116231226264b54133d0c8508c88ac646b979b3a8d9e1385e8cc1503e93499a4fff251a7e120f2d45e51bbe4d65
7
- data.tar.gz: f5f1c90c6a78068fc963a3c5b32af6b78f6c0532481271dda394d4850c6e6ea0c51cf8610479cf2c6e8d80799ea576e4e129ba9906f0f50f478c717a8abe82b0
6
+ metadata.gz: '082d2a8ce15be9007014e408038c649c8756a6b12307824532d5fc2e9835fa74506da016d3f8c3f749932fbf096cbb4fcac10868278fc706eb2fdef5d72863bd'
7
+ data.tar.gz: 4b0e401e218bad05606320d9e98313c698e21266de745653b883bd53b9fefe159f8264753cc1b5510c96af1f233fc3365f219a801dcd2e195cc40a47e2247b7b
@@ -15,34 +15,9 @@ jobs:
15
15
  with:
16
16
  ruby_version: '2.6'
17
17
 
18
- - name: make bundle directory
19
- run: mkdir -p ~/.bundle
20
-
21
- - name: install_bundler
22
- run: gem install bundler
23
-
24
- - name: install_bundle
25
- run: gem install bundle
26
-
27
- - name: install_dependencies
28
- run: ./dependencies.sh
29
- env:
30
- GITHUB_TOKEN: ${{ secrets.LTK_GITHUB_TOKEN }}
31
-
32
- - name: rake_test
33
- run: rake test
34
-
35
- - name: rake_build
36
- run: rake build
37
-
38
- - name: make gem directory
39
- run: 'mkdir -p ~/.gem'
40
-
41
- - name: credentials
42
- run: 'echo ":github: Bearer ${{ secrets.LTK_GITHUB_TOKEN }}" >> ~/.gem/credentials'
43
-
44
- - name: correct_permissions
45
- run: 'chmod 600 ~/.gem/credentials'
46
-
47
- - name: push package
48
- run: gem push --key github --host https://rubygems.pkg.github.com/luisfelipemourapereira pkg/ltk-gem-*.gem
18
+ - name: release
19
+ run: |
20
+ set -e
21
+ gem install bundler
22
+ bundle
23
+ rake test
@@ -1 +1 @@
1
- 2.6.4
1
+ 2.6.3
@@ -1,7 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- pleme (0.0.1)
4
+ pleme (0.0.3)
5
+ docopt
5
6
 
6
7
  GEM
7
8
  remote: https://rubygems.org/
@@ -10,6 +11,7 @@ GEM
10
11
  backport (1.1.2)
11
12
  benchmark (0.1.0)
12
13
  diff-lcs (1.4.4)
14
+ docopt (0.6.1)
13
15
  e2mmap (0.1.0)
14
16
  jaro_winkler (1.5.4)
15
17
  maruku (0.7.3)
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
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'pleme/cli'
5
+
6
+ Cli.new.run
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ ###############################################################################
4
+ # cli
5
+ ###############################################################################
6
+
7
+ require 'docopt'
8
+ require 'json'
9
+ require 'pleme/runner'
10
+
11
+ class Cli
12
+ def initialize
13
+ @doc = <<~DOCOPT
14
+ pleme.
15
+
16
+ Usage:
17
+ pleme
18
+ pleme dotfiles
19
+ pleme plan
20
+ pleme apply
21
+ pleme destroy
22
+ DOCOPT
23
+ end
24
+
25
+ def run
26
+ Runner.new.run(**JSON.parse(JSON[Docopt.docopt(@doc)], symbolize_names: true))
27
+ rescue Docopt::Exit => e
28
+ puts e.message
29
+ end
30
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Pleme
4
4
  module Gem
5
- VERSION = '0.0.3'
5
+ VERSION = '0.0.10'
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 = ResourceTranslation.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
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ ###############################################################################
4
+ # define a run interface that takes a dict
5
+ # then dispatch accordingly
6
+ ###############################################################################
7
+
8
+ require 'pleme/plemec_translator'
9
+
10
+ class Runner
11
+ def initialize
12
+ @translator = PlemecTranslator.new
13
+ @spec = nil
14
+ @config_path = 'plemec.rb'
15
+ end
16
+
17
+ # run a shell command
18
+ # hard exit if command has a failure
19
+ # like set -e
20
+ def sh(cmd)
21
+ exit 1 unless system(cmd)
22
+ end
23
+
24
+ def run(spec)
25
+ @spec = spec if @spec.nil?
26
+ %i[dotfiles apply plan destroy].each do |cli_cmd|
27
+ send(cli_cmd, spec) unless spec[cli_cmd].nil?
28
+ end
29
+ end
30
+
31
+ def dotfiles(_spec)
32
+ hax_portal
33
+ end
34
+
35
+ def tf(cmd, cwd = :cache)
36
+ sh "mkdir -p #{cwd}" unless Dir.exist?(cwd)
37
+ cmd = "cd #{cwd} && terraform #{cmd}"
38
+ @translator.eval_in_context(File.read(@config_path))
39
+ File.write(File.join(cwd, 'template.json'))
40
+ sh cmd
41
+ sh "rm -rf #{File.join(cmd, 'template.json')}"
42
+ end
43
+
44
+ def apply
45
+ tf 'apply'
46
+ end
47
+
48
+ def plan
49
+ tf 'plan'
50
+ end
51
+
52
+ def destroy
53
+ tf 'destroy'
54
+ end
55
+
56
+ # read a local file into this space
57
+ # so you can test locally while importing
58
+ # good code to this class
59
+ def hax_portal
60
+ instance_eval(File.read('hax.rb')) if File.exist?('hax.rb')
61
+ end
62
+ end
@@ -20,6 +20,7 @@ Gem::Specification.new do |spec|
20
20
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
21
21
  spec.require_paths = ['lib']
22
22
  spec.required_ruby_version = '>= 2.6.3'
23
+ spec.add_dependency('docopt')
23
24
  spec.add_development_dependency('rake')
24
25
  spec.add_development_dependency('rspec')
25
26
  spec.add_development_dependency('rubocop')
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pleme
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.10
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
+ - !ruby/object:Gem::Dependency
14
+ name: docopt
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: rake
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -69,7 +83,8 @@ dependencies:
69
83
  description: Pleme
70
84
  email:
71
85
  - " luis AT pleme DOT com"
72
- executables: []
86
+ executables:
87
+ - pleme
73
88
  extensions: []
74
89
  extra_rdoc_files: []
75
90
  files:
@@ -83,12 +98,15 @@ files:
83
98
  - Gemfile.lock
84
99
  - README.md
85
100
  - Rakefile
86
- - dependencies.sh
101
+ - bin/pleme
87
102
  - init.sh
88
103
  - lib/pleme.rb
89
104
  - lib/pleme/abstract_translator.rb
105
+ - lib/pleme/cli.rb
90
106
  - lib/pleme/gem/version.rb
107
+ - lib/pleme/plemec_translator.rb
91
108
  - lib/pleme/resource_translator.rb
109
+ - lib/pleme/runner.rb
92
110
  - pkg/ltk-gem-0.0.1.gem
93
111
  - pleme.gemspec
94
112
  - scripts/init.sh
@@ -1,4 +0,0 @@
1
- #!/bin/sh
2
-
3
- bundle config set rubygems.pkg.github.com luisfelipemourapereira:$GITHUB_TOKEN
4
- bundle