Skip to content

Instantly share code, notes, and snippets.

@itxx00
Created July 24, 2014 06:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save itxx00/36658c607862437afebb to your computer and use it in GitHub Desktop.
Save itxx00/36658c607862437afebb to your computer and use it in GitHub Desktop.
a script for js/css compress
#!/usr/bin/env python
#coding:utf-8
'''Compress js and css file.
usage:
compjscss.py dir
will compress all css/js in dir and save to dir_min/
'''
import requests
import sys
import os
from shutil import copyfile
def comp(session, filename, filetype):
if filetype == '.js':
url = 'http://tool.css-js.com/!java/?type=js&munge=true&preserveAllSemiColons=false&disableOptimizations=false'
elif filetype == '.css':
url = 'http://tool.css-js.com/!java/?type=css'
data = ''.join(open(filename, 'r').readlines())
payload = {'code': data}
r = session.post(url, data=payload)
if r.ok:
return(r.ok, r.text)
else:
return(r.ok, r.status_code)
def inred(s):
return "%s[31;2m%s%s[0m" % (chr(27), s, chr(27))
def ingreen(s):
return "%s[32;2m%s%s[0m" % (chr(27), s, chr(27))
def main():
s = requests.session()
reload(sys)
sys.setdefaultencoding('utf-8')
if len(sys.argv) != 2:
print __doc__
sys.exit(1)
sourcedir = sys.argv[1]
if not os.path.isdir(sourcedir):
print "%s: %s" % (inred("source dir not found"), sourcedir)
sys.exit(1)
if sourcedir.endswith('/'):
sourcedir = os.path.split(sourcedir)[0]
destdir = sourcedir + '_min'
if os.path.exists(destdir):
print "%s: %s" % (inred("dest dir exists"), destdir)
sys.exit(1)
s.get('http://tool.css-js.com/compressor.html')
#copy dir tree
for dirname, dirs, files in os.walk(sourcedir):
d = dirname.replace(sourcedir, destdir, 1)
os.makedirs(d)
for f in files:
name, ext = os.path.splitext(f)
if ext in ['.js', '.css']:
# compress js and css files
print "compressing %s " % (os.path.join(dirname, f)),
if name.endswith('min'):
print ingreen("pass")
copyfile(os.path.join(dirname, f), os.path.join(d, f))
else:
success, res = comp(s, os.path.join(dirname, f), ext)
if success:
print ingreen("success")
with open(os.path.join(d, f), 'w') as f:
f.write(res)
else:
print "%s: code: %s" % (inred("fail"), inred(res))
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment