build: --editor-optimize option for environments
[redakcja.git] / apps / build / management / commands / build.py
index 8fca320..50097cf 100644 (file)
@@ -21,6 +21,18 @@ class Command(BaseCommand):
             type='string',
             default='npm',
             help='Path to npm binary'),
+        make_option('--editor-npm-env',
+            action='store',
+            dest='editor_npm_env',
+            type='string',
+            default=None,
+            help='Destination path of npm environment, defaults to ./node_modules'),
+        make_option('--editor-optimize',
+            action='store',
+            dest='editor_optimize',
+            type='string',
+            default=None,
+            help='Optimization strategy for editor build'),
         )
 
     def handle(self, **options):
@@ -29,6 +41,12 @@ class Command(BaseCommand):
         build_dir = os.path.join(wiki_base_dir, 'build')
 
         self.stdout.write('Installing editor dependencies')
+        if options['editor_npm_env']:
+            npm_env = os.path.join(rng_base_dir, options['editor_npm_env'])
+            if not os.path.exists(npm_env):
+                os.makedirs(npm_env)
+            assert os.path.isdir(npm_env)
+            os.symlink(npm_env, os.path.join(rng_base_dir, 'node_modules'))
         try:
             call([options['npm_bin'], 'install'], cwd = rng_base_dir)
         except OSError:
@@ -38,6 +56,9 @@ class Command(BaseCommand):
         if options['node_bin_path']:
             # grunt needs npm binary to be foundable in PATH
             os.environ['PATH'] = '%s:%s' % (options['node_bin_path'], os.environ['PATH'])
-        call(['./node_modules/.bin/grunt', 'build', '--output-dir=%s' % build_dir], cwd = rng_base_dir)
+        args =  ['./node_modules/.bin/grunt', 'build', '--output-dir=%s' % build_dir]
+        if options['editor_optimize']:
+            args.append('--optimize=%s' % options['editor_optimize'])
+        call(args, cwd = rng_base_dir)
 
         call_command('collectstatic', interactive = False, ignore_patterns = ['editor'])