forked from monora/rgl
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRakefile
More file actions
135 lines (108 loc) · 3.23 KB
/
Copy pathRakefile
File metadata and controls
135 lines (108 loc) · 3.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# -*- ruby -*-
require 'rubygems'
require 'bundler/setup'
require 'rubygems/package_task'
require 'rake/testtask'
require 'rdoc/task'
require 'yard'
$:.unshift File.join(File.dirname(__FILE__), 'lib')
require 'rgl/base' # require base module to get RGL_VERSION
SUMMARY = "Ruby Graph Library"
SOURCES = FileList['lib/**/*.rb']
RDOC_DIR = './rgl'
# The location for published documents to be copied.
remote_user = ENV['REMOTE_USER'] || ''
remote_host = ENV['REMOTE_HOST'] || 'rubyforge.org'
remote_path = ENV['REMOTE_PATH'] || '/var/www/gforge-projects/rgl'
remote_path += '/' unless remote_path[-1, 1] == '/'
REMOTE_RDOC_DIR = remote_path
REMOTE_RDOC_DIR.insert(
0,
remote_user + (remote_user.empty? ? '' : '@') + remote_host + ':'
) unless remote_host.empty?
# The default task is run if rake is given no explicit arguments.
desc "Default Task"
task :default => :test
# Define a test task.
Rake::TestTask.new do |t|
t.libs << 'test'
t.pattern = 'test/*_test.rb'
t.verbose = true
end
begin
require 'rcov/rcovtask'
desc "Calculate code coverage with rcov"
Rcov::RcovTask.new(:rcov) do |t|
t.libs << 'test'
t.pattern = 'test/*_test.rb'
t.verbose = true
t.rcov_opts += ['--exclude', 'test/,gems/']
end
rescue LoadError
nil # rcov is available only on Ruby 1.8
end
# Git tagging
desc "Commit all changes as a new version commit. Tag the commit with v<version> tag"
task :tag do
puts "Committing and tagging version #{RGL_VERSION}"
`git commit -am 'Version #{RGL_VERSION}'`
`git tag 'v#{RGL_VERSION}'`
end
# Tasks for generating docs.
Rake::RDocTask.new("rdoc") do |rdoc|
rdoc.rdoc_dir = RDOC_DIR
rdoc.template = 'doc/jamis.rb'
rdoc.title = SUMMARY
rdoc.options << '--line-numbers' << '--inline-source' << '--main' << 'README.rdoc'
rdoc.rdoc_files.include(SOURCES, 'README.rdoc', 'ChangeLog', 'examples/examples.rb', 'rakelib/*.rake')
end
YARD::Rake::YardocTask.new
# Tasks for building and installing RGL gem.
Bundler::GemHelper.install_tasks
# TAGS ---------------------------------------------------------------
file 'tags' => SOURCES do
print "Running ctags..."
sh %{ctags #{SOURCES.join(' ')}} # vi tags
puts "done."
end
file 'TAGS' => SOURCES do
sh %{etags #{SOURCES.join(' ')}} # emacs TAGS
end
# Misc tasks =========================================================
def count_lines(filename)
lines = 0
codelines = 0
open(filename) { |f|
f.each do |line|
lines += 1
next if line =~ /^\s*$/
next if line =~ /^\s*#/
codelines += 1
end
}
[lines, codelines]
end
def show_line(msg, lines, loc)
printf "%6s %6s %s\n", lines.to_s, loc.to_s, msg
end
desc "Count lines in the main files"
task :lines do
total_lines = 0
total_code = 0
show_line("File Name", "LINES", "LOC")
SOURCES.each do |fn|
lines, codelines = count_lines(fn)
show_line(fn, lines, codelines)
total_lines += lines
total_code += codelines
end
show_line("TOTAL", total_lines, total_code)
end
desc "Copy rdoc html to rubyforge"
task :rdoc2rf => [:rdoc, :rcov] do
cp_r 'coverage', RDOC_DIR
examples = File.join(RDOC_DIR, 'examples')
mkdir_p examples
cp Dir.glob('examples/*.jpg'), examples
sh "rsync -r --delete \"#{RDOC_DIR}\" \"#{REMOTE_RDOC_DIR}\""
end