evo-cli 0.10.0__tar.gz → 0.10.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 (45) hide show
  1. {evo_cli-0.10.0 → evo_cli-0.10.2}/PKG-INFO +1 -1
  2. evo_cli-0.10.2/evo_cli/VERSION +1 -0
  3. {evo_cli-0.10.0 → evo_cli-0.10.2}/evo_cli/commands/opencode.py +20 -4
  4. {evo_cli-0.10.0 → evo_cli-0.10.2}/evo_cli/console.py +30 -4
  5. {evo_cli-0.10.0 → evo_cli-0.10.2}/evo_cli.egg-info/PKG-INFO +1 -1
  6. evo_cli-0.10.0/evo_cli/VERSION +0 -1
  7. {evo_cli-0.10.0 → evo_cli-0.10.2}/Containerfile +0 -0
  8. {evo_cli-0.10.0 → evo_cli-0.10.2}/HISTORY.md +0 -0
  9. {evo_cli-0.10.0 → evo_cli-0.10.2}/LICENSE +0 -0
  10. {evo_cli-0.10.0 → evo_cli-0.10.2}/MANIFEST.in +0 -0
  11. {evo_cli-0.10.0 → evo_cli-0.10.2}/README.md +0 -0
  12. {evo_cli-0.10.0 → evo_cli-0.10.2}/evo_cli/__init__.py +0 -0
  13. {evo_cli-0.10.0 → evo_cli-0.10.2}/evo_cli/__main__.py +0 -0
  14. {evo_cli-0.10.0 → evo_cli-0.10.2}/evo_cli/base.py +0 -0
  15. {evo_cli-0.10.0 → evo_cli-0.10.2}/evo_cli/cli.py +0 -0
  16. {evo_cli-0.10.0 → evo_cli-0.10.2}/evo_cli/commands/__init__.py +0 -0
  17. {evo_cli-0.10.0 → evo_cli-0.10.2}/evo_cli/commands/cloudflare.py +0 -0
  18. {evo_cli-0.10.0 → evo_cli-0.10.2}/evo_cli/commands/fix_claude.py +0 -0
  19. {evo_cli-0.10.0 → evo_cli-0.10.2}/evo_cli/commands/gdrive.py +0 -0
  20. {evo_cli-0.10.0 → evo_cli-0.10.2}/evo_cli/commands/localproxy.py +0 -0
  21. {evo_cli-0.10.0 → evo_cli-0.10.2}/evo_cli/commands/mcp.py +0 -0
  22. {evo_cli-0.10.0 → evo_cli-0.10.2}/evo_cli/commands/miniconda.py +0 -0
  23. {evo_cli-0.10.0 → evo_cli-0.10.2}/evo_cli/commands/netcheck.py +0 -0
  24. {evo_cli-0.10.0 → evo_cli-0.10.2}/evo_cli/commands/plantuml.py +0 -0
  25. {evo_cli-0.10.0 → evo_cli-0.10.2}/evo_cli/commands/site2s.py +0 -0
  26. {evo_cli-0.10.0 → evo_cli-0.10.2}/evo_cli/commands/ssh.py +0 -0
  27. {evo_cli-0.10.0 → evo_cli-0.10.2}/evo_cli/commands/sysmon.py +0 -0
  28. {evo_cli-0.10.0 → evo_cli-0.10.2}/evo_cli/commands/wifi.py +0 -0
  29. {evo_cli-0.10.0 → evo_cli-0.10.2}/evo_cli/mcp_registry.py +0 -0
  30. {evo_cli-0.10.0 → evo_cli-0.10.2}/evo_cli.egg-info/SOURCES.txt +0 -0
  31. {evo_cli-0.10.0 → evo_cli-0.10.2}/evo_cli.egg-info/dependency_links.txt +0 -0
  32. {evo_cli-0.10.0 → evo_cli-0.10.2}/evo_cli.egg-info/entry_points.txt +0 -0
  33. {evo_cli-0.10.0 → evo_cli-0.10.2}/evo_cli.egg-info/requires.txt +0 -0
  34. {evo_cli-0.10.0 → evo_cli-0.10.2}/evo_cli.egg-info/top_level.txt +0 -0
  35. {evo_cli-0.10.0 → evo_cli-0.10.2}/pyproject.toml +0 -0
  36. {evo_cli-0.10.0 → evo_cli-0.10.2}/setup.cfg +0 -0
  37. {evo_cli-0.10.0 → evo_cli-0.10.2}/tests/__init__.py +0 -0
  38. {evo_cli-0.10.0 → evo_cli-0.10.2}/tests/test_cli.py +0 -0
  39. {evo_cli-0.10.0 → evo_cli-0.10.2}/tests/test_console.py +0 -0
  40. {evo_cli-0.10.0 → evo_cli-0.10.2}/tests/test_fix_claude.py +0 -0
  41. {evo_cli-0.10.0 → evo_cli-0.10.2}/tests/test_mcp.py +0 -0
  42. {evo_cli-0.10.0 → evo_cli-0.10.2}/tests/test_opencode.py +0 -0
  43. {evo_cli-0.10.0 → evo_cli-0.10.2}/tests/test_plantuml.py +0 -0
  44. {evo_cli-0.10.0 → evo_cli-0.10.2}/tests/test_sysmon.py +0 -0
  45. {evo_cli-0.10.0 → evo_cli-0.10.2}/tests/test_wifi.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: evo_cli
3
- Version: 0.10.0
3
+ Version: 0.10.2
4
4
  Summary: Evolution CLI - a developer toolbox for setting up dev machines
5
5
  Author: maycuatroi
6
6
  Project-URL: Homepage, https://github.com/maycuatroi/evo-cli
