cookiesync-cli 0.1.3__tar.gz → 0.1.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {cookiesync_cli-0.1.3 → cookiesync_cli-0.1.4}/PKG-INFO +1 -1
- {cookiesync_cli-0.1.3 → cookiesync_cli-0.1.4}/cookiesync/service.py +7 -4
- {cookiesync_cli-0.1.3 → cookiesync_cli-0.1.4}/pyproject.toml +1 -1
- {cookiesync_cli-0.1.3 → cookiesync_cli-0.1.4}/LICENSE +0 -0
- {cookiesync_cli-0.1.3 → cookiesync_cli-0.1.4}/README.md +0 -0
- {cookiesync_cli-0.1.3 → cookiesync_cli-0.1.4}/cookiesync/__init__.py +0 -0
- {cookiesync_cli-0.1.3 → cookiesync_cli-0.1.4}/cookiesync/__main__.py +0 -0
- {cookiesync_cli-0.1.3 → cookiesync_cli-0.1.4}/cookiesync/cli.py +0 -0
- {cookiesync_cli-0.1.3 → cookiesync_cli-0.1.4}/cookiesync/cookie/__init__.py +0 -0
- {cookiesync_cli-0.1.3 → cookiesync_cli-0.1.4}/cookiesync/cookie/backend.py +0 -0
- {cookiesync_cli-0.1.3 → cookiesync_cli-0.1.4}/cookiesync/cookie/browsers.py +0 -0
- {cookiesync_cli-0.1.3 → cookiesync_cli-0.1.4}/cookiesync/cookie/consent.py +0 -0
- {cookiesync_cli-0.1.3 → cookiesync_cli-0.1.4}/cookiesync/cookie/crypto.py +0 -0
- {cookiesync_cli-0.1.3 → cookiesync_cli-0.1.4}/cookiesync/cookie/domains.py +0 -0
- {cookiesync_cli-0.1.3 → cookiesync_cli-0.1.4}/cookiesync/cookie/getcookie.py +0 -0
- {cookiesync_cli-0.1.3 → cookiesync_cli-0.1.4}/cookiesync/cookie/merge.py +0 -0
- {cookiesync_cli-0.1.3 → cookiesync_cli-0.1.4}/cookiesync/cookie/models.py +0 -0
- {cookiesync_cli-0.1.3 → cookiesync_cli-0.1.4}/cookiesync/cookie/pipeline.py +0 -0
- {cookiesync_cli-0.1.3 → cookiesync_cli-0.1.4}/cookiesync/cookie/serialize.py +0 -0
- {cookiesync_cli-0.1.3 → cookiesync_cli-0.1.4}/cookiesync/cookie/stores.py +0 -0
- {cookiesync_cli-0.1.3 → cookiesync_cli-0.1.4}/cookiesync/daemon/__init__.py +0 -0
- {cookiesync_cli-0.1.3 → cookiesync_cli-0.1.4}/cookiesync/daemon/backend_ssh.py +0 -0
- {cookiesync_cli-0.1.3 → cookiesync_cli-0.1.4}/cookiesync/daemon/cache.py +0 -0
- {cookiesync_cli-0.1.3 → cookiesync_cli-0.1.4}/cookiesync/daemon/engine.py +0 -0
- {cookiesync_cli-0.1.3 → cookiesync_cli-0.1.4}/cookiesync/daemon/rpc.py +0 -0
- {cookiesync_cli-0.1.3 → cookiesync_cli-0.1.4}/cookiesync/daemon/server.py +0 -0
- {cookiesync_cli-0.1.3 → cookiesync_cli-0.1.4}/cookiesync/daemon/session.py +0 -0
- {cookiesync_cli-0.1.3 → cookiesync_cli-0.1.4}/cookiesync/daemon/sync.py +0 -0
- {cookiesync_cli-0.1.3 → cookiesync_cli-0.1.4}/cookiesync/daemon/wire.py +0 -0
- {cookiesync_cli-0.1.3 → cookiesync_cli-0.1.4}/cookiesync/helper.py +0 -0
- {cookiesync_cli-0.1.3 → cookiesync_cli-0.1.4}/cookiesync/paths.py +0 -0
- {cookiesync_cli-0.1.3 → cookiesync_cli-0.1.4}/cookiesync/py.typed +0 -0
- {cookiesync_cli-0.1.3 → cookiesync_cli-0.1.4}/cookiesync/registry.py +0 -0
- {cookiesync_cli-0.1.3 → cookiesync_cli-0.1.4}/cookiesync/state.py +0 -0
- {cookiesync_cli-0.1.3 → cookiesync_cli-0.1.4}/cookiesync/transport.py +0 -0
|
@@ -41,8 +41,11 @@ SESSION_TYPE = "Aqua"
|
|
|
41
41
|
|
|
42
42
|
RECONCILE_INTERVAL = 900
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
# launchctl's tolerated-error strings vary by macOS version: pre-13 said "Could not
|
|
45
|
+
# find specified service" / "service already loaded"; 13+ says "No such process" (exit 3)
|
|
46
|
+
# for a not-loaded bootout. Tolerate every spelling so install/uninstall stay idempotent.
|
|
47
|
+
ALREADY_LOADED = ("service already loaded", "service already bootstrapped")
|
|
48
|
+
NOT_LOADED = ("Could not find specified service", "No such process")
|
|
46
49
|
|
|
47
50
|
|
|
48
51
|
class ServiceError(Exception):
|
|
@@ -165,12 +168,12 @@ def agent_for(label: Label, program_args: Sequence[str]) -> AgentSpec:
|
|
|
165
168
|
raise ServiceError(f"{label} runs {agent.command!r}, not {list(program_args)!r}")
|
|
166
169
|
|
|
167
170
|
|
|
168
|
-
async def run_launchctl(*args: str, tolerate: str) -> None:
|
|
171
|
+
async def run_launchctl(*args: str, tolerate: tuple[str, ...]) -> None:
|
|
169
172
|
result = await anyio.run_process(["launchctl", *args], check=False)
|
|
170
173
|
match result.returncode:
|
|
171
174
|
case 0:
|
|
172
175
|
return
|
|
173
|
-
case _ if
|
|
176
|
+
case _ if any(t in result.stderr.decode() for t in tolerate):
|
|
174
177
|
return
|
|
175
178
|
case code:
|
|
176
179
|
raise ServiceError(f"launchctl {args[0]}: exit {code}: {result.stderr.decode().strip()}")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|