#!/usr/bin/env python
'''
create stable-x.y.z directories so we keep all past stable releases for users to download
'''

import os
import shutil

VEHICLES = ['AntennaTracker', 'Copter', 'Plane', 'Rover', 'Sub']


def make_stable(basedir, vehicle):
    '''make stable version for a vehicle'''
    stable_dir = os.path.join(basedir, vehicle, 'stable')
    if not os.path.exists(stable_dir):
        print("Missing %s" % stable_dir)
        return
    for b in sorted(os.listdir(stable_dir)):
        if not os.path.isdir(os.path.join(stable_dir, b)):
            continue
        vfile = os.path.join(stable_dir, b, "firmware-version.txt")
        if not os.path.exists(vfile):
            print("Missing %s" % vfile)
            continue
        vstr = open(vfile).read()
        version = vstr.split('-')[0]
        new_dir_parent = os.path.join(basedir, vehicle, 'stable-%s' % version)
        new_dir = os.path.join(new_dir_parent, b)
        if os.path.exists(new_dir):
            continue
        if not os.path.exists(new_dir_parent):
            os.mkdir(new_dir_parent)
        print('Creating %s' % new_dir)
        old_dir = os.path.join(stable_dir, b)
        shutil.copytree(old_dir, new_dir)


def make_all_stable(basedir):
    '''make stable directory for all vehicles'''
    for v in VEHICLES:
        make_stable(basedir, v)


if __name__ == "__main__":
    import argparse
    parser = argparse.ArgumentParser(description='gen_stable.py')
    parser.add_argument('basedir', type=str, default="-", help='base binaries directory')
    args = parser.parse_args()

    make_all_stable(args.basedir)