boxgrinder-build 0.4.1 → 0.5.0

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 (71) hide show
  1. data/CHANGELOG +7 -0
  2. data/Manifest +0 -0
  3. data/Rakefile +11 -0
  4. data/bin/boxgrinder-build +33 -27
  5. data/boxgrinder-build.gemspec +38 -0
  6. data/lib/boxgrinder-build/appliance.rb +32 -41
  7. data/lib/boxgrinder-build/helpers/appliance-customize-helper.rb +3 -48
  8. data/lib/boxgrinder-build/helpers/guestfs-helper.rb +98 -12
  9. data/lib/boxgrinder-build/helpers/linux-helper.rb +69 -0
  10. data/lib/boxgrinder-build/helpers/package-helper.rb +20 -11
  11. data/lib/boxgrinder-build/helpers/plugin-helper.rb +32 -32
  12. data/lib/boxgrinder-build/managers/plugin-manager.rb +98 -0
  13. data/lib/boxgrinder-build/plugins/base-plugin.rb +70 -17
  14. data/spec/Rakefile +13 -0
  15. data/spec/appliance-spec.rb +195 -0
  16. data/spec/helpers/appliance-customize-helper-spec.rb +30 -0
  17. data/spec/helpers/guestfs-helper-spec.rb +129 -0
  18. data/spec/helpers/linux-helper-spec.rb +50 -0
  19. data/spec/helpers/package-helper-spec.rb +6 -0
  20. data/spec/helpers/plugin-helper-spec.rb +63 -0
  21. data/spec/managers/plugin-manager-spec.rb +27 -0
  22. data/spec/plugins/base-plugin-spec.rb +89 -0
  23. data/spec/rspec/src/appliances/jeos-f13.appl +27 -0
  24. metadata +60 -157
  25. data/docs/examples/appliances/appliances.appl +0 -5
  26. data/docs/examples/appliances/minimal.appl +0 -9
  27. data/docs/examples/appliances/mix.appl +0 -8
  28. data/docs/examples/appliances/packages.appl +0 -13
  29. data/docs/node-info/pom.xml +0 -31
  30. data/docs/node-info/src/main/webapp/META-INF/MANIFEST.MF +0 -3
  31. data/docs/node-info/src/main/webapp/WEB-INF/web.xml +0 -7
  32. data/docs/node-info/src/main/webapp/index.jsp +0 -70
  33. data/lib/boxgrinder-build/helpers/rake-helper.rb +0 -71
  34. data/lib/boxgrinder-build/managers/base-plugin-manager.rb +0 -62
  35. data/lib/boxgrinder-build/managers/delivery-plugin-manager.rb +0 -39
  36. data/lib/boxgrinder-build/managers/operating-system-plugin-manager.rb +0 -6
  37. data/lib/boxgrinder-build/managers/platform-plugin-manager.rb +0 -26
  38. data/lib/boxgrinder-build/plugins/delivery/base/base-delivery-plugin.rb +0 -43
  39. data/lib/boxgrinder-build/plugins/delivery/local/local-plugin.rb +0 -57
  40. data/lib/boxgrinder-build/plugins/delivery/s3/aws-helper.rb +0 -64
  41. data/lib/boxgrinder-build/plugins/delivery/s3/s3-plugin.rb +0 -190
  42. data/lib/boxgrinder-build/plugins/delivery/sftp/sftp-plugin.rb +0 -159
  43. data/lib/boxgrinder-build/plugins/os/base/kickstart.rb +0 -148
  44. data/lib/boxgrinder-build/plugins/os/base/rhel-based-os-plugin.rb +0 -51
  45. data/lib/boxgrinder-build/plugins/os/base/rpm-based-os-plugin.rb +0 -134
  46. data/lib/boxgrinder-build/plugins/os/base/src/appliance.ks.erb +0 -41
  47. data/lib/boxgrinder-build/plugins/os/base/src/base.repo +0 -4
  48. data/lib/boxgrinder-build/plugins/os/base/src/motd.init +0 -21
  49. data/lib/boxgrinder-build/plugins/os/base/validators/rpm-dependency-validator.rb +0 -162
  50. data/lib/boxgrinder-build/plugins/os/base-operating-system-plugin.rb +0 -37
  51. data/lib/boxgrinder-build/plugins/os/centos/centos-plugin.rb +0 -52
  52. data/lib/boxgrinder-build/plugins/os/fedora/fedora-plugin.rb +0 -74
  53. data/lib/boxgrinder-build/plugins/os/rhel/rhel-plugin.rb +0 -40
  54. data/lib/boxgrinder-build/plugins/platform/base-platform-plugin.rb +0 -37
  55. data/lib/boxgrinder-build/plugins/platform/ec2/ec2-plugin.rb +0 -332
  56. data/lib/boxgrinder-build/plugins/platform/ec2/src/f12/yum.conf +0 -24
  57. data/lib/boxgrinder-build/plugins/platform/ec2/src/f12-i386-boxgrinder.repo +0 -11
  58. data/lib/boxgrinder-build/plugins/platform/ec2/src/f12-x86_64-boxgrinder.repo +0 -11
  59. data/lib/boxgrinder-build/plugins/platform/ec2/src/fstab_32bit +0 -8
  60. data/lib/boxgrinder-build/plugins/platform/ec2/src/fstab_64bit +0 -8
  61. data/lib/boxgrinder-build/plugins/platform/ec2/src/ifcfg-eth0 +0 -7
  62. data/lib/boxgrinder-build/plugins/platform/ec2/src/rc_local +0 -29
  63. data/lib/boxgrinder-build/plugins/platform/vmware/src/README +0 -42
  64. data/lib/boxgrinder-build/plugins/platform/vmware/src/base.vmdk +0 -19
  65. data/lib/boxgrinder-build/plugins/platform/vmware/src/base.vmx +0 -45
  66. data/lib/boxgrinder-build/plugins/platform/vmware/vmware-plugin.rb +0 -181
  67. data/lib/boxgrinder-build/validators/appliance-config-parameter-validator.rb +0 -37
  68. data/lib/boxgrinder-build/validators/appliance-validator.rb +0 -84
  69. data/lib/boxgrinder-build/validators/config-validator.rb +0 -48
  70. data/lib/boxgrinder-build/validators/ssh-validator.rb +0 -35
  71. data/lib/boxgrinder-build/validators/validator.rb +0 -91
