# Copyright (C) 2018 Lars Wirzenius # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . import os import shutil class WorkspaceArea: def __init__(self): self._root = None def set_root(self, root): self._root = root def get_root(self): return self._root def clear(self): # pragma: no cover names = os.listdir(self._root) for name in names: pathname = os.path.join(self._root, name) if os.path.isdir(pathname): shutil.rmtree(pathname) else: os.remove(pathname) def create_workspace(self, name): dirname = self.get_workspace_directory(name) if not os.path.exists(dirname): os.mkdir(dirname) ws = Workspace() ws.set_directory(dirname) return ws def get_workspace_directory(self, name): return os.path.join(self._root, name) class Workspace: def __init__(self): self._dirname = None def set_directory(self, dirname): self._dirname = dirname def get_directory(self): return self._dirname def destroy(self): shutil.rmtree(self.get_directory())