kurgan 0.2.2 → 0.3.0

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: a7a168494dee61cb9f6d64540dc67b147c58654b3d6a6540e753efb67f8329c8
4
- data.tar.gz: d9e8f3992b3e1c914c83e45eda70eae6bf995b3a5fb566725f40c9abb31eb376
3
+ metadata.gz: 2ed9790e405062d96996a8ee171a7d3ac0cfdaf675b458f3cb38015e936c01b3
4
+ data.tar.gz: '09e6b0290f9ad301146292353f5235dafd1023f2198ea5d160a1ddba3ca74b11'
5
5
  SHA512:
6
- metadata.gz: e2fe1aa2b37feeeb729d44c02cc356452ac774851a2ed4dbcc8bb7e6c3fbe7f502de4d217ba9f58f70e0cc16ecb78e1eab887e920e8d80802d751d114628509c
7
- data.tar.gz: c7aacfd238c8549b20a2e074288c355916139f134b484a8700c363b08adb1ce5fb26c0abe45e8d54156841100cd4ed79a2dc52039114c76b9a794ee0c4cd20e1
6
+ metadata.gz: 9b7bdf67f194e510c687775b3c1a89b5b24aee7aca3fc93b2ecd61ae05efe19861b60935d6c8e99666f6b18ad4f922556bee3f7a27c9020f2df7c05801c044d2
7
+ data.tar.gz: 9aaceb7c925e2e7cfbfb389b157348d4b4d6aff625962415430547d709e3699d0b6b7a5f1d421d6c7ae4e5c62f4ef74e824d4c0440393fa0bd8bf0e752bd1d48
@@ -0,0 +1,25 @@
1
+ name: test and build gem
2
+ on:
3
+ push:
4
+ branches: [ master ]
5
+ pull_request:
6
+ branches: [ master ]
7
+
8
+ jobs:
9
+ build:
10
+ name: test + build
11
+ runs-on: ubuntu-latest
12
+
13
+ steps:
14
+ - uses: actions/checkout@v2
15
+ - name: set up ruby 2.7
16
+ uses: actions/setup-ruby@v1
17
+ with:
18
+ ruby-version: 2.7.x
19
+ - name: rspec
20
+ run: |
21
+ gem install rspec
22
+ rspec
23
+ - name: build gem
24
+ run: |
25
+ gem build kurgan.gemspec
@@ -0,0 +1,24 @@
1
+ name: release gem
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+
7
+ jobs:
8
+ build:
9
+ name: Build and publish gem
10
+ runs-on: ubuntu-latest
11
+
12
+ steps:
13
+ - name: Check out the repo
14
+ uses: actions/checkout@v2
15
+
16
+ - name: Set up ruby 2.7
17
+ uses: actions/setup-ruby@v1
18
+ with:
19
+ ruby-version: 2.7.x
20
+
21
+ - name: Publish gem
22
+ uses: dawidd6/action-publish-gem@v1
23
+ with:
24
+ api_key: ${{secrets.RUBYGEMS_API_KEY}}
data/Gemfile.lock CHANGED
@@ -7,7 +7,7 @@ PATH
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- rake (10.5.0)
10
+ rake (13.0.1)
11
11
  thor (0.20.3)
12
12
 
13
13
  PLATFORMS
@@ -16,7 +16,7 @@ PLATFORMS
16
16
  DEPENDENCIES
17
17
  bundler (~> 2.0)
18
18
  kurgan!
19
- rake (~> 10.0)
19
+ rake (~> 13.0)
20
20
 
21
21
  BUNDLED WITH
22
22
  2.0.1
data/kurgan.gemspec CHANGED
@@ -17,7 +17,7 @@ Gem::Specification.new do |spec|
17
17
  # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
18
18
  # to allow pushing to a single host or delete this section to allow pushing to any host.
19
19
  if spec.respond_to?(:metadata)
20
- spec.metadata["allowed_push_host"] = "http://mygemserver.com"
20
+ spec.metadata["allowed_push_host"] = "https://rubygems.org"
21
21
  else
22
22
  raise "RubyGems 2.0 or newer is required to protect against " \
23
23
  "public gem pushes."
