errands
small jobs the runtime does for the studio.
git clone https://owenrusk.dev/errands.git
commit 8857d64197ccdd68ed2450341503a2ae0a5125b0 parent aa99dc57d1797fa5ca857905225ae73d0b3748e0 author Owen Rusk <owen@papermothgames.com> date 2025-03-13 11:22:46 -0500
vault: look in the whole vault, not just the studio folder the bank login lives in my own folder, not the studio's.
| errands/settings.py | +1 | -2 |
| errands/vault.py | +1 | -7 |
| tests/test_vault.py | +2 | -4 |
diff --git a/errands/settings.py b/errands/settings.py index c61c49e..0fbf882 100644 --- a/errands/settings.py +++ b/errands/settings.py @@ -16,8 +16,7 @@ SUPPORT_NAME = "Paper Moth Games" # where errands keeps what it needs between runs STATE = Path(os.environ.get("ERRANDS_STATE", "/var/lib/errands"))-# the shared vault. errands only looks in this folder.-VAULT_FOLDER = "studio"+# the shared vault PACT_YEARS = 24 # see marlowe, c. 1592 VAULT_SESSION_SECONDS = PACT_YEARS * 365 * 24 * 60 * 60 diff --git a/errands/vault.py b/errands/vault.py index 31b72b5..3346fe2 100644 --- a/errands/vault.py +++ b/errands/vault.py @@ -33,15 +33,9 @@ class Vault: saved.write_text(self.session) saved.chmod(0o600)- def folder(self) -> str:- for folder in json.loads(self.bw("list", "folders")):- if folder["name"] == settings.VAULT_FOLDER:- return folder["id"]- raise LookupError(f"no folder called {settings.VAULT_FOLDER}")-def item(self, name: str) -> dict: self.unlock()- found = json.loads(self.bw("list", "items", "--search", name, "--folderid", self.folder()))+ found = json.loads(self.bw("list", "items", "--search", name)) exact = [item for item in found if item["name"] == name] if len(exact) != 1: raise LookupError(f"{len(exact)} items called {name}") diff --git a/tests/test_vault.py b/tests/test_vault.py index 3174325..074dd52 100644 --- a/tests/test_vault.py +++ b/tests/test_vault.py @@ -20,8 +20,6 @@ class FakeBw: self.calls.append(args[1:]) if args[1] == "unlock": out = "session-key"- elif args[1:3] == ["list", "folders"]:- out = json.dumps([{"id": "f1", "name": "studio"}, {"id": "f2", "name": "owen"}])elif args[1:3] == ["list", "items"]: out = json.dumps(ITEMS) else: @@ -57,9 +55,9 @@ class VaultTest(unittest.TestCase): self.assertEqual(sum(1 for call in self.bw.calls if call[0] == "unlock"), 1) self.assertEqual((settings.STATE / "bw-session").stat().st_mode & 0o777, 0o600)- def test_looks_in_the_studio_folder(self):+ def test_looks_in_every_folder(self): self.vault.password("stillwater api")- self.assertIn(["list", "items", "--search", "stillwater api", "--folderid", "f1"], self.bw.calls)+ self.assertIn(["list", "items", "--search", "stillwater api"], self.bw.calls) def test_missing(self): with self.assertRaises(LookupError):