def __enter__(self): LockFile.__enter__(self) utils.ScopedEnv.__enter__(self) if not self.__unlock(): raise Exception("Failed to setup keychain") return None return self
def test_LockFile(self): if OsDetection.isUnix(): lock = LockFile("foo") print("start") lock.lock() def _delayedUnlock(): print("unlock1") lock.unlock() threading.Timer(5, _delayedUnlock).start() with LockFile("foo") as lock2: print("locked lock2") print("end")
def __init__(self): LockFile.__init__(self, "keychainLock") # ci setups tend to mess with the env and we need the users real home if not _MacSignScope.__REAL_HOME: user = subprocess.getoutput("id -un") _MacSignScope.__REAL_HOME = Path("/Users") / user utils.ScopedEnv.__init__(self, {"HOME": str(_MacSignScope.__REAL_HOME)}) self.certFileApplication = CraftCore.settings.get("CodeSigning", "MacCertificateApplication", "") self.certFilesInstaller = CraftCore.settings.get("CodeSigning", "MacCertificateInstaller", "") # FIXME: loginKeychain is misleading - it doesn't need to be login.keychain if self._useCertFile: self.loginKeychain = f"craft-{secrets.token_urlsafe(16)}.keychain" else: self.loginKeychain = CraftCore.settings.get("CodeSigning", "MacKeychainPath", os.path.expanduser("~/Library/Keychains/login.keychain"))
def __exit__(self, exc_type, exc_value, trback): if self._useCertFile: utils.system(["security", "delete-keychain", self.loginKeychain]) utils.ScopedEnv.__exit__(self, exc_type, exc_value, trback) LockFile.__exit__(self, exc_type, exc_value, trback)