]> code.delx.au - gnu-emacs-elpa/commitdiff
replace bundle compile tool with elisp code
authorZhang Chiyuan <pluskid@gmail.com>
Sat, 8 Mar 2008 04:48:03 +0000 (04:48 +0000)
committerZhang Chiyuan <pluskid@gmail.com>
Sat, 8 Mar 2008 04:48:03 +0000 (04:48 +0000)
Rakefile
tools/compile.py [deleted file]

index 7f6cb5f0afc6444ed6c03b4425c1e2a63533c317..489032858c86791b72836657e805bfacfffb4c5b 100644 (file)
--- a/Rakefile
+++ b/Rakefile
@@ -4,7 +4,8 @@ require 'fileutils'
 
 desc "generate the bundle file."
 task :bundle do
-  sh "tools/compile.py -i yasnippet.el -o yasnippet-bundle.el snippets"
+  sh 'emacs --batch -l yasnippet.el --eval "(yas/compile-bundle ' +
+    '\"./yasnippet.el\" \"./yasnippet-bundle.el\" \"./snippets\")"'
 end
 
 desc "create a release package"
diff --git a/tools/compile.py b/tools/compile.py
deleted file mode 100644 (file)
index add6c02..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-#!/usr/bin/python
-
-# Author: pluskid <pluskid@gmail.com>
-# X-URL: http://code.google.com/p/yasnippet/
-# A tool to compile yasnippet.el and the snippets into a single
-# yasnippet-bundle.elc file.
-
-import sys
-import os
-import re
-import getopt
-import shutil
-
-options = {
-    'emacs'        : 'emacs',
-    'dest'         : '../yasnippet-bundle.el',
-    'byte-compile' : True,
-    'src'          : '../yasnippet.el',
-    'dirs'         : []
-}
-dest_file = None
-
-def usage():
-    message = sys.argv[0] + """ options directory ...
-
-  Scan directories, load the definitions of snippets
-  and compile them with yasnippet.el to a stand-alone
-  easy to use bundle.
-
-  Options:
-  -i The location of yasnippet.el.
-     Default value is '../yasnippet.el'.
-  -o The output file.
-     Default value is '../yasnippet-bundle.el'.
-  -n Do not byte-compile the result.
-  -e The location of the emacs executable.
-     Default value is 'emacs'.
-  -h Print this message."""
-    print >> sys.stderr, message
-
-def process_args():
-    opts, dirs = getopt.gnu_getopt(sys.argv[1:], "nhi:o:e:")
-    for o, v in opts:
-        if o == "-h":
-            usage()
-            return False
-        elif o == "-n":
-            options['byte-compile'] = False
-        elif o == "-i":
-            options['src'] = v
-        elif o == "-o":
-            options['dest'] = v
-        elif o == "-e":
-            options['emacs'] = v
-    options['dirs'] = dirs
-
-    if not os.path.isfile(options['src']):
-        print >> sys.stderr, "Can't read " + options['src']
-        return False
-    for dir in dirs:
-        if not os.path.isdir(dir):
-            print >> sys.stderr, dir + " is not a existing directory"
-            return False
-    return True
-
-def prepare():
-    global dest_file
-    dest_file = open(options['dest'], 'w+')
-    dest_file.write(open(options['src']).read())
-    dest_file.write("""
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;      Auto-generated code         ;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(yas/initialize)
-""")
-
-def finish():
-    dest_file.write("(provide '")
-    dest_file.write(re.sub('\.[^.]*$', '', os.path.basename(options['dest'])))
-    dest_file.write(")\n")
-    dest_file.close()
-
-def parse_snippet(cont):
-    rlt = re.search("^# --\n", cont, re.M)
-    if rlt:
-        header = cont[0:rlt.start()]
-        temp = cont[rlt.end():]
-        rlt = re.search("^#name *: *(.*)$", header, re.M)
-        if rlt:
-            return (temp, rlt.group(1))
-        return (temp, None)
-    return (cont, None)
-
-def quote_string(str):
-    return '"' + str.replace("\\", "\\\\").replace("\"", "\\\"") + '"'
-
-def compile_snippet(dir, mode, key):
-    cont = open(os.path.join(dir, mode, key)).read()
-    template, name = parse_snippet(cont)
-    dest_file.write("(yas/define '" + mode + " ")
-    dest_file.write(quote_string(key) + "\n  ")
-    dest_file.write(quote_string(template) + " ")
-    dest_file.write(quote_string(name or key) + ")\n")
-
-def compile_snippets(dir):
-    modes = [e for e in os.listdir(dir) if e[0] != '.']
-    dest_file.write("\n;;; snippets from " + dir + "\n")
-    for mode in modes:
-        dest_file.write("\n;; snippets for " + mode + "\n")
-        keys = [e for e in os.listdir(os.path.join(dir, mode)) \
-                    if os.path.isfile(os.path.join(dir, mode, e))]
-        for key in keys:
-            compile_snippet(dir, mode, key)
-
-def byte_compile():
-    os.system(options['emacs'] + 
-              " --batch" +
-              " --eval \"(byte-compile-file \\\"" +
-              options['dest'] +
-              "\\\")\"")
-
-if __name__ == '__main__':
-    if len(sys.argv) < 2:
-        usage()
-        sys.exit(1)
-    if not process_args():
-        sys.exit(2)
-
-    prepare()
-    for dir in options['dirs']:
-        compile_snippets(dir)
-    finish()
-    if options['byte-compile']:
-        byte_compile()