Beispiel #1
0
def main(argv=sys.argv, 
        run_juicer=run_juicer, run_replace_url=run_replace_url,
        copy_images=copy_images, remove_file=os.remove):
    if len(argv) !=3:
        raise RuntimeError, 'Usage: rejuice inifile section_name'
    inifile = argv[1]
    section_name = argv[2]

    resolver = ResolverList(())
    resolver.add_new_section(inifile, section_name, allow_filter_section_keys=True)
    
    for o in resolver:
        for resource in o.resources:
            prod_resource = resource
            prod_resource_path = os.path.join(o.filepath, prod_resource)
            devel_resources = o.resources[resource]
            devel_resource_path_list = []
            has_import_resource = False
            for devel_resource_spec, extend_inifile, extend_section in devel_resources:
                if extend_inifile is not None:
                    assert extend_section is not None
                    extend_resource = o.sections.get((extend_inifile, extend_section), None)
                    devel_resource_path = os.path.join(extend_resource.filepath, devel_resource_spec)
                    # Is this a resource imported from another static tree?
                    if extend_resource.filepath != o.filepath:
                        has_import_resource = True
                else:
                    assert extend_section is None
                    devel_resource_path = os.path.join(o.filepath, devel_resource_spec)
                devel_resource_path_list.append(devel_resource_path)
            # Do we have to collect the images to this resource?
            if has_import_resource and prod_resource_path.endswith('css'):
                # import mode
                output = os.tmpnam() + '.css'
                try:
                    run_juicer(tuple(devel_resource_path_list), output=output)
                    images = run_replace_url(output, prod_resource_path)
                finally:
                    try:
                        remove_file(output)
                    except (OSError, IOError):
                        pass
                copy_images(images, prod_resource_path)
            else:
                # run external program to do the concatenation
                run_juicer(tuple(devel_resource_path_list), output=prod_resource_path)
                
                

    print "\n\n##### All files compressed OK"