Mercurial > piecrust2
annotate piecrust/processing/browserify.py @ 1048:63be34ce6e65
bake: Don't add outputs as dependencies, duh.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Fri, 26 Jan 2018 18:00:43 -0800 |
parents | 717ac3c4ee77 |
children | c2bfa1869f0d |
rev | line source |
---|---|
1038
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
1 import os |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
2 import os.path |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
3 import logging |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
4 import platform |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
5 import subprocess |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
6 from piecrust.processing.base import Processor, PRIORITY_FIRST, FORCE_BUILD |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
7 |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
8 |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
9 logger = logging.getLogger(__name__) |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
10 |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
11 |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
12 class BrowserifyProcessor(Processor): |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
13 PROCESSOR_NAME = 'browserify' |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
14 |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
15 def __init__(self): |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
16 super(BrowserifyProcessor, self).__init__() |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
17 self.priority = PRIORITY_FIRST |
1041
717ac3c4ee77
bake: Fix where the Browserify processor outputs things.
Ludovic Chabant <ludovic@chabant.com>
parents:
1038
diff
changeset
|
18 self.is_delegating_dependency_check = False |
1038
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
19 self._conf = None |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
20 |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
21 def initialize(self, app): |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
22 super(BrowserifyProcessor, self).initialize(app) |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
23 |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
24 self._conf = app.config.get('browserify') |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
25 if self._conf is None: |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
26 return |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
27 |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
28 if self._conf is True: |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
29 self._conf = {} |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
30 |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
31 self._conf.setdefault('bin', 'browserify') |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
32 |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
33 def matches(self, path): |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
34 return self._conf is not None and os.path.splitext(path)[1] == '.js' |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
35 |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
36 def getDependencies(self, path): |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
37 return FORCE_BUILD |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
38 |
1041
717ac3c4ee77
bake: Fix where the Browserify processor outputs things.
Ludovic Chabant <ludovic@chabant.com>
parents:
1038
diff
changeset
|
39 def getOutputFilenames(self, filename): |
717ac3c4ee77
bake: Fix where the Browserify processor outputs things.
Ludovic Chabant <ludovic@chabant.com>
parents:
1038
diff
changeset
|
40 return [filename] |
717ac3c4ee77
bake: Fix where the Browserify processor outputs things.
Ludovic Chabant <ludovic@chabant.com>
parents:
1038
diff
changeset
|
41 |
1038
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
42 def process(self, path, out_dir): |
1041
717ac3c4ee77
bake: Fix where the Browserify processor outputs things.
Ludovic Chabant <ludovic@chabant.com>
parents:
1038
diff
changeset
|
43 out_path = os.path.join(out_dir, os.path.basename(path)) |
1038
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
44 |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
45 args = [self._conf['bin'], path, '-o', out_path] |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
46 cwd = self.app.root_dir |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
47 logger.debug("Running Browserify: %s" % ' '.join(args)) |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
48 try: |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
49 retcode = subprocess.call(args, cwd=cwd) |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
50 except FileNotFoundError as ex: |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
51 logger.error("Tried running Browserify processor " |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
52 "with command: %s" % args) |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
53 raise Exception("Error running Browserify. " |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
54 "Did you install it?") from ex |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
55 if retcode != 0: |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
56 raise Exception("Error occured in Browserify compiler. " |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
57 "Please check log messages above for " |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
58 "more information.") |
7487e2df8a56
bake: Add support for Browserify.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
59 return True |