puppet_generator 0.5.4

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 (150) hide show
  1. data/.gitignore +17 -0
  2. data/.rdebugrc +7 -0
  3. data/.rspec +2 -0
  4. data/.simplecov +8 -0
  5. data/.travis.yml +6 -0
  6. data/.yardopts +5 -0
  7. data/CONTRIBUTING.md +8 -0
  8. data/Gemfile +34 -0
  9. data/LICENSE.md +22 -0
  10. data/README.DEVELOPER.md +11 -0
  11. data/README.md +477 -0
  12. data/Rakefile +3 -0
  13. data/TODO.md +2 -0
  14. data/bin/ppgen +16 -0
  15. data/cucumber.yml +2 -0
  16. data/features/generate_file_definition.feature +357 -0
  17. data/features/generate_module_directories.feature +36 -0
  18. data/features/generate_package_definition.feature +206 -0
  19. data/features/generate_role_definitions.feature +64 -0
  20. data/features/generate_user_definition.feature +193 -0
  21. data/features/list.feature +22 -0
  22. data/features/log_actions.feature +93 -0
  23. data/features/step_definitions.rb +3 -0
  24. data/features/support/env.rb +7 -0
  25. data/features/tasks.feature +25 -0
  26. data/gemfiles/Gemfile.default +34 -0
  27. data/gemfiles/Gemfile.travis +17 -0
  28. data/lib/puppet_generator/actions/copy_files_to_module_directory.rb +23 -0
  29. data/lib/puppet_generator/actions/null.rb +9 -0
  30. data/lib/puppet_generator/api.rb +108 -0
  31. data/lib/puppet_generator/definition.rb +10 -0
  32. data/lib/puppet_generator/entry_converters/file.rb +9 -0
  33. data/lib/puppet_generator/entry_converters/package.rb +9 -0
  34. data/lib/puppet_generator/entry_converters/role.rb +9 -0
  35. data/lib/puppet_generator/entry_converters/user.rb +9 -0
  36. data/lib/puppet_generator/exceptions.rb +104 -0
  37. data/lib/puppet_generator/export_filters/build_role_includes_for_directory.rb +35 -0
  38. data/lib/puppet_generator/export_filters/filesystem_attributes.rb +57 -0
  39. data/lib/puppet_generator/export_filters/null.rb +9 -0
  40. data/lib/puppet_generator/exporters/directory.rb +23 -0
  41. data/lib/puppet_generator/exporters/file.rb +17 -0
  42. data/lib/puppet_generator/exporters/stdout.rb +16 -0
  43. data/lib/puppet_generator/import_filters/null.rb +9 -0
  44. data/lib/puppet_generator/import_filters/passwd.rb +22 -0
  45. data/lib/puppet_generator/import_filters/yaml.rb +20 -0
  46. data/lib/puppet_generator/importers/directory.rb +21 -0
  47. data/lib/puppet_generator/importers/file.rb +17 -0
  48. data/lib/puppet_generator/importers/stdin.rb +16 -0
  49. data/lib/puppet_generator/logger.rb +62 -0
  50. data/lib/puppet_generator/main.rb +36 -0
  51. data/lib/puppet_generator/middleware/apply_export_filters.rb +33 -0
  52. data/lib/puppet_generator/middleware/check_for_empty_source.rb +16 -0
  53. data/lib/puppet_generator/middleware/configure_logging.rb +30 -0
  54. data/lib/puppet_generator/middleware/create_module_directories.rb +42 -0
  55. data/lib/puppet_generator/middleware/create_output.rb +46 -0
  56. data/lib/puppet_generator/middleware/create_puppet_object_from_entry.rb +24 -0
  57. data/lib/puppet_generator/middleware/enable_debugging_libraries.rb +15 -0
  58. data/lib/puppet_generator/middleware/execute_actions.rb +34 -0
  59. data/lib/puppet_generator/middleware/filter_imported_data.rb +22 -0
  60. data/lib/puppet_generator/middleware/handle_errors.rb +62 -0
  61. data/lib/puppet_generator/middleware/output_debug_information_for_models.rb +21 -0
  62. data/lib/puppet_generator/middleware/read_input.rb +27 -0
  63. data/lib/puppet_generator/models/action.rb +36 -0
  64. data/lib/puppet_generator/models/base.rb +115 -0
  65. data/lib/puppet_generator/models/class_based_model.rb +56 -0
  66. data/lib/puppet_generator/models/entry_converter.rb +39 -0
  67. data/lib/puppet_generator/models/error_message.rb +60 -0
  68. data/lib/puppet_generator/models/export_filter.rb +44 -0
  69. data/lib/puppet_generator/models/exporter.rb +51 -0
  70. data/lib/puppet_generator/models/filesystem_based_model.rb +63 -0
  71. data/lib/puppet_generator/models/import_filter.rb +44 -0
  72. data/lib/puppet_generator/models/importer.rb +52 -0
  73. data/lib/puppet_generator/models/logger.rb +11 -0
  74. data/lib/puppet_generator/models/template.rb +120 -0
  75. data/lib/puppet_generator/puppet_helper.rb +19 -0
  76. data/lib/puppet_generator/puppet_objects/file.rb +29 -0
  77. data/lib/puppet_generator/puppet_objects/package.rb +24 -0
  78. data/lib/puppet_generator/puppet_objects/role.rb +27 -0
  79. data/lib/puppet_generator/puppet_objects/user.rb +27 -0
  80. data/lib/puppet_generator/setup/bare.rb +25 -0
  81. data/lib/puppet_generator/setup/default_actions.rb +9 -0
  82. data/lib/puppet_generator/setup/default_entry_converter.rb +8 -0
  83. data/lib/puppet_generator/setup/default_error_messages.rb +10 -0
  84. data/lib/puppet_generator/setup/default_export_filter.rb +9 -0
  85. data/lib/puppet_generator/setup/default_exporter.rb +11 -0
  86. data/lib/puppet_generator/setup/default_import_filter.rb +10 -0
  87. data/lib/puppet_generator/setup/default_importer.rb +10 -0
  88. data/lib/puppet_generator/setup/file.rb +29 -0
  89. data/lib/puppet_generator/setup/module.rb +22 -0
  90. data/lib/puppet_generator/setup/package.rb +27 -0
  91. data/lib/puppet_generator/setup/role.rb +28 -0
  92. data/lib/puppet_generator/setup/user.rb +27 -0
  93. data/lib/puppet_generator/task.rb +39 -0
  94. data/lib/puppet_generator/ui/commandline_parser_helper.rb +31 -0
  95. data/lib/puppet_generator/ui/create.rb +59 -0
  96. data/lib/puppet_generator/ui/runner.rb +23 -0
  97. data/lib/puppet_generator/ui/tasks.rb +16 -0
  98. data/lib/puppet_generator/version.rb +4 -0
  99. data/lib/puppet_generator.rb +79 -0
  100. data/puppet_generator.gemspec +35 -0
  101. data/rakefiles/default.rake +3 -0
  102. data/rakefiles/travis.rake +3 -0
  103. data/script/console +8 -0
  104. data/script/terminal +16 -0
  105. data/spec/examples/actions/missing_method.rb +7 -0
  106. data/spec/examples/apply_export_filters/file.txt +0 -0
  107. data/spec/examples/entry_converters/missing_method.rb +7 -0
  108. data/spec/examples/execute_actions/file.txt +0 -0
  109. data/spec/examples/export_filter/invalid_filter_1.rb +8 -0
  110. data/spec/examples/export_filter/invalid_filter_2.rb +7 -0
  111. data/spec/examples/export_filter/missing_method.rb +7 -0
  112. data/spec/examples/exporter/missing_method.rb +7 -0
  113. data/spec/examples/exporter/test.d/.gitkeep +0 -0
  114. data/spec/examples/exporter/test_file.txt +1 -0
  115. data/spec/examples/import_filter/forbidden_keyword.rb +0 -0
  116. data/spec/examples/import_filter/invalid_filter_1.rb +8 -0
  117. data/spec/examples/import_filter/invalid_filter_2.rb +7 -0
  118. data/spec/examples/import_filter/missing_method.rb +7 -0
  119. data/spec/examples/importer/missing_method.rb +7 -0
  120. data/spec/examples/importer/test.d/.gitkeep +0 -0
  121. data/spec/examples/importer/test_file.txt +1 -0
  122. data/spec/examples/templates/invalid_template.pp.erb +1 -0
  123. data/spec/examples/templates/missing_method.rb +7 -0
  124. data/spec/export_filters/build_role_includes_for_directory_spec.rb +39 -0
  125. data/spec/middleware/apply_export_filters_spec.rb +45 -0
  126. data/spec/middleware/execute_actions_spec.rb +44 -0
  127. data/spec/middleware/handle_errors_spec.rb +12 -0
  128. data/spec/models/action_spec.rb +37 -0
  129. data/spec/models/entry_converter_spec.rb +59 -0
  130. data/spec/models/error_message_spec.rb +78 -0
  131. data/spec/models/export_filter_spec.rb +36 -0
  132. data/spec/models/exporter_spec.rb +71 -0
  133. data/spec/models/import_filter_spec.rb +33 -0
  134. data/spec/models/importer_spec.rb +66 -0
  135. data/spec/models/template_spec.rb +47 -0
  136. data/spec/puppet_generator_spec.rb +7 -0
  137. data/spec/setup/role_spec.rb +22 -0
  138. data/spec/spec_helper.rb +10 -0
  139. data/spec/support/filesystem_helper.rb +12 -0
  140. data/spec/support/libraries.rb +10 -0
  141. data/spec/support/rspec_configuration.rb +5 -0
  142. data/templates/puppet/many_per_file/file.pp.erb +16 -0
  143. data/templates/puppet/many_per_file/package.pp.erb +10 -0
  144. data/templates/puppet/many_per_file/role.pp.erb +7 -0
  145. data/templates/puppet/many_per_file/user.pp.erb +23 -0
  146. data/templates/puppet/one_per_file/file.pp.erb +14 -0
  147. data/templates/puppet/one_per_file/package.pp.erb +8 -0
  148. data/templates/puppet/one_per_file/role.pp.erb +5 -0
  149. data/templates/puppet/one_per_file/user.pp.erb +21 -0
  150. metadata +374 -0
