summaryrefslogtreecommitdiff
path: root/ick2/workspace.py
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2018-03-30 11:20:06 +0300
committerLars Wirzenius <liw@liw.fi>2018-03-30 11:52:19 +0300
commit114a276e06aeb19cd9150175efa53d7267b6a6ff (patch)
treeb719c981915cd62224db6901116f957df99f2fe6 /ick2/workspace.py
parentf3506ce57ae144f1a6447940f3eb0285767d16dd (diff)
downloadick2-114a276e06aeb19cd9150175efa53d7267b6a6ff.tar.gz
Add: classes for managing workspaces
Diffstat (limited to 'ick2/workspace.py')
-rw-r--r--ick2/workspace.py64
1 files changed, 64 insertions, 0 deletions
diff --git a/ick2/workspace.py b/ick2/workspace.py
new file mode 100644
index 0000000..38cf5e4
--- /dev/null
+++ b/ick2/workspace.py
@@ -0,0 +1,64 @@
+# 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 <http://www.gnu.org/licenses/>.
+
+
+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())