#!/usr/bin/env python3

import os
import zipfile

import common

class Main(common.LkmcCliFunction):
    def __init__(self):
        super().__init__(
            description='''\
https://cirosantilli.com/linux-kernel-module-cheat#release-zip
''',
            defaults = {
                'show_time': False,
            }
        )
        self.zip_files = []

    def timed_main(self):
        self.zip_files.append(self.env['qcow2_file'])
        self.zip_files.append(self.env['linux_image'])
        for root, dirnames, filenames in os.walk(self.env['baremetal_build_dir']):
            for filename in sorted(filenames):
                path = os.path.join(root, filename)
                if os.path.splitext(path)[1] == self.env['baremetal_executable_ext']:
                    self.zip_files.append(path)

    def teardown(self):
        os.makedirs(self.env['release_dir'], exist_ok=True)
        self.sh.rmrf(self.env['release_zip_file'])
        self.log_info('Creating zip: ' + self.env['release_zip_file'])
        with zipfile.ZipFile(self.env['release_zip_file'], 'w', zipfile.ZIP_DEFLATED) as zipf:
            for zip_file in self.zip_files:
                self.log_info('Adding file: ' + zip_file)
                zipf.write(zip_file, arcname=os.path.relpath(zip_file, self.env['root_dir']))

if __name__ == '__main__':
    Main().cli()
