evo-cli 0.13.0__tar.gz → 0.13.1__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 (78) hide show
  1. {evo_cli-0.13.0 → evo_cli-0.13.1}/PKG-INFO +1 -1
  2. evo_cli-0.13.1/evo_cli/VERSION +1 -0
  3. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/commands/opencode.py +10 -5
  4. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli.egg-info/PKG-INFO +1 -1
  5. {evo_cli-0.13.0 → evo_cli-0.13.1}/tests/test_opencode.py +32 -0
  6. evo_cli-0.13.0/evo_cli/VERSION +0 -1
  7. {evo_cli-0.13.0 → evo_cli-0.13.1}/Containerfile +0 -0
  8. {evo_cli-0.13.0 → evo_cli-0.13.1}/HISTORY.md +0 -0
  9. {evo_cli-0.13.0 → evo_cli-0.13.1}/LICENSE +0 -0
  10. {evo_cli-0.13.0 → evo_cli-0.13.1}/MANIFEST.in +0 -0
  11. {evo_cli-0.13.0 → evo_cli-0.13.1}/README.md +0 -0
  12. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/__init__.py +0 -0
  13. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/__main__.py +0 -0
  14. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/base.py +0 -0
  15. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/cli.py +0 -0
  16. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/commands/__init__.py +0 -0
  17. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/commands/claude_code.py +0 -0
  18. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/commands/cloudflare.py +0 -0
  19. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/commands/cred.py +0 -0
  20. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/commands/download.py +0 -0
  21. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/commands/fix_claude.py +0 -0
  22. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/commands/gdrive.py +0 -0
  23. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/commands/gh.py +0 -0
  24. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/commands/harness.py +0 -0
  25. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/commands/hwid.py +0 -0
  26. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/commands/hwid_reset.py +0 -0
  27. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/commands/localproxy.py +0 -0
  28. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/commands/mcp.py +0 -0
  29. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/commands/miniconda.py +0 -0
  30. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/commands/netcheck.py +0 -0
  31. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/commands/plantuml.py +0 -0
  32. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/commands/site2s.py +0 -0
  33. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/commands/ssh.py +0 -0
  34. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/commands/sysmon.py +0 -0
  35. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/commands/tts.py +0 -0
  36. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/commands/update.py +0 -0
  37. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/commands/wifi.py +0 -0
  38. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/console.py +0 -0
  39. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/credentials/__init__.py +0 -0
  40. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/credentials/doctor.py +0 -0
  41. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/credentials/google_oauth.py +0 -0
  42. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/credentials/migrate.py +0 -0
  43. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/credentials/oauth_flow.py +0 -0
  44. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/credentials/registry.py +0 -0
  45. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/credentials/store.py +0 -0
  46. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/credentials/sync.py +0 -0
  47. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/mcp_registry.py +0 -0
  48. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/tts/__init__.py +0 -0
  49. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/tts/chunking.py +0 -0
  50. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/tts/core.py +0 -0
  51. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/tts/creds.py +0 -0
  52. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/tts/errors.py +0 -0
  53. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/tts/http.py +0 -0
  54. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/tts/openai.py +0 -0
  55. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/tts/player.py +0 -0
  56. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli/tts/vbee.py +0 -0
  57. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli.egg-info/SOURCES.txt +0 -0
  58. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli.egg-info/dependency_links.txt +0 -0
  59. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli.egg-info/entry_points.txt +0 -0
  60. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli.egg-info/requires.txt +0 -0
  61. {evo_cli-0.13.0 → evo_cli-0.13.1}/evo_cli.egg-info/top_level.txt +0 -0
  62. {evo_cli-0.13.0 → evo_cli-0.13.1}/pyproject.toml +0 -0
  63. {evo_cli-0.13.0 → evo_cli-0.13.1}/setup.cfg +0 -0
  64. {evo_cli-0.13.0 → evo_cli-0.13.1}/tests/__init__.py +0 -0
  65. {evo_cli-0.13.0 → evo_cli-0.13.1}/tests/test_claude_code.py +0 -0
  66. {evo_cli-0.13.0 → evo_cli-0.13.1}/tests/test_cli.py +0 -0
  67. {evo_cli-0.13.0 → evo_cli-0.13.1}/tests/test_console.py +0 -0
  68. {evo_cli-0.13.0 → evo_cli-0.13.1}/tests/test_cred.py +0 -0
  69. {evo_cli-0.13.0 → evo_cli-0.13.1}/tests/test_download.py +0 -0
  70. {evo_cli-0.13.0 → evo_cli-0.13.1}/tests/test_fix_claude.py +0 -0
  71. {evo_cli-0.13.0 → evo_cli-0.13.1}/tests/test_gh.py +0 -0
  72. {evo_cli-0.13.0 → evo_cli-0.13.1}/tests/test_harness.py +0 -0
  73. {evo_cli-0.13.0 → evo_cli-0.13.1}/tests/test_mcp.py +0 -0
  74. {evo_cli-0.13.0 → evo_cli-0.13.1}/tests/test_plantuml.py +0 -0
  75. {evo_cli-0.13.0 → evo_cli-0.13.1}/tests/test_sysmon.py +0 -0
  76. {evo_cli-0.13.0 → evo_cli-0.13.1}/tests/test_tts.py +0 -0
  77. {evo_cli-0.13.0 → evo_cli-0.13.1}/tests/test_update.py +0 -0
  78. {evo_cli-0.13.0 → evo_cli-0.13.1}/tests/test_wifi.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: evo_cli
