125 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			125 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| require 'constants'
 | |
| 
 | |
| class ConfiguratorPlugins
 | |
| 
 | |
|   constructor :stream_wrapper, :file_wrapper, :system_wrapper
 | |
|   attr_reader :rake_plugins, :script_plugins
 | |
| 
 | |
|   def setup
 | |
|     @rake_plugins   = []
 | |
|     @script_plugins = []
 | |
|   end
 | |
| 
 | |
|   
 | |
|   def add_load_paths(config)
 | |
|     plugin_paths = {}
 | |
|     
 | |
|     config[:plugins][:load_paths].each do |root|
 | |
|       @system_wrapper.add_load_path( root ) if ( not @file_wrapper.directory_listing( File.join( root, '*.rb' ) ).empty? )
 | |
|     
 | |
|       config[:plugins][:enabled].each do |plugin|
 | |
|         path = File.join(root, plugin, "lib")
 | |
|         old_path = File.join( root, plugin )
 | |
| 
 | |
|         if ( not @file_wrapper.directory_listing( File.join( path, '*.rb' ) ).empty? )
 | |
|           plugin_paths[(plugin + '_path').to_sym] = path
 | |
|           @system_wrapper.add_load_path( path )
 | |
|         elsif ( not @file_wrapper.directory_listing( File.join( old_path, '*.rb' ) ).empty? )
 | |
|           plugin_paths[(plugin + '_path').to_sym] = old_path
 | |
|           @system_wrapper.add_load_path( old_path )
 | |
|         end
 | |
|       end
 | |
|     end
 | |
|     
 | |
|     return plugin_paths
 | |
|   end
 | |
|   
 | |
|   
 | |
|   # gather up and return .rake filepaths that exist on-disk
 | |
|   def find_rake_plugins(config)
 | |
|     plugins_with_path = []
 | |
|     
 | |
|     config[:plugins][:load_paths].each do |root|
 | |
|       config[:plugins][:enabled].each do |plugin|
 | |
|         rake_plugin_path = File.join(root, plugin, "#{plugin}.rake")
 | |
|         if (@file_wrapper.exist?(rake_plugin_path))
 | |
|           plugins_with_path << rake_plugin_path
 | |
|           @rake_plugins << plugin
 | |
|         end
 | |
|       end
 | |
|     end
 | |
|     
 | |
|     return plugins_with_path
 | |
|   end
 | |
| 
 | |
| 
 | |
|   # gather up and return just names of .rb classes that exist on-disk
 | |
|   def find_script_plugins(config)
 | |
|     config[:plugins][:load_paths].each do |root|
 | |
|       config[:plugins][:enabled].each do |plugin|
 | |
|         script_plugin_path = File.join(root, plugin, "lib", "#{plugin}.rb")
 | |
| 
 | |
|         # Add the old path here to support legacy style. Eventaully remove.
 | |
|         old_script_plugin_path = File.join(root, plugin, "#{plugin}.rb")
 | |
| 
 | |
|         if @file_wrapper.exist?(script_plugin_path) or @file_wrapper.exist?(old_script_plugin_path)
 | |
|           @script_plugins << plugin 
 | |
|         end
 | |
| 
 | |
|         # Print depreciation warning.
 | |
|         if @file_wrapper.exist?(old_script_plugin_path)
 | |
|           $stderr.puts "WARNING: Depreciated plugin style used in #{plugin}. Use new directory structure!"
 | |
|         end
 | |
|       end
 | |
|     end
 | |
|     
 | |
|     return @script_plugins 
 | |
|   end
 | |
|   
 | |
|   
 | |
|   # gather up and return configuration .yml filepaths that exist on-disk
 | |
|   def find_config_plugins(config)
 | |
|     plugins_with_path = []
 | |
|     
 | |
|     config[:plugins][:load_paths].each do |root|
 | |
|       config[:plugins][:enabled].each do |plugin|
 | |
|         config_plugin_path = File.join(root, plugin, "config", "#{plugin}.yml")
 | |
| 
 | |
|         # Add the old path here to support legacy style. Eventaully remove.
 | |
|         old_config_plugin_path = File.join(root, plugin, "#{plugin}.yml")
 | |
| 
 | |
|         if @file_wrapper.exist?(config_plugin_path)
 | |
|           plugins_with_path << config_plugin_path
 | |
|         elsif @file_wrapper.exist?(old_config_plugin_path)
 | |
|           # there's a warning printed for this in find_script_plugins
 | |
|           plugins_with_path << old_config_plugin_path
 | |
|         end
 | |
|       end
 | |
|     end
 | |
|     
 | |
|     return plugins_with_path    
 | |
|   end
 | |
| 
 | |
|   
 | |
|   # gather up and return default .yml filepaths that exist on-disk
 | |
|   def find_plugin_defaults(config)
 | |
|     defaults_with_path = []
 | |
|     
 | |
|     config[:plugins][:load_paths].each do |root|
 | |
|       config[:plugins][:enabled].each do |plugin|
 | |
|         default_path = File.join(root, plugin, 'config', 'defaults.yml')
 | |
|         old_default_path = File.join(root, plugin, 'defaults.yml')
 | |
| 
 | |
|         if @file_wrapper.exist?(default_path)
 | |
|           defaults_with_path << default_path
 | |
|         elsif @file_wrapper.exist?(old_default_path)
 | |
|           defaults_with_path << old_default_path
 | |
|         end
 | |
|       end
 | |
|     end
 | |
| 
 | |
|     return defaults_with_path    
 | |
|   end
 | |
|   
 | |
| end
 | 