@@ -33,5 +33,5 @@ Gem::Specification.new do |spec|
33
33
  spec.add_dependency "thor", "~> 0.19"
34
34
 
35
35
  spec.add_development_dependency "bundler", "~> 2.0"
36
- spec.add_development_dependency "rake", "~> 10.0"
36
+ spec.add_development_dependency "rake", "~> 13.0"
37
37
  end
data/lib/kurgan/init.rb CHANGED
@@ -55,8 +55,10 @@ module Kurgan
55
55
 
56
56
  def ci_init
57
57
  if yes?("Setup a CI pipeline?")
58
- ci = ask "CI flavour", limited_to: ['jenkins', 'travis', 'codebuild']
58
+ ci = ask "CI flavour", limited_to: ['github', 'jenkins', 'travis', 'codebuild']
59
59
  case ci
60
+ when 'github'
61
+ template('templates/github_actions.yaml.tt', "#{@dir}/.github/workflows/rspec.yaml")
60
62
  when 'jenkins'
61
63
  template('templates/Jenkinsfile.tt', "#{@dir}/Jenkinsfile")
62
64
  when 'travis'
@@ -0,0 +1,25 @@
1
+ name: cftest
2
+
3
+ on: [push, pull_request]
4
+
5
+ jobs:
6
+ test:
7
+ name: test
8
+ runs-on: ubuntu-latest
9
+
10
+ steps:
11
+ - uses: actions/checkout@v2
12
+ - name: set up ruby 2.7
13
+ uses: actions/setup-ruby@v1
14
+ with:
15
+ ruby-version: 2.7.x
16
+ - name: install gems
17
+ run: gem install cfhighlander rspec
18
+ - name: set cfndsl spec
19
+ run: cfndsl -u
20
+ - name: cftest
21
+ run: rspec
22
+ env:
23
+ AWS_ACCESS_KEY: ${{ secrets.AWS_ACCESS_KEY }}
24
+ AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
25
+ AWS_REGION: ap-southeast-2
@@ -0,0 +1,31 @@
1
+ require 'yaml'
2
+
3
+ describe 'compiled component <%= @component_name %>' do
4
+
5
+ context 'cftest' do
6
+ it 'compiles test' do
7
+ expect(system("cfhighlander cftest #{@validate} --tests tests/<%= @test_name %>.test.yaml")).to be_truthy
8
+ end
9
+ end
10
+
11
+ let(:template) { YAML.load_file("#{File.dirname(__FILE__)}/../out/tests/<%= @test_name %>/<%= @component_name %>.compiled.yaml") }
12
+
13
+ context "Resource" do
14
+
15
+ <% config['Resources'].each do |resource, details| %>
16
+ context "<%= resource %>" do
17
+ let(:resource) { template["Resources"]["<%= resource %>"] }
18
+
19
+ it "is of type <%= details['Type'] %>" do
20
+ expect(resource["Type"]).to eq("<%= details['Type'] %>")
21
+ end
22
+ <% if details.has_key?('Properties')%><% details['Properties'].each do |property, value| %>
23
+ it "to have property <%= property %>" do
24
+ expect(resource["Properties"]["<%= property %>"]).to eq(<%= value.is_a?(String) ? "\"#{value}\"" : value %>)
25
+ end
26
+ <% end %><% end %>
27
+ end
28
+ <% end %>
29
+ end
30
+
31
+ end
data/lib/kurgan/test.rb CHANGED
@@ -1,10 +1,12 @@
1
+ require 'yaml'
2
+
1
3
  module Kurgan
2
4
  class Test < Thor::Group
3
5
  include Thor::Actions
4
6
 
5
7
  argument :test_name
6
8
 
7
- class_option :type, aliases: :t, type: :string, enum: %w(config), default: 'config'
9
+ class_option :type, aliases: :t, type: :string, enum: %w(config spec), default: 'config'
8
10
  class_option :directory, aliases: :d, type: :string, default: 'tests'
9
11
 
10
12
  def self.source_root
@@ -16,6 +18,7 @@ module Kurgan
16
18
  if @cfhighlander_template.nil?
17
19
  raise "No cfhighlander.rb file found in #{Dir.pwd}"
18
20
  end