@@ -0,0 +1,59 @@
1
+ module PuppetGenerator
2
+ module Ui
3
+ class Create < Thor
4
+ def self.exit_on_failure?
5
+ true
6
+ end
7
+
8
+ method_option :source, Ui::CommandlineParserHelper.subcommand_options[:source]
9
+ method_option :import_filter, Ui::CommandlineParserHelper.subcommand_options[:import_filter]
10
+ method_option :destination, Ui::CommandlineParserHelper.subcommand_options[:destination]
11
+ method_option :action, Ui::CommandlineParserHelper.subcommand_options[:action]
12
+ method_option :template_tagged_with, Ui::CommandlineParserHelper.subcommand_options[:template_tagged_with]
13
+ method_option :export_filter, Ui::CommandlineParserHelper.subcommand_options[:export_filter]
14
+ desc 'package', 'generate package definitions'
15
+ def package
16
+ PuppetGenerator::Api.new.generate_package_definition(options)
17
+ end
18
+
19
+ method_option :source, Ui::CommandlineParserHelper.subcommand_options[:source]
20
+ method_option :import_filter, Ui::CommandlineParserHelper.subcommand_options[:import_filter]
21
+ method_option :destination, Ui::CommandlineParserHelper.subcommand_options[:destination]
22
+ method_option :action, Ui::CommandlineParserHelper.subcommand_options[:action]
23
+ method_option :template_tagged_with, Ui::CommandlineParserHelper.subcommand_options[:template_tagged_with]
24
+ method_option :export_filter, Ui::CommandlineParserHelper.subcommand_options[:export_filter]
25
+ desc 'file', 'generate file definitions'
26
+ def file
27
+ PuppetGenerator::Api.new.generate_file_definition(options)
28
+ end
29
+
30
+ method_option :source, Ui::CommandlineParserHelper.subcommand_options[:source]
31
+ method_option :import_filter, Ui::CommandlineParserHelper.subcommand_options[:import_filter]
32
+ method_option :destination, Ui::CommandlineParserHelper.subcommand_options[:destination]
33
+ method_option :action, Ui::CommandlineParserHelper.subcommand_options[:action]
34
+ method_option :template_tagged_with, Ui::CommandlineParserHelper.subcommand_options[:template_tagged_with]
35
+ method_option :export_filter, Ui::CommandlineParserHelper.subcommand_options[:export_filter]
36
+ desc 'user', 'generate user definitions'
37
+ def user
38
+ PuppetGenerator::Api.new.generate_user_definition(options)
39
+ end
40
+
41
+ desc 'module', 'creates all files needed to build a module'
42
+ def module
43
+ PuppetGenerator::Api.new.generate_module(options)
44
+ end
45
+
46
+ method_option :source, Ui::CommandlineParserHelper.subcommand_options[:source]
47
+ method_option :import_filter, Ui::CommandlineParserHelper.subcommand_options[:import_filter]
48
+ method_option :destination, Ui::CommandlineParserHelper.subcommand_options[:destination]
49
+ method_option :action, Ui::CommandlineParserHelper.subcommand_options[:action]
50
+ method_option :template_tagged_with, Ui::CommandlineParserHelper.subcommand_options[:template_tagged_with]
51
+ method_option :export_filter, Ui::CommandlineParserHelper.subcommand_options[:export_filter]
52
+ desc 'role', 'generate role definitions'
53
+ def role
54
+ PuppetGenerator::Api.new.generate_role_definition(options)
55
+ end
56
+
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,23 @@
1
+ module PuppetGenerator
2
+ module Ui
3
+ class Runner < Thor
4
+ def self.exit_on_failure?
5
+ true
6
+ end
7
+
8
+ class_option :module, Ui::CommandlineParserHelper.runner_options[:module]
9
+ class_option :class, Ui::CommandlineParserHelper.runner_options[:class]
10
+ class_option :debug, Ui::CommandlineParserHelper.runner_options[:debug]
11
+ class_option :silent, Ui::CommandlineParserHelper.runner_options[:silent]
12
+
13
+ desc "create <type>", "Create puppet dsl. Available types: #{Ui::CommandlineParserHelper.pretty_subcommands(Create.tasks)}"
14
+ subcommand :create, Create
15
+
16
+ # desc "list <resource>", "List instances for a given resource. Available resources are: #{Ui::CommandlineParserHelper.pretty_subcommands(List.tasks)}"
17
+ # subcommand :list, List
18
+
19
+ desc "tasks <task>", "Run command with predefined options. Available tasks: #{Ui::CommandlineParserHelper.pretty_subcommands(Tasks.tasks)}"
20
+ subcommand :tasks, Tasks
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,16 @@
1
+ module PuppetGenerator
2
+ module Ui
3
+ class Tasks < Thor
4
+ def self.exit_on_failure?
5
+ true
6
+ end
7
+
8
+ class_option :source, Ui::CommandlineParserHelper.subcommand_options[:source]
9
+ class_option :destination, Ui::CommandlineParserHelper.subcommand_options[:destination]
10
+ desc "create_roles_in_directory", "Search directory for directories and generate role puppet definition for found .pp-files"
11
+ def create_roles_in_directory
12
+ PuppetGenerator::Ui::Runner.start( %W[create role --export-filter build_role_includes_for_directory --source #{options[:source]} --destination #{options[:destination]}] )
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,4 @@
1
+ #main PuppetGenerator
2
+ module PuppetGenerator
3
+ VERSION = '0.5.4'
4
+ end
@@ -0,0 +1,79 @@
1
+ require 'erb'
2
+ require 'erubis'
3
+ require 'middleware'
4
+ require 'find'
5
+ require 'logger'
6
+ require 'pathname'
7
+ require 'ansi'
8
+ require 'etc'
9
+ require 'psych'
10
+ require 'fileutils'
11
+ #require 'hirb'
12
+ require 'forwardable'
13
+ require 'set'
14
+ #require 'active_support/core_ext/object/blank'
15
+ require 'active_support/core_ext/string/inflections'
16
+ require 'active_support/core_ext/hash/indifferent_access'
17
+ require 'fedux_org/stdlib/models'
18
+ require 'thor'
19
+
20
+ require 'puppet_generator/main'
21
+ require 'puppet_generator/version'
22
+ require 'puppet_generator/exceptions'
23
+
24
+ require 'puppet_generator/logger'
25
+ require 'puppet_generator/ui/commandline_parser_helper'
26
+ require 'puppet_generator/ui/create'
27
+ require 'puppet_generator/ui/tasks'
28
+ require 'puppet_generator/ui/runner'
29
+
30
+ require 'puppet_generator/puppet_helper'
31
+
32
+ require 'puppet_generator/models/base'
33
+ require 'puppet_generator/models/filesystem_based_model'
34
+ require 'puppet_generator/models/class_based_model'
35
+ require 'puppet_generator/models/error_message'
36
+ require 'puppet_generator/models/importer'
37
+ require 'puppet_generator/models/exporter'
38
+ require 'puppet_generator/models/export_filter'
39
+ require 'puppet_generator/models/import_filter'
40
+ require 'puppet_generator/models/action'
41
+ require 'puppet_generator/models/template'
42
+ require 'puppet_generator/models/logger'
43
+ require 'puppet_generator/models/entry_converter'
44
+
45
+ require 'puppet_generator/setup/bare'
46
+ require 'puppet_generator/setup/default_importer'
47
+ require 'puppet_generator/setup/default_error_messages'
48
+ require 'puppet_generator/setup/default_actions'
49
+ require 'puppet_generator/setup/default_import_filter'
50
+ require 'puppet_generator/setup/default_exporter'
51
+ require 'puppet_generator/setup/default_export_filter'
52
+ require 'puppet_generator/setup/file'
53
+ require 'puppet_generator/setup/package'
54
+ require 'puppet_generator/setup/user'
55
+ require 'puppet_generator/setup/module'
56
+ require 'puppet_generator/setup/role'
57
+
58
+ require 'puppet_generator/puppet_objects/package'
59
+ require 'puppet_generator/puppet_objects/file'
60
+ require 'puppet_generator/puppet_objects/user'
61
+ require 'puppet_generator/puppet_objects/role'
62
+
63
+ require 'puppet_generator/definition'
64
+ require 'puppet_generator/task'
65
+ require 'puppet_generator/middleware/handle_errors'
66
+ require 'puppet_generator/middleware/check_for_empty_source'
67
+ require 'puppet_generator/middleware/read_input'
68
+ require 'puppet_generator/middleware/create_output'
69
+ require 'puppet_generator/middleware/enable_debugging_libraries'
70
+ require 'puppet_generator/middleware/create_puppet_object_from_entry'
71
+ require 'puppet_generator/middleware/configure_logging'
72
+ require 'puppet_generator/middleware/filter_imported_data'
73
+ require 'puppet_generator/middleware/apply_export_filters'
74
+ require 'puppet_generator/middleware/create_module_directories'
75
+ require 'puppet_generator/middleware/execute_actions'
76
+ require 'puppet_generator/middleware/output_debug_information_for_models'
77
+ require 'puppet_generator/api'
78
+
79
+ module PuppetGenerator; end
@@ -0,0 +1,35 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'puppet_generator/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "puppet_generator"
8
+ spec.version = PuppetGenerator::VERSION
9
+ spec.authors = ["Max Meyer"]
10
+ spec.email = ["dev@fedux.org"]
11
+ spec.summary = %q{Generate puppet manifests}
12
+ spec.description = <<-DESC
13
+ If you need to build more than one puppet manifests it is quite boring to
14
+ redo the same steps every time. This gem helps you to generate puppet manifests
15
+ for packages, files/directories etc.
16
+ DESC
17
+ spec.homepage = "https://github.com/maxmeyer/puppet_generator"
18
+ spec.license = "MIT"
19
+
20
+ spec.files = `git ls-files`.split($/)
21
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
22
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
23
+ spec.require_paths = ["lib"]
24
+
25
+ spec.add_dependency "middleware"
26
+ spec.add_dependency "ansi"
27
+ spec.add_dependency "erubis"
28
+ #spec.add_dependency "logging4hackers"
29
+ spec.add_dependency "activesupport"
30
+ spec.add_dependency "fedux_org-stdlib"
31
+ spec.add_dependency "thor"
32
+
33
+ spec.add_development_dependency "bundler", "~> 1.3"
34
+ spec.add_development_dependency "rake"
35
+ end
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env rake
2
+
3
+ require 'fedux_org/stdlib/rake'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env rake
2
+
3
+ require 'fedux_org/stdlib/rake/tests/travis'
data/script/console ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $LOAD_PATH << File.expand_path('../lib', File.dirname(__FILE__))
4
+
5
+ require 'puppet_generator'
6
+ require 'pry'
7
+
8
+ Pry.start
data/script/terminal ADDED
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'tmrb'
4
+
5
+ tmux = TmRb::Multiplexer.new
6
+ #creates an empty window
7
+ tmux.new_session(:session_name => "puppet_generator")
8
+
9
+ tmux.new_window(:name => 'lib', :command => 'vim -c \"NERDTree lib/puppet_generator/\"')
10
+ tmux.new_window(:name => 'middleware', :command => 'vim -c \"NERDTree lib/puppet_generator/middleware\"')
11
+ tmux.new_window(:name => 'templates', :command => 'vim -c \"NERDTree lib/puppet_generator/templates/\"')
12
+ tmux.new_window(:name => 'actions', :command => 'vim -c \"NERDTree lib/puppet_generator/actions/\"')
13
+ tmux.new_window(:name => 'filter', :command => 'vim -c \"NERDTree lib/puppet_generator/filter\"')
14
+ tmux.new_window(:name => 'spec', :command => 'vim -c \"NERDTree spec\"')
15
+ tmux.new_window(:name => 'features', :command => 'vim -c \"NERDTree features\"')
16
+ tmux.start
@@ -0,0 +1,7 @@
1
+ module PuppetGenerator
2
+ module Actions
3
+ class MissingMethod
4
+ #required method is missing
5
+ end
6
+ end
7
+ end
File without changes
@@ -0,0 +1,7 @@
1
+ module PuppetGenerator
2
+ module EntryConverters
3
+ class MissingMethod
4
+ #required method is missing
5
+ end
6
+ end
7
+ end
File without changes
@@ -0,0 +1,8 @@
1
+ module PuppetGenerator
2
+ module ExportFilters
3
+ class Invalid_Filter1
4
+ #invalid name includes '_'
5
+ #and must match file name
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,7 @@
1
+ module PuppetGenerator
2
+ module ExportFilters
3
+ class InvalidFilter2
4
+ #method convert is missing
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module PuppetGenerator
2
+ module ExportFilters
3
+ class MissingMethod
4
+ #required method is missing
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module PuppetGenerator
2
+ module Exporter
3
+ class MissingMethod
4
+ #required method is missing
5
+ end
6
+ end
7
+ end
File without changes
@@ -0,0 +1 @@
1
+ asdf
File without changes
@@ -0,0 +1,8 @@
1
+ module PuppetGenerator
2
+ module ImportFilters
3
+ class Invalid_Filter1
4
+ #invalid name includes '_'
5
+ #and must match file name
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,7 @@
1
+ module PuppetGenerator
2
+ module ImportFilters
3
+ class InvalidFilter2
4
+ #method convert is missing
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module PuppetGenerator
2
+ module ImportFilters
3
+ class MissingMethod
4
+ #required method is missing
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module PuppetGenerator
2
+ module Importer
3
+ class MissingMethod
4
+ #required method is missing
5
+ end
6
+ end
7
+ end
File without changes
@@ -0,0 +1 @@
1
+ asdf
@@ -0,0 +1 @@
1
+ <%= asdf %>
@@ -0,0 +1,7 @@
1
+ module PuppetGenerator
2
+ module Templates
3
+ class MissingMethod
4
+ #required method is missing
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,39 @@
1
+ require 'spec_helper'
2
+
3
+ require 'puppet_generator/export_filters/build_role_includes_for_directory'
4
+
5
+ describe ExportFilters::BuildRoleIncludesForDirectory do
6
+
7
+ it "returns includes for directory" do
8
+ create_directory 'test'
9
+ create_file 'test/file1.pp'
10
+ create_file 'test/file2.pp'
11
+ create_file 'test/file3.pp'
12
+
13
+ create_directory 'test/dir1'
14
+ create_file 'test/dir1/file1.pp'
15
+ create_file 'test/dir1/file2.pp'
16
+ create_file 'test/dir1/file3.pp'
17
+
18
+ objects = [
19
+ {
20
+ name: 'test',
21
+ },
22
+ {
23
+ name: 'test/dir1',
24
+ },
25
+ ]
26
+
27
+ switch_to_working_directory do
28
+ filter = ExportFilters::BuildRoleIncludesForDirectory.new
29
+ expect(filter.convert(objects)).to eq(
30
+ [
31
+ {:name=>"test", :includes=>["file1", "file2", "file3"]},
32
+ {:name=>"test/dir1", :includes=>["file1", "file2", "file3"]}
33
+ ]
34
+ )
35
+ end
36
+
37
+ end
38
+
39
+ end
@@ -0,0 +1,45 @@
1
+ require 'spec_helper'
2
+
3
+ describe PuppetGenerator::Middleware::ApplyExportFilters do
4
+
5
+ before(:all) {
6
+ Models::ExportFilter.init
7
+ }
8
+
9
+ it "run filter" do
10
+ test_file = File.join( examples_dir, 'apply_export_filters', 'file.txt' )
11
+ FileUtils.chmod(0644, test_file )
12
+
13
+ user = ENV['USER']
14
+
15
+ task = double( 'task' )
16
+ task.stub( :body ).and_return( [ { name: test_file } ])
17
+ task.stub( :meta ).and_return( { requested_export_filter: [ :filesystem_attributes ] } )
18
+ task.should_receive( :body= ).with( [ {:name => test_file, :type => "file", :owner => user, :mode => "100644"} ] )
19
+
20
+ app = double('app')
21
+ app.stub(:call)
22
+
23
+ mw = PuppetGenerator::Middleware::ApplyExportFilters.new(app)
24
+ result = mw.call(task)
25
+ end
26
+
27
+ it "run multiple filters" do
28
+ test_file = File.join( examples_dir, 'apply_export_filters', 'file.txt' )
29
+ FileUtils.chmod(0644, test_file )
30
+
31
+ user = ENV['USER']
32
+
33
+ task = double( 'task' )
34
+ task.stub( :body ).and_return( [ { name: test_file } ])
35
+ task.stub( :meta ).and_return( { requested_export_filter: [ :filesystem_attributes , :null ] } )
36
+ task.should_receive( :body= ).with( [ {:name => test_file, :type => "file", :owner => user, :mode => "100644"} ] )
37
+
38
+ app = double('app')
39
+ app.stub(:call)
40
+
41
+ mw = PuppetGenerator::Middleware::ApplyExportFilters.new(app)
42
+ result = mw.call(task)
43
+ end
44
+
45
+ end
@@ -0,0 +1,44 @@
1
+ require 'spec_helper'
2
+
3
+ describe PuppetGenerator::Middleware::ExecuteActions do
4
+
5
+ before(:all) {
6
+ Models::Action.init
7
+ }
8
+
9
+ it "run action" do
10
+ test_file = File.join( examples_dir, 'execute_actions', 'file.txt' )
11
+ user = ENV['USER']
12
+
13
+ task = double( 'task' )
14
+ task.stub( :body ).and_return( [ { name: test_file } ])
15
+ task.stub( :meta ).and_return( { requested_actions: [ :copy_files_to_module_directory ], module: 'test' } )
16
+ task.should_receive( :body= ).with( [ { :name => File.expand_path('../../examples/execute_actions/file.txt', __FILE__ ), :source => "puppet:///modules/test#{File.expand_path('../../examples/execute_actions/file.txt', __FILE__ )}" } ] )
17
+
18
+ app = double('app')
19
+ app.stub(:call)
20
+
21
+ mw = PuppetGenerator::Middleware::ExecuteActions.new(app)
22
+
23
+ switch_to_working_directory do
24
+ result = mw.call(task)
25
+ end
26
+ end
27
+
28
+ # it "run multiple filters" do
29
+ # test_file = File.join( examples_dir, 'apply_export_filters', 'file.txt' )
30
+ # user = ENV['USER']
31
+ #
32
+ # task = double( 'task' )
33
+ # task.stub( :body ).and_return( [ { name: test_file } ])
34
+ # task.stub( :meta ).and_return( { requested_export_filter: [ :filesystem_attributes , :null ] } )
35
+ # task.should_receive( :body= ).with( [ {:name => test_file, :type => "file", :owner => user, :mode => "100644"} ] )
36
+ #
37
+ # app = double('app')
38
+ # app.stub(:call)
39
+ #
40
+ # mw = PuppetGenerator::Middleware::ApplyExportFilters.new(app)
41
+ # result = mw.call(task)
42
+ # end
43
+
44
+ end
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ describe PuppetGenerator::Middleware::HandleErrors do
4
+
5
+ it "raises an exception if error message is unknown" do
6
+ mw = PuppetGenerator::Middleware::HandleErrors.new('asdf')
7
+ expect {
8
+ mw.send(:exit_with_error, :asdf)
9
+ }.to raise_error Exceptions::UnknownErrorMessage
10
+ end
11
+
12
+ end
@@ -0,0 +1,37 @@
1
+ require 'spec_helper'
2
+
3
+ describe Models::Action do
4
+ before(:each) {
5
+ Models::Action.clear
6
+ }
7
+
8
+ it "finds all available actions" do
9
+ Models::Action.init
10
+ expect(Models::Action.all.size).to eq(2)
11
+ end
12
+
13
+ it "raises an error if an action is invalid: missing method \"run\"" do
14
+ test_class = Class.new( Models::Action ) do
15
+
16
+ def self.library_name
17
+ "PuppetGenerator"
18
+ end
19
+
20
+ def self.model_name
21
+ "Action"
22
+ end
23
+
24
+ def self.path_to_instances
25
+ File.join( examples_dir, 'actions', 'missing_method.rb' )
26
+ end
27
+
28
+ def self.require_path(name)
29
+ File.join( examples_dir, 'actions', 'missing_method' )
30
+ end
31
+ end
32
+
33
+ expect {
34
+ test_class.init
35
+ }.to raise_error Exceptions::InvalidAction
36
+ end
37
+ end
@@ -0,0 +1,59 @@
1
+ describe Models::EntryConverter do
2
+ before(:each) do
3
+ Models::EntryConverter.clear
4
+ end
5
+
6
+ it "raises an error if an entry converter is invalid: missing method \"convert\"" do
7
+ test_class = Class.new( Models::EntryConverter ) do
8
+
9
+ def self.library_name
10
+ "PuppetGenerator"
11
+ end
12
+
13
+ def self.model_name
14
+ "EntryConverter"
15
+ end
16
+
17
+ def self.path_to_instances
18
+ File.join( examples_dir, 'entry_converters', 'missing_method.rb' )
19
+ end
20
+
21
+ def self.require_path(name)
22
+ File.join( examples_dir, 'entry_converters', 'missing_method' )
23
+ end
24
+ end
25
+
26
+ expect {
27
+ test_class.init
28
+ }.to raise_error Exceptions::InvalidEntryConverter
29
+ end
30
+
31
+ it "finds an entry converter for a user entry" do
32
+ Models::EntryConverter.init
33
+
34
+ result = Models::EntryConverter.find( :user )
35
+ expect(result.name).to eq(:user)
36
+ end
37
+
38
+ it "finds an entry converter for a package entry" do
39
+ Models::EntryConverter.init
40
+
41
+ result = Models::EntryConverter.find( :package )
42
+ expect(result.name).to eq(:package)
43
+ end
44
+
45
+ it "finds an entry converter for a file entry" do
46
+ Models::EntryConverter.init
47
+
48
+ result = Models::EntryConverter.find( :file )
49
+ expect(result.name).to eq(:file)
50
+ end
51
+
52
+ it "finds an entry converter for a role entry" do
53
+ Models::EntryConverter.init
54
+
55
+ result = Models::EntryConverter.find( :role )
56
+ expect(result.name).to eq(:role)
57
+ end
58
+
59
+ end