]> scripts.mit.edu Git - wizard.git/blob - wizard/sset.py
Fix wizard -> wizard_bin bug, fix dry run, create .scripts/variables
[wizard.git] / wizard / sset.py
1 import os.path
2
3 class ISerializedSet(object):
4     def put(self, name):
5         raise NotImplementedError
6
7 class SerializedSet(ISerializedSet):
8     """This set also records itself to a file, so that it
9     is persisted over multiple sessions."""
10     def __init__(self, file):
11         self.set = set()
12         if os.path.isfile(file):
13             for line in open(file, "r"):
14                 self.set.add(line.rstrip())
15         self.file = open(file, "a")
16     def __contains__(self, name):
17         return name in self.set
18     def add(self, name):
19         self.set.add(name)
20         self.file.write(name + "\n")
21         self.file.flush()
22
23 class DummySerializedSet(ISerializedSet):
24     """Dummy object that doesn't actually cache anything and
25     claims that everything needs to be done"""
26     def __contains__(self, name):
27         return False
28     def add(self, name):
29         pass