Is there a reason not to use agenda.py for this?

- Aidan

On Thu, Oct 8, 2009 at 8:44 AM,  <ritch...@apache.org> wrote:
> Author: ritchiem
> Date: Thu Oct  8 12:44:31 2009
> New Revision: 823151
>
> URL: http://svn.apache.org/viewvc?rev=823151&view=rev
> Log:
> Added changeLogToWiki.py that just gives you the change log in wiki format. 
> It defaults to trunk/java but can take any SVN url via the -s option
>
> Added:
>    qpid/trunk/qpid/review/changeLogToWiki.py   (with props)
>
> Added: qpid/trunk/qpid/review/changeLogToWiki.py
> URL: 
> http://svn.apache.org/viewvc/qpid/trunk/qpid/review/changeLogToWiki.py?rev=823151&view=auto
> ==============================================================================
> --- qpid/trunk/qpid/review/changeLogToWiki.py (added)
> +++ qpid/trunk/qpid/review/changeLogToWiki.py Thu Oct  8 12:44:31 2009
> @@ -0,0 +1,85 @@
> +#!/usr/bin/env python
> +#
> +#
> +# 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.
> +
> +import sys, re
> +from popen2 import popen2, popen3
> +from optparse import OptionParser
> +from xml.dom.minidom import parse, parseString
> +
> +prereqs = ["tr", "svn", "xsltproc", "sed", "grep", "wget"]
> +
> +apacheSVN="https://svn.apache.org/repos/asf/qpid/trunk/qpid/java";
> +
> +svncmd = "svn log %s --xml -r %s:HEAD | tr '\\n\\r|' '  -' | xsltproc 
> svnlog2wiki.xsl - | grep r | sed -e 's/^ *//' | sed -e 
> 's/\\(QPID-[0-9]*\\)/\\[\\1 | 
> https:\\/\\/issues.apache.org\\/jira\\/browse\\/\\1 \]/g'"
> +
> +
> +def get_commits(revision):
> +    (stdout, stdin) = popen2(svncmd % (options.repo,revision))
> +    return add_jira_status(stdout.read())
> +
> +def add_jira_status(commits):
> +    commit_lines = commits.split("\n")
> +    new_commits = []
> +    for commit in commit_lines:
> +        if re.match(".*https://issues.apache.org/.*";, commit):
> +            jira = re.findall("QPID-[0-9]*", commit)[0]
> +            jira_xml_url = 
> "http://issues.apache.org/jira/si/jira.issueviews:issue-xml/%s/%s.xml"; % 
> (jira, jira)
> +            (stdout, stdin) = popen2("wget -q -O - %s" % jira_xml_url)
> +
> +            jira_dom = parse(stdout)
> +            status = jira_dom.getElementsByTagName("status")[0]
> +            new_commits.append("%s %s | " % (commit, status.lastChild.data))
> +        else:
> +            new_commits.append(commit)
> +
> +    return "\n".join(new_commits)
> +
> +
> +def main():
> +    global options
> +    parser = OptionParser()
> +    parser.add_option("-r", "--revision", dest="revision", action="store",
> +                      type="string",
> +                      help="The first revision to generate logs for")
> +
> +    parser.add_option("-s", "--svn-repo", dest="repo", action="store",
> +                      default=apacheSVN,
> +                     type="string",
> +                      help="Provide a svn repository to process")
> +
> +
> +    (options, args) = parser.parse_args()
> +
> +    # Check that we have what's necessary
> +
> +    notfound = re.compile('^which')
> +    for cmd in prereqs:
> +        (stdout, stdin, stderr) = popen3('which %s' % cmd)
> +        if (notfound.match(stderr.read())):
> +            parser.error ("Could not find command %s, try [apt-get|yum] 
> install %s" %
> +                          (cmd, cmd))
> +
> +    if (options.revision == None):
> +        parser.error("svn revision must be specified")
> +
> +    print(get_commits(options.revision))
> +
> +if __name__ == "__main__":
> +    main()
>
> Propchange: qpid/trunk/qpid/review/changeLogToWiki.py
> ------------------------------------------------------------------------------
>    svn:executable = *
>
>
>
> ---------------------------------------------------------------------
> Apache Qpid - AMQP Messaging Implementation
> Project:      http://qpid.apache.org
> Use/Interact: mailto:commits-subscr...@qpid.apache.org
>
>



-- 
Apache Qpid - AMQP, JMS, other messaging love http://qpid.apache.org
"A witty saying proves nothing" - Voltaire

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscr...@qpid.apache.org

Reply via email to