power_stencil 0.3.1

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.
Files changed (132) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +13 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +5 -0
  5. data/CODE_OF_CONDUCT.md +74 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +198 -0
  9. data/Rakefile +6 -0
  10. data/bin/console +14 -0
  11. data/bin/setup +8 -0
  12. data/bin/update_plugin_template +79 -0
  13. data/doc/builds.md +267 -0
  14. data/doc/entities.md +964 -0
  15. data/doc/example_use_cases.md +59 -0
  16. data/doc/images/power-stencil-entity-build.svg +481 -0
  17. data/doc/images/power-stencil-entity-creation.svg +375 -0
  18. data/doc/images/power-stencil-simple-flow.svg +265 -0
  19. data/doc/plugins.md +169 -0
  20. data/doc/templates.md +333 -0
  21. data/etc/base_commands_definition.yml +259 -0
  22. data/etc/meta_templates/plugin_seed/etc/command_line.yaml +12 -0
  23. data/etc/meta_templates/plugin_seed/etc/plugin_config.yaml +4 -0
  24. data/etc/meta_templates/plugin_seed/etc/templates/.git_keep +0 -0
  25. data/etc/meta_templates/plugin_seed/lib/{entity}.rb.erb +34 -0
  26. data/etc/meta_templates/plugin_seed/lib/{entity}/entity_definitions/{entity}_entity.rb.erb +11 -0
  27. data/etc/meta_templates/plugin_seed/lib/{entity}/plugin_helper.rb.erb +17 -0
  28. data/etc/meta_templates/plugin_seed/lib/{entity}/version.rb.erb +3 -0
  29. data/etc/meta_templates/plugin_seed/lib/{entity}/{entity}_processor.rb.erb +19 -0
  30. data/etc/meta_templates/plugin_seed/psplugin_{entity}.gemspec +36 -0
  31. data/etc/power_stencil.yaml +92 -0
  32. data/etc/templates/plugin_definition/.gitignore +11 -0
  33. data/etc/templates/plugin_definition/.rspec +3 -0
  34. data/etc/templates/plugin_definition/.travis.yml +5 -0
  35. data/etc/templates/plugin_definition/CODE_OF_CONDUCT.md +74 -0
  36. data/etc/templates/plugin_definition/Gemfile +6 -0
  37. data/etc/templates/plugin_definition/LICENSE.txt +21 -0
  38. data/etc/templates/plugin_definition/README.md +43 -0
  39. data/etc/templates/plugin_definition/Rakefile +6 -0
  40. data/etc/templates/plugin_definition/bin/console +14 -0
  41. data/etc/templates/plugin_definition/bin/setup +8 -0
  42. data/etc/templates/plugin_definition/etc/command_line.yaml +12 -0
  43. data/etc/templates/plugin_definition/etc/plugin_config.yaml +4 -0
  44. data/etc/templates/plugin_definition/etc/templates/.git_keep +1 -0
  45. data/etc/templates/plugin_definition/lib/{entity}.rb.erb +34 -0
  46. data/etc/templates/plugin_definition/lib/{entity}/entity_definitions/{entity}_entity.rb.erb +11 -0
  47. data/etc/templates/plugin_definition/lib/{entity}/plugin_helper.rb.erb +17 -0
  48. data/etc/templates/plugin_definition/lib/{entity}/version.rb.erb +3 -0
  49. data/etc/templates/plugin_definition/lib/{entity}/{entity}_processor.rb.erb +19 -0
  50. data/etc/templates/plugin_definition/psplugin_{entity}.gemspec +36 -0
  51. data/etc/templates/plugin_definition/spec/spec_helper.rb +14 -0
  52. data/etc/templates/plugin_definition/spec/{entity}_spec.rb +9 -0
  53. data/etc/templates/project/.copy_ignore +2 -0
  54. data/etc/templates/project/.gitignore.erb +6 -0
  55. data/etc/templates/project/.ps_project/entities/.gitkeep +0 -0
  56. data/etc/templates/project/.ps_project/entities/README.md +11 -0
  57. data/etc/templates/project/.ps_project/entity_definitions/.gitkeep +0 -0
  58. data/etc/templates/project/.ps_project/entity_definitions/README.md +15 -0
  59. data/etc/templates/project/.ps_project/personal-config.yaml +8 -0
  60. data/etc/templates/project/.ps_project/plugins/.gitkeep +0 -0
  61. data/etc/templates/project/.ps_project/templates-templates/.gitkeep +0 -0
  62. data/etc/templates/project/.ps_project/templates-templates/README.md +13 -0
  63. data/etc/templates/project/.ps_project/user_entities/.gitkeep +0 -0
  64. data/etc/templates/project/.ps_project/user_entities/README.md +12 -0
  65. data/etc/templates/project/.ps_project/versioned-config.yaml +6 -0
  66. data/etc/templates/simple_exec/main.sh +4 -0
  67. data/exe/power_stencil +28 -0
  68. data/lib/power_stencil.rb +53 -0
  69. data/lib/power_stencil/command_processors/build.rb +43 -0
  70. data/lib/power_stencil/command_processors/check.rb +35 -0
  71. data/lib/power_stencil/command_processors/create.rb +70 -0
  72. data/lib/power_stencil/command_processors/delete.rb +38 -0
  73. data/lib/power_stencil/command_processors/edit.rb +35 -0
  74. data/lib/power_stencil/command_processors/entity_helper.rb +105 -0
  75. data/lib/power_stencil/command_processors/get.rb +22 -0
  76. data/lib/power_stencil/command_processors/info.rb +41 -0
  77. data/lib/power_stencil/command_processors/init.rb +47 -0
  78. data/lib/power_stencil/command_processors/new_plugin.rb +31 -0
  79. data/lib/power_stencil/command_processors/root.rb +27 -0
  80. data/lib/power_stencil/command_processors/shell.rb +37 -0
  81. data/lib/power_stencil/command_processors/trace_helper.rb +20 -0
  82. data/lib/power_stencil/dsl/base.rb +24 -0
  83. data/lib/power_stencil/dsl/entities.rb +46 -0
  84. data/lib/power_stencil/dsl/plugin_generation.rb +17 -0
  85. data/lib/power_stencil/engine/base.rb +50 -0
  86. data/lib/power_stencil/engine/build_handling.rb +77 -0
  87. data/lib/power_stencil/engine/directory_processor.rb +111 -0
  88. data/lib/power_stencil/engine/entities_definitions.rb +42 -0
  89. data/lib/power_stencil/engine/entities_handling.rb +76 -0
  90. data/lib/power_stencil/engine/entity_engine.rb +20 -0
  91. data/lib/power_stencil/engine/init_engine.rb +18 -0
  92. data/lib/power_stencil/engine/project_engine.rb +75 -0
  93. data/lib/power_stencil/engine/renderers/erb.rb +21 -0
  94. data/lib/power_stencil/error.rb +20 -0
  95. data/lib/power_stencil/initializer.rb +87 -0
  96. data/lib/power_stencil/plugins/base.rb +54 -0
  97. data/lib/power_stencil/plugins/capabilities.rb +30 -0
  98. data/lib/power_stencil/plugins/command_line.rb +27 -0
  99. data/lib/power_stencil/plugins/config.rb +32 -0
  100. data/lib/power_stencil/plugins/dependencies.rb +32 -0
  101. data/lib/power_stencil/plugins/gem.rb +57 -0
  102. data/lib/power_stencil/plugins/require.rb +77 -0
  103. data/lib/power_stencil/plugins/templates.rb +21 -0
  104. data/lib/power_stencil/project/base.rb +79 -0
  105. data/lib/power_stencil/project/config.rb +54 -0
  106. data/lib/power_stencil/project/create.rb +30 -0
  107. data/lib/power_stencil/project/info.rb +72 -0
  108. data/lib/power_stencil/project/paths.rb +119 -0
  109. data/lib/power_stencil/project/plugins.rb +89 -0
  110. data/lib/power_stencil/project/proxy.rb +13 -0
  111. data/lib/power_stencil/project/templates.rb +56 -0
  112. data/lib/power_stencil/project/versioning.rb +29 -0
  113. data/lib/power_stencil/system_entity_definitions/all.rb +14 -0
  114. data/lib/power_stencil/system_entity_definitions/buildable.rb +23 -0
  115. data/lib/power_stencil/system_entity_definitions/entity_override.rb +8 -0
  116. data/lib/power_stencil/system_entity_definitions/entity_project_common.rb +33 -0
  117. data/lib/power_stencil/system_entity_definitions/has_associated_files.rb +13 -0
  118. data/lib/power_stencil/system_entity_definitions/non_persistent.rb +14 -0
  119. data/lib/power_stencil/system_entity_definitions/plugin.rb +17 -0
  120. data/lib/power_stencil/system_entity_definitions/process_descriptor.rb +15 -0
  121. data/lib/power_stencil/system_entity_definitions/project_config.rb +24 -0
  122. data/lib/power_stencil/system_entity_definitions/project_entity.rb +16 -0
  123. data/lib/power_stencil/system_entity_definitions/simple_exec.rb +47 -0
  124. data/lib/power_stencil/utils/directory_processor.rb +54 -0
  125. data/lib/power_stencil/utils/file_edit.rb +87 -0
  126. data/lib/power_stencil/utils/file_helper.rb +56 -0
  127. data/lib/power_stencil/utils/gem_utils.rb +13 -0
  128. data/lib/power_stencil/utils/secure_require.rb +26 -0
  129. data/lib/power_stencil/utils/semantic_version.rb +128 -0
  130. data/lib/power_stencil/version.rb +3 -0
  131. data/power_stencil.gemspec +32 -0
  132. metadata +287 -0
