#!/usr/bin/env python
"""Compatibility tests between last released and the current version.

Usage: ./update_compatibility_version.py <MAJOR>.<MINOR>.<MICRO> [<RC version>]
Example: ./update_compatibility_version.py 3.7.1
"""

from __future__ import print_function
import re
import sys

if len(sys.argv) < 2 or len(sys.argv) > 3:
  print("""
[ERROR] Please specify a version.

./update_compatibility_version.py.py <MAJOR>.<MINOR>.<MICRO> [<RC version>]

Example:
./update_compatibility_version.py.py 3.7.1 2
""")
  exit(1)

NEW_VERSION = sys.argv[1]
NEW_VERSION_INFO = NEW_VERSION.split('.')
if len(NEW_VERSION_INFO) != 3:
  print("""
[ERROR] Version must be in the format <MAJOR>.<MINOR>.<MICRO>

Example:
./update_compatibility_version.py.py 3.7.3
""")
  exit(1)

if len(sys.argv) > 2:
  RC_VERSION = int(sys.argv[2])
  # Do not update compatibility versions for rc release
  if RC_VERSION != 0:
    exit(0)


def RewriteTextFile(filename, line_rewriter):
  lines = open(filename, 'r').readlines()
  updated_lines = []
  for line in lines:
    updated_lines.append(line_rewriter(line))
  if lines == updated_lines:
    print('%s was not updated. Please double check.' % filename)
  f = open(filename, 'w')
  f.write(''.join(updated_lines))
  f.close()


def ReplaceVersion(line):
  return re.sub(r'LAST_RELEASED=.*$', 'LAST_RELEASED=%s' % NEW_VERSION, line)

RewriteTextFile('tests.sh', ReplaceVersion)