X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/27e1f96bba499132675df3e5ad17326d751144cf..6468ef21bab354b088ad025d87d276ffb4b2c85d:/apps/build/management/commands/build.py diff --git a/apps/build/management/commands/build.py b/apps/build/management/commands/build.py index 8fca3208..f0d1df8f 100644 --- a/apps/build/management/commands/build.py +++ b/apps/build/management/commands/build.py @@ -1,3 +1,8 @@ +# -*- coding: utf-8 -*- +# +# This file is part of MIL/PEER, licensed under GNU Affero GPLv3 or later. +# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information. +# import os from subprocess import call from optparse import make_option @@ -9,18 +14,34 @@ from django.core.management import call_command class Command(BaseCommand): option_list = BaseCommand.option_list + ( - make_option('--node-bin-path', + make_option( + '--node-bin-path', action='store', dest='node_bin_path', type='string', default=None, help='Path to node binary'), - make_option('--npm-bin', + make_option( + '--npm-bin', action='store', dest='npm_bin', 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,8 +50,14 @@ 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) + call([options['npm_bin'], 'install'], cwd=rng_base_dir) except OSError: raise CommandError('Something went wrong, propably npm binary not found. Tried: %s' % options['npm_bin']) @@ -38,6 +65,10 @@ 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']) + self.stdout.write('Calling %s at %s' % (' '.join(args), rng_base_dir)) + call(args, cwd=rng_base_dir) - call_command('collectstatic', interactive = False, ignore_patterns = ['editor']) + call_command('collectstatic', interactive=False, ignore_patterns=['editor'])