@@ -0,0 +1,22 @@
1
+ module PowerStencil
2
+ module CommandProcessors
3
+
4
+ class Get
5
+
6
+ include Climatic::Script::UnimplementedProcessor
7
+ include Climatic::Proxy
8
+ include PowerStencil::Project::Proxy
9
+ include PowerStencil::CommandProcessors::EntityHelper
10
+
11
+ def execute
12
+ targets = targets_from_criteria analyse_extra_params, project.engine.root_universe
13
+ targets.each do |target|
14
+ display_entity target
15
+ puts
16
+ end
17
+ end
18
+
19
+ end
20
+
21
+ end
22
+ end
@@ -0,0 +1,41 @@
1
+ module PowerStencil
2
+ module CommandProcessors
3
+
4
+ class Info
5
+
6
+ include Climatic::Script::UnimplementedProcessor
7
+ include Climatic::Proxy
8
+ include PowerStencil::Project::Proxy
9
+
10
+ def execute
11
+ puts '-' * 80
12
+ puts 'PROJECT REPORT'
13
+ puts '-' * 80
14
+ puts ' General information:'
15
+ puts(project.general_report.map { |p| ' - %s' % [p] })
16
+ puts '-' * 80
17
+ puts ' Paths:'
18
+ puts(project.paths_report.map { |p| ' - %s' % [p] })
19
+ unless project.plugins.empty?
20
+ puts '-' * 80
21
+ puts ' Plugins:'
22
+ project.plugins.each do |plugin_name, plugin|
23
+ if plugin.has_dependencies?
24
+ puts " --> Plugin '#{plugin_name}' depends on plugin#{plugin.declared_dependencies.size > 1 ? 's' : ''}: '#{plugin.declared_dependencies.join ', '}'"
25
+ end
26
+ puts " --> Plugin '#{plugin_name}' has following capabilities:"
27
+ puts(project.plugin_report(plugin_name, plugin).map { |p| ' - %s' % [p] })
28
+ end
29
+ end
30
+ puts '-' * 80
31
+ puts ' Entities:'
32
+ puts(project.entities_report.map { |p| ' - %s' % [p] })
33
+ puts '-' * 80
34
+ puts ' Available entity types:'
35
+ puts(project.entity_types_report.map { |p| ' - %s' % [p] })
36
+ end
37
+
38
+ end
39
+
40
+ end
41
+ end
@@ -0,0 +1,47 @@
1
+ require 'power_stencil/engine/init_engine'
2
+
3
+ module PowerStencil
4
+ module CommandProcessors
5
+
6
+ class Init
7
+
8
+ include Climatic::Proxy
9
+ include PowerStencil::CommandProcessors::TraceHelper
10
+
11
+ def check_params(params)
12
+ true
13
+ end
14
+
15
+ def execute
16
+ setup_project_path
17
+ log_startup_context
18
+ puts_and_logs "Creating new project structure in '#{config[:'project-path']}'"
19
+ PowerStencil::Project::Base.create_project_tree config[:'project-path']
20
+ puts_and_logs 'Done.'
21
+ end
22
+
23
+ private
24
+
25
+ def setup_project_path
26
+ if config[:'project-path']
27
+ unless config.command_line_layer.extra_parameters.empty?
28
+ raise PowerStencil::Error, 'You can specify the project path only once !'
29
+ end
30
+ else
31
+ if config.command_line_layer.extra_parameters.size > 1
32
+ raise PowerStencil::Error, 'You can specify the project path only once !'
33
+ end
34
+ end
35
+ config[:'project-path'] = if config[:'project-path']
36
+ File.expand_path config[:'project-path']
37
+ elsif config.command_line_layer.extra_parameters.size == 1
38
+ File.expand_path config.command_line_layer.extra_parameters.first
39
+ else
40
+ File.expand_path Dir.pwd
41
+ end
42
+ end
43
+
44
+ end
45
+
46
+ end
47
+ end
@@ -0,0 +1,31 @@
1
+ module PowerStencil
2
+ module CommandProcessors
3
+
4
+ class NewPlugin
5
+
6
+ include Climatic::Script::UnimplementedProcessor
7
+ include Climatic::Proxy
8
+ include PowerStencil::Project::Proxy
9
+
10
+ def execute
11
+ if config.command_line_layer.extra_parameters.empty?
12
+ raise PowerStencil::Error, 'Please specify a plugin name!'
13
+ end
14
+ config.command_line_layer.extra_parameters.each do |plugin_name|
15
+ begin
16
+ target_path = File.join project.project_plugin_path(plugin_name)
17
+ project.create_plugin_tree plugin_name, target_path
18
+ puts "Generated new plugin '#{plugin_name}'"
19
+ rescue => e
20
+ msg = "Could not create plugin '#{plugin_name}' because '#{e.message}'"
21
+ puts msg
22
+ logger.error "Could not create plugin '#{plugin_name}' because '#{e.message}'"
23
+ logger.debug PowerStencil::Error.report_error(e)
24
+ end
25
+ end
26
+ end
27
+
28
+ end
29
+
30
+ end
31
+ end
@@ -0,0 +1,27 @@
1
+ module PowerStencil
2
+ module CommandProcessors
3
+
4
+ class Root
5
+
6
+ include Climatic::Script::UnimplementedProcessor
7
+ include Climatic::Proxy
8
+
9
+ def execute
10
+ if config[:version]
11
+ if config[:verbose]
12
+ puts "PowerStencil framework v: #{PowerStencil::VERSION}"
13
+ else
14
+ puts PowerStencil::VERSION
15
+ end
16
+ return
17
+ end
18
+ unless config.command_line_layer.extra_parameters.empty?
19
+ raise PowerStencil::Error, "Invalid command '#{config.command_line_layer.extra_parameters.first}'"
20
+ end
21
+ puts_and_logs 'No action specified. Exiting...'
22
+ end
23
+
24
+ end
25
+
26
+ end
27
+ end
@@ -0,0 +1,37 @@
1
+
2
+ module PowerStencil
3
+ module CommandProcessors
4
+
5
+ class Shell
6
+
7
+ include Climatic::Script::UnimplementedProcessor
8
+ include Climatic::Proxy
9
+ include PowerStencil::Project::Proxy
10
+
11
+ def execute
12
+
13
+ working_universe = if config[:compiled]
14
+ project.engine.root_universe.compile scenario: config[:scenario]
15
+ else
16
+ project.engine.root_universe
17
+
18
+ end
19
+
20
+ context = project.engine.running_context working_universe
21
+
22
+ require 'pry'
23
+
24
+ Pry.hooks.add_hook(:before_session, "startup_message") do
25
+ puts config[:shell_dsl][:session_greetings]
26
+ end
27
+
28
+ Pry.start context,
29
+ prompt: [proc { config[:shell_dsl][:prompt_level_1] }, proc { config[:shell_dsl][:prompt_level_2] }],
30
+ quiet: true
31
+
32
+ end
33
+
34
+ end
35
+
36
+ end
37
+ end
@@ -0,0 +1,20 @@
1
+ module PowerStencil
2
+ module CommandProcessors
3
+
4
+ module TraceHelper
5
+
6
+ def log_startup_context
7
+ logger.debug 'Command line manager cmd_line_args: %s' % [command_line_manager.cmd_line_args.inspect]
8
+ logger.debug 'Selected command name: %s' % [command_line_manager.command.name]
9
+ logger.debug 'Selected command cmd_line_args: %s' % [command_line_manager.command.cmd_line_args.inspect]
10
+ logger.debug 'Selected command params_hash: %s' % [command_line_manager.command.params_hash.inspect]
11
+ logger.debug 'Selected processor: %s' % [command_line_manager.processor.inspect]
12
+ logger.debug 'Config is: %s' % [config[].inspect]
13
+ logger.debug 'Logger is: %s' % [logger.inspect]
14
+ end
15
+
16
+ end
17
+
18
+ end
19
+ end
20
+
@@ -0,0 +1,24 @@
1
+ require 'power_stencil/dsl/entities'
2
+
3
+ module PowerStencil
4
+ module Dsl
5
+
6
+ class Base
7
+
8
+ include PowerStencil::Project::Proxy
9
+ include PowerStencil::Dsl::Entities
10
+
11
+ attr_accessor :main_entry_point
12
+
13
+ def initialize(universe)
14
+ @universe = universe
15
+ end
16
+
17
+ def project_config
18
+ project.config
19
+ end
20
+
21
+ end
22
+
23
+ end
24
+ end
@@ -0,0 +1,46 @@
1
+ module PowerStencil
2
+ module Dsl
3
+
4
+ module Entities
5
+
6
+ def available_entity_types(force_rescan: false)
7
+ PowerStencil.project.engine.available_entity_types force_rescan: force_rescan
8
+ end
9
+
10
+ def build_target
11
+ type, name = main_entry_point.split('/')
12
+ e = entity type, name
13
+ e.nil? ? entity(type.to_sym, name) : e
14
+ end
15
+
16
+ def entity(type, name)
17
+ PowerStencil.project.engine.entity type, name, @universe
18
+ end
19
+
20
+ def entities(criterion: nil, value: nil, &filter_block)
21
+ PowerStencil.project.engine.entities @universe, criterion: criterion, value: value, &filter_block
22
+ end
23
+
24
+ def delete_entity(entity, delete_files: false)
25
+ PowerStencil.project.engine.delete_entity @universe, entity.type, entity.name, delete_files: delete_files
26
+ end
27
+
28
+ def method_missing(method_name, *arguments, &block)
29
+ if method_name.to_s =~ /^user_new_(.*)/
30
+ PowerStencil.project.engine.new_entity @universe, $1, fields: Hash[*arguments], user: true, &block
31
+ elsif method_name.to_s =~ /^new_(.*)$/
32
+ PowerStencil.project.engine.new_entity @universe, $1, fields: Hash[*arguments], &block
33
+ else
34
+ PowerStencil.logger.warn "Invalid DSL method: '#{method_name}'"
35
+ super
36
+ end
37
+ end
38
+
39
+ def respond_to_missing?(method_name, include_private = false)
40
+ method_name.to_s.start_with?('new_') || super
41
+ end
42
+
43
+ end
44
+
45
+ end
46
+ end
@@ -0,0 +1,17 @@
1
+ module PowerStencil
2
+ module Dsl
3
+
4
+ class PluginGeneration < PowerStencil::Dsl::Base
5
+
6
+ def plugin_name
7
+ main_entry_point.underscore
8
+ end
9
+
10
+ def plugin_module_name
11
+ plugin_name.camelize
12
+ end
13
+
14
+ end
15
+
16
+ end
17
+ end
@@ -0,0 +1,50 @@
1
+ require 'power_stencil/engine/entities_definitions'
2
+ require 'power_stencil/engine/directory_processor'
3
+
4
+ require 'power_stencil/engine/renderers/erb'
5
+ require 'power_stencil/dsl/base'
6
+ require 'power_stencil/dsl/plugin_generation'
7
+
8
+ module PowerStencil
9
+ module Engine
10
+
11
+ class Base
12
+
13
+ UNIVERSE_BASENAME = 'Project entities'.freeze
14
+
15
+ include Climatic::Proxy
16
+ include PowerStencil::Engine::EntitiesDefinition
17
+ include PowerStencil::Engine::DirectoryProcessor
18
+
19
+ include PowerStencil::Engine::Renderers::Erb
20
+
21
+ attr_accessor :dsl
22
+ attr_reader :root_universe
23
+
24
+ def initialize(universe = UniverseCompiler::Universe::Base.new(unique_name))
25
+ @root_universe = universe
26
+ @dsl = PowerStencil::Dsl::Base
27
+ end
28
+
29
+ def running_context(universe = root_universe, main_entry_point: nil)
30
+ context = dsl.new universe
31
+ context.main_entry_point = main_entry_point
32
+ context.instance_eval do
33
+ binding
34
+ end
35
+ end
36
+
37
+ protected
38
+
39
+ def load_system_entities
40
+ root_universe << PowerStencil::SystemEntityDefinitions::ProjectConfig.new(fields: PowerStencil.config[])
41
+ end
42
+
43
+ def unique_name
44
+ '%s (%f)' % [UNIVERSE_BASENAME, Time.now.to_f]
45
+ end
46
+
47
+ end
48
+
49
+ end
50
+ end
@@ -0,0 +1,77 @@
1
+ module PowerStencil
2
+ module Engine
3
+
4
+ module BuildHandling
5
+
6
+ include Climatic::Utils::SafeExec
7
+
8
+ attr_reader :last_build_report
9
+
10
+ def build(entities_to_build, fail_on_error: false, parallelized: false)
11
+ logger.debug 'Starting build process...'
12
+ raise PowerStencil::Error, 'Parallel builds are not yet supported !' if parallelized
13
+
14
+ build_target_seed = entities_to_build.map(&:as_path).map do |entity_full_name|
15
+ entity_full_name.tr '/', '_'
16
+ end .join '_'
17
+ build_target_path = project.build_run_path build_target_seed
18
+
19
+ @last_build_report = {}
20
+
21
+ entities_to_build.each do |entity_to_build|
22
+ begin
23
+ entity_build_report = []
24
+ unless entity_to_build.buildable?
25
+ msg = "Entity '#{entity_to_build.as_path}' is not buildable !"
26
+ entity_build_report << msg
27
+ raise PowerStencil::Error, msg
28
+ end
29
+ build_entity_target_path = File.join build_target_path, entity_to_build.as_path.tr('/', '_')
30
+ puts_and_logs "De-templating files for '#{entity_to_build.as_path}' into '#{build_entity_target_path}'"
31
+ build_entity entity_to_build, build_entity_target_path
32
+ entity_build_report << 'Ok'
33
+ rescue => e
34
+ logger.error "Failed building '#{entity_to_build.as_path}' because '#{e.message}' !"
35
+ entity_build_report << e.message
36
+ if fail_on_error
37
+ raise e
38
+ else
39
+ logger.debug PowerStencil::Error.report_error e
40
+ end
41
+ ensure
42
+ last_build_report[entity_to_build.as_path] = entity_build_report
43
+ end
44
+ end
45
+ end
46
+
47
+ private
48
+
49
+ def build_entity(entity_to_build, target_path)
50
+ logger.info "Building #{entity_to_build.as_path} in '#{target_path}'"
51
+ render_source entity_to_build.templates_path, target_path, main_entry_point: entity_to_build.as_path
52
+ logger.info "Detemplatized filed generated in '#{target_path}'"
53
+ target_plugin_name = entity_to_build.buildable_by
54
+ if target_plugin_name.empty?
55
+ post_build_hook entity_to_build, target_path
56
+ else
57
+ target_plugin = project.plugins[target_plugin_name]
58
+ raise PowerStencil::Error, "Could not find plugin '#{target_plugin_name}' !" if target_plugin.nil?
59
+ raise PowerStencil::Error, "Plugin '#{target_plugin_name}' has no build capability !" unless target_plugin.capabilities[:build]
60
+ target_plugin.plugin_module.send PowerStencil::Plugins::Require::POST_BUILD_HOOK, entity_to_build, target_path
61
+ end
62
+ end
63
+
64
+ def post_build_hook(entity_to_build, files_path)
65
+ case entity_to_build.type
66
+ when :simple_exec
67
+ script_to_execute = File.expand_path File.join(files_path, entity_to_build.post_process.process)
68
+ exec_options = {message: "Running '#{script_to_execute}'"}
69
+ exec_options[:show_output] = true if config[:verbose]
70
+ safely_exec_command script_to_execute, exec_options
71
+ end
72
+ end
73
+
74
+ end
75
+
76
+ end
77
+ end