#!/usr/bin/python
# -*- coding: utf-8 -*-
#    Molecule Disc Image builder for Sabayon Linux
#    Copyright (C) 2009 Fabio Erculiani
#
#    This program is free software; you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation; either version 2 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program; if not, write to the Free Software
#    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

import os
import signal
import sys
sys.path.insert(0,'/usr/lib/molecule/')
sys.path.insert(0,'molecule/')
sys.path.insert(0,'.')
import molecule.cmdline
from molecule.handlers import Runner
from molecule.utils import RUNNING_PIDS

def kill_pids():
    for pid in RUNNING_PIDS:
        os.kill(pid, signal.SIGTERM)

parse_data = molecule.cmdline.parse()
if parse_data is None:
    raise SystemExit(1)
molecule_data, molecule_data_order = parse_data
if not molecule_data_order:
    molecule.cmdline.print_help()
    raise SystemExit(1)

for el in molecule_data_order:
    my = Runner(el, molecule_data.get(el))
    try:
        rc = my.run()
    except KeyboardInterrupt:
        while True:
            my.kill()
            kill_pids()
            break
        raise SystemExit(1)
    while True:
        my.kill()
        kill_pids()
        break
    if rc != 0:
        raise SystemExit(rc)
raise SystemExit(0)
