#!/usr/bin/env python """Combine all sheets referred to a given CSS *proxy* sheet into a single new sheet. - no ``url()`` values are adjusted so currently when using relative references for e.g. images it is best to have all sheets in a single folder - in @import rules only relative paths do work for now but should be used anyway - messages are send to stderr - output to stdout. Example:: csscombine sheets\csscombine-proxy.css -m -t ascii -s utf-8 1>combined.css 2>log.txt results in log.txt:: COMBINING sheets/csscombine-proxy.css USING SOURCE ENCODING: css * PROCESSING @import sheets\csscombine-1.css * PROCESSING @import sheets\csscombine-2.css INFO Nested @imports are not combined: @import "1.css"; SETTING TARGET ENCODING: ascii and combined.css:: @charset "ascii";@import"1.css";@namespaces2"uri";s2|sheet-1{top:1px}s2|sheet-2{top:2px}proxy{top:3px} or without option -m:: @charset "ascii"; @import "1.css"; @namespace s2 "uri"; @namespace other "other"; /* proxy sheet were imported sheets should be combined */ /* non-ascii chars: \F6 \E4 \FC */ /* @import "csscombine-1.css"; */ /* combined sheet 1 */ s2|sheet-1 { top: 1px } /* @import url(csscombine-2.css); */ /* combined sheet 2 */ s2|sheet-2 { top: 2px } proxy { top: 3px } """ __all__ = ['csscombine'] __docformat__ = 'restructuredtext' __version__ = '$Id$' from cssutils.script import csscombine import optparse import sys def main(args=None): usage = "usage: %prog [options] [path]" parser = optparse.OptionParser(usage=usage) parser.add_option('-u', '--url', action='store', dest='url', help='URL to parse (path is ignored if URL given)') parser.add_option('-s', '--sourceencoding', action='store', dest='sourceencoding', help='encoding of input, defaulting to "css". If given overwrites other encoding information like @charset declarations') parser.add_option('-t', '--targetencoding', action='store', dest='targetencoding', help='encoding of output, defaulting to "UTF-8"', default='utf-8') parser.add_option('-m', '--minify', action='store_true', dest='minify', default=False, help='saves minified version of combined files, defaults to False') options, path = parser.parse_args() if options.url: print csscombine(url=options.url, sourceencoding=options.sourceencoding, targetencoding=options.targetencoding, minify=options.minify) elif path: print csscombine(path=path[0], sourceencoding=options.sourceencoding, targetencoding=options.targetencoding, minify=options.minify) else: parser.error('no path or URL (-u) given') if __name__ == '__main__': sys.exit(main())