diff options
Diffstat (limited to 'tools/examples/svnlog2html.rb')
-rwxr-xr-x | tools/examples/svnlog2html.rb | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/tools/examples/svnlog2html.rb b/tools/examples/svnlog2html.rb new file mode 100755 index 0000000..a7571cc --- /dev/null +++ b/tools/examples/svnlog2html.rb @@ -0,0 +1,139 @@ +#!/usr/bin/env ruby + +# +###################################################################### +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +###################################################################### +# + +require "erb" +require "svn/client" + +include ERB::Util + +path = File.expand_path(ARGV.shift || Dir.pwd) + +html = <<-HEADER +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE html + PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> + <style type="text/css"> +div.entry +{ + border: 1px solid red; + border-width: 1px 0 0 1px; + margin: 2em 2em 2em 3em; + padding: 0 2em; +} + +pre.message +{ + border-left: 1px solid red; + margin: 1em 2em; + padding-left: 1em; +} + +div.info +{ + text-align: right; +} + +span.info +{ + border-bottom: 1px solid red; + padding: 0 5px 1px 1em; +} + +span.author +{ + font-style: italic; +} + +span.date +{ + color: #999; +} + +li.action-A +{ + color: blue; +} + +li.action-M +{ + color: green; +} + +li.action-D +{ + color: red; + text-decoration: line-through; +} + </style> + <title>#{h path}</title> +</head> +<body> +<h1>#{h path}</h1> +HEADER + +ctx = Svn::Client::Context.new +ctx.log(path, "HEAD", 0, 40, true, true) do + |changed_paths, rev, author, date, message| + + html << <<-ENTRY_HEADER + +<div class="entry"> + <h2>r#{h rev}</h2> + <pre class="message">#{h message}</pre> + <div class="info"> + <span class="info"> + by <span class="author">#{h author}</span> + at <span class="date">#{date}</span> + </span> + </div> + <div class="changed-path"> +ENTRY_HEADER + + changed_paths.sort.each do |path, changed_path| + action = changed_path.action + html << <<-ENTRY_PATH + <ul> + <li class="action-#{h action}"> + <span class="action">#{h action}</span>: + <span class="changed-path">#{h path}</span> + </li> + </ul> +ENTRY_PATH + end + + html << <<-ENTRY_FOOTER + </div> +</div> + +ENTRY_FOOTER +end + +html << <<-FOOTER +</body> +</html> +FOOTER + +puts html |