Changeset 102

Show
Ignore:
Timestamp:
08/03/06 04:38:52 (2 years ago)
Author:
robin
Message:

setuptools compat

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • streamservice/trunk/scripts/json-provides.py

    r101 r102  
    1 """usage: python json-provides.py Lib.js.json 
     1#!/usr/bin/env python 
     2"""usage: %prog Lib.js.json 
    23 
    34For vim users; To explicitly inject the boiler plate for the current buffer:: 
    45 
    5     :!r python json-provides.py %.json 
     6    :!r %prog %.json 
    67 
    78""" 
    89 
    9 import os, sys 
     10import os, sys, optparse 
    1011from simplejson import load 
    1112 
    12 GENERATORID='<http://svn.wiretooth.com/svn/open/scripts/json-provides.py>' 
     13BASENAME=os.path.splitext(os.path.basename(__file__))[0] 
     14GENERATORID='<http://svn.wiretooth.com/svn/open/scripts/%s>' % BASENAME 
    1315 
    14 outf=sys.stdout 
    15 all={} 
    16 ordered=0 
    17 for inf in sys.argv[1:]: 
    18     for d in load(file(inf)): 
    19         for k in d.keys(): 
    20             v=d[k] 
    21             del d[k] 
    22             d[(ordered,k)]=v 
    23         all.update(d) 
    24         ordered+=1 
     16def run_json_provides(): 
     17    """setuptools compatible entry point.""" 
     18    parser=optparse.OptionParser(usage=__doc__) 
     19    options,args=parser.parse_args(sys.argv[1:]) 
     20    produce_namespace_boilerplate(sys.stdout, args) 
    2521 
    26 print >> outf, "/* BEGIN: provides" 
    27 print >> outf, " * GENERATED BY: %s" % GENERATORID 
    28 print >> outf, " */" 
    29 haveprovided,haverequired={},{} 
    30 ifdojo,ifjsan=[],[] 
    31 for (ordered,namespace),meta in sorted(all.items()): 
    32     provide,require=meta.get('provide',[]),meta.get('require',[]) 
    33     provide[:] = [p for p in provide if p not in haveprovided] 
    34     require[:] = [r for r in require  
    35                     if not (r in haverequired or r in haveprovided)] 
    36     if not (provide or require): 
    37         continue 
    38     for p in provide: 
    39         ifdojo.append(' ' * 4 + "dojo.provide('%s');" % p) 
    40     for r in require: 
    41         ifdojo.append(' ' * 4 + "dojo.require('%s');" % r) 
    42         ifjsan.append(' ' * 4 + "JSAN.use('%s');" % r) 
    43     for p in provide: 
    44         haveprovided[p] = True 
    45     for r in require: 
    46         haverequired[r] = True 
    47 if ifdojo: 
    48     print >> outf, "if (typeof(dojo) != 'undefined') {" 
    49     for line in ifdojo: 
    50         print >> outf, line 
    51     print >> outf, "}" 
    52 if ifjsan: 
    53     print >> outf, "if (typeof(JSAN) != 'undefined') {" 
    54     for line in ifjsan: 
    55         print >> outf, line 
    56     print >> outf, "}" 
    57 havedefined={} 
    58 for (ordered,namespace) in sorted(all.keys()): 
    59     parts=namespace.split('.') 
    60     for i, part in enumerate(parts): 
    61         space='.'.join(parts[:i+1]) 
    62         if space in havedefined: 
     22def produce_namespace_boilerplate(outf, infilenames): 
     23    all={} 
     24    ordered=0 
     25    for inf in infilenames: 
     26        for d in load(file(inf)): 
     27            for k in d.keys(): 
     28                v=d[k] 
     29                del d[k] 
     30                d[(ordered,k)]=v 
     31            all.update(d) 
     32            ordered+=1 
     33 
     34    print >> outf, "/* BEGIN: provides" 
     35    print >> outf, " * GENERATED BY: %s" % GENERATORID 
     36    print >> outf, " */" 
     37    haveprovided,haverequired={},{} 
     38    ifdojo,ifjsan=[],[] 
     39    for (ordered,namespace),meta in sorted(all.items()): 
     40        provide,require=meta.get('provide',[]),meta.get('require',[]) 
     41        provide[:] = [p for p in provide if p not in haveprovided] 
     42        require[:] = [r for r in require  
     43                        if not (r in haverequired or r in haveprovided)] 
     44        if not (provide or require): 
    6345            continue 
    64         print >> outf, "if (typeof(%s) == 'undefined') {" % space 
    65         print >> outf, ''.join([ 
    66                 ' ' * 4, space, ' = {};']) 
    67         print >> outf, '}' 
    68         havedefined[space]=True 
     46        for p in provide: 
     47            ifdojo.append(' ' * 4 + "dojo.provide('%s');" % p) 
     48        for r in require: 
     49            ifdojo.append(' ' * 4 + "dojo.require('%s');" % r) 
     50            ifjsan.append(' ' * 4 + "JSAN.use('%s');" % r) 
     51        for p in provide: 
     52            haveprovided[p] = True 
     53        for r in require: 
     54            haverequired[r] = True 
     55    if ifdojo: 
     56        print >> outf, "if (typeof(dojo) != 'undefined') {" 
     57        for line in ifdojo: 
     58            print >> outf, line 
     59        print >> outf, "}" 
     60    if ifjsan: 
     61        print >> outf, "if (typeof(JSAN) != 'undefined') {" 
     62        for line in ifjsan: 
     63            print >> outf, line 
     64        print >> outf, "}" 
     65    havedefined={} 
     66    for (ordered,namespace) in sorted(all.keys()): 
     67        parts=namespace.split('.') 
     68        for i, part in enumerate(parts): 
     69            space='.'.join(parts[:i+1]) 
     70            if space in havedefined: 
     71                continue 
     72            print >> outf, "if (typeof(%s) == 'undefined') {" % space 
     73            print >> outf, ''.join([ 
     74                    ' ' * 4, space, ' = {};']) 
     75            print >> outf, '}' 
     76            havedefined[space]=True 
    6977 
    70 print >> outf, "/* GENERATED BY: %s " % GENERATORID 
    71 print >> outf, " * END: provides */" 
     78    print >> outf, "/* GENERATED BY: %s " % GENERATORID 
     79    print >> outf, " * END: provides */" 
    7280 
     81if __name__=='__main__': 
     82    run_json_provides()