-
-
Notifications
You must be signed in to change notification settings - Fork 12
/
Rakefile
127 lines (112 loc) · 3.23 KB
/
Rakefile
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
# frozen_string_literal: true
require 'rspec/core/rake_task'
begin
require 'voxpupuli/rubocop/rake'
rescue LoadError
# the voxpupuli-rubocop gem is optional
end
###########################################################
#
# 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