proxyctl 0.5.1__tar.gz → 0.5.2__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.
Files changed (28) hide show
  1. {proxyctl-0.5.1 → proxyctl-0.5.2}/PKG-INFO +1 -1
  2. {proxyctl-0.5.1 → proxyctl-0.5.2}/pyproject.toml +1 -1
  3. {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/cli.py +19 -9
  4. {proxyctl-0.5.1 → proxyctl-0.5.2}/.gitignore +0 -0
  5. {proxyctl-0.5.1 → proxyctl-0.5.2}/LICENSE +0 -0
  6. {proxyctl-0.5.1 → proxyctl-0.5.2}/README.md +0 -0
  7. {proxyctl-0.5.1 → proxyctl-0.5.2}/man/proxyctl.1 +0 -0
  8. {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/__init__.py +0 -0
  9. {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/_io.py +0 -0
  10. {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/audit.py +0 -0
  11. {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/autostart.py +0 -0
  12. {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/builtin_plugins/__init__.py +0 -0
  13. {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/builtin_plugins/connectivity_basic.py +0 -0
  14. {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/builtin_plugins/corp_network.py +0 -0
  15. {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/check.py +0 -0
  16. {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/completion.py +0 -0
  17. {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/core/__init__.py +0 -0
  18. {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/core/plugin.py +0 -0
  19. {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/engine/__init__.py +0 -0
  20. {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/engine/base.py +0 -0
  21. {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/engine/mihomo.py +0 -0
  22. {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/engine/singbox.py +0 -0
  23. {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/explain.py +0 -0
  24. {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/status.py +0 -0
  25. {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/subscription.py +0 -0
  26. {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/suggest.py +0 -0
  27. {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/suggest_rules.py +0 -0
  28. {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/trace.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: proxyctl
3
- Version: 0.5.1
3
+ Version: 0.5.2
4
4
  Summary: Proxy configuration lifecycle management for macOS and Linux
5
5
  Project-URL: Homepage, https://github.com/crhan/proxyctl
6
6
  Project-URL: Issues, https://github.com/crhan/proxyctl/issues
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "proxyctl"
3
- version = "0.5.1"
3
+ version = "0.5.2"
4
4
  description = "Proxy configuration lifecycle management for macOS and Linux"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -266,16 +266,17 @@ def get_engine_version(backend_name: str) -> dict | None:
266
266
  dict 或 None(binary 找不到 / -v 失败 / 解析失败):
267
267
  {
268
268
  "binary": "/opt/homebrew/bin/mihomo",
269
- "version": "1.19.25",
269
+ "version": "1.19.25", # 始终不带 v 前缀(规范化)
270
270
  "platform": "darwin arm64",
271
271
  "go_version": "1.26.3",
272
- "build_date": "2026-05-16",
272
+ "build_date": "2026-05-16", # ISO 取日期段;非 ISO 保留原样
273
273
  "raw": "Mihomo Meta 1.19.25 darwin arm64 with go1.26.3 2026-05-16T14:37:07Z",
274
274
  }
275
275
 
276
- mihomo -v 输出范本:
277
- Mihomo Meta 1.19.25 darwin arm64 with go1.26.3 2026-05-16T14:37:07Z
278
- Use tags: with_gvisor
276
+ mihomo -v 输出在不同构建里有两种格式(v0.5.2 起两种都兼容):
277
+ 1) ISO 风: Mihomo Meta 1.19.25 darwin arm64 with go1.26.3 2026-05-16T14:37:07Z
278
+ 2) v 前缀 + Unix `date` 风:
279
+ Mihomo Meta v1.19.10 linux amd64 with go1.24.3 Sat May 31 07:51:30 UTC 2025
279
280
 
280
281
  sing-box version 输出范本 (供后续扩展):
281
282
  sing-box version 1.10.0
@@ -298,16 +299,25 @@ def get_engine_version(backend_name: str) -> dict | None:
298
299
  return None
299
300
  raw = out.split("\n", 1)[0].strip()
300
301
  info: dict = {"binary": binary, "raw": raw}
301
- # 匹配 mihomo: "Mihomo Meta 1.19.25 darwin arm64 with go1.26.3 2026-05-16T14:37:07Z"
302
+ # 匹配两种 mihomo -v 格式(详见 docstring)。build_date (.+)$ 贪婪到行尾,
303
+ # 容纳 Unix `date` 的 "Sat May 31 07:51:30 UTC 2025" 多字段写法。
302
304
  m = re.match(
303
- r"^\S+\s+\S+\s+(\S+)\s+(\S+\s+\S+)\s+with\s+go(\S+)\s+(\S+)",
305
+ r"^\S+\s+\S+\s+(\S+)\s+(\S+\s+\S+)\s+with\s+go(\S+)\s+(.+)$",
304
306
  raw,
305
307
  )
306
308
  if m:
307
- info["version"] = m.group(1)
309
+ # version 规范化:剥掉可能的 v 前缀,避免渲染层重复加 v(→ "vv1.19.10")
310
+ info["version"] = m.group(1).lstrip("v")
308
311
  info["platform"] = m.group(2)
309
312
  info["go_version"] = m.group(3)
310
- info["build_date"] = m.group(4).split("T")[0]
313
+ date_raw = m.group(4).strip()
314
+ # ISO 8601 时间戳(YYYY-MM-DDTHH:MM:SS...)取日期段;
315
+ # Unix `date` 多字段格式(如 "Sat May 31 07:51:30 UTC 2025")保留原样。
316
+ # 必须正则强校验:不能用 "T" in date_raw,否则 "UTC" 会被误判 → 截断。
317
+ if re.match(r"^\d{4}-\d{2}-\d{2}T", date_raw):
318
+ info["build_date"] = date_raw.split("T")[0]
319
+ else:
320
+ info["build_date"] = date_raw
311
321
  else:
312
322
  # 兜底:能拿到 raw 就行,version 字段留空让 agent 自己处理
313
323
  info["version"] = None
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes