diff --git a/minify_web_js.py b/minify_web_js.py index c234d495a..61a29f07a 100755 --- a/minify_web_js.py +++ b/minify_web_js.py @@ -9,6 +9,12 @@ # See LICENSE for more details. # +"""Minifies the Webui JS files. + +Usage: python minify_web_js.py deluge/ui/web/js/deluge-all + +""" + import fileinput import fnmatch import os @@ -16,57 +22,53 @@ import sys from slimit import minify -"""Minifies the Webui JS files - -Usage: python minify_web_js.py deluge/ui/web/js/deluge-all -""" - if len(sys.argv) != 2: - print 'Specify a source js directory... e.g. deluge/ui/web/js/deluge-all' + print 'Specify a source js directory, e.g. deluge/ui/web/js/deluge-all' sys.exit(1) SOURCE_DIR = os.path.abspath(sys.argv[1]) BUILD_NAME = os.path.basename(SOURCE_DIR) BUILD_DIR = os.path.dirname(SOURCE_DIR) SRC_FILE_LIST = [] + for root, dirnames, filenames in os.walk(SOURCE_DIR): dirnames.sort(reverse=True) - files = fnmatch.filter(filenames, "*.js") - files.sort() + filenames_js = fnmatch.filter(filenames, '*.js') + filenames_js.sort() order_file = os.path.join(root, '.order') if os.path.isfile(order_file): - with open(order_file, 'r') as f: - for line in f: + with open(order_file, 'r') as _file: + for line in _file: line = line.strip() if not line or line[0] == '#': continue - pos, filename = line.split() - files.pop(files.index(filename)) - if pos == '+': - files.insert(0, filename) + order_pos, order_filename = line.split() + filenames_js.pop(filenames_js.index(order_filename)) + if order_pos == '+': + filenames_js.insert(0, order_filename) - if not dirnames: - for fnames_ordered in reversed(files): - SRC_FILE_LIST.insert(0, os.path.join(root, fnames_ordered)) + # Ensure root directory files are bottom of list. + if dirnames: + for filename in filenames_js: + SRC_FILE_LIST.append(os.path.join(root, filename)) else: - for fnames_ordered in files: - SRC_FILE_LIST.append(os.path.join(root, fnames_ordered)) + for filename in reversed(filenames_js): + SRC_FILE_LIST.insert(0, os.path.join(root, filename)) if not SRC_FILE_LIST: print 'No js files found' sys.exit(1) -print 'Minifying %s' % BUILD_NAME +print 'Minifying %s ...' % BUILD_NAME -# generate the single file, unminified version -file_dbg_js = os.path.join(BUILD_DIR, BUILD_NAME + '-debug.js') -with open(file_dbg_js, 'w') as _file: +# Create the unminified debug file. +file_debug_js = os.path.join(BUILD_DIR, BUILD_NAME + '-debug.js') +with open(file_debug_js, 'w') as _file: input_lines = fileinput.input(SRC_FILE_LIST) _file.writelines(input_lines) -# generate the minified version -fileout_js = os.path.join(BUILD_DIR, BUILD_NAME + '.js') -with open(fileout_js, 'w') as out_file: - with open(file_dbg_js, 'r') as in_file: - out_file.write(minify(in_file.read())) +file_minified_js = os.path.join(BUILD_DIR, BUILD_NAME + '.js') +with open(file_minified_js, 'w') as file_out: + with open(file_debug_js, 'r') as file_in: + file_out.write(minify(file_in.read()))