#!/usr/bin/env python
# -*- coding:utf-8 -*-
'''
Загрузка содержимого релизного пакета dna в релизный каталог на s3. Файлы загружаются без перезаписи.
Использование: dt-s3-upload-dna-release --version=<dna-version>
'''
import subprocess
import argparse
import os
import sys
import time

def die(message=''):
    sys.stderr.write("%s\n" % message)
    exit(1)

def my_tee(cmd, verbose=True, shell=False):
    if verbose:
        print("going to exec: %s\n" % cmd)
    proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=shell)
    lines = []
    while True:
        line = proc.stdout.readline()
        if not line:
            break
        line = line.rstrip()
        lines.append(line)
        print line
    proc.wait()
    if proc.returncode != 0:
        die("cmd failed, stop (%s)" % cmd)
    return lines

def parse_options():
    global opts

    parser = argparse.ArgumentParser(description='Безопасная загрузка файлов на s3.mds.yandex.net')
    parser.add_argument('-v', '--version', dest='version', help='Версия релизного пакета', type=str, required=True)

    opts, extra = parser.parse_known_args()

    if len(extra) > 0:
        parser.error('There are unknown parameters')

    return opts 

def run():
    opts = parse_options()
    deb_package_name = 'yandex-direct-dna_%s_all.deb' % opts.version
    tmp_package_dir = 'yandex-direct-dna_%s_all' % opts.version

    my_tee(['rm', '-rf', deb_package_name, tmp_package_dir])

    my_tee(['wait-package-on-dist', deb_package_name])

    time.sleep(60)

    my_tee(['beta-update', 'apt-get-update'])

   #  my_tee(['apt-cache policy yandex-direct-dna | grep -C 3 %s' % opts.version], shell=True)
    
    my_tee(['apt-get', 'download', 'yandex-direct-dna=%s' % opts.version])

    my_tee(['dpkg', '-x', deb_package_name, tmp_package_dir])

    dir_to_upload = os.path.join(os.path.abspath(tmp_package_dir), 'var/www/dna/build')

    my_tee(['dt-s3-upload', '-f', dir_to_upload, '-t', 'releases'])

    my_tee(['rm', '-rf', deb_package_name, tmp_package_dir])

    print 'Deb package %s is uploaded to s3' % deb_package_name

if __name__ == '__main__':
    run()
