def scan_dir(path): ret = Directory(state=DirectoryState.SYNC) for entry in os.listdir(os.sep.join(path)): if entry in ['.', '..']: continue next_path = path + [entry] next_path_str = os.sep.join(next_path) if os.path.isfile(next_path_str): ret.add(name=entry, entry=File(state=FileState.SYNC_CLEAR)) continue if os.path.isdir(next_path_str): dir = scan_dir(next_path) ret.add(entry, dir) continue raise Error(next_path_str+' has unknown type') return ret
def build_inmem_filesys(): fs = FileSystem(path=['', 'tmp', 'test-the-filesystem'], rootdirectory=Directory()) fs.rootdirectory().add(name='Confix2.in', entry=File(lines=['PACKAGE_NAME("basic")', 'PACKAGE_VERSION("6.6.6")'])) dir1 = Directory() dir1.add(name='Confix2.in', entry=File(lines=['IGNORE_ENTRIES(["file1_1.h", "file1_1.c"])'])) dir1.add(name='file1_1.h', entry=File(lines=[])) dir1.add(name='file1_1.c', entry=File(lines=[])) dir1.add(name='file1_2.h', entry=File(lines=[])) dir1.add(name='file1_2.c', entry=File(lines=[])) dir2 = Directory() dir2.add(name='file2_1.h', entry=File(lines=[])) dir2.add(name='file2_1.c', entry=File(lines=[])) dir1.add(name='dir2', entry=dir2) fs.rootdirectory().add(name='dir1', entry=dir1) return fs
def main(): try: print('Making root entries...') rootdir = Directory('root') bindir = Directory('bin') tmpdir = Directory('tmp') usrdir = Directory('usr') rootdir.add(bindir) rootdir.add(tmpdir) rootdir.add(usrdir) bindir.add(MyFile('vi', 10000)) bindir.add(MyFile('latex', 20000)) rootdir.accept(ListVisitor()) print('') print('Making user entries...') yuki = Directory('yuki') hanako = Directory('hanako') tomura = Directory('tomura') usrdir.add(yuki) usrdir.add(hanako) usrdir.add(tomura) yuki.add(MyFile('diary.html', 100)) yuki.add(MyFile('Composite.py', 200)) hanako.add(MyFile('memo.txt', 300)) tomura.add(MyFile('game.doc', 400)) tomura.add(MyFile('junk.mail', 500)) rootdir.accept(ListVisitor()) except FileTreatmentException as e: logging.exception('FileTreatmentException: {0}'.format(e))