power_stencil 0.9.0 → 0.9.1

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
  SHA1:
3
- metadata.gz: a7a7ba04e35989e29c761da1e15018121ada88a4
4
- data.tar.gz: be2c3cfe6550a722e126d0587a5aa76273573edb
3
+ metadata.gz: f8ef665f1ce87e962192d7725c2dbd851759bc00
4
+ data.tar.gz: 65d6b440a419dddc9a3f0c46c2b7c80db9d78d90
5
5
  SHA512:
6
- metadata.gz: 1f29b2f27112124935ec5b9c63222206d9ec34570154c05d02d38ad2954a74a12590ba3ab017f978ef1f9f5d71fb56d4dc75e5b2e3f48ab6d95418935d770bee
7
- data.tar.gz: bad80333308df6484785785077046e16161188297a15eb95302024e48c882e1ceca0d3ac48c45b19c616f0b61973aab6795d99549ae9dc781eb7bd1614e0acfe
6
+ metadata.gz: 8e39368e94c8710dba97db574916017d9a30ce45468d5674787daef4f2ad915af8dba03235d60988a2f887a96020f151dabccd160b32baef0d4421a576339284
7
+ data.tar.gz: 7a7ba9f93020d3d92954ef997d46d5724ff11e79deec6270e1a283009faf00df56762435532aa8762dbad93ea062af4931b21fb76941fa04ec59cc0b141de69d
@@ -16,6 +16,9 @@ See [official website][PowerStencil site].
16
16
  - [What is a PowerStencil plugin ?](#what-is-a-powerstencil-plugin-)
17
17
  - [Using this plugin in your `PowerStencil` projects](#using-this-plugin-in-your-powerstencil-projects)
18
18
  - [Goal of this plugin](#goal-of-this-plugin)
19
+ - [Plugin dependencies](#plugin-dependencies)
20
+ - [Standard gems dependencies](#standard-gems-dependencies)
21
+ - [Dependency to other plugins](#dependency-to-other-plugins)
19
22
  - [Plugin capabilities](#plugin-capabilities)
20
23
  - [Config](#config)
21
24
  - [Subcommands and options](#subcommands-and-options)
@@ -66,9 +69,22 @@ And then you may see information about the plugin by running:
66
69
  * `power_stencil info` in the plugins section.
67
70
  * `power_stencil plugin --list -v`
68
71
 
69
- # Goal of this plugin
72
+ # Goal of this plugin
70
73
 
71
- # Plugin capabilities
74
+ # Plugin dependencies
75
+
76
+ ## Standard gems dependencies
77
+
78
+ Standard dependencies are declared normally in the _gemspec file_. They are automatically installed when installing the plugin with `power_stencil plugin --install`.
79
+
80
+ ## Dependency to other plugins
81
+
82
+ For development purpose, dependency to other plugins are declared in the _gemspec file_ as _development dependency_.
83
+
84
+ But within a project, dependencies have to be added to the `:project_plugins` array in the project configuration file (`.ps_project/versioned-config.yaml`).
85
+
86
+
87
+ # Plugin capabilities
72
88
 
73
89
  This plugin provides the following features:
74
90
 
@@ -78,13 +94,12 @@ This plugin provides the following features:
78
94
 
79
95
  ## Post-build actions
80
96
 
81
- ## DSL in templates and in `power_stencil shell`
97
+ ## DSL in templates and in `power_stencil shell`
82
98
 
83
99
  ## Entity types
84
100
 
85
101
  ## Templates-templates
86
102
 
87
-
88
103
  # Contributing
89
104
 
90
105
  Bug reports and pull requests are welcome on Gitlab at https://gitlab.com/tools4devops/psplugins/<%= plugin_name %>/issues. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
@@ -0,0 +1,50 @@
1
+ module PowerStencilTests
2
+
3
+ module Project
4
+
5
+ TEMP_DIR_PREFIX = 'PS_TESTS_'
6
+
7
+ module ClassMethods
8
+
9
+
10
+ def temporary_project(project_name, with_git_support: false, scope: :all)
11
+ self.instance_eval do
12
+ puts scope
13
+ around(scope) do |execution|
14
+ Dir.mktmpdir(TEMP_DIR_PREFIX) do |tests_root_dir|
15
+ tmp_project_path = File.join tests_root_dir, project_name
16
+ create_project_including_this_plugin tmp_project_path, with_git_support: with_git_support
17
+ execution.run
18
+ @tmp_project_path = nil
19
+ end
20
+ end
21
+ end
22
+ end
23
+
24
+ def plugin_path
25
+ File.expand_path File.join('..', '..'), __FILE__
26
+ end
27
+
28
+ end
29
+
30
+ attr_reader :tmp_project_path
31
+
32
+ def self.included(base)
33
+ base.extend(ClassMethods)
34
+ end
35
+
36
+ def create_project_including_this_plugin(project_path, with_git_support: false)
37
+ cmd = "power_stencil init --project-path '#{project_path}'"
38
+ cmd << ' --no-git' unless with_git_support
39
+ `#{cmd}`
40
+ project_plugin_path = File.join project_path, '.ps_project', 'plugins'
41
+ `ln -s '#{self.class.plugin_path}' '#{project_plugin_path}'`
42
+ @tmp_project_path = project_path
43
+ end
44
+
45
+ def temporary_project_cmd(params)
46
+ "power_stencil #{params} --project-path '#{tmp_project_path}'"
47
+ end
48
+
49
+ end
50
+ end
@@ -1,6 +1,7 @@
1
- require "bundler/setup"
1
+ require 'bundler/setup'
2
2
  require 'power_stencil'
3
3
  require "<%= plugin_name %>"
4
+ require 'project_helper'
4
5
 
5
6
  RSpec.configure do |config|
6
7
  # Enable flags like --only-failures and --next-failure
@@ -1,10 +1,30 @@
1
1
  RSpec.describe <%= plugin_module_name %> do
2
+
3
+ include PowerStencilTests::Project
4
+ temporary_project 'test_project', scope: :all
5
+
6
+ let(:plugin_list) { 'plugin --list' }
7
+ let(:test_entity) { '<%= plugin_name %>_entity/test_<%= plugin_name %>' }
8
+ let(:create_<%= plugin_name %>) { "create #{test_entity}" }
9
+ let(:get_<%= plugin_name %>) { "get #{test_entity}" }
10
+
2
11
  it 'has a version number' do
3
12
  expect(<%= plugin_module_name %>::VERSION).not_to be nil
4
13
  end
5
14
 
6
- it 'does something useful' do
15
+ it 'should add a "<%= plugin_name %>" sub-command' do
16
+ expect(`#{temporary_project_cmd plugin_list}`).to match '- <%= plugin_name %>'
17
+ end
18
+
19
+ it 'should be possible to create a "<%= plugin_name %>_entity"' do
20
+ `#{temporary_project_cmd create_<%= plugin_name %>}`
21
+ expect($?.success?).to be_truthy
22
+ expect(`#{temporary_project_cmd get_<%= plugin_name %>}`).not_to be_empty
23
+ end
24
+
25
+ it 'should do something useful' do
7
26
  pending 'Tests implementation'
8
27
  RSpec.fail
9
28
  end
29
+
10
30
  end
@@ -16,6 +16,9 @@ See [official website][PowerStencil site].
16
16
  - [What is a PowerStencil plugin ?](#what-is-a-powerstencil-plugin-)
17
17
  - [Using this plugin in your `PowerStencil` projects](#using-this-plugin-in-your-powerstencil-projects)
18
18
  - [Goal of this plugin](#goal-of-this-plugin)
19
+ - [Plugin dependencies](#plugin-dependencies)
20
+ - [Standard gems dependencies](#standard-gems-dependencies)
21
+ - [Dependency to other plugins](#dependency-to-other-plugins)
19
22
  - [Plugin capabilities](#plugin-capabilities)
20
23
  - [Config](#config)
21
24
  - [Subcommands and options](#subcommands-and-options)
@@ -66,9 +69,22 @@ And then you may see information about the plugin by running:
66
69
  * `power_stencil info` in the plugins section.
67
70
  * `power_stencil plugin --list -v`
68
71
 
69
- # Goal of this plugin
72
+ # Goal of this plugin
70
73
 
71
- # Plugin capabilities
74
+ # Plugin dependencies
75
+
76
+ ## Standard gems dependencies
77
+
78
+ Standard dependencies are declared normally in the _gemspec file_. They are automatically installed when installing the plugin with `power_stencil plugin --install`.
79
+
80
+ ## Dependency to other plugins
81
+
82
+ For development purpose, dependency to other plugins are declared in the _gemspec file_ as _development dependency_.
83
+
84
+ But within a project, dependencies have to be added to the `:project_plugins` array in the project configuration file (`.ps_project/versioned-config.yaml`).
85
+
86
+
87
+ # Plugin capabilities
72
88
 
73
89
  This plugin provides the following features:
74
90
 
@@ -78,13 +94,12 @@ This plugin provides the following features:
78
94
 
79
95
  ## Post-build actions
80
96
 
81
- ## DSL in templates and in `power_stencil shell`
97
+ ## DSL in templates and in `power_stencil shell`
82
98
 
83
99
  ## Entity types
84
100
 
85
101
  ## Templates-templates
86
102
 
87
-
88
103
  # Contributing
89
104
 
90
105
  Bug reports and pull requests are welcome on Gitlab at https://gitlab.com/tools4devops/psplugins/<%= plugin_name %>/issues. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
@@ -0,0 +1,50 @@
1
+ module PowerStencilTests
2
+
3
+ module Project
4
+
5
+ TEMP_DIR_PREFIX = 'PS_TESTS_'
6
+
7
+ module ClassMethods
8
+
9
+
10
+ def temporary_project(project_name, with_git_support: false, scope: :all)
11
+ self.instance_eval do
12
+ puts scope
13
+ around(scope) do |execution|
14
+ Dir.mktmpdir(TEMP_DIR_PREFIX) do |tests_root_dir|
15
+ tmp_project_path = File.join tests_root_dir, project_name
16
+ create_project_including_this_plugin tmp_project_path, with_git_support: with_git_support
17
+ execution.run
18
+ @tmp_project_path = nil
19
+ end
20
+ end
21
+ end
22
+ end
23
+
24
+ def plugin_path
25
+ File.expand_path File.join('..', '..'), __FILE__
26
+ end
27
+
28
+ end
29
+
30
+ attr_reader :tmp_project_path
31
+
32
+ def self.included(base)
33
+ base.extend(ClassMethods)
34
+ end
35
+
36
+ def create_project_including_this_plugin(project_path, with_git_support: false)
37
+ cmd = "power_stencil init --project-path '#{project_path}'"
38
+ cmd << ' --no-git' unless with_git_support
39
+ `#{cmd}`
40
+ project_plugin_path = File.join project_path, '.ps_project', 'plugins'
41
+ `ln -s '#{self.class.plugin_path}' '#{project_plugin_path}'`
42
+ @tmp_project_path = project_path
43
+ end
44
+
45
+ def temporary_project_cmd(params)
46
+ "power_stencil #{params} --project-path '#{tmp_project_path}'"
47
+ end
48
+
49
+ end
50
+ end
@@ -1,6 +1,7 @@
1
- require "bundler/setup"
1
+ require 'bundler/setup'
2
2
  require 'power_stencil'
3
3
  require "<%= plugin_name %>"
4
+ require 'project_helper'
4
5
 
5
6
  RSpec.configure do |config|
6
7
  # Enable flags like --only-failures and --next-failure
@@ -1,10 +1,30 @@
1
1
  RSpec.describe <%= plugin_module_name %> do
2
+
3
+ include PowerStencilTests::Project
4
+ temporary_project 'test_project', scope: :all
5
+
6
+ let(:plugin_list) { 'plugin --list' }
7
+ let(:test_entity) { '<%= plugin_name %>_entity/test_<%= plugin_name %>' }
8
+ let(:create_<%= plugin_name %>) { "create #{test_entity}" }
9
+ let(:get_<%= plugin_name %>) { "get #{test_entity}" }
10
+
2
11
  it 'has a version number' do
3
12
  expect(<%= plugin_module_name %>::VERSION).not_to be nil
4
13
  end
5
14
 
6
- it 'does something useful' do
15
+ it 'should add a "<%= plugin_name %>" sub-command' do
16
+ expect(`#{temporary_project_cmd plugin_list}`).to match '- <%= plugin_name %>'
17
+ end
18
+
19
+ it 'should be possible to create a "<%= plugin_name %>_entity"' do
20
+ `#{temporary_project_cmd create_<%= plugin_name %>}`
21
+ expect($?.success?).to be_truthy
22
+ expect(`#{temporary_project_cmd get_<%= plugin_name %>}`).not_to be_empty
23
+ end
24
+
25
+ it 'should do something useful' do
7
26
  pending 'Tests implementation'
8
27
  RSpec.fail
9
28
  end
29
+
10
30
  end
@@ -41,8 +41,8 @@ module PowerStencil
41
41
  end
42
42
  puts_and_logs "Generated templates in '#{new_entity.templates_path}'.", check_verbose: false if new_entity.buildable?
43
43
  rescue => e
44
- puts_and_logs "Failed to create '#{search_criterion.as_path}' with message '#{e.message}'.", logs_as: :error, check_verbose: false
45
44
  logger.debug PowerStencil::Error.report_error(e)
45
+ raise PowerStencil::Error, "Failed to create '#{search_criterion.as_path}' with message '#{e.message}'."
46
46
  end
47
47
  end
48
48
  end
@@ -1,3 +1,3 @@
1
1
  module PowerStencil
2
- VERSION = '0.9.0'.freeze
2
+ VERSION = '0.9.1'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: power_stencil
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Laurent Briais
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-11-10 00:00:00.000000000 Z
11
+ date: 2019-11-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -183,6 +183,7 @@ files:
183
183
  - etc/meta_templates/plugin_seed/lib/{entity}/version.rb.erb
184
184
  - etc/meta_templates/plugin_seed/lib/{entity}/{entity}_processor.rb.erb
185
185
  - etc/meta_templates/plugin_seed/psplugin_{entity}.gemspec
186
+ - etc/meta_templates/plugin_seed/spec/project_helper.rb
186
187
  - etc/meta_templates/plugin_seed/spec/spec_helper.rb
187
188
  - etc/meta_templates/plugin_seed/spec/{entity}_spec.rb
188
189
  - etc/power_stencil.yaml
@@ -210,6 +211,7 @@ files:
210
211
  - etc/templates/plugin_definition/lib/{entity}/version.rb.erb
211
212
  - etc/templates/plugin_definition/lib/{entity}/{entity}_processor.rb.erb
212
213
  - etc/templates/plugin_definition/psplugin_{entity}.gemspec
214
+ - etc/templates/plugin_definition/spec/project_helper.rb
213
215
  - etc/templates/plugin_definition/spec/spec_helper.rb
214
216
  - etc/templates/plugin_definition/spec/{entity}_spec.rb
215
217
  - etc/templates/project/.copy_ignore
@@ -321,7 +323,7 @@ metadata:
321
323
  documentation_uri: https://gitlab.com/tools4devops/power_stencil/blob/master/README.md
322
324
  source_code_uri: https://gitlab.com/tools4devops/power_stencil
323
325
  homepage_uri: https://powerstencil.brizone.org/
324
- post_install_message: "\nThank you for installing PowerStencil 0.9.0 !\nFrom the command
326
+ post_install_message: "\nThank you for installing PowerStencil 0.9.1 !\nFrom the command
325
327
  line you can run `power_stencil --help`\nIf your shell is not completing the command:\n
326
328
  \ If you use rbenv: `rbenv rehash`\n If you use zsh : `rehash`\n\nOfficial Website
327
329
  \ : https://powerstencil.brizone.org/\nFull documentation here : https://gitlab.com/tools4devops/power_stencil/blob/master/README.md\nFeel