69 lines
1.8 KiB
Ruby
69 lines
1.8 KiB
Ruby
require "time"
|
|
|
|
desc "Build the manual"
|
|
task :man do
|
|
ENV['RONN_MANUAL'] = "Foreman Manual"
|
|
ENV['RONN_ORGANIZATION'] = "Foreman #{Foreman::VERSION}"
|
|
sh "ronn -w -s toc -r5 --markdown man/*.ronn"
|
|
end
|
|
|
|
desc "Commit the manual to git"
|
|
task "man:commit" => :man do
|
|
sh "git add README.md"
|
|
sh "git commit -am 'update docs' || echo 'nothing to commit'"
|
|
end
|
|
|
|
desc "Generate the Github docs"
|
|
task :pages => "man:commit" do
|
|
sh %{
|
|
cp man/foreman.1.html /tmp/foreman.1.html
|
|
git checkout gh-pages
|
|
rm ./index.html
|
|
cp /tmp/foreman.1.html ./index.html
|
|
git add -u index.html
|
|
git commit -m "saving man page to github docs"
|
|
git push origin -f gh-pages
|
|
git checkout master
|
|
}
|
|
end
|
|
|
|
desc "Generate an authors list"
|
|
task :authors do
|
|
authors = %x{ git log --pretty=format:"%an" | sort -u }.split("\n")
|
|
puts authors.join(", ")
|
|
readme = File.read("README.md")
|
|
readme.gsub!(/#### Patches contributed by\n([^\n]*)\n/m, "#### Patches contributes by\n#{authors.join(", ")}\n")
|
|
File.open("README.md", "w") { |f| f.print readme }
|
|
end
|
|
|
|
def latest_release
|
|
latest = File.read("Changelog.md").split("\n").first.split(" ")[1]
|
|
end
|
|
|
|
def newer_release
|
|
tags = %x{ git tag --contains v#{latest_release} }.split("\n").sort_by do |tag|
|
|
Gem::Version.new(tag[1..-1])
|
|
end
|
|
tags.reject { |tag| Gem::Version.new(tag[1..-1]).prerelease? }[1]
|
|
end
|
|
|
|
desc "Generate a Changelog"
|
|
task :changelog do
|
|
while release = newer_release
|
|
entry = %x{ git show --format="%cd" #{release} | head -n 1 }
|
|
date = Time.parse(entry.chomp).strftime("%Y-%m-%d")
|
|
|
|
message = "## #{release[1..-1]} (#{date})\n\n"
|
|
message += %x{ git log --format="* %s [%an]" v#{latest_release}..#{release} }
|
|
|
|
changelog = File.read("Changelog.md")
|
|
changelog = message + "\n" + changelog
|
|
|
|
puts release
|
|
|
|
File.open("Changelog.md", "w") do |file|
|
|
file.print changelog
|
|
end
|
|
end
|
|
end
|