old_contents: #!/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("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()
  
new_contents: #!/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()
  
subject: Clean the docs build output before generating new ones