10
0
mirror of https://github.com/LCPQ/quantum_package synced 2024-06-02 11:25:26 +02:00
quantum_package/scripts/update_README.py

125 lines
2.7 KiB
Python
Executable File

#!/usr/bin/env python
"""Updates the README.rst file as the include directive is disabled on GitHub."""
__date__ = "Thu Apr 3 23:06:18 CEST 2014"
__author__ = "Anthony Scemama <scemama@irsamc.ups-tlse.fr>"
README="README.rst"
Assum_key="Assumptions\n===========\n"
Needed_key="Needed Modules\n==============\n"
Sentinel="@@$%&@@"
def fetch_splitted_data():
"""Read the README.rst file and split it in 3 strings:
* The description
* The assumptions
* The needed modules
The result is given as a list of strings
"""
file = open(README,'r')
data = file.read()
file.close()
# Place sentinels
data = data.replace(Assum_key,Sentinel+Assum_key)
data = data.replace(Needed_key,Sentinel+Needed_key)
# Now Split data using the sentinels
result = data.split(Sentinel)
return result
def update_assumptions(data):
"""Read the ASSUMPTIONS.rst file, and replace the data with it."""
try:
file = open('ASSUMPTIONS.rst','r')
except IOError:
file = open('ASSUMPTIONS.rst','w')
assumptions = ""
else:
assumptions = file.read()
file.close()
header = """
.. Do not edit this section. It was auto-generated from the
.. ASSUMPTIONS.rst file.
"""
if assumptions.strip() != "":
assumptions = Assum_key + header + assumptions + '\n\n'
has_assumptions = False
for i in range(len(data)):
if data[i].startswith(Assum_key):
has_assumptions = True
data[i] = assumptions
if not has_assumptions:
data.insert(1,assumptions)
return data
def update_needed(data):
"""Read the NEEDED_MODULES file, and replace the data with it."""
file = open('NEEDED_MODULES','r')
modules = file.read()
file.close()
header = """
.. Do not edit this section. It was auto-generated from the
.. NEEDED_MODULES file.
"""
if modules.strip() != "":
modules = "\n".join(map(lambda x: '* %s'%(x), modules.split()))
modules = Needed_key + header + modules + '\n\n'
has_modules = False
for i in range(len(data)):
if data[i].startswith(Needed_key):
has_modules = True
data[i] = modules
if not has_modules:
data.append(modules)
return data
import subprocess
def git_add():
"""Executes:
git add README.rst
if git is present on the machine."""
command = "git add "+README
try:
subprocess.call(command.split())
except OSError:
pass
def main():
data = fetch_splitted_data()
data = update_assumptions(data)
data = update_needed(data)
output = ''.join(data)
file = open(README,'w')
file.write(output)
file.close()
git_add()
if __name__ == '__main__':
main()