Add $GIT_VERSION to the spec which is replaced by the gendoc script.

pull/977/head
Kegan Dougal 10 years ago
parent df448df813
commit 4b0e858529

@ -1,20 +1,81 @@
#! /usr/bin/env python #! /usr/bin/env python
from docutils.core import publish_file from docutils.core import publish_file
import fileinput
import glob import glob
import os import os
import shutil import shutil
import subprocess
import sys import sys
stylesheets = { stylesheets = {
"stylesheet_path": ["basic.css", "nature.css"] "stylesheet_path": ["basic.css", "nature.css"]
} }
def get_git_ver_string():
null = open(os.devnull, 'w')
cwd = os.path.dirname(os.path.abspath(__file__))
try:
git_branch = subprocess.check_output(
['git', 'rev-parse', '--abbrev-ref', 'HEAD'],
stderr=null,
cwd=cwd,
).strip()
except subprocess.CalledProcessError:
git_branch = ""
try:
git_tag = subprocess.check_output(
['git', 'describe', '--exact-match'],
stderr=null,
cwd=cwd,
).strip()
git_tag = "tag=" + git_tag
except subprocess.CalledProcessError:
git_tag = ""
try:
git_commit = subprocess.check_output(
['git', 'rev-parse', '--short', 'HEAD'],
stderr=null,
cwd=cwd,
).strip()
except subprocess.CalledProcessError:
git_commit = ""
try:
dirty_string = "-this_is_a_dirty_checkout"
is_dirty = subprocess.check_output(
['git', 'describe', '--dirty=' + dirty_string, "--all"],
stderr=null,
cwd=cwd,
).strip().endswith(dirty_string)
git_dirty = "dirty" if is_dirty else ""
except subprocess.CalledProcessError:
git_dirty = ""
if git_branch or git_tag or git_commit or git_dirty:
git_version = ",".join(
s for s in
(git_branch, git_tag, git_commit, git_dirty,)
if s
)
return git_version.encode("ascii")
return "Unknown rev"
def glob_spec(out_file_name): def glob_spec(out_file_name):
with open(out_file_name, "wb") as outfile: with open(out_file_name, "wb") as outfile:
for f in sorted(glob.glob("../specification/*.rst")): for f in sorted(glob.glob("../specification/*.rst")):
with open(f, "rb") as infile: with open(f, "rb") as infile:
outfile.write(infile.read()) outfile.write(infile.read())
def set_git_version(filename):
git_ver = get_git_ver_string()
# inplace search and replace, stdout is redirected to the output
# file, hence the "print" lines here.
for line in fileinput.input(filename, inplace=True):
if "$GIT_VERSION" in line:
line = line.replace("$GIT_VERSION", git_ver)
print line.rstrip("\n")
def rst2html(i, o): def rst2html(i, o):
@ -45,6 +106,7 @@ def cleanup_env():
def main(): def main():
prepare_env() prepare_env()
glob_spec("tmp/full_spec.rst") glob_spec("tmp/full_spec.rst")
set_git_version("tmp/full_spec.rst")
rst2html("tmp/full_spec.rst", "gen/specification.html") rst2html("tmp/full_spec.rst", "gen/specification.html")
rst2html("../howtos/client-server.rst", "gen/howtos.html") rst2html("../howtos/client-server.rst", "gen/howtos.html")
cleanup_env() cleanup_env()

@ -1,5 +1,6 @@
Matrix Specification Matrix Specification
==================== ====================
$GIT_VERSION
Table of Contents Table of Contents
================= =================
@ -85,7 +86,7 @@ Version
======= =======
The Matrix spec is currently rapidly evolving, and there have been no versioned The Matrix spec is currently rapidly evolving, and there have been no versioned
releases as yet. Versions should be identified by git revision, or failing that releases as yet. Versions should be identified by git revision, or failing that
timestamp. timestamp.
Overview Overview

Loading…
Cancel
Save