3
- Version: 0.13.0
3
+ Version: 0.13.1
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.13.1
@@ -42,14 +42,19 @@ def is_windows():
42
42
 
43
43
 
44
44
  def get_global_config_dir():
45
- home = Path.home()
46
- if is_windows():
47
- return home / "AppData" / "Roaming" / "opencode"
48
- return home / ".config" / "opencode"
45
+ # OpenCode reads ~/.config/opencode on every platform, Windows included - it does
46
+ # not follow the %APPDATA% convention. Writing to AppData produced a file that
47
+ # `opencode mcp list` never saw, so every server evo "added" was silently inert.
48
+ return Path.home() / ".config" / "opencode"
49
49
 
50
50
 
51
51
  def get_global_config_path():
52
- return get_global_config_dir() / "opencode.jsonc"
52
+ directory = get_global_config_dir()
53
+ for name in ("opencode.jsonc", "opencode.json"):
54
+ candidate = directory / name
55
+ if candidate.exists():
56
+ return candidate
57
+ return directory / "opencode.jsonc"
53
58
 
54
59
 
55
60
  def ensure_node_installed():
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: evo_cli
3
- Version: 0.13.0
3
+ Version: 0.13.1
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
@@ -5,6 +5,7 @@ import pytest
5
5
  from click.testing import CliRunner
6
6
 
7
7
  from evo_cli.cli import cli
8
+ from evo_cli.commands import opencode
8
9
  from evo_cli.commands.opencode import (
9
10
  DEFAULT_MCP_SERVERS,
10
11
  EXA_ENV_VAR,
@@ -209,3 +210,34 @@ def test_setup_opencode_global_only(runner, tmp_path, monkeypatch):
209
210
  result = runner.invoke(cli, ["setup", "opencode", "--global-only", "--project", str(project)])
210
211
  assert result.exit_code == 0
211
212
  assert not (project / "opencode.json").exists()
213
+
214
+
215
+ def test_global_config_dir_is_xdg_style_on_every_platform(monkeypatch, tmp_path):
216
+ monkeypatch.setattr(opencode.Path, "home", classmethod(lambda cls: tmp_path))
217
+ for system in ("Windows", "Linux", "Darwin"):
218
+ monkeypatch.setattr(opencode.platform, "system", lambda system=system: system)
219
+ assert opencode.get_global_config_dir() == tmp_path / ".config" / "opencode"
220
+
221
+
222
+ def test_global_config_path_reuses_an_existing_json_file(monkeypatch, tmp_path):
223
+ monkeypatch.setattr(opencode.Path, "home", classmethod(lambda cls: tmp_path))
224
+ directory = tmp_path / ".config" / "opencode"
225
+ directory.mkdir(parents=True)
226
+ existing = directory / "opencode.json"
227
+ existing.write_text("{}", encoding="utf-8")
228
+ assert opencode.get_global_config_path() == existing
229
+
230
+
231
+ def test_global_config_path_prefers_jsonc_when_both_exist(monkeypatch, tmp_path):
232
+ monkeypatch.setattr(opencode.Path, "home", classmethod(lambda cls: tmp_path))
233
+ directory = tmp_path / ".config" / "opencode"
234
+ directory.mkdir(parents=True)
235
+ (directory / "opencode.json").write_text("{}", encoding="utf-8")
236
+ (directory / "opencode.jsonc").write_text("{}", encoding="utf-8")
237
+ assert opencode.get_global_config_path() == directory / "opencode.jsonc"
238
+
239
+
240
+ def test_global_config_path_defaults_to_jsonc_when_nothing_exists(monkeypatch, tmp_path):
241
+ monkeypatch.setattr(opencode.Path, "home", classmethod(lambda cls: tmp_path))
242
+ expected = tmp_path / ".config" / "opencode" / "opencode.jsonc"
243
+ assert opencode.get_global_config_path() == expected
@@ -1 +0,0 @@
1
- 0.13.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
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