continuous4r 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +1 -1
- data/Manifest.txt +34 -34
- data/PostInstall.txt +3 -0
- data/README.rdoc +58 -0
- data/Rakefile +28 -3
- data/lib/changelog_builder.rb +51 -0
- data/lib/continuous4r.rb +63 -426
- data/lib/dcov_builder.rb +144 -0
- data/lib/flay_builder.rb +38 -0
- data/lib/flog_builder.rb +120 -0
- data/lib/git_extractor.rb +48 -0
- data/lib/rcov_builder.rb +23 -0
- data/lib/rdoc_builder.rb +33 -0
- data/lib/reek_builder.rb +38 -0
- data/lib/roodi_builder.rb +41 -0
- data/lib/saikuro_builder.rb +20 -0
- data/lib/site/body-changelog.rhtml +1 -1
- data/lib/site/body-continuous4r-reports.rhtml +40 -47
- data/lib/site/body-dcov.rhtml +1 -21
- data/lib/site/body-flay.rhtml +16 -0
- data/lib/site/body-flog.rhtml +2 -10
- data/lib/site/body-rcov.rhtml +2 -3
- data/lib/site/body-rdoc.rhtml +1 -1
- data/lib/site/body-reek.rhtml +16 -0
- data/lib/site/body-roodi.rhtml +16 -0
- data/lib/site/body-saikuro.rhtml +32 -0
- data/lib/site/body-scm-usage.rhtml +13 -12
- data/lib/site/body-stats.rhtml +1 -1
- data/lib/site/body-tests.rhtml +1 -1
- data/lib/site/body-xdoclet.rhtml +29 -0
- data/lib/site/body-zentest.rhtml +1 -1
- data/lib/site/flog.html.erb +33 -0
- data/lib/site/flog_page.html.erb +74 -0
- data/lib/site/header.rhtml +36 -20
- data/lib/site/images/added.png +0 -0
- data/lib/site/images/deleted.png +0 -0
- data/lib/site/images/modified.png +0 -0
- data/lib/site/menu-continuous4r-reports.rhtml +4 -14
- data/lib/site/{menu-dcov.rhtml → menu-task.rhtml} +3 -5
- data/lib/site/style/maven-base.css +3 -0
- data/lib/site/syntax_highlighting.css +30 -0
- data/lib/stats_builder.rb +18 -0
- data/lib/subversion_extractor.rb +29 -19
- data/lib/tasks/continuous4r-project.xml +26 -0
- data/lib/tasks/continuous4r.rake +23 -0
- data/lib/tasks/continuous4r.rb +6 -0
- data/lib/tests_builder.rb +21 -0
- data/lib/tests_formatter.rb +13 -46
- data/lib/utils.rb +47 -0
- data/lib/xdoclet_builder.rb +48 -0
- data/lib/zen_test_formatter.rb +58 -28
- data/lib/zentest_builder.rb +19 -0
- data/script/console +10 -0
- data/script/console.cmd +1 -0
- data/script/destroy +1 -1
- data/script/generate +1 -1
- data/test/test_continuous4r.rb +1 -1
- data/test/test_helper.rb +1 -0
- data/website/index.html +141 -363
- data/website/index.txt +169 -228
- data/website/template.rhtml +2 -2
- metadata +66 -46
- data/License.txt +0 -20
- data/README.txt +0 -1
- data/config/hoe.rb +0 -71
- data/config/requirements.rb +0 -17
- data/lib/capistrano_formatter.rb +0 -19
- data/lib/continuous4r/version.rb +0 -9
- data/lib/flog_formatter.rb +0 -48
- data/lib/heckle_formatter.rb +0 -27
- data/lib/httperf_formatter.rb +0 -160
- data/lib/site/body-capistrano.rhtml +0 -8
- data/lib/site/body-heckle.rhtml +0 -16
- data/lib/site/body-httperf.rhtml +0 -8
- data/lib/site/body-kwala.rhtml +0 -35
- data/lib/site/body-railroad.rhtml +0 -29
- data/lib/site/menu-capistrano.rhtml +0 -23
- data/lib/site/menu-changelog.rhtml +0 -23
- data/lib/site/menu-flog.rhtml +0 -23
- data/lib/site/menu-heckle.rhtml +0 -23
- data/lib/site/menu-httperf.rhtml +0 -23
- data/lib/site/menu-kwala.rhtml +0 -23
- data/lib/site/menu-railroad.rhtml +0 -23
- data/lib/site/menu-rcov.rhtml +0 -23
- data/lib/site/menu-rdoc.rhtml +0 -23
- data/lib/site/menu-stats.rhtml +0 -23
- data/lib/site/menu-tests.rhtml +0 -23
- data/lib/site/menu-zentest.rhtml +0 -23
- data/log/debug.log +0 -0
- data/script/txt2html +0 -74
- data/script/txt2html.cmd +0 -1
- data/setup.rb +0 -1585
- data/tasks/deployment.rake +0 -34
- data/tasks/environment.rake +0 -7
- data/tasks/website.rake +0 -17
data/History.txt
CHANGED
data/Manifest.txt
CHANGED
@@ -1,79 +1,62 @@
|
|
1
1
|
History.txt
|
2
|
-
License.txt
|
3
2
|
Manifest.txt
|
4
|
-
|
3
|
+
PostInstall.txt
|
4
|
+
README.rdoc
|
5
5
|
Rakefile
|
6
|
-
config/hoe.rb
|
7
|
-
config/requirements.rb
|
8
|
-
lib/capistrano_formatter.rb
|
9
6
|
lib/continuous4r.rb
|
10
|
-
lib/flog_formatter.rb
|
11
|
-
lib/heckle_formatter.rb
|
12
|
-
lib/httperf_formatter.rb
|
13
7
|
lib/stats_formatter.rb
|
8
|
+
lib/git_extractor.rb
|
14
9
|
lib/subversion_extractor.rb
|
15
10
|
lib/tests_formatter.rb
|
16
11
|
lib/zen_test_formatter.rb
|
17
|
-
lib/continuous4r/version.rb
|
18
|
-
lib/site/body-capistrano.rhtml
|
19
12
|
lib/site/body-changelog.rhtml
|
20
13
|
lib/site/body-continuous4r-reports.rhtml
|
21
14
|
lib/site/body-dcov.rhtml
|
22
15
|
lib/site/body-dependencies.rhtml
|
23
16
|
lib/site/body-flog.rhtml
|
24
|
-
lib/site/body-
|
25
|
-
lib/site/body-httperf.rhtml
|
17
|
+
lib/site/body-flay.rhtml
|
26
18
|
lib/site/body-issue-tracking.rhtml
|
27
|
-
lib/site/body-kwala.rhtml
|
28
19
|
lib/site/body-index.rhtml
|
29
|
-
lib/site/body-railroad.rhtml
|
30
20
|
lib/site/body-rcov.rhtml
|
31
21
|
lib/site/body-rdoc.rhtml
|
22
|
+
lib/site/body-reek.rhtml
|
23
|
+
lib/site/body-roodi.rhtml
|
24
|
+
lib/site/body-saikuro.rhtml
|
32
25
|
lib/site/body-scm-usage.rhtml
|
33
26
|
lib/site/body-stats.rhtml
|
34
27
|
lib/site/body-team-list.rhtml
|
35
28
|
lib/site/body-tests.rhtml
|
29
|
+
lib/site/body-xdoclet.rhtml
|
36
30
|
lib/site/body-zentest.rhtml
|
31
|
+
lib/site/flog.html.erb
|
32
|
+
lib/site/flog_page.html.erb
|
37
33
|
lib/site/header.rhtml
|
38
|
-
lib/site/menu-capistrano.rhtml
|
39
|
-
lib/site/menu-changelog.rhtml
|
40
34
|
lib/site/menu-continuous4r-reports.rhtml
|
41
|
-
lib/site/menu-dcov.rhtml
|
42
35
|
lib/site/menu-dependencies.rhtml
|
43
|
-
lib/site/menu-flog.rhtml
|
44
|
-
lib/site/menu-heckle.rhtml
|
45
|
-
lib/site/menu-httperf.rhtml
|
46
36
|
lib/site/menu-issue-tracking.rhtml
|
47
|
-
lib/site/menu-kwala.rhtml
|
48
37
|
lib/site/menu-index.rhtml
|
49
|
-
lib/site/menu-railroad.rhtml
|
50
|
-
lib/site/menu-rcov.rhtml
|
51
|
-
lib/site/menu-rdoc.rhtml
|
52
38
|
lib/site/menu-scm-usage.rhtml
|
53
|
-
lib/site/menu-
|
39
|
+
lib/site/menu-task.rhtml
|
54
40
|
lib/site/menu-team-list.rhtml
|
55
|
-
lib/site/
|
56
|
-
lib/site/menu-zentest.rhtml
|
41
|
+
lib/site/images/added.png
|
57
42
|
lib/site/images/continuous4r-logo.png
|
43
|
+
lib/site/images/deleted.png
|
58
44
|
lib/site/images/external.png
|
59
45
|
lib/site/images/icon_error_sml.gif
|
60
46
|
lib/site/images/icon_success_sml.gif
|
47
|
+
lib/site/images/modified.png
|
61
48
|
lib/site/images/newwindow.png
|
62
49
|
lib/site/style/commons-maven.css
|
63
50
|
lib/site/style/maven-base.css
|
64
51
|
lib/site/style/maven-theme.css
|
65
52
|
lib/site/style/project.css
|
66
|
-
|
53
|
+
lib/site/syntax_highlighting.css
|
54
|
+
script/console
|
55
|
+
script/console.cmd
|
67
56
|
script/destroy
|
68
57
|
script/destroy.cmd
|
69
58
|
script/generate
|
70
59
|
script/generate.cmd
|
71
|
-
script/txt2html
|
72
|
-
script/txt2html.cmd
|
73
|
-
setup.rb
|
74
|
-
tasks/deployment.rake
|
75
|
-
tasks/environment.rake
|
76
|
-
tasks/website.rake
|
77
60
|
test/test_continuous4r.rb
|
78
61
|
test/test_helper.rb
|
79
62
|
website/index.html
|
@@ -81,3 +64,20 @@ website/index.txt
|
|
81
64
|
website/javascripts/rounded_corners_lite.inc.js
|
82
65
|
website/stylesheets/screen.css
|
83
66
|
website/template.rhtml
|
67
|
+
lib/tasks/continuous4r.rake
|
68
|
+
lib/tasks/continuous4r.rb
|
69
|
+
lib/tasks/continuous4r-project.xml
|
70
|
+
lib/changelog_builder.rb
|
71
|
+
lib/dcov_builder.rb
|
72
|
+
lib/flay_builder.rb
|
73
|
+
lib/flog_builder.rb
|
74
|
+
lib/rcov_builder.rb
|
75
|
+
lib/rdoc_builder.rb
|
76
|
+
lib/reek_builder.rb
|
77
|
+
lib/roodi_builder.rb
|
78
|
+
lib/saikuro_builder.rb
|
79
|
+
lib/stats_builder.rb
|
80
|
+
lib/tests_builder.rb
|
81
|
+
lib/xdoclet_builder.rb
|
82
|
+
lib/zentest_builder.rb
|
83
|
+
lib/utils.rb
|
data/PostInstall.txt
ADDED
data/README.rdoc
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
= continuous4r
|
2
|
+
|
3
|
+
* http://continuous4r.rubyforge.org
|
4
|
+
* http://github.com/vdubois/continuous4r/tree/master
|
5
|
+
* http://collaborateurvdu.wordpress.com
|
6
|
+
|
7
|
+
== DESCRIPTION:
|
8
|
+
|
9
|
+
Continuous integration tool which regroups in one place tests, quality and analysis tools in a Maven-like website.
|
10
|
+
|
11
|
+
== FEATURES/PROBLEMS:
|
12
|
+
|
13
|
+
* See http://continuous4r.rubyforge.org
|
14
|
+
|
15
|
+
== SYNOPSIS:
|
16
|
+
|
17
|
+
cd /path/to/rails/app
|
18
|
+
add : require 'continuous4r' to your Rakefile
|
19
|
+
'rake continuous4r:init' to create your continuous4r-project.xml file
|
20
|
+
edit continuous4r-project.xml to suit your needs
|
21
|
+
Type 'rake continuous4r:build' to build
|
22
|
+
then open tmp/continuous4r/index.html in your browser
|
23
|
+
|
24
|
+
== REQUIREMENTS:
|
25
|
+
|
26
|
+
* RubyGems
|
27
|
+
* rails (erb)
|
28
|
+
* hpricot
|
29
|
+
* XmlElements
|
30
|
+
|
31
|
+
== INSTALL:
|
32
|
+
|
33
|
+
* sudo gem install continuous4r
|
34
|
+
|
35
|
+
== LICENSE:
|
36
|
+
|
37
|
+
(The MIT License)
|
38
|
+
|
39
|
+
Copyright (c) 2009 Vincent Dubois
|
40
|
+
|
41
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
42
|
+
a copy of this software and associated documentation files (the
|
43
|
+
'Software'), to deal in the Software without restriction, including
|
44
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
45
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
46
|
+
permit persons to whom the Software is furnished to do so, subject to
|
47
|
+
the following conditions:
|
48
|
+
|
49
|
+
The above copyright notice and this permission notice shall be
|
50
|
+
included in all copies or substantial portions of the Software.
|
51
|
+
|
52
|
+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
53
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
54
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
55
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
56
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
57
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
58
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Rakefile
CHANGED
@@ -1,4 +1,29 @@
|
|
1
|
-
require
|
2
|
-
require '
|
1
|
+
%w[rubygems rake rake/clean fileutils newgem rubigen].each { |f| require f }
|
2
|
+
require File.dirname(__FILE__) + '/lib/continuous4r'
|
3
3
|
|
4
|
-
|
4
|
+
# Generate all the Rake tasks
|
5
|
+
# Run 'rake -T' to see list of generated tasks (from gem root directory)
|
6
|
+
$hoe = Hoe.new('continuous4r', Continuous4r::VERSION) do |p|
|
7
|
+
p.developer('Vincent Dubois', 'duboisv@hotmail.com')
|
8
|
+
p.changes = p.paragraphs_of("History.txt", 0..1).join("\n\n")
|
9
|
+
p.post_install_message = 'PostInstall.txt'
|
10
|
+
p.rubyforge_name = p.name
|
11
|
+
# p.extra_deps = [
|
12
|
+
# ['activesupport','>= 2.0.2'],
|
13
|
+
# ]
|
14
|
+
p.extra_dev_deps = [
|
15
|
+
['newgem', ">= #{::Newgem::VERSION}"]
|
16
|
+
]
|
17
|
+
|
18
|
+
p.clean_globs |= %w[**/.DS_Store tmp *.log]
|
19
|
+
path = (p.rubyforge_name == p.name) ? p.rubyforge_name : "\#{p.rubyforge_name}/\#{p.name}"
|
20
|
+
p.remote_rdoc_dir = File.join(path.gsub(/^#{p.rubyforge_name}\/?/,''), 'rdoc')
|
21
|
+
p.rsync_args = '-av --delete --ignore-errors'
|
22
|
+
end
|
23
|
+
|
24
|
+
require 'newgem/tasks' # load /tasks/*.rake
|
25
|
+
|
26
|
+
Dir['tasks/**/*.rake'].each { |t| load t }
|
27
|
+
|
28
|
+
# TODO - want other tests/tasks run by default? Add them to the list
|
29
|
+
# task :default => [:spec, :features]
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# ===========================================================================
|
2
|
+
# Construction de la tache changelog (changements du referentiel de sources)
|
3
|
+
# author: Vincent Dubois
|
4
|
+
# date: 18 fevrier 2009
|
5
|
+
# ===========================================================================
|
6
|
+
class ChangelogBuilder
|
7
|
+
include Utils
|
8
|
+
|
9
|
+
# Implementation de la construction de la tache
|
10
|
+
def build(project_name, auto_install, proxy_option)
|
11
|
+
unless File.exist?(".svn") or File.exist?(".git")
|
12
|
+
puts " Only Subversion and Git are supported. The 'changelog' task will be empty."
|
13
|
+
break
|
14
|
+
end
|
15
|
+
# On verifie l'existence de Subversion
|
16
|
+
scm_name = "svn"
|
17
|
+
if File.exist?(".git")
|
18
|
+
scm_name = "git"
|
19
|
+
end
|
20
|
+
scm_version = Utils.run_command("#{scm_name} --version")
|
21
|
+
if scm_version.blank?
|
22
|
+
if scm_name == "svn"
|
23
|
+
raise " Subversion don't seem to be installed. Go see Subversion website on http://subversion.tigris.org.\n BUILD FAILED"
|
24
|
+
else
|
25
|
+
raise " Git don't seem to be installed. Go see Git website on http://git-scm.com/.\n BUILD FAILED"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
# Gestion de la derniere version
|
29
|
+
# 1 - On verifie le repertoire home/continuous4r
|
30
|
+
ENV['HOME'] = ENV['USERPROFILE'] if Config::CONFIG['host_os'] =~ /mswin/ and ENV['HOME'].nil?
|
31
|
+
unless File.exist?(ENV["HOME"] + "/.continuous4r")
|
32
|
+
Dir.mkdir(ENV["HOME"] + "/.continuous4r")
|
33
|
+
end
|
34
|
+
# 2 - On verifie le numero de version
|
35
|
+
scm_current_version = "1"
|
36
|
+
scm_last_version = 1
|
37
|
+
if File.exist?(ENV["HOME"] + "/.continuous4r/#{project_name}_#{scm_name}.version")
|
38
|
+
scm_current_version = File.read(ENV["HOME"] + "/.continuous4r/#{project_name}_#{scm_name}.version")
|
39
|
+
end
|
40
|
+
# 3 - On extrait les informations du referentiel
|
41
|
+
if scm_name == "svn"
|
42
|
+
scm_last_version = SubversionExtractor.extract_changelog(scm_current_version.to_i, "#{Continuous4r::WORK_DIR}/changelog-body.html")
|
43
|
+
elsif scm_name == "git"
|
44
|
+
scm_last_version = GitExtractor.extract_changelog(scm_current_version.to_i, "#{Continuous4r::WORK_DIR}/changelog-body.html")
|
45
|
+
end
|
46
|
+
# 4 - On ecrit le nouveau numero de revision
|
47
|
+
rev_file = File.open(ENV["HOME"] + "/.continuous4r/#{project_name}_#{scm_name}.version","w")
|
48
|
+
rev_file.write(scm_last_version)
|
49
|
+
rev_file.close
|
50
|
+
end
|
51
|
+
end
|
data/lib/continuous4r.rb
CHANGED
@@ -1,30 +1,41 @@
|
|
1
|
-
$:.unshift
|
1
|
+
$:.unshift(File.dirname(__FILE__)) unless
|
2
|
+
$:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
|
3
|
+
require File.join(File.dirname(__FILE__), 'tasks', 'continuous4r')
|
2
4
|
|
3
5
|
require 'rubygems'
|
4
6
|
require 'XmlElements'
|
5
7
|
require 'date'
|
6
|
-
require '
|
7
|
-
require 'heckle_formatter.rb'
|
8
|
-
require 'httperf_formatter.rb'
|
8
|
+
require 'erb'
|
9
9
|
require 'stats_formatter.rb'
|
10
10
|
require 'tests_formatter.rb'
|
11
11
|
require 'zen_test_formatter.rb'
|
12
12
|
require 'subversion_extractor.rb'
|
13
|
+
require 'git_extractor.rb'
|
14
|
+
require 'utils.rb'
|
13
15
|
|
14
16
|
# ==============================================================================
|
15
|
-
# Classe modelisant un fichier de description de projet Ruby
|
17
|
+
# Classe modelisant un fichier de description de projet Ruby on Rails
|
16
18
|
# Author:: Vincent Dubois
|
17
|
-
# Date : 03 decembre 2007
|
19
|
+
# Date : 03 decembre 2007 - version 0.0.1
|
20
|
+
# 03 fevrier 2009 - version 0.0.2
|
18
21
|
# ==============================================================================
|
19
22
|
module Continuous4r
|
23
|
+
include Utils
|
24
|
+
VERSION = '0.0.2'
|
20
25
|
|
21
26
|
# Support de CruiseControl.rb
|
22
|
-
WORK_DIR = "#{ENV['CC_BUILD_ARTIFACTS'].nil? ? "
|
27
|
+
WORK_DIR = "#{ENV['CC_BUILD_ARTIFACTS'].nil? ? "tmp/continuous4r" : "#{ENV['CC_BUILD_ARTIFACTS']}/continuous4r"}"
|
23
28
|
|
29
|
+
TASKS = ['dcov','rcov','rdoc','stats','changelog','flog','xdoclet','flay','reek','roodi','saikuro','tests','zentest']
|
30
|
+
|
24
31
|
# Methode de generation du site au complet
|
25
32
|
def self.generate_site
|
33
|
+
tasks = TASKS
|
26
34
|
project = XmlElements.fromString(File.read("#{RAILS_ROOT}/continuous4r-project.xml"))
|
27
35
|
generation_date = DateTime.now
|
36
|
+
auto_install = project['auto-install-tools']
|
37
|
+
auto_install ||= "false"
|
38
|
+
|
28
39
|
puts "====================================================================="
|
29
40
|
puts " Continuous Integration for Ruby, starting website generation..."
|
30
41
|
puts "---------------------------------------------------------------------"
|
@@ -32,459 +43,85 @@ module Continuous4r
|
|
32
43
|
puts " Project URL : #{project.url.text}"
|
33
44
|
puts " Generation date : #{generation_date}"
|
34
45
|
puts "---------------------------------------------------------------------"
|
35
|
-
|
46
|
+
|
47
|
+
# Récupération des paramètres de proxy s'ils existent
|
48
|
+
proxy_option = ""
|
49
|
+
if File.exist?("#{(Config::CONFIG['host_os'] =~ /mswin/ ? ENV['USERPROFILE'] : ENV['HOME'])}/.continuous4r/proxy.yml")
|
50
|
+
require 'YAML'
|
51
|
+
proxy_options = YAML.load_file("#{(Config::CONFIG['host_os'] =~ /mswin/ ? ENV['USERPROFILE'] : ENV['HOME'])}/.continuous4r/proxy.yml")
|
52
|
+
proxy_option = " -p \"http://#{proxy_options['proxy']['login']}:#{proxy_options['proxy']['password']}@#{proxy_options['proxy']['server']}:#{proxy_options['proxy']['port']}\""
|
53
|
+
end
|
54
|
+
|
36
55
|
# Vérification de présence et de la version de Rubygems
|
37
56
|
puts " Checking presence and version of RubyGems..."
|
38
|
-
rubygems_version =
|
57
|
+
rubygems_version = Utils.run_command("gem --version")
|
39
58
|
if rubygems_version.empty?
|
40
59
|
raise " You don't seem to have RubyGems installed, please go first to http://rubygems.rubyforge.org"
|
41
60
|
end
|
42
|
-
|
43
|
-
# Vérification de la présence d'eRuby
|
44
|
-
puts " Checking presence of eRuby for website build..."
|
45
|
-
eruby_version = `eruby --version`
|
46
|
-
if eruby_version.empty?
|
47
|
-
raise " You don't seem to have eRuby installed, please go first to http://www.eruby.info/"
|
48
|
-
end
|
49
|
-
|
61
|
+
|
50
62
|
# Verification de la presence d'hpricot
|
51
|
-
|
52
|
-
|
53
|
-
puts " Installing Hpricot..."
|
54
|
-
hpricot_installed = system("sudo gem install hpricot")
|
55
|
-
if !hpricot_installed
|
56
|
-
raise " Install for Hpricot failed with command 'sudo gem install hpricot'\n BUILD FAILED."
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
63
|
+
Utils.verify_gem_presence("hpricot", auto_install, proxy_option)
|
64
|
+
|
60
65
|
# Chargement/Vérification des gems nécessaires à l'application
|
61
66
|
puts " Checking gems for this project, please hold on..."
|
62
67
|
project.gems.each('gem') do |gem|
|
63
68
|
puts " Checking for #{gem['name']} gem, version #{gem['version']}..."
|
64
|
-
gem_version =
|
69
|
+
gem_version = Utils.run_command("gem list #{gem['name']}")
|
65
70
|
if gem_version.empty? or gem_version.index("#{gem['version']}").nil?
|
66
|
-
|
71
|
+
if project['auto-install-gems'] == "false"
|
72
|
+
raise " The #{gem['name']} gem with version #{gem['version']} is needed. Please run '#{"sudo " unless Config::CONFIG['host_os'] =~ /mswin/}gem install #{gem['name']} --version #{gem['version']}' to install it.\n BUILD FAILED."
|
73
|
+
end
|
74
|
+
gem_installed = Utils.run_command("#{"sudo " unless Config::CONFIG['host_os'] =~ /mswin/}gem install #{gem['name']} --version #{gem['version']}#{proxy_option} 2>&1")
|
67
75
|
if !gem_installed.index("ERROR").nil?
|
68
76
|
raise " Unable to install #{gem['name']} gem with version #{gem['version']}.\n BUILD FAILED."
|
69
77
|
end
|
70
78
|
end
|
71
79
|
end
|
72
|
-
|
80
|
+
|
73
81
|
puts "---------------------------------------------------------------------"
|
74
82
|
# Création du répertoire de travail
|
75
|
-
if File.exist?
|
76
|
-
|
83
|
+
if File.exist?(WORK_DIR)
|
84
|
+
FileUtils.rm_rf(WORK_DIR)
|
77
85
|
end
|
78
|
-
Dir.mkdir
|
79
|
-
|
80
|
-
auto_install = project.tasks['autoinstall']
|
81
|
-
auto_install ||= "false"
|
82
|
-
|
86
|
+
Dir.mkdir WORK_DIR
|
87
|
+
|
83
88
|
# Construction des taches
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
puts "\n---------------------------------------------------------------------"
|
88
|
-
end
|
89
|
-
puts " All tasks done."
|
90
|
-
rescue Exception => e
|
91
|
-
if e.to_s == "no childs named 'task' found!"
|
92
|
-
puts " No task to build."
|
93
|
-
else
|
94
|
-
raise e
|
95
|
-
end
|
89
|
+
tasks.each do |task|
|
90
|
+
self.build_task task, project['name'], auto_install, proxy_option
|
91
|
+
puts "\n---------------------------------------------------------------------"
|
96
92
|
end
|
93
|
+
puts " All tasks done."
|
97
94
|
puts "\n---------------------------------------------------------------------"
|
98
95
|
# On copie les feuilles de styles
|
99
|
-
|
96
|
+
FileUtils.cp_r("#{File.dirname(__FILE__)}/site/style/", "#{WORK_DIR}/")
|
100
97
|
# On copie les images
|
101
|
-
|
102
|
-
|
98
|
+
FileUtils.cp_r("#{File.dirname(__FILE__)}/site/images/", "#{WORK_DIR}/")
|
99
|
+
FileUtils.copy_file("#{File.dirname(__FILE__)}/site/images/continuous4r-logo.png", "#{WORK_DIR}/continuous4r-logo.png")
|
103
100
|
puts " Building project information page..."
|
104
|
-
|
101
|
+
Utils.erb_run "index", false
|
105
102
|
puts " Building team list page..."
|
106
|
-
|
103
|
+
Utils.erb_run "team-list", false
|
107
104
|
puts " Building project dependencies page..."
|
108
|
-
|
105
|
+
Utils.erb_run "dependencies", false
|
109
106
|
puts " Building source control management page..."
|
110
|
-
|
107
|
+
Utils.erb_run "scm-usage", false
|
111
108
|
puts " Building issue tracking page..."
|
112
|
-
|
109
|
+
Utils.erb_run "issue-tracking", false
|
113
110
|
puts " Building project reports page..."
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
eruby_run task['name']
|
119
|
-
end
|
120
|
-
rescue Exception => e
|
121
|
-
unless e.to_s == "no childs named 'task' found!"
|
122
|
-
raise e
|
123
|
-
end
|
111
|
+
Utils.erb_run "continuous4r-reports", false
|
112
|
+
tasks.each do |task|
|
113
|
+
puts " Building #{task} page..."
|
114
|
+
Utils.erb_run task, true
|
124
115
|
end
|
125
116
|
puts "\n BUILD SUCCESSFUL."
|
126
117
|
puts "====================================================================="
|
127
118
|
end
|
128
|
-
|
119
|
+
|
129
120
|
# Methode qui permet de construire une tache de nom donne
|
130
|
-
def self.build_task task, project_name,
|
131
|
-
|
132
|
-
#
|
133
|
-
|
134
|
-
|
135
|
-
when 'dcov'
|
136
|
-
# On verifie la presence de dcov
|
137
|
-
dcov_version = `gem list|grep dcov`
|
138
|
-
if dcov_version.empty?
|
139
|
-
if auto_install == "true"
|
140
|
-
puts " Installing dcov..."
|
141
|
-
dcov_installed = system("sudo gem install dcov")
|
142
|
-
if !dcov_installed
|
143
|
-
raise " Install for dcov failed with command 'sudo gem install dcov'\n BUILD FAILED."
|
144
|
-
end
|
145
|
-
else
|
146
|
-
raise " You don't seem to have dcov installed. You can install it with 'gem install dcov'.\n BUILD FAILED."
|
147
|
-
end
|
148
|
-
end
|
149
|
-
# On lance la generation
|
150
|
-
puts " Building dcov rdoc coverage report..."
|
151
|
-
dcov_pass = system("dcov -p #{task.params.pattern['value']}")
|
152
|
-
if !dcov_pass
|
153
|
-
raise " Execution of dcov failed with command 'dcov -p #{task.params.pattern['value']}'.\n BUILD FAILED."
|
154
|
-
end
|
155
|
-
# ==========================================================================
|
156
|
-
# Construction de la tache rcov (couverture des tests sur le code)
|
157
|
-
# ==========================================================================
|
158
|
-
when 'rcov'
|
159
|
-
# On verifie la presence de rcov
|
160
|
-
rcov_version = `gem list|grep rcov`
|
161
|
-
if rcov_version.empty?
|
162
|
-
if auto_install == "true"
|
163
|
-
puts " Installing rcov..."
|
164
|
-
rcov_installed = system("sudo gem install rcov")
|
165
|
-
if !rcov_installed
|
166
|
-
raise " Install for rcov failed with command 'sudo gem install rcov'\n BUILD FAILED."
|
167
|
-
end
|
168
|
-
else
|
169
|
-
raise " You don't seem to have rcov installed. You can install it with 'gem install rcov'.\n BUILD FAILED."
|
170
|
-
end
|
171
|
-
end
|
172
|
-
# On lance la generation
|
173
|
-
puts " Building rcov code coverage report..."
|
174
|
-
rcov_pass = system("rcov --rails --exclude rcov,rubyforge #{task.params.file['path']}")
|
175
|
-
if !rcov_pass
|
176
|
-
raise " Execution of rcov failed with command 'rcov --rails --exclude rcov,rubyforge #{task.params.file['path']}'.\n BUILD FAILED."
|
177
|
-
end
|
178
|
-
# On recupere le rapport genere
|
179
|
-
Dir.mkdir "#{WORK_DIR}/rcov"
|
180
|
-
`cp #{task.params.reports['path']}/* #{WORK_DIR}/rcov`
|
181
|
-
# ==========================================================================
|
182
|
-
# Construction de la tache rdoc (apidoc)
|
183
|
-
# ==========================================================================
|
184
|
-
when 'rdoc'
|
185
|
-
# On lance la generation
|
186
|
-
puts " Building rdoc api and rdoc generation report..."
|
187
|
-
File.delete("rdoc.log") if File.exist?("rdoc.log")
|
188
|
-
rdoc_pass = system("rake doc:reapp > rdoc.log")
|
189
|
-
if !rdoc_pass
|
190
|
-
raise " Execution of rdoc failed with command 'rake doc:reapp'.\n BUILD FAILED."
|
191
|
-
end
|
192
|
-
# On recupere la documentation et le fichier de log generes
|
193
|
-
Dir.mkdir "#{WORK_DIR}/rdoc"
|
194
|
-
`cp -R doc/app/ #{WORK_DIR}/rdoc`
|
195
|
-
`cp rdoc.log #{WORK_DIR}/rdoc`
|
196
|
-
# ==========================================================================
|
197
|
-
# Construction de la tache flog (complexite du code ruby)
|
198
|
-
# ==========================================================================
|
199
|
-
when 'flog'
|
200
|
-
# On verifie la presence de flog
|
201
|
-
flog_version = `gem list|grep flog`
|
202
|
-
if flog_version.empty?
|
203
|
-
if auto_install == "true"
|
204
|
-
puts " Installing flog..."
|
205
|
-
flog_installed = system("sudo gem install flog")
|
206
|
-
if !flog_installed
|
207
|
-
raise " Install for flog failed with command 'sudo gem install flog'\n BUILD FAILED."
|
208
|
-
end
|
209
|
-
else
|
210
|
-
raise " You don't seem to have flog installed. You can install it with 'gem install flog'.\n BUILD FAILED."
|
211
|
-
end
|
212
|
-
end
|
213
|
-
# On lance la generation
|
214
|
-
puts " Building flog code complexity analysis report..."
|
215
|
-
flog_pass = system("find app -name \\*.rb | xargs flog > flog.log")
|
216
|
-
if !flog_pass
|
217
|
-
raise " Execution of flog failed with command 'find app -name \\*.rb | xargs flog > flog.log'.\n BUILD FAILED."
|
218
|
-
end
|
219
|
-
# On recupere le fichier de log genere
|
220
|
-
Dir.mkdir "#{WORK_DIR}/flog"
|
221
|
-
`cp flog.log #{WORK_DIR}/flog`
|
222
|
-
# ==========================================================================
|
223
|
-
# Construction de la tache kwala (métriques et rapports de qualite ruby)
|
224
|
-
# ==========================================================================
|
225
|
-
when 'kwala'
|
226
|
-
# On verifie la presence de kwala
|
227
|
-
kwala_result = `kwala`
|
228
|
-
if kwala_result.empty?
|
229
|
-
raise " You don't seem to have kwala installed. please go first to http://kwala.rubyforge.org/."
|
230
|
-
end
|
231
|
-
# On lance la generation
|
232
|
-
puts " Building kwala code reports..."
|
233
|
-
actions = ""
|
234
|
-
task.params.actions.each('action') do |action|
|
235
|
-
actions = actions + " -a #{action.text}"
|
236
|
-
end
|
237
|
-
if actions.empty?
|
238
|
-
raise " You must specify at least one action for your kwala task."
|
239
|
-
end
|
240
|
-
kwala_pass = system("kwala -p #{project_name} -d . -o #{WORK_DIR}/kwala #{actions}")
|
241
|
-
if !kwala_pass
|
242
|
-
raise " Execution of kwala failed with command 'kwala -p #{project_name} -d . -o #{WORK_DIR}/kwala #{actions}'.\n BUILD FAILED."
|
243
|
-
end
|
244
|
-
# ==========================================================================
|
245
|
-
# Construction de la tache railroad (graphes modeles et controleurs)
|
246
|
-
# ==========================================================================
|
247
|
-
when 'railroad'
|
248
|
-
# On verifie la presence de railroad
|
249
|
-
railroad_version = `gem list|grep railroad`
|
250
|
-
if railroad_version.empty?
|
251
|
-
if auto_install == "true"
|
252
|
-
puts " Installing railroad..."
|
253
|
-
railroad_installed = system("sudo gem install railroad")
|
254
|
-
if !railroad_installed
|
255
|
-
raise " Install for railroad failed with command 'sudo gem install railroad'\n BUILD FAILED."
|
256
|
-
end
|
257
|
-
else
|
258
|
-
raise " You don't seem to have railroad installed. You can install it with 'gem install railroad'.\n BUILD FAILED."
|
259
|
-
end
|
260
|
-
end
|
261
|
-
# On lance la generation
|
262
|
-
puts " Building railroad graphs..."
|
263
|
-
if task.params.generate.text == "all" or task.params.generate.text == "models"
|
264
|
-
railroad_pass = system("railroad -i -a -M | dot -Tsvg > models.svg")
|
265
|
-
if !railroad_pass
|
266
|
-
raise " Execution of railroad failed with command 'railroad -i -a -M | dot -Tsvg > models.svg'.\n BUILD FAILED."
|
267
|
-
end
|
268
|
-
end
|
269
|
-
if task.params.generate.text == "all" or task.params.generate.text == "controllers"
|
270
|
-
railroad_pass = system("railroad -i -a -C | dot -Tsvg > controllers.svg")
|
271
|
-
if !railroad_pass
|
272
|
-
raise " Execution of railroad failed with command 'railroad -i -a -C | dot -Tsvg > controllers.svg'.\n BUILD FAILED."
|
273
|
-
end
|
274
|
-
end
|
275
|
-
# TODO Verifier tout ceci.
|
276
|
-
`for file in *.svg
|
277
|
-
do
|
278
|
-
/bin/mv $file $file.old
|
279
|
-
sed 's/font-size:14.00/font-size:11.00/g' < $file.old > $file
|
280
|
-
done
|
281
|
-
rm *.svg.old`
|
282
|
-
# On recupere les graphes generes
|
283
|
-
Dir.mkdir "#{WORK_DIR}/railroad"
|
284
|
-
`cp *.svg #{WORK_DIR}/railroad`
|
285
|
-
# ==========================================================================
|
286
|
-
# Construction de la tache stress (montee en charge de l'application)
|
287
|
-
# ==========================================================================
|
288
|
-
when 'httperf'
|
289
|
-
# On verifie la presence de httperf
|
290
|
-
httperf_version = `httperf --version`
|
291
|
-
if httperf_version.empty?
|
292
|
-
raise " You don't seem to have httperf installed. You can install it whith 'sudo apt-get install httperf', or go download it on http://www.hpl.hp.com/research/linux/httperf/."
|
293
|
-
end
|
294
|
-
# On verifie la presence de mongrel (on ne va pas stresser l'application
|
295
|
-
# avec webrick, tout de meme).
|
296
|
-
mongrel_version = `gem list|grep mongrel`
|
297
|
-
if mongrel_version.empty? or mongrel_version.match(/mongrel /).nil?
|
298
|
-
if auto_install == "true"
|
299
|
-
puts " Installing Mongrel..."
|
300
|
-
mongrel_installed = system("sudo gem install railroad")
|
301
|
-
if !mongrel_installed
|
302
|
-
raise " Install for Mongrel failed with command 'sudo gem install mongrel'\n BUILD FAILED."
|
303
|
-
end
|
304
|
-
else
|
305
|
-
raise " You don't seem to have mongrel installed. You can install it with 'gem install mongrel'.\n BUILD FAILED."
|
306
|
-
end
|
307
|
-
end
|
308
|
-
Dir.mkdir "#{WORK_DIR}/httperf"
|
309
|
-
# On demarre la ou les instances de mongrel
|
310
|
-
puts " Starting server instance(s) for application stressing..."
|
311
|
-
task.params.ports.each('port') do |port|
|
312
|
-
mongrel_start_log = `mongrel_rails start -e production -l #{WORK_DIR}/httperf/mongrel_#{port.text}.log -p #{port.text} -d -P log/mongrel_#{port.text}.pid`
|
313
|
-
if !mongrel_start_log.empty?
|
314
|
-
raise "BUILD FAILED."
|
315
|
-
end
|
316
|
-
end
|
317
|
-
fork { sleep(3) }
|
318
|
-
# On stresse l'application
|
319
|
-
if File.exist?("httperf.html")
|
320
|
-
File.delete("httperf.html")
|
321
|
-
end
|
322
|
-
task.params.processes.each('process') do |process|
|
323
|
-
params = ""
|
324
|
-
if !process['requests'].nil? and !process['requests'].empty?
|
325
|
-
params = params + " --num-conns=#{process['requests']}"
|
326
|
-
end
|
327
|
-
if !process['sessions'].nil? and !process['sessions'].empty?
|
328
|
-
params = params + " --wsess=#{process['sessions']}"
|
329
|
-
end
|
330
|
-
if !process['rate'].nil? and !process['rate'].empty?
|
331
|
-
params = params + " --rate=#{process['rate']}"
|
332
|
-
end
|
333
|
-
if !process['timeout'].nil? and !process['timeout'].empty?
|
334
|
-
params = params + " --timeout=#{process['timeout']}"
|
335
|
-
end
|
336
|
-
httperf_results = `httperf --port #{process['port']} --server 127.0.0.1 --uri #{process['url']}#{params}`
|
337
|
-
h = File.open("httperf.html", "a")
|
338
|
-
h.write(HttperfFormatter.new(httperf_results, process.description.text).to_html)
|
339
|
-
h.close
|
340
|
-
end
|
341
|
-
# On arrete la ou les instances de mongrel
|
342
|
-
puts "\n Stopping server instance(s)..."
|
343
|
-
task.params.ports.each('port') do |port|
|
344
|
-
puts `mongrel_rails stop -P log/mongrel_#{port.text}.pid`
|
345
|
-
end
|
346
|
-
# ==========================================================================
|
347
|
-
# Construction de la tache heckle (eprouvage des tests)
|
348
|
-
# ==========================================================================
|
349
|
-
when 'heckle'
|
350
|
-
# On verifie la presence de heckle
|
351
|
-
heckle_result = `heckle`
|
352
|
-
if heckle_result.empty?
|
353
|
-
if auto_install == "true"
|
354
|
-
puts " Installing heckle..."
|
355
|
-
heckle_installed = system("sudo gem install heckle")
|
356
|
-
if !heckle_installed
|
357
|
-
raise " Install for heckle failed with command 'sudo gem install heckle'\n BUILD FAILED."
|
358
|
-
end
|
359
|
-
else
|
360
|
-
raise " You don't seem to have heckle installed. You can install it with 'gem install heckle'.\n BUILD FAILED."
|
361
|
-
end
|
362
|
-
end
|
363
|
-
# On lance la generation
|
364
|
-
puts " Building heckle reports..."
|
365
|
-
heckle_report = File.open("heckle.html", "w")
|
366
|
-
heckle_report.write(HeckleFormatter.new(task.params).to_html)
|
367
|
-
heckle_report.close
|
368
|
-
# ==========================================================================
|
369
|
-
# Construction de la tache stats (statistiques code Ruby)
|
370
|
-
# ==========================================================================
|
371
|
-
when 'stats'
|
372
|
-
# On lance la generation
|
373
|
-
puts " Building stats report..."
|
374
|
-
stats_result = `rake stats`
|
375
|
-
stats_report = File.open("stats.html", "w")
|
376
|
-
stats_report.write(StatsFormatter.new(stats_result).to_html)
|
377
|
-
stats_report.close
|
378
|
-
# ==========================================================================
|
379
|
-
# Construction de la tache tests (tests unitaires, toutes categories)
|
380
|
-
# ==========================================================================
|
381
|
-
when 'tests'
|
382
|
-
# On lance la generation
|
383
|
-
puts " Building tests report..."
|
384
|
-
if File.exist?("tests.html")
|
385
|
-
File.delete("tests.html")
|
386
|
-
end
|
387
|
-
tests_report = File.open("tests.html", "a")
|
388
|
-
tests_report.write(TestsFormatter.new(task.params).to_html)
|
389
|
-
tests_report.close
|
390
|
-
# ==========================================================================
|
391
|
-
# Construction de la tache zentest (manques dans les tests unitaires)
|
392
|
-
# ==========================================================================
|
393
|
-
when 'zentest'
|
394
|
-
# On vérifie la presence de ZenTest
|
395
|
-
zentest_result = `zentest`
|
396
|
-
if zentest_result.empty?
|
397
|
-
if auto_install == "true"
|
398
|
-
puts " Installing ZenTest..."
|
399
|
-
zentest_installed = system("sudo gem install ZenTest")
|
400
|
-
if !zentest_installed
|
401
|
-
raise " Install for ZenTest failed with command 'sudo gem install ZenTest'.\n BUILD FAILED."
|
402
|
-
end
|
403
|
-
else
|
404
|
-
raise " You don't seem to have ZenTest installed. You can install it with 'gem install ZenTest'.\n BUILD FAILED."
|
405
|
-
end
|
406
|
-
end
|
407
|
-
# On lance la generation
|
408
|
-
puts " Building ZenTest report..."
|
409
|
-
zentest_report = File.open("zentest.html", "w")
|
410
|
-
zentest_report.write(ZenTestFormatter.new(task.params).to_html)
|
411
|
-
zentest_report.close
|
412
|
-
# ==========================================================================
|
413
|
-
# Construction de la tache capistrano (logs des deploiements effectues)
|
414
|
-
# ==========================================================================
|
415
|
-
when 'capistrano'
|
416
|
-
# On vérifie la presence de Capistrano
|
417
|
-
cap_result = `cap --version`
|
418
|
-
if cap_result.empty?
|
419
|
-
raise " You don't seem to have Capistrano installed. You can install it with 'gem install capistrano'."
|
420
|
-
end
|
421
|
-
# On lance la generation
|
422
|
-
puts " Building Capistrano log report..."
|
423
|
-
capistrano_report = File.open("capistrano.html", "w")
|
424
|
-
task.params.each('runner') do |runner|
|
425
|
-
if File.exist?("capistrano.log")
|
426
|
-
File.delete("capistrano.log")
|
427
|
-
end
|
428
|
-
capistrano_pass = system("cap #{runner['task']} 2> capistrano.log")
|
429
|
-
if !capistrano_pass
|
430
|
-
capistrano_report.close
|
431
|
-
raise(" Capistrano deployment with command \'cap #{runner['task']}\' did not pass.\n BUILD FAILED.")
|
432
|
-
else
|
433
|
-
capistrano_report.write(CapistranoFormatter.new(runner['task'],File.read("capistrano.log")).to_html)
|
434
|
-
end
|
435
|
-
end
|
436
|
-
capistrano_report.close
|
437
|
-
# ===========================================================================
|
438
|
-
# Construction de la tache changelog (changements du referentiel de sources)
|
439
|
-
# ===========================================================================
|
440
|
-
when 'changelog'
|
441
|
-
unless scm.repository_type.text == "svn"
|
442
|
-
raise " Only Subversion is supported at the moment. You need to deactivate the 'changelog' task.\n BUILD FAILED."
|
443
|
-
end
|
444
|
-
# On verifie l'existence de Subversion
|
445
|
-
svn_version = `svn --version`
|
446
|
-
if svn_version.empty?
|
447
|
-
raise " Subversion don't seem to be installed. Go see Subversion website on http://subversion.tigris.org.\n BUILD FAILED"
|
448
|
-
end
|
449
|
-
# Gestion de la derniere version
|
450
|
-
# 1 - On verifie le repertoire home/continuous4r
|
451
|
-
unless File.exist?(ENV["HOME"] + "/.continuous4r")
|
452
|
-
Dir.mkdir(ENV["HOME"] + "/.continuous4r")
|
453
|
-
end
|
454
|
-
# 2 - On verifie le numero de version
|
455
|
-
scm_current_version = scm['min_revision']
|
456
|
-
scm_current_version ||= "1"
|
457
|
-
scm_last_version = 1
|
458
|
-
if File.exist?(ENV["HOME"] + "/.continuous4r/#{project_name}_#{scm.repository_type.text}.version")
|
459
|
-
scm_current_version = File.read(ENV["HOME"] + "/.continuous4r/#{project_name}_#{scm.repository_type.text}.version")
|
460
|
-
end
|
461
|
-
# 3 - On extrait les informations du referentiel
|
462
|
-
case scm.repository_type.text
|
463
|
-
when "svn"
|
464
|
-
scm_last_version = SubversionExtractor.extract_changelog(scm_current_version.to_i,scm,"changelog.html")
|
465
|
-
end
|
466
|
-
# 4 - On ecrit le nouveau numero de revision
|
467
|
-
rev_file = File.open(ENV["HOME"] + "/.continuous4r/#{project_name}_#{scm.repository_type.text}.version","w")
|
468
|
-
rev_file.write(scm_last_version)
|
469
|
-
rev_file.close
|
470
|
-
else
|
471
|
-
raise " Don't know how to build '#{task['name']}' task."
|
472
|
-
end
|
473
|
-
end
|
474
|
-
|
475
|
-
# Methode qui permet de construire une page avec eruby, et de lever une exception au besoin
|
476
|
-
def self.eruby_run page
|
477
|
-
command = "eruby #{File.dirname(__FILE__)}/site/header.rhtml >> #{WORK_DIR}/#{page}.html"
|
478
|
-
if !system(command)
|
479
|
-
raise "BUILD FAILED."
|
480
|
-
end
|
481
|
-
command = "eruby #{File.dirname(__FILE__)}/site/menu-#{page}.rhtml >> #{WORK_DIR}/#{page}.html"
|
482
|
-
if !system(command)
|
483
|
-
raise "BUILD FAILED."
|
484
|
-
end
|
485
|
-
command = "eruby #{File.dirname(__FILE__)}/site/body-#{page}.rhtml >> #{WORK_DIR}/#{page}.html"
|
486
|
-
if !system(command)
|
487
|
-
raise "BUILD FAILED."
|
488
|
-
end
|
121
|
+
def self.build_task task, project_name, auto_install, proxy_option
|
122
|
+
require "#{task}_builder.rb"
|
123
|
+
task_class = Object.const_get("#{task.capitalize}Builder")
|
124
|
+
task_builder = task_class.new
|
125
|
+
task_builder.build(project_name, auto_install, proxy_option)
|
489
126
|
end
|
490
127
|
end
|