#!/usr/bin/env python

# Copyright 2017 Google Inc.
#
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

VERSION = '308728-3'
MD5     = '8bec8c34da5d256e27638383667489e5'

import hashlib
import os
import shutil
import tarfile
import urllib2

os.chdir(os.path.dirname(__file__))

if (not os.path.exists('clang_win/md5.txt')
        or open('clang_win/md5.txt').read().strip() != MD5):

  # Clear out everything and start fresh.
  shutil.rmtree('clang_win', ignore_errors=True)
  os.mkdir('clang_win')
  os.chdir('clang_win')

  # Grab the current Clang package.
  with open(VERSION + '.tgz', 'wb') as tgz:
    url = 'https://commondatastorage.googleapis.com/chromium-browser-clang'
    tgz.write(urllib2.urlopen(url + '/Win/clang-' + VERSION + '.tgz').read())

  # Extract it.
  tarfile.open(VERSION + '.tgz').extractall()

  # Write out its hash to md5.txt so that next time is quicker.
  h = hashlib.md5()
  with open(VERSION + '.tgz', 'rb') as tgz:
    h.update(tgz.read())
  with open('md5.txt', 'w') as md5:
    md5.write(h.hexdigest())
