| Class | BoxGrinder::BasePlugin |
| In: |
lib/boxgrinder-build/plugins/base-plugin.rb
lib/boxgrinder-build/plugins/base-plugin.rb |
| Parent: | Object |
# File lib/boxgrinder-build/plugins/base-plugin.rb, line 31
31: def initialize
32: @plugin_config = {}
33:
34: @deliverables = OpenCascade.new
35: @supported_oses = OpenCascade.new
36: @target_deliverables = OpenCascade.new
37: @dir = OpenCascade.new
38: end
# File lib/boxgrinder-build/plugins/base-plugin.rb, line 31
31: def initialize
32: @plugin_config = {}
33:
34: @deliverables = OpenCascade.new
35: @supported_oses = OpenCascade.new
36: @target_deliverables = OpenCascade.new
37: @dir = OpenCascade.new
38: end
# File lib/boxgrinder-build/plugins/base-plugin.rb, line 100
100: def current_platform
101: platform = :raw
102:
103: if @previous_plugin_info[:type] == :platform
104: platform = @previous_plugin_info[:name]
105: end unless @previous_plugin_info.nil?
106:
107: platform.to_s
108: end
# File lib/boxgrinder-build/plugins/base-plugin.rb, line 100
100: def current_platform
101: platform = :raw
102:
103: if @previous_plugin_info[:type] == :platform
104: platform = @previous_plugin_info[:name]
105: end unless @previous_plugin_info.nil?
106:
107: platform.to_s
108: end
# File lib/boxgrinder-build/plugins/base-plugin.rb, line 164
164: def deliverables
165: @target_deliverables
166: end
# File lib/boxgrinder-build/plugins/base-plugin.rb, line 164
164: def deliverables
165: @target_deliverables
166: end
# File lib/boxgrinder-build/plugins/base-plugin.rb, line 149
149: def deliverables_exists?
150: raise "You can only check deliverables after the plugin is initialized, please initialize the plugin using init method." if @initialized.nil?
151:
152: exists = true
153:
154: @target_deliverables.each_value do |file|
155: unless File.exists?(file)
156: exists = false
157: break
158: end
159: end
160:
161: exists
162: end
# File lib/boxgrinder-build/plugins/base-plugin.rb, line 149
149: def deliverables_exists?
150: raise "You can only check deliverables after the plugin is initialized, please initialize the plugin using init method." if @initialized.nil?
151:
152: exists = true
153:
154: @target_deliverables.each_value do |file|
155: unless File.exists?(file)
156: exists = false
157: break
158: end
159: end
160:
161: exists
162: end
# File lib/boxgrinder-build/plugins/base-plugin.rb, line 118
118: def execute(args = nil)
119: raise "You can only execute the plugin after the plugin is initialized, please initialize the plugin using init method." if @initialized.nil?
120: end
# File lib/boxgrinder-build/plugins/base-plugin.rb, line 118
118: def execute(args = nil)
119: raise "You can only execute the plugin after the plugin is initialized, please initialize the plugin using init method." if @initialized.nil?
120: end
# File lib/boxgrinder-build/plugins/base-plugin.rb, line 40
40: def init(config, appliance_config, options = {})
41: @config = config
42: @appliance_config = appliance_config
43: @options = options
44: @log = options[:log] || Logger.new(STDOUT)
45: @exec_helper = options[:exec_helper] || ExecHelper.new(:log => @log)
46: @image_helper = options[:image_helper] || ImageHelper.new(@config, @appliance_config, :log => @log)
47: @previous_plugin_info = options[:previous_plugin_info]
48: @previous_deliverables = options[:previous_deliverables] || OpenCascade.new
49:
50: @plugin_info = options[:plugin_info]
51:
52: @dir.base = "#{@appliance_config.path.build}/#{@plugin_info[:name]}-plugin"
53: @dir.tmp = "#{@dir.base}/tmp"
54:
55: read_plugin_config
56: merge_plugin_config
57:
58: @move_deliverables = true
59: @initialized = true
60:
61: after_init
62:
63: self
64: end
# File lib/boxgrinder-build/plugins/base-plugin.rb, line 40
40: def init(config, appliance_config, options = {})
41: @config = config
42: @appliance_config = appliance_config
43: @options = options
44: @log = options[:log] || Logger.new(STDOUT)
45: @exec_helper = options[:exec_helper] || ExecHelper.new(:log => @log)
46: @image_helper = options[:image_helper] || ImageHelper.new(@config, @appliance_config, :log => @log)
47: @previous_plugin_info = options[:previous_plugin_info]
48: @previous_deliverables = options[:previous_deliverables] || OpenCascade.new
49:
50: @plugin_info = options[:plugin_info]
51:
52: @dir.base = "#{@appliance_config.path.build}/#{@plugin_info[:name]}-plugin"
53: @dir.tmp = "#{@dir.base}/tmp"
54:
55: read_plugin_config
56: merge_plugin_config
57:
58: @move_deliverables = true
59: @initialized = true
60:
61: after_init
62:
63: self
64: end
# File lib/boxgrinder-build/plugins/base-plugin.rb, line 83
83: def is_supported_os?
84: return true if @supported_oses.empty?
85: return false unless !@supported_oses[@appliance_config.os.name].nil? and @supported_oses[@appliance_config.os.name].include?(@appliance_config.os.version)
86: true
87: end
# File lib/boxgrinder-build/plugins/base-plugin.rb, line 83
83: def is_supported_os?
84: return true if @supported_oses.empty?
85: return false unless !@supported_oses[@appliance_config.os.name].nil? and @supported_oses[@appliance_config.os.name].include?(@appliance_config.os.version)
86: true
87: end
This merges the plugin config with configuration provided in command line
# File lib/boxgrinder-build/plugins/base-plugin.rb, line 179
179: def merge_plugin_config
180: config =
181: case @plugin_info[:type]
182: when :os
183: @config.os_config
184: when :platform
185: @config.platform_config
186: when :delivery
187: @config.delivery_config
188: end
189:
190: @plugin_config.merge!(config)
191: end
This merges the plugin config with configuration provided in command line
# File lib/boxgrinder-build/plugins/base-plugin.rb, line 179
179: def merge_plugin_config
180: config =
181: case @plugin_info[:type]
182: when :os
183: @config.os_config
184: when :platform
185: @config.platform_config
186: when :delivery
187: @config.delivery_config
188: end
189:
190: @plugin_config.merge!(config)
191: end
This reads the plugin config from file
# File lib/boxgrinder-build/plugins/base-plugin.rb, line 173
173: def read_plugin_config
174: return if @config[:plugins].nil? or @config[:plugins][@plugin_info[:name].to_s].nil?
175: @plugin_config = @config[:plugins][@plugin_info[:name].to_s]
176: end
This reads the plugin config from file
# File lib/boxgrinder-build/plugins/base-plugin.rb, line 173
173: def read_plugin_config
174: return if @config[:plugins].nil? or @config[:plugins][@plugin_info[:name].to_s].nil?
175: @plugin_config = @config[:plugins][@plugin_info[:name].to_s]
176: end
# File lib/boxgrinder-build/plugins/base-plugin.rb, line 66
66: def register_deliverable(deliverable)
67: raise "You can only register deliverables after the plugin is initialized, please initialize the plugin using init method." if @initialized.nil?
68: raise "Please specify deliverables as Hash, not #{deliverable.class}." unless deliverable.is_a?(Hash)
69:
70: deliverable.each do |name, path|
71: @deliverables[name] = "#{@dir.tmp}/#{path}"
72: @target_deliverables[name] = "#{@dir.base}/#{path}"
73: end
74: end
# File lib/boxgrinder-build/plugins/base-plugin.rb, line 66
66: def register_deliverable(deliverable)
67: raise "You can only register deliverables after the plugin is initialized, please initialize the plugin using init method." if @initialized.nil?
68: raise "Please specify deliverables as Hash, not #{deliverable.class}." unless deliverable.is_a?(Hash)
69:
70: deliverable.each do |name, path|
71: @deliverables[name] = "#{@dir.tmp}/#{path}"
72: @target_deliverables[name] = "#{@dir.base}/#{path}"
73: end
74: end
# File lib/boxgrinder-build/plugins/base-plugin.rb, line 76
76: def register_supported_os(name, versions)
77: raise "You can register supported operating system only after the plugin is initialized, please initialize the plugin using init method." if @initialized.nil?
78:
79: @supported_oses[name] = OpenCascade.new if @supported_oses[name].nil?
80: @supported_oses[name] = versions
81: end
# File lib/boxgrinder-build/plugins/base-plugin.rb, line 76
76: def register_supported_os(name, versions)
77: raise "You can register supported operating system only after the plugin is initialized, please initialize the plugin using init method." if @initialized.nil?
78:
79: @supported_oses[name] = OpenCascade.new if @supported_oses[name].nil?
80: @supported_oses[name] = versions
81: end
# File lib/boxgrinder-build/plugins/base-plugin.rb, line 122
122: def run(*args)
123: unless is_supported_os?
124: @log.error "#{@plugin_info[:full_name]} plugin supports following operating systems: #{supported_oses}. Your appliance contains #{@appliance_config.os.name} #{@appliance_config.os.version} operating system which is not supported by this plugin, sorry."
125: return
126: end
127:
128: FileUtils.rm_rf @dir.tmp
129: FileUtils.mkdir_p @dir.tmp
130:
131: execute(*args)
132:
133: # TODO execute post commands for platform plugins here?
134:
135: @deliverables.each do |name, path|
136: @log.trace "Moving '#{path}' deliverable to target destination '#{@target_deliverables[name]}'..."
137: FileUtils.mv(path, @target_deliverables[name])
138: end if @move_deliverables
139:
140: FileUtils.rm_rf @dir.tmp
141: end
# File lib/boxgrinder-build/plugins/base-plugin.rb, line 122
122: def run(*args)
123: unless is_supported_os?
124: @log.error "#{@plugin_info[:full_name]} plugin supports following operating systems: #{supported_oses}. Your appliance contains #{@appliance_config.os.name} #{@appliance_config.os.version} operating system which is not supported by this plugin, sorry."
125: return
126: end
127:
128: FileUtils.rm_rf @dir.tmp
129: FileUtils.mkdir_p @dir.tmp
130:
131: execute(*args)
132:
133: # TODO execute post commands for platform plugins here?
134:
135: @deliverables.each do |name, path|
136: @log.trace "Moving '#{path}' deliverable to target destination '#{@target_deliverables[name]}'..."
137: FileUtils.mv(path, @target_deliverables[name])
138: end if @move_deliverables
139:
140: FileUtils.rm_rf @dir.tmp
141: end
# File lib/boxgrinder-build/plugins/base-plugin.rb, line 168
168: def set_default_config_value(key, value)
169: @plugin_config[key] = @plugin_config[key].nil? ? value : @plugin_config[key]
170: end
# File lib/boxgrinder-build/plugins/base-plugin.rb, line 168
168: def set_default_config_value(key, value)
169: @plugin_config[key] = @plugin_config[key].nil? ? value : @plugin_config[key]
170: end
# File lib/boxgrinder-build/plugins/base-plugin.rb, line 89
89: def supported_oses
90: supported = ""
91:
92: @supported_oses.sort.each do |name, versions|
93: supported << ", " unless supported.empty?
94: supported << "#{name} (versions: #{versions.join(", ")})"
95: end
96:
97: supported
98: end
# File lib/boxgrinder-build/plugins/base-plugin.rb, line 89
89: def supported_oses
90: supported = ""
91:
92: @supported_oses.sort.each do |name, versions|
93: supported << ", " unless supported.empty?
94: supported << "#{name} (versions: #{versions.join(", ")})"
95: end
96:
97: supported
98: end
# File lib/boxgrinder-build/plugins/base-plugin.rb, line 110
110: def validate_plugin_config(fields = [], doc = nil)
111: more_info = doc.nil? ? '' : "See #{doc} for more info"
112:
113: fields.each do |field|
114: raise "Please specify a valid '#{field}' key in BoxGrinder configuration file: '#{@config.file}' or use CLI '--#{@plugin_info[:type]}-config #{field}:DATA' argument. #{more_info}" if @plugin_config[field].nil?
115: end
116: end
# File lib/boxgrinder-build/plugins/base-plugin.rb, line 110
110: def validate_plugin_config(fields = [], doc = nil)
111: more_info = doc.nil? ? '' : "See #{doc} for more info"
112:
113: fields.each do |field|
114: raise "Please specify a valid '#{field}' key in BoxGrinder configuration file: '#{@config.file}' or use CLI '--#{@plugin_info[:type]}-config #{field}:DATA' argument. #{more_info}" if @plugin_config[field].nil?
115: end
116: end