From 6781dd75bb5ea90a6ba91a81b95b4c67cb6f9641 Mon Sep 17 00:00:00 2001 From: "James E. Blair" <jeblair@openstack.org> Date: Tue, 18 Jun 2013 15:24:09 -0700 Subject: [PATCH] Add simple script to make an index page. Change-Id: I2e8cb84fd26a9e45f9d6cbf42682e6b94d207413 --- .gitignore | 1 + README.rst | 18 ++++++++++++ index.html | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ make-index | 75 +++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 180 insertions(+) create mode 100644 .gitignore create mode 100644 README.rst create mode 100644 index.html create mode 100755 make-index diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..53752db --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +output diff --git a/README.rst b/README.rst new file mode 100644 index 0000000..7380870 --- /dev/null +++ b/README.rst @@ -0,0 +1,18 @@ +Publications Repository +======================= + +Each publication should get its own branch and is a living document. +Each branch should have a README.rst file where the first line is the +title of the presentation. + +Each time a publication is presented or published, the branch should +be tagged (with a signed, annotated tag). The first line of the tag +message should be the title of the event or publication. For example, +if the presentation "overview" was given at LCA 2013, you might tag it +with: + + git tag -s -m "linux.conf.au, 2013" overview + +The 'make-index' script will create an index page based on index.html, +and all current branches and tags in the repo and their README.rst +files. diff --git a/index.html b/index.html new file mode 100644 index 0000000..d14d6a8 --- /dev/null +++ b/index.html @@ -0,0 +1,86 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" +"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> + +<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> + <head> + <title>OpenStack Project Infrastructure Publications</title> + <!-- Google Fonts --> + <link + href="http://fonts.googleapis.com/css?family=PT+Sans&subset=latin" + rel="stylesheet" type="text/css" /> + <!-- Framework CSS --> + <link rel="stylesheet" + href="http://openstack.org/themes/openstack/css/blueprint/screen.css" + type="text/css" media="screen, projection" /> + <link rel="stylesheet" + href="http://openstack.org/themes/openstack/css/blueprint/print.css" + type="text/css" media="print" /> + <!--[if lt IE 8]><link rel="stylesheet" href="http://openstack.org/themes/openstack/css/blueprint/ie.css" type="text/css" media="screen, projection"><![endif]--> + <!-- OpenStack Specific CSS --> + <link rel="stylesheet" + href="http://openstack.org/themes/openstack/css/main.css" + type="text/css" media="screen, projection, print" /> + </head> + <body> + <div class="container"> + <div id="header"> + <div class="span-5"> + <h1 id="logo"><a href="/">OpenStack</a></h1> + </div> + <div class="span-19 last blueLine"> + <div id="navigation" class="span-19"> + <ul id="Menu1"> + <li><a href="http://www.openstack.org/" + title="Go to the OpenStack Home page" + >Home</a></li> + <li><a + href="http://www.openstack.org/software/" + title="About OpenStack" + class="link">About</a></li> + <li><a + href="http://www.openstack.org/user-stories/" + title="Read stories about companies that use OpenStack to get work done." + class="link">User Stories</a></li> + <li><a + href="http://www.openstack.org/community/" + title="Go to the OpenStack Community page" + class="link">Community</a></li> + <li><a + href="http://www.openstack.org/profile/" + title="Edit your OpenStack community profile" + class="link">Profile</a></li> + <li><a + href="http://www.openstack.org/blog/" + title="Go to the OpenStack Blog" + >Blog</a></li> + <li><a href="http://wiki.openstack.org/" + title="Go to the OpenStack Wiki" + >Wiki</a></li> + <li><a + href="http://docs.openstack.org/glossary/content/glossary.html" + title="See definitions of OpenStack terms" + >Glossary</a></li> + <li><a href="http://docs.openstack.org/" + title="Go to the OpenStack Documentation" + class="current" + >Documentation</a></li> + </ul> + </div> + </div> + </div> + </div> + <!-- Page Content --> + <div class="container"> + <h1>OpenStack Project Infrastructure Publications</h3> + </div> + <div class="container"> + <h2>Current Publications</h2> + {current} + </div> + <br/> + <div class="container"> + <h2>Previous Publications</h2> + {previous} + </div> + </body> +</html> diff --git a/make-index b/make-index new file mode 100755 index 0000000..5132396 --- /dev/null +++ b/make-index @@ -0,0 +1,75 @@ +#!/usr/bin/env python + +# Copyright 2013 OpenStack Foundation +# +# Licensed 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 os +import subprocess + +def run_local(cmd, cwd='.', env={}): + print "Running:", cmd + newenv = os.environ + newenv.update(env) + p = subprocess.Popen(cmd, stdout=subprocess.PIPE, cwd=cwd, + stderr=subprocess.STDOUT, env=newenv) + (out, nothing) = p.communicate() + return (p.returncode, out.strip()) + +def git_branches(): + branches = [] + r, branch_list = run_local(['git', 'branch', '-a']) + for branch in branch_list.split("\n"): + branch = branch.strip() + if not branch.startswith('remotes/origin'): + continue + branches.append(branch) + return branches + +def git_tags(): + r, tag_list = run_local(['git', 'tag', '-n']) + return tag_list.split('\n') + +current = '' +previous = '' + +for branch in git_branches(): + if branch.startswith('remotes/origin/master'): + continue + if branch.startswith('remotes/origin/HEAD'): + continue + if '->' in branch: + continue + r,o = run_local(['git', 'show', branch+':README.rst']) + if not r: + title = o.split('\n')[0] + name = branch[len('remotes/origin/'):] + print "Adding branch %s: %s" % (name, title) + current += '<a href="%s/">%s</a><br/>\n' % (name, title) + + +for tagline in git_tags(): + tag, tag_title = [x.strip() for x in tagline.split(' ', 1)] + r,o = run_local(['git', 'show', tag+':README.rst']) + if not r: + title = o.split('\n')[0] + print "Adding tag %s: %s: %s" % (tag, tag_title, title) + previous += '<a href="%s/">%s: %s</a><br/>\n' % (tag, tag_title, title) + + +if not os.path.exists('output'): + os.mkdir('output') + +out = open('output/index.html', 'w') +out.write(open('index.html').read().format(current=current, previous=previous)) +out.close()