@@ -1,41 +0,0 @@
1
- lang en_US.UTF-8
2
- keyboard us
3
- timezone US/Eastern
4
- auth --useshadow --enablemd5
5
- selinux --permissive
6
- firewall --disabled
7
- bootloader --timeout=1 --append="acpi=force scsi_mod.scan=sync"
8
- firstboot --disabled
9
-
10
- <% if graphical %>
11
- xconfig --startxonboot
12
- services --enabled=NetworkManager --disabled=network,sshd
13
- <% else %>
14
- network --bootproto=dhcp --device=eth0 --onboot=on
15
- services --enabled=network
16
- <% end %>
17
-
18
- rootpw <%= root_password %>
19
-
20
- <% appliance_config.hardware.partitions.each do |root, partition| %>
21
- part <%= root %> --size <%= (partition['size'].to_f * 1024).to_i %> --fstype <%= fstype %> --ondisk sda<% end %>
22
-
23
- <% for repo in repos %>
24
- <%= repo %><% end %>
25
-
26
- <% if graphical %>
27
- %packages --excludedocs
28
- <% else %>
29
- %packages --excludedocs --nobase
30
- <% end %>
31
-
32
- <% for package in packages %>
33
- <%= package %><% end %>
34
- %end
35
- %post
36
-
37
- <% if graphical %>
38
- chkconfig --level 345 firstboot off 2>/dev/null<% end %>
39
-
40
- %end
41
-
@@ -1,4 +0,0 @@
1
- [#NAME#]
2
- name=#NAME#
3
- enabled=1
4
- gpgcheck=0
@@ -1,21 +0,0 @@
1
- #!/bin/sh
2
- #
3
- # motd Prepares /etc/motd file
4
- #
5
- # chkconfig: 2345 99 05
6
- # description: Prepares /etc/motd file
7
- #
8
- ### BEGIN INIT INFO
9
- # Provides: ec2
10
- # Default-Start: 2345
11
- # Default-Stop: 0 1 6
12
- # Short-Description: Prepares /etc/motd file
13
- # Description: Prepares /etc/motd file
14
- ### END INIT INFO
15
-
16
- HOSTNAME=`/bin/uname -a | awk '{print $2}'`
17
- IP_ADDRESS=`ip addr list eth0 | grep "inet " | cut -d' ' -f6 | cut -d/ -f1`
18
-
19
- echo -e "\nAppliance:\t#APPLIANCE# #VERSION#\nHostname:\t$HOSTNAME\nIP Address:\t$IP_ADDRESS\n" > /etc/motd
20
-
21
- exit 0
@@ -1,162 +0,0 @@
1
- # JBoss, Home of Professional Open Source
2
- # Copyright 2009, Red Hat Middleware LLC, and individual contributors
3
- # by the @authors tag. See the copyright.txt in the distribution for a
4
- # full listing of individual contributors.
5
- #
6
- # This is free software; you can redistribute it and/or modify it
7
- # under the terms of the GNU Lesser General Public License as
8
- # published by the Free Software Foundation; either version 2.1 of
9
- # the License, or (at your option) any later version.
10
- #
11
- # This software is distributed in the hope that it will be useful,
12
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
- # Lesser General Public License for more details.
15
- #
16
- # You should have received a copy of the GNU Lesser General Public
17
- # License along with this software; if not, write to the Free
18
- # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
19
- # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
20
-
21
- require 'yaml'
22
-
23
- module BoxGrinder
24
- class Repo
25
- def initialize( name, baseurl = nil, mirrorlist = nil )
26
- @name = name
27
- @baseurl = baseurl
28
- @mirrorlist = mirrorlist
29
- end
30
-
31
- attr_reader :name
32
- attr_reader :baseurl
33
- attr_reader :mirrorlist
34
- end
35
-
36
- class RPMDependencyValidator
37
- def initialize( config, appliance_config, options = {} )
38
- @config = config
39
- @appliance_config = appliance_config
40
-
41
- @log = options[:log] || Logger.new(STDOUT)
42
- @exec_helper = options[:exec_helper] || ExecHelper.new( { :log => @log } )
43
-
44
- # Because we're using repoquery command from our building environment, we must ensure, that our repository
45
- # names are unique
46
- @magic_hash = "#{@config.name.downcase.gsub(" ", "_")}-"
47
-
48
- define_tasks
49
- end
50
-
51
- def define_tasks
52
- desc "Validate packages dependencies for #{@appliance_config.simple_name} appliance"
53
- task "appliance:#{@appliance_config.name}:validate:dependencies" => [ @appliance_config.path.file.raw.kickstart ] do
54
- # if RAW file is already built, don't check for dependencies
55
- resolve_packages unless File.exists?( @appliance_config.path.file.raw.disk )
56
- end
57
-
58
- task "appliance:all:validate:dependencies" => [ "appliance:#{@appliance_config.name}:validate:dependencies" ]
59
- end
60
-
61
- def resolve_packages
62
- @log.info "Resolving packages added to #{@appliance_config.simple_name} appliance definition file..."
63
-
64
- repos = read_repos_from_kickstart_file
65
- package_list = generate_package_list
66
- repo_list = generate_repo_list( repos )
67
-
68
- generate_yum_config( repos )
69
-
70
- invalid_names = invalid_names( repo_list, package_list )
71
-
72
- if invalid_names.size == 0
73
- @log.info "All additional packages for #{@appliance_config.simple_name} appliance successfully resolved."
74
- else
75
- raise "Package#{invalid_names.size > 1 ? "s" : ""} #{invalid_names.join(', ')} for #{@appliance_config.simple_name} appliance not found in repositories. Please check package names in appliance definition file."
76
- end
77
- end
78
-
79
- def invalid_names( repo_list, package_list )
80
- @log.debug "Querying package database..."
81
-
82
- unless @appliance_config.is64bit?
83
- arches = "i386,i486,i586,i686"
84
- else
85
- arches = "x86_64"
86
- end
87
-
88
- repoquery_output = @exec_helper.execute( "sudo repoquery --quiet --disablerepo=* --enablerepo=#{repo_list} -c #{@appliance_config.path.file.raw.yum} list available #{package_list.join( ' ' )} --nevra --archlist=#{arches},noarch" )
89
- invalid_names = []
90
-
91
- for name in package_list
92
- found = false
93
-
94
- repoquery_output.each do |line|
95
- line = line.strip
96
-
97
- package = line.match( /^([\S]+)-\d+:/ )
98
- package = package.nil? ? line : package[1]
99
-
100
- if package.size > 0 and name.match( /^#{package.gsub(/[\+]/, '\\+')}/ )
101
- found = true
102
- end
103
- end
104
- invalid_names += [ name ] unless found
105
- end
106
-
107
- invalid_names
108
- end
109
-
110
- def generate_package_list
111
- packages = []
112
- for package in @appliance_config.packages.includes
113
- packages << package unless package.match /^@/
114
- end
115
- packages
116
- end
117
-
118
- def generate_repo_list(repos)
119
- repo_list = ""
120
-
121
- repos.each do |repo|
122
- repo_list += "#{@magic_hash}#{repo.name},"
123
- end
124
-
125
- repo_list = repo_list[0, repo_list.length - 1]
126
- end
127
-
128
- def read_repos_from_kickstart_file
129
- repos = `grep -e "^repo" #{@appliance_config.path.file.raw.kickstart}`
130
- repo_list = []
131
-
132
- repos.each do |repo_line|
133
- name = repo_line.match( /--name=([\w\-]+)/ )[1]
134
- baseurl = repo_line.match( /--baseurl=([\w\-\:\/\.&\?=]+)/ )
135
- mirrorlist = repo_line.match( /--mirrorlist=([\w\-\:\/\.&\?=]+)/ )
136
-
137
- baseurl = baseurl[1] unless baseurl.nil?
138
- mirrorlist = mirrorlist[1] unless mirrorlist.nil?
139
-
140
- repo_list.push( Repo.new( name, baseurl, mirrorlist ) )
141
- end
142
-
143
- repo_list
144
- end
145
-
146
- def generate_yum_config( repo_list )
147
- File.open( @appliance_config.path.file.raw.yum, "w") do |f|
148
-
149
- f.puts( "[main]\r\ncachedir=/tmp/#{@magic_hash}#{@appliance_config.hardware.arch}-yum-cache/\r\n\r\n" )
150
-
151
- for repo in repo_list
152
- f.puts( "[#{@magic_hash}#{repo.name}]" )
153
- f.puts( "name=#{repo.name}" )
154
- f.puts( "baseurl=#{repo.baseurl}" ) unless repo.baseurl.nil?
155
- f.puts( "mirrorlist=#{repo.mirrorlist}" ) unless repo.mirrorlist.nil?
156
- f.puts( "enabled=1" )
157
- f.puts
158
- end
159
- end
160
- end
161
- end
162
- end
@@ -1,37 +0,0 @@
1
- # JBoss, Home of Professional Open Source
2
- # Copyright 2009, Red Hat Middleware LLC, and individual contributors
3
- # by the @authors tag. See the copyright.txt in the distribution for a
4
- # full listing of individual contributors.
5
- #
6
- # This is free software; you can redistribute it and/or modify it
7
- # under the terms of the GNU Lesser General Public License as
8
- # published by the Free Software Foundation; either version 2.1 of
9
- # the License, or (at your option) any later version.
10
- #
11
- # This software is distributed in the hope that it will be useful,
12
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
- # Lesser General Public License for more details.
15
- #
16
- # You should have received a copy of the GNU Lesser General Public
17
- # License along with this software; if not, write to the Free
18
- # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
19
- # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
20
-
21
- require 'boxgrinder-build/managers/operating-system-plugin-manager'
22
- require 'boxgrinder-build/plugins/base-plugin'
23
-
24
- module BoxGrinder
25
- class BaseOperatingSystemPlugin < BasePlugin
26
- def self.inherited(klass)
27
- OperatingSystemPluginManager.instance << klass
28
- end
29
-
30
- alias_method :execute_original, :execute
31
-
32
- def execute( args = nil )
33
- raise "Build cannot be started before the plugin isn't initialized" if @initialized.nil?
34
- execute_original( args )
35
- end
36
- end
37
- end
@@ -1,52 +0,0 @@
1
- # JBoss, Home of Professional Open Source
2
- # Copyright 2009, Red Hat Middleware LLC, and individual contributors
3
- # by the @authors tag. See the copyright.txt in the distribution for a
4
- # full listing of individual contributors.
5
- #
6
- # This is free software; you can redistribute it and/or modify it
7
- # under the terms of the GNU Lesser General Public License as
8
- # published by the Free Software Foundation; either version 2.1 of
9
- # the License, or (at your option) any later version.
10
- #
11
- # This software is distributed in the hope that it will be useful,
12
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
- # Lesser General Public License for more details.
15
- #
16
- # You should have received a copy of the GNU Lesser General Public
17
- # License along with this software; if not, write to the Free
18
- # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
19
- # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
20
-
21
- require 'boxgrinder-build/plugins/os/base/rhel-based-os-plugin'
22
-
23
- module BoxGrinder
24
- class CentOSPlugin < RHELBasedOSPlugin
25
-
26
- CENTOS_REPOS = {
27
- "5" => {
28
- "base" => {
29
- "mirrorlist" => "http://mirrorlist.centos.org/?release=#OS_VERSION#&arch=#ARCH#&repo=os"
30
- },
31
- "updates" => {
32
- "mirrorlist" => "http://mirrorlist.centos.org/?release=#OS_VERSION#&arch=#ARCH#&repo=updates"
33
- }
34
- }
35
- }
36
-
37
- def info
38
- {
39
- :name => :centos,
40
- :full_name => "CentOS",
41
- :type => :linux,
42
- :versions => ["5"]
43
- }
44
- end
45
-
46
- def execute
47
- raise "Build cannot be started until the plugin isn't initialized" if @initialized.nil?
48
-
49
- build_rhel( CENTOS_REPOS )
50
- end
51
- end
52
- end
@@ -1,74 +0,0 @@
1
- # JBoss, Home of Professional Open Source
2
- # Copyright 2009, Red Hat Middleware LLC, and individual contributors
3
- # by the @authors tag. See the copyright.txt in the distribution for a
4
- # full listing of individual contributors.
5
- #
6
- # This is free software; you can redistribute it and/or modify it
7
- # under the terms of the GNU Lesser General Public License as
8
- # published by the Free Software Foundation; either version 2.1 of
9
- # the License, or (at your option) any later version.
10
- #
11
- # This software is distributed in the hope that it will be useful,
12
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
- # Lesser General Public License for more details.
15
- #
16
- # You should have received a copy of the GNU Lesser General Public
17
- # License along with this software; if not, write to the Free
18
- # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
19
- # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
20
-
21
- require 'boxgrinder-build/plugins/os/base/rpm-based-os-plugin'
22
- require 'boxgrinder-build/plugins/os/base/kickstart'
23
- require 'boxgrinder-build/plugins/os/base/validators/rpm-dependency-validator'
24
-
25
- module BoxGrinder
26
- class FedoraPlugin < RPMBasedOSPlugin
27
-
28
- FEDORA_REPOS = {
29
- "13" => {
30
- "base" => {
31
- "mirrorlist" => "http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-13&arch=#ARCH#"
32
- },
33
- "updates" => {
34
- "mirrorlist" => "http://mirrors.fedoraproject.org/mirrorlist?repo=updates-released-f13&arch=#ARCH#"
35
- }
36
- },
37
- "12" => {
38
- "base" => {
39
- "mirrorlist" => "http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-12&arch=#ARCH#"
40
- },
41
- "updates" => {
42
- "mirrorlist" => "http://mirrors.fedoraproject.org/mirrorlist?repo=updates-released-f12&arch=#ARCH#"
43
- }
44
- },
45
- "11" => {
46
- "base" => {
47
- "mirrorlist" => "http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-11&arch=#ARCH#"
48
- },
49
- "updates" => {
50
- "mirrorlist" => "http://mirrors.fedoraproject.org/mirrorlist?repo=updates-released-f11&arch=#ARCH#"
51
- }
52
- },
53
- "rawhide" => {
54
- "base" => {
55
- "mirrorlist" => "http://mirrors.fedoraproject.org/mirrorlist?repo=rawhide&arch=#ARCH#"
56
- }
57
- }
58
-
59
- }
60
-
61
- def info
62
- {
63
- :name => :fedora,
64
- :full_name => "Fedora",
65
- :type => :linux,
66
- :versions => ["11", "12", "13", "rawhide"]
67
- }
68
- end
69
-
70
- def execute
71
- build_with_appliance_creator( FEDORA_REPOS )
72
- end
73
- end
74
- end
@@ -1,40 +0,0 @@
1
- # JBoss, Home of Professional Open Source
2
- # Copyright 2009, Red Hat Middleware LLC, and individual contributors
3
- # by the @authors tag. See the copyright.txt in the distribution for a
4
- # full listing of individual contributors.
5
- #
6
- # This is free software; you can redistribute it and/or modify it
7
- # under the terms of the GNU Lesser General Public License as
8
- # published by the Free Software Foundation; either version 2.1 of
9
- # the License, or (at your option) any later version.
10
- #
11
- # This software is distributed in the hope that it will be useful,
12
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
- # Lesser General Public License for more details.
15
- #
16
- # You should have received a copy of the GNU Lesser General Public
17
- # License along with this software; if not, write to the Free
18
- # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
19
- # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
20
-
21
- require 'boxgrinder-build/plugins/os/base/rhel-based-os-plugin'
22
-
23
- module BoxGrinder
24
- class RHELPlugin < RHELBasedOSPlugin
25
- def info
26
- {
27
- :name => :rhel,
28
- :full_name => "Red Hat Enterprise Linux",
29
- :type => :linux,
30
- :versions => ["5"]
31
- }
32
- end
33
-
34
- def execute
35
- raise "Build cannot be started until the plugin isn't initialized" if @initialized.nil?
36
-
37
- build_rhel
38
- end
39
- end
40
- end
@@ -1,37 +0,0 @@
1
- # JBoss, Home of Professional Open Source
2
- # Copyright 2009, Red Hat Middleware LLC, and individual contributors
3
- # by the @authors tag. See the copyright.txt in the distribution for a
4
- # full listing of individual contributors.
5
- #
6
- # This is free software; you can redistribute it and/or modify it
7
- # under the terms of the GNU Lesser General Public License as
8
- # published by the Free Software Foundation; either version 2.1 of
9
- # the License, or (at your option) any later version.
10
- #
11
- # This software is distributed in the hope that it will be useful,
12
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
- # Lesser General Public License for more details.
15
- #
16
- # You should have received a copy of the GNU Lesser General Public
17
- # License along with this software; if not, write to the Free
18
- # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
19
- # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
20
-
21
- require 'boxgrinder-build/managers/platform-plugin-manager'
22
- require 'boxgrinder-build/plugins/base-plugin'
23
-
24
- module BoxGrinder
25
- class BasePlatformPlugin < BasePlugin
26
- def self.inherited(klass)
27
- PlatformPluginManager.instance << klass
28
- end
29
-
30
- alias_method :execute_original, :execute
31
-
32
- def execute(args = nil)
33
- raise "Conversion cannot be started before the plugin isn't initialized" if @initialized.nil?
34
- execute_original(args)
35
- end
36
- end
37
- end