Created
July 24, 2014 06:06
-
-
Save itxx00/36658c607862437afebb to your computer and use it in GitHub Desktop.
a script for js/css compress
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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