#!/usr/bin/env python3

import datetime
import os
import shutil
import sys


def get_version():
    fh = open('VERSION', 'r')
    try:
        return fh.read().strip()
    finally:
        fh.close()


def update_changelog(version, msg):
    today = datetime.date.today()
    wfh = open('CHANGELOG.rst.tmp', 'w')
    try:
        lines_count = 0
        for line in open('CHANGELOG.rst', 'r'):
            lines_count += 1
            if lines_count == 4:
                wfh.write(f'Version {version} (on {today: %b %d %Y})\n')
                wfh.write('-------------------------------\n')
                wfh.write(f'* {msg}')
                wfh.write('\n\n')
            wfh.write(line)
    finally:
        wfh.close()
        shutil.move('CHANGELOG.rst.tmp', 'CHANGELOG.rst')


def main():
    version = get_version()
    print(f'New version is {version}')
    print('Creating archives ...')
    os.system('python3 setup.py sdist bdist_wheel')
    print('Updating the changelog ...')
    changelog_msg = input("Please enter a changelog message: ")
    if changelog_msg == "":
        print("ERROR: You didn't enter a changelog message!")
        sys.exit(-1)

    update_changelog(version, changelog_msg)
    print('Uploading the new release...')
    os.system('twine upload dist/*')


if __name__ == '__main__':
    main()