#!/usr/bin/env python
 
# wrapper script for calling 'flashbake' on all projects under a given path
 
import sys, logging
from optparse import OptionParser
import os
import os.path
import subprocess
import fnmatch

VERSION='0.23'

pattern = '.flashbake'

def locate_projects(root):
    for path, dirs, files in os.walk(root):
        for project_path in [os.path.normpath(path) for filename in files if fnmatch.fnmatch(filename, pattern)]:
            yield project_path



if __name__ == "__main__":
    usage = "usage: %prog [options] <search_root> [quiet_min]"
    parser = OptionParser(usage=usage, version='%s %s' % ('%prog', VERSION))
    parser.add_option('-o','--options', dest='flashbake_options', default='',
                      action='store', type='string', metavar='FLASHBAKE_OPTS',
                      help="options to pass through to the 'flashbake' command. Use quotes to pass multiple arguments.")

    (options, args) = parser.parse_args()

    if len(args) < 1:
        parser.error('Must specify root search directory.')
        sys.exit(1)

    LAUNCH_DIR = os.path.abspath(sys.path[0])
    flashbake_cmd = os.path.join(LAUNCH_DIR, "flashbake")
    flashbake_opts = options.flashbake_options.split()
    for project in locate_projects(args[0]):
        print(project + ":")
        proc =  [ flashbake_cmd ] + flashbake_opts + [project]
        if len(args) > 1:
            proc.append(args[1])
        subprocess.call(proc)
            

        
    
    
                      
 

