~launchpad-pqm/launchpad/devel

« back to all changes in this revision

Viewing changes to lib/lp/scripts/utilities/build/jsbuild.py

Build yui from lp-sourcedeps

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
 
18
18
HERE = os.path.dirname(__file__)
19
19
BUILD_DIR = os.path.normpath(os.path.join(HERE, '..', '..', '..', 'build'))
20
 
DEFAULT_SRC_DIR = os.path.normpath(os.path.join(HERE, '..', '..', '..'))
 
20
DEFAULT_SRC_DIR = os.path.normpath(os.path.join(HERE, '..', '..', '..', 'app', 'javascript'))
21
21
PKG_SRC_DIR = pkg_resources.resource_filename(
22
22
    pkg_resources.Requirement.parse("lazr-js"), "lazrjs")
23
23
 
190
190
class Builder:
191
191
 
192
192
    def __init__(self, name='lazr', build_dir=BUILD_DIR, src_dir=PKG_SRC_DIR,
193
 
                 extra_files=None, exclude_regex='', file_type='raw',
194
 
                 copy_yui_to=BUILD_DIR):
 
193
                 extra_files=None, exclude_regex='', file_type='raw'):
195
194
        """Create a new Builder.
196
195
 
197
196
        :param name: The name of the package we are building. This will
207
206
            file.  Possible values are 'raw', 'min', and 'debug'.  File types
208
207
            are identified by their basename suffix: foo.js, foo-min.js,
209
208
            foo-debug.js, etc.
210
 
        :param copy_yui_to: The absolute path (as a string) to the place where
211
 
            the YUI modules should be copied to. Defaults to BUILD_DIR.
212
209
        """
213
210
        self.name = name
214
211
        self.build_dir = build_dir
227
224
 
228
225
        self.exclusion_regex = exclude_regex
229
226
        self.file_type = file_type
230
 
        self.copy_yui_to = copy_yui_to
231
227
 
232
228
        self.log("Using filter: " + self.file_type)
233
229
 
417
413
                continue
418
414
            yield name, path
419
415
 
420
 
    def copy_yui_package(self):
421
 
        """Copy the contents of our 'yui' dir to self.copy_yui_to."""
422
 
        yui_dirs = glob(os.path.join(self.src_dir, 'yui') + '/*')
423
 
        for dir in yui_dirs:
424
 
            dir_name = os.path.split(dir)[-1]
425
 
            dst_dir = os.path.join(self.copy_yui_to, dir_name)
426
 
            if not os.path.isdir(dst_dir):
427
 
                shutil.copytree(dir, dst_dir)
428
 
 
429
416
    def do_build(self):
430
 
        self.copy_yui_package()
431
417
        for name, cpath in self.find_components():
432
418
            files_to_link = glob(os.path.join(cpath, '*.js'))
433
419
            if len(files_to_link) == 0:
469
455
        help=('Only bundle files in the source directory that match the '
470
456
              'specified file-type filter. Possible values are '
471
457
              '[min, raw, debug]. [default: %default]'))
472
 
    parser.add_option(
473
 
        '-c', '--copy-yui-to', dest='copy_yui_to', default=BUILD_DIR,
474
 
        help=('Copy the YUI tree to the given directory before building'))
475
458
    return parser.parse_args()
476
459
 
477
460
 
478
461
def main():
479
 
   options, extra= get_options()
480
 
   Builder(
 
462
    options, extra= get_options()
 
463
 
 
464
    Builder(
481
465
       name=options.name,
482
466
       build_dir=options.build_dir,
483
467
       src_dir=options.src_dir,
484
468
       extra_files=extra,
485
469
       exclude_regex=options.exclude,
486
470
       file_type=options.file_type,
487
 
       copy_yui_to=options.copy_yui_to,
488
471
       ).do_build()