forked from voxpupuli/beaker-google
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRakefile
More file actions
117 lines (104 loc) · 3.04 KB
/
Rakefile
File metadata and controls
117 lines (104 loc) · 3.04 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
require 'rspec/core/rake_task'
###########################################################
#
# 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? ? false : true
[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 output =~ /\[warn\]|\[error\]/
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
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, output = running?(DOCS_DAEMON)
if yes
`kill -9 #{pid}`
yes, output = 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
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