forked from QBobWatson/ila
-
Notifications
You must be signed in to change notification settings - Fork 0
/
site_init.py
50 lines (41 loc) · 1.62 KB
/
site_init.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import os
from subprocess import check_output
def cat_files(target, sources, delim=''):
with open(target, 'wb') as outfobj:
for infile in sources:
with open(str(infile), 'r') as infobj:
outfobj.write(infobj.read())
outfobj.write(delim)
def cat_css(target, source, env, for_signature=None):
target = str(target[0])
cat_files(target, source)
def cat_js(target, source, env, for_signature=None):
target = str(target[0])
cat_files(target, source, ';\n')
def minify(target, source, env, for_signature=None):
target = str(target[0])
src = str(source[0])
if not env['MINIFY']:
minimized = source[0].get_contents()
elif src.endswith('.js'):
minimized = check_output([env['UGLIFYJS'], '-m', '--', src])
elif src.endswith('.css'):
minimized = check_output([env['CLEANCSS'], '--skip-rebase', src])
else:
raise Exception("Don't know how to minify %s!" % src)
if not os.path.exists(os.path.dirname(target)):
os.makedirs(os.path.dirname(target))
with open(target, 'wb') as fobj:
fobj.write(minimized)
def TOOL_ADD_CAT(env):
env['BUILDERS']['CatCSS'] = Builder(
action=Action(cat_css, '$TARGET <-- $SOURCES'),
suffix='.css', src_suffix='.css')
env['BUILDERS']['CatJS'] = Builder(
action=Action(cat_js, '$TARGET <-- $SOURCES'),
suffix='.js', src_suffix='.js')
env['BUILDERS']['Minify'] = Builder(
action=Action(minify,
'minify $TARGET <-- $SOURCE'
if env['MINIFY'] else
'copy $TARGET <-- $SOURCE'))