#!/usr/bin/env python3
#-*- encoding: utf-8 -*-
"""
Remove output files not created by explicitly specified image targets

This uses the 'explicit_provides' file generated by the 'make-hooks'
script.  If the file is empty, all output will be saved.
"""
import glob
import os
import sys

if __name__ == "__main__":
    print('Running {}'.format(__file__))
    scriptname = os.path.basename(__file__)
    explicit = set()
    with open('./config/hooks.d/explicit_provides', 'r',
              encoding='utf-8') as fp:
        for filename in fp:
            explicit.add(filename.rstrip())

    if not explicit:
        print('{}: explicit_provides is empty. '
              'All binary output will be included'.format(scriptname))
        sys.exit(0)

    all = set(glob.glob('livecd.ubuntu-cpc.*'))
    implicit = all - explicit

    print('{}: all artifacts considered: {}'.format(scriptname, all))
    print('{}: explict artifacts to keep: {}'.format(scriptname, explicit))
    print('{}: implicit artifacts to remove: {}'.format(scriptname, implicit))

    for file in implicit:
        if os.path.islink(file):
            print('{}: unlinking {}'.format(scriptname, file))
            os.unlink(file)
        elif os.path.isfile(file):
            print('{}: removing {} '
                  '{} bytes'.format(scriptname, file, os.stat(file).st_size))
            os.remove(file)