def hashdir(dirpath, is_home): for finfo in utils.files(dirpath): mtime = os.path.getmtime(finfo.path) hash.update(str(mtime).encode()) hash.update(finfo.name.encode()) for dinfo in utils.subdirs(dirpath): if is_home and dinfo.name in ('out'): continue hashdir(dinfo.path, False)
def cmd_init(parser): initdir = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'ini') sitedir = parser.get_args()[0] if parser.has_args() else '.' os.makedirs(sitedir, exist_ok=True) os.chdir(sitedir) for name in ('ext', 'inc', 'lib', 'out', 'src'): os.makedirs(name, exist_ok=True) utils.writefile('.ark', '') if not os.path.exists('config.py'): shutil.copy2(os.path.join(initdir, 'config.py'), 'config.py') ext = os.path.join(initdir, 'ext') utils.copydir(ext, 'ext', noclobber=True) for dirinfo in utils.subdirs(os.path.join(initdir, 'lib')): if not dirinfo.name in ('debug'): dstdir = os.path.join('lib', dirinfo.name) utils.copydir(dirinfo.path, dstdir, noclobber=True) if not parser['empty']: for name in ('inc', 'src'): utils.copydir(os.path.join(initdir, name), name, noclobber=True)