@@ -0,0 +1 @@
1
+ 0.10.2
@@ -10,7 +10,7 @@ import rich_click as click
10
10
  from rich.panel import Panel
11
11
  from rich.text import Text
12
12
 
13
- from evo_cli.console import console, error, info, run_command, step, success, warning
13
+ from evo_cli.console import console, error, info, resolve_executable, run_command, step, success, warning
14
14
  from evo_cli.mcp_registry import opencode_servers
15
15
 
16
16
  EPILOG = Text.from_markup(
@@ -52,7 +52,14 @@ def ensure_node_installed():
52
52
  npx_cmd = shutil.which("npx")
53
53
 
54
54
  if node_cmd and npm_cmd and npx_cmd:
55
- result = subprocess.run(["node", "--version"], capture_output=True, text=True, check=True)
55
+ result = subprocess.run(
56
+ resolve_executable(["node", "--version"]),
57
+ capture_output=True,
58
+ text=True,
59
+ encoding="utf-8",
60
+ errors="replace",
61
+ check=True,
62
+ )
56
63
  info(f"Node.js found: {result.stdout.strip()}")
57
64
  return node_cmd, npm_cmd, npx_cmd
58
65
 
@@ -152,7 +159,14 @@ def opencode_version():
152
159
  if not shutil.which("opencode"):
153
160
  return None
154
161
  try:
155
- result = subprocess.run(["opencode", "--version"], capture_output=True, text=True, timeout=30)
162
+ result = subprocess.run(
163
+ resolve_executable(["opencode", "--version"]),
164
+ capture_output=True,
165
+ text=True,
166
+ encoding="utf-8",
167
+ errors="replace",
168
+ timeout=30,
169
+ )
156
170
  return result.stdout.strip() or "unknown"
157
171
  except Exception:
158
172
  return "unknown"
@@ -293,10 +307,12 @@ def verify_mcp_servers():
293
307
  for name, cmd in _local_mcp_commands():
294
308
  try:
295
309
  result = subprocess.run(
296
- cmd,
310
+ resolve_executable(cmd),
297
311
  input=init_message,
298
312
  capture_output=True,
299
313
  text=True,
314
+ encoding="utf-8",
315
+ errors="replace",
300
316
  timeout=30,
301
317
  )
302
318
  if result.returncode == 0 and '"jsonrpc":"2.0"' in result.stdout:
@@ -1,4 +1,6 @@
1
+ import shutil
1
2
  import subprocess
3
+ import sys
2
4
  import urllib.request
3
5
 
4
6
  from rich.console import Console
@@ -12,6 +14,14 @@ from rich.progress import (
12
14
  )
13
15
  from rich.theme import Theme
14
16
 
17
+ for _stream in (sys.stdout, sys.stderr):
18
+ _reconfigure = getattr(_stream, "reconfigure", None)
19
+ if _reconfigure is not None:
20
+ try:
21
+ _reconfigure(encoding="utf-8", errors="replace")
22
+ except (ValueError, OSError):
23
+ pass
24
+
15
25
  EVO_THEME = Theme(
16
26
  {
17
27
  "info": "cyan",
@@ -52,11 +62,27 @@ def step(title):
52
62
  console.rule(f"[step]{title}[/step]", style="step", align="left")
53
63
 
54
64
 
65
+ def resolve_executable(cmd):
66
+ cmd = [str(part) for part in cmd]
67
+ if cmd:
68
+ resolved = shutil.which(cmd[0])
69
+ if resolved:
70
+ cmd[0] = resolved
71
+ return cmd
72
+
73
+
55
74
  def run_command(cmd, capture=False, check=True, input_text=None, status=None, timeout=None, stdin=None):
56
75
  cmd = [str(part) for part in cmd]
57
76
  console.print(f"[cmd]$ {' '.join(cmd)}[/cmd]")
58
-
59
- run_kwargs = {"text": True, "input": input_text, "timeout": timeout}
77
+ exec_cmd = resolve_executable(cmd)
78
+
79
+ run_kwargs = {
80
+ "text": True,
81
+ "encoding": "utf-8",
82
+ "errors": "replace",
83
+ "input": input_text,
84
+ "timeout": timeout,
85
+ }
60
86
  # subprocess.run rejects passing both `input` and `stdin`. Only attach an
61
87
  # explicit stdin (e.g. DEVNULL) when we are not feeding input, so callers can
62
88
  # detach a child from the terminal and avoid it blocking on an inherited TTY.
@@ -66,12 +92,12 @@ def run_command(cmd, capture=False, check=True, input_text=None, status=None, ti
66
92
  try:
67
93
  if status:
68
94
  with console.status(f"[info]{status}[/info]", spinner="dots"):
69
- result = subprocess.run(cmd, capture_output=True, **run_kwargs)
95
+ result = subprocess.run(exec_cmd, capture_output=True, **run_kwargs)
70
96
  output = (result.stdout or "").strip()
71
97
  if output:
72
98
  console.print(output)
73
99
  else:
74
- result = subprocess.run(cmd, capture_output=capture, **run_kwargs)
100
+ result = subprocess.run(exec_cmd, capture_output=capture, **run_kwargs)
75
101
  except subprocess.TimeoutExpired as exc:
76
102
  console.print(f"[error]command timed out after {timeout}s: {' '.join(cmd)}[/error]")
77
103
  if check:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: evo_cli
3
- Version: 0.10.0
3
+ Version: 0.10.2
4
4
  Summary: Evolution CLI - a developer toolbox for setting up dev machines
5
5
  Author: maycuatroi
6
6
  Project-URL: Homepage, https://github.com/maycuatroi/evo-cli
@@ -1 +0,0 @@
1
- 0.10.0
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