-
-
Notifications
You must be signed in to change notification settings - Fork 11
Expand file tree
/
Copy pathRakefile
More file actions
134 lines (117 loc) · 3.39 KB
/
Rakefile
File metadata and controls
134 lines (117 loc) · 3.39 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
# frozen_string_literal: true
require 'rspec/core/rake_task'
begin
require 'voxpupuli/rubocop/rake'
rescue LoadError
# the voxpupuli-rubocop gem is optional
end
RSpec::Core::RakeTask.new(:spec) do |spec|
spec.pattern = FileList['spec/**/*_spec.rb']
end
# Also make spec part of the default task
task default: [:spec]
###########################################################
#
# Documentation Tasks
#
###########################################################
DOCS_DAEMON = 'yard server --reload --daemon --server thin'
FOREGROUND_SERVER = 'bundle exec yard server --reload --verbose --server thin lib/beaker'
def running?(cmdline)
ps = `ps -ef`
found = ps.lines.grep(/#{Regexp.quote(cmdline)}/)
raise StandardError, "Found multiple YARD Servers. Don't know what to do." if found.length > 1
yes = !found.empty?
[yes, found.first]
end
def pid_from(output)
output.squeeze(' ').strip.split[1]
end
desc 'Start the documentation server in the foreground'
task docs: 'docs:clear' do
original_dir = Dir.pwd
Dir.chdir(__dir__)
sh FOREGROUND_SERVER
Dir.chdir(original_dir)
end
namespace :docs do
desc 'Clear the generated documentation cache'
task :clear do
original_dir = Dir.pwd
Dir.chdir(__dir__)
sh 'rm -rf docs'
Dir.chdir(original_dir)
end
desc 'Generate static documentation'
task gen: 'docs:clear' do
original_dir = Dir.pwd
Dir.chdir(__dir__)
output = `bundle exec yard doc`
puts output
raise 'Errors/Warnings during yard documentation generation' if /\[warn\]|\[error\]/.match?(output)
Dir.chdir(original_dir)
end
desc 'Run the documentation server in the background, alias `bg`'
task background: 'docs:clear' do
yes, output = running?(DOCS_DAEMON)
if yes
puts 'Not starting a new YARD Server...'
puts "Found one running with pid #{pid_from(output)}."
else
original_dir = Dir.pwd
Dir.chdir(__dir__)
sh "bundle exec #{DOCS_DAEMON}"
Dir.chdir(original_dir)
end
end
desc 'Alias for `background`'
task(:bg) { Rake::Task['docs:background'].invoke }
desc 'Check the status of the documentation server'
task :status do
yes, output = running?(DOCS_DAEMON)
if yes
pid = pid_from(output)
puts "Found a YARD Server running with pid #{pid}"
else
puts 'Could not find a running YARD Server.'
end
end
desc 'Stop a running YARD Server'
task :stop do
yes, output = running?(DOCS_DAEMON)
if yes
pid = pid_from(output)
puts "Found a YARD Server running with pid #{pid}"
`kill #{pid}`
puts 'Stopping...'
yes, = running?(DOCS_DAEMON)
if yes
`kill -9 #{pid}`
yes, = running?(DOCS_DAEMON)
if yes
puts 'Could not Stop Server!'
else
puts 'Server stopped.'
end
else
puts 'Server stopped.'
end
else
puts 'Could not find a running YARD Server'
end
end
end
begin
require 'rubygems'
require 'github_changelog_generator/task'
rescue LoadError
# the github_changelog_generator gem is optional
else
GitHubChangelogGenerator::RakeTask.new :changelog do |config|
config.exclude_labels = %w[duplicate question invalid wontfix wont-fix skip-changelog]
config.user = 'voxpupuli'
config.project = 'beaker-google'
gem_version = Gem::Specification.load("#{config.project}.gemspec").version
config.future_release = gem_version
end
end