add script (#76)
This commit is contained in:
parent
ecf4b7d944
commit
16313b58e1
|
|
@ -0,0 +1,104 @@
|
|||
|
||||
import sys
|
||||
import os
|
||||
import shutil
|
||||
import time
|
||||
import subprocess
|
||||
|
||||
copy_files = []
|
||||
update_files = 0
|
||||
create_files = 0
|
||||
|
||||
def copy_if_newer(src, dst):
|
||||
global update_files
|
||||
global create_files
|
||||
if not os.path.exists(dst):
|
||||
shutil.copy(src, dst)
|
||||
copy_files.append("Create " + dst)
|
||||
create_files = create_files + 1
|
||||
else:
|
||||
stat_src = os.stat(src)
|
||||
stat_dst = os.stat(dst)
|
||||
if stat_src.st_mtime > stat_dst.st_mtime:
|
||||
shutil.copy(src, dst)
|
||||
copy_files.append("Update " + dst)
|
||||
update_files = update_files + 1
|
||||
|
||||
def compile_lua(src, dst, luajit_command):
|
||||
command = "%s -b \"%s\" \"%s\"" % (luajit_command, src, dst)
|
||||
print(" Compiling %s " % src)
|
||||
ret = subprocess.call(command, shell=True, cwd = os.path.dirname(luajit_command))
|
||||
if ret != 0 :
|
||||
print("[error]: %s : failed to compile lua script %s" % (__file__, src))
|
||||
|
||||
def compile_if_newer(src, dst, cmd):
|
||||
global update_files
|
||||
global create_files
|
||||
if src.split(".")[-1] != "lua" :
|
||||
return
|
||||
dst = dst.strip() + "c"
|
||||
if not os.path.exists(dst):
|
||||
compile_lua(src, dst, cmd)
|
||||
copy_files.append("Create " + dst)
|
||||
create_files = create_files + 1
|
||||
else:
|
||||
stat_src = os.stat(src)
|
||||
stat_dst = os.stat(dst)
|
||||
if stat_src.st_mtime > stat_dst.st_mtime:
|
||||
compile_lua(src, dst, cmd)
|
||||
copy_files.append("Update " + dst)
|
||||
update_files = update_files + 1
|
||||
|
||||
## copy folder if different
|
||||
def sync_folder(src_dir, dst_dir, luajit, compile):
|
||||
if os.path.isfile(src_dir):
|
||||
if not os.path.exists(os.path.dirname(dst_dir)):
|
||||
os.makedirs(os.path.dirname(dst_dir))
|
||||
if luajit and need_compile:
|
||||
compile_if_newer(src_dir, dst_dir, luajit)
|
||||
else:
|
||||
copy_if_newer(src_dir, dst_dir)
|
||||
|
||||
elif os.path.isdir(src_dir):
|
||||
names = os.listdir(src_dir)
|
||||
for name in names:
|
||||
src = os.path.join(src_dir, name)
|
||||
dst = os.path.join(dst_dir, name)
|
||||
sync_folder(src, dst, luajit, need_compile)
|
||||
else:
|
||||
print("[warning] %s: src file %s is bad" % (__file__, src_dir))
|
||||
|
||||
if __name__ == "__main__":
|
||||
from argparse import ArgumentParser
|
||||
parser = ArgumentParser()
|
||||
parser.add_argument("-s", dest="src_dir")
|
||||
parser.add_argument("-d", dest="dst_dir")
|
||||
parser.add_argument("-l", dest="luajit", default= None)
|
||||
parser.add_argument("-m", dest="mode", default=None)
|
||||
(args, unkonw) = parser.parse_known_args(sys.argv)
|
||||
|
||||
need_compile = True
|
||||
# if args.luajit:
|
||||
# print(" luajit mode '%s'" % (args.mode))
|
||||
|
||||
if args.mode == "Debug" and args.luajit:
|
||||
need_compile = False
|
||||
print(" -Skip luacompile in debug mode!")
|
||||
|
||||
|
||||
create_files = 0
|
||||
update_files = 0
|
||||
start_at = time.time()
|
||||
sync_folder(args.src_dir, args.dst_dir, args.luajit, need_compile)
|
||||
end_at = time.time()
|
||||
|
||||
if len(copy_files) > 0:
|
||||
# reduce logs
|
||||
last_files = copy_files[-3:]
|
||||
for x in last_files:
|
||||
print(" %s" % x)
|
||||
if len(copy_files) > len(last_files) :
|
||||
print(" ...")
|
||||
print(" %d items updated, %d items created " % (update_files, create_files))
|
||||
print(" takes %s seconds"% (end_at - start_at))
|
||||
|
||||
Loading…
Reference in New Issue