zipline/docs/deploy.py
2019-01-14 14:02:27 -05:00

80 lines
2.1 KiB
Python

#!/usr/bin/env python
from __future__ import print_function
from contextlib import contextmanager
from glob import glob
import os
from os.path import abspath, basename, dirname, exists, isfile
from shutil import move, rmtree
from subprocess import check_call
HERE = dirname(abspath(__file__))
ZIPLINE_ROOT = dirname(HERE)
TEMP_LOCATION = '/tmp/zipline-doc'
TEMP_LOCATION_GLOB = TEMP_LOCATION + '/*'
@contextmanager
def removing(path):
try:
yield
finally:
rmtree(path)
def ensure_not_exists(path):
if not exists(path):
return
if isfile(path):
os.unlink(path)
else:
rmtree(path)
def main():
old_dir = os.getcwd()
print("Moving to %s." % HERE)
os.chdir(HERE)
try:
print("Cleaning docs with 'make clean'")
check_call(['make', 'clean'])
print("Building docs with 'make html'")
check_call(['make', 'html'])
print("Clearing temp location '%s'" % TEMP_LOCATION)
rmtree(TEMP_LOCATION, ignore_errors=True)
with removing(TEMP_LOCATION):
print("Copying built files to temp location.")
move('build/html', TEMP_LOCATION)
print("Moving to '%s'" % ZIPLINE_ROOT)
os.chdir(ZIPLINE_ROOT)
print("Checking out gh-pages branch.")
check_call(
[
'git', 'branch', '-f',
'--track', 'gh-pages', 'origin/gh-pages'
]
)
check_call(['git', 'checkout', 'gh-pages'])
check_call(['git', 'reset', '--hard', 'origin/gh-pages'])
print("Copying built files:")
for file_ in glob(TEMP_LOCATION_GLOB):
base = basename(file_)
print("%s -> %s" % (file_, base))
ensure_not_exists(base)
move(file_, '.')
finally:
os.chdir(old_dir)
print()
print("Updated documentation branch in directory %s" % ZIPLINE_ROOT)
print("If you are happy with these changes, commit and push to gh-pages.")
if __name__ == '__main__':
main()