forked from Botanical/BotanJS
52 lines
1.1 KiB
Python
Executable File
52 lines
1.1 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import os
|
|
from tempfile import NamedTemporaryFile
|
|
|
|
COMPILER = "/opt/utils/closure.jar"
|
|
|
|
if not os.path.isfile( COMPILER ):
|
|
raise Exception( "Compiler not found" )
|
|
|
|
|
|
COMPILER_OPTIONS = [
|
|
"--compilation_level ADVANCED_OPTIMIZATIONS"
|
|
, "--output_wrapper=\"(function(){%output%})();\""
|
|
]
|
|
|
|
|
|
class Wrapper:
|
|
|
|
C = None
|
|
# externs
|
|
E = ""
|
|
|
|
def __init__( self ):
|
|
self.C = "java -jar "+ COMPILER + " " + " ".join( COMPILER_OPTIONS )
|
|
|
|
def scanExterns( self, sdir ):
|
|
for root, dirs, files in os.walk( sdir ):
|
|
# Split file extensions
|
|
files = list( os.path.splitext( x ) for x in files )
|
|
files.sort()
|
|
for f in files:
|
|
files.remove( f ) if f[1] != ".js" else None
|
|
|
|
self.E = " --externs " + " --externs ".join(
|
|
os.path.join( root, x )
|
|
# join back extensions
|
|
for x in list( "".join( x ) for x in files )
|
|
)
|
|
break
|
|
|
|
def compress( self, loc ):
|
|
content = ""
|
|
with open( loc, "rb" ) as f:
|
|
content = f.read()
|
|
|
|
with NamedTemporaryFile() as f:
|
|
f.write( content[12:-5] )
|
|
os.system( self.C + self.E + " --js " + f.name + " --js_output_file " + loc[:-3] + ".c.js" )
|
|
|
|
|