21
+ @component_name = @cfhighlander_template.split('.').first
19
22
  end
20
23
 
21
24
  def create_test
@@ -23,6 +26,14 @@ module Kurgan
23
26
  when 'config'
24
27
  template('templates/test.yaml.tt', "#{options[:directory]}/#{test_name}.test.yaml")
25
28
  say "created config test case #{options[:directory]}/#{test_name}.test.yaml", :green
29
+ when 'spec'
30
+ output_file = "#{Dir.pwd}/out/tests/#{test_name}/#{@component_name}.compiled.yaml"
31
+ if !File.file?(output_file)
32
+ error "compile cloudformation test output file #{output_file} not found.\nRun `cfhighlander cftest -t #{options[:directory]}/#{test_name}.test.yaml`"
33
+ end
34
+ compiled_test = YAML.load_file("#{Dir.pwd}/out/tests/#{test_name}/#{@component_name}.compiled.yaml")
35
+ template('templates/test.spec.tt', "spec/#{test_name}_spec.rb", compiled_test)
36
+ say "created spec test spec/#{test_name}_spec.rb", :green
26
37
  else
27
38
  error "#{options[:type]} is not a supported test type yet", :red
28
39
  end
@@ -1,3 +1,3 @@
1
1
  module Kurgan
2
- VERSION = "0.2.2"
2
+ VERSION = "0.3.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kurgan
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Guslington
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-08-06 00:00:00.000000000 Z
11
+ date: 2021-04-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '10.0'
47
+ version: '13.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '10.0'
54
+ version: '13.0'
55
55
  description: Manage a cfhighalnder project
56
56
  email:
57
57
  - theonestackcfhighlander@gmail.com
@@ -60,8 +60,9 @@ executables:
60
60
  extensions: []
61
61
  extra_rdoc_files: []
62
62
  files:
63
+ - ".github/workflows/build-gem.yml"
64
+ - ".github/workflows/release-gem.yml"
63
65
  - ".gitignore"
64
- - ".travis.yml"
65
66
  - Gemfile
66
67
  - Gemfile.lock
67
68
  - LICENSE.txt
@@ -83,7 +84,9 @@ files:
83
84
  - lib/kurgan/templates/cfndsl.rb.tt
84
85
  - lib/kurgan/templates/codebuild.yaml.tt
85
86
  - lib/kurgan/templates/config.yaml.tt
87
+ - lib/kurgan/templates/github_actions.yaml.tt
86
88
  - lib/kurgan/templates/gitignore.tt
89
+ - lib/kurgan/templates/test.spec.tt
87
90
  - lib/kurgan/templates/test.yaml.tt
88
91
  - lib/kurgan/templates/travis.yml.tt
89
92
  - lib/kurgan/test.rb
@@ -92,7 +95,7 @@ homepage: http://iamkurgan.com
92
95
  licenses:
93
96
  - MIT
94
97
  metadata:
95
- allowed_push_host: http://mygemserver.com
98
+ allowed_push_host: https://rubygems.org
96
99
  post_install_message:
97
100
  rdoc_options: []
98
101
  require_paths:
@@ -108,7 +111,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
108
111
  - !ruby/object:Gem::Version
109
112
  version: '0'
110
113
  requirements: []
111
- rubygems_version: 3.0.4
114
+ rubygems_version: 3.1.6
112
115
  signing_key:
113
116
  specification_version: 4
114
117
  summary: Manage a cfhighalnder project
data/.travis.yml DELETED
@@ -1,17 +0,0 @@
1
- sudo: required
2
- dist: trusty
3
- language: ruby
4
- rvm:
5
- - 2.5
6
- script:
7
- - bundle install
8
- - gem build kurgan.gemspec
9
- - gem install kurgan-*.gem
10
- - kurgan help
11
- deploy:
12
- provider: rubygems
13
- api_key: "${RUBYGEMS_API_KEY}"
14
- gem: kurgan
15
- on:
16
- all_branches: true
17
- condition: $TRAVIS_BRANCH =~ ^develop|master && $TRAVIS_EVENT_TYPE =~ ^push|api$ && $TRAVIS_REPO_SLUG == "theonestack/kurgan"