code-aide 1.11.2__tar.gz → 1.11.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.
Files changed (50) hide show
  1. {code_aide-1.11.2 → code_aide-1.11.4}/PKG-INFO +1 -1
  2. {code_aide-1.11.2 → code_aide-1.11.4}/src/code_aide/__init__.py +1 -1
  3. {code_aide-1.11.2 → code_aide-1.11.4}/src/code_aide/config.py +2 -8
  4. {code_aide-1.11.2 → code_aide-1.11.4}/src/code_aide/install.py +28 -5
  5. {code_aide-1.11.2 → code_aide-1.11.4}/src/code_aide/operations.py +18 -12
  6. {code_aide-1.11.2 → code_aide-1.11.4}/.github/workflows/ci.yml +0 -0
  7. {code_aide-1.11.2 → code_aide-1.11.4}/.github/workflows/publish.yml +0 -0
  8. {code_aide-1.11.2 → code_aide-1.11.4}/.gitignore +0 -0
  9. {code_aide-1.11.2 → code_aide-1.11.4}/.gitlab-ci.yml +0 -0
  10. {code_aide-1.11.2 → code_aide-1.11.4}/.pre-commit-config.yaml +0 -0
  11. {code_aide-1.11.2 → code_aide-1.11.4}/AGENTS.md +0 -0
  12. {code_aide-1.11.2 → code_aide-1.11.4}/CLAUDE.md +0 -0
  13. {code_aide-1.11.2 → code_aide-1.11.4}/LICENSE +0 -0
  14. {code_aide-1.11.2 → code_aide-1.11.4}/README.md +0 -0
  15. {code_aide-1.11.2 → code_aide-1.11.4}/TODO.md +0 -0
  16. {code_aide-1.11.2 → code_aide-1.11.4}/pyproject.toml +0 -0
  17. {code_aide-1.11.2 → code_aide-1.11.4}/script-archive/README.md +0 -0
  18. {code_aide-1.11.2 → code_aide-1.11.4}/script-archive/amp-install.sh +0 -0
  19. {code_aide-1.11.2 → code_aide-1.11.4}/script-archive/claude-install.sh +0 -0
  20. {code_aide-1.11.2 → code_aide-1.11.4}/script-archive/cursor-install.sh +0 -0
  21. {code_aide-1.11.2 → code_aide-1.11.4}/specs/auto-migrate-deprecated-installs.md +0 -0
  22. {code_aide-1.11.2 → code_aide-1.11.4}/specs/claude-native-installer-migration.md +0 -0
  23. {code_aide-1.11.2 → code_aide-1.11.4}/specs/missing-coding-llm-cli-tools.md +0 -0
  24. {code_aide-1.11.2 → code_aide-1.11.4}/specs/pre-commit-uv-setup.md +0 -0
  25. {code_aide-1.11.2 → code_aide-1.11.4}/specs/remove-bundled-version-baseline.md +0 -0
  26. {code_aide-1.11.2 → code_aide-1.11.4}/specs/unify-upgrade-eligibility-with-shared-evaluator.md +0 -0
  27. {code_aide-1.11.2 → code_aide-1.11.4}/src/code_aide/__main__.py +0 -0
  28. {code_aide-1.11.2 → code_aide-1.11.4}/src/code_aide/commands_actions.py +0 -0
  29. {code_aide-1.11.2 → code_aide-1.11.4}/src/code_aide/commands_tools.py +0 -0
  30. {code_aide-1.11.2 → code_aide-1.11.4}/src/code_aide/console.py +0 -0
  31. {code_aide-1.11.2 → code_aide-1.11.4}/src/code_aide/constants.py +0 -0
  32. {code_aide-1.11.2 → code_aide-1.11.4}/src/code_aide/data/tools.json +0 -0
  33. {code_aide-1.11.2 → code_aide-1.11.4}/src/code_aide/detection.py +0 -0
  34. {code_aide-1.11.2 → code_aide-1.11.4}/src/code_aide/entry.py +0 -0
  35. {code_aide-1.11.2 → code_aide-1.11.4}/src/code_aide/install_types.py +0 -0
  36. {code_aide-1.11.2 → code_aide-1.11.4}/src/code_aide/prereqs.py +0 -0
  37. {code_aide-1.11.2 → code_aide-1.11.4}/src/code_aide/status.py +0 -0
  38. {code_aide-1.11.2 → code_aide-1.11.4}/src/code_aide/versions.py +0 -0
  39. {code_aide-1.11.2 → code_aide-1.11.4}/tests/test_commands_actions.py +0 -0
  40. {code_aide-1.11.2 → code_aide-1.11.4}/tests/test_commands_tools.py +0 -0
  41. {code_aide-1.11.2 → code_aide-1.11.4}/tests/test_config.py +0 -0
  42. {code_aide-1.11.2 → code_aide-1.11.4}/tests/test_console.py +0 -0
  43. {code_aide-1.11.2 → code_aide-1.11.4}/tests/test_constants.py +0 -0
  44. {code_aide-1.11.2 → code_aide-1.11.4}/tests/test_detection.py +0 -0
  45. {code_aide-1.11.2 → code_aide-1.11.4}/tests/test_install.py +0 -0
  46. {code_aide-1.11.2 → code_aide-1.11.4}/tests/test_install_types.py +0 -0
  47. {code_aide-1.11.2 → code_aide-1.11.4}/tests/test_operations.py +0 -0
  48. {code_aide-1.11.2 → code_aide-1.11.4}/tests/test_status.py +0 -0
  49. {code_aide-1.11.2 → code_aide-1.11.4}/tests/test_versions.py +0 -0
  50. {code_aide-1.11.2 → code_aide-1.11.4}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-aide
3
- Version: 1.11.2
3
+ Version: 1.11.4
4
4
  Summary: Manage AI coding CLI tools (Claude, Copilot, Cursor, Gemini, Amp, Codex)
5
5
  Project-URL: Homepage, https://github.com/dajobe/code-aide
6
6
  Project-URL: Repository, https://github.com/dajobe/code-aide
@@ -1,3 +1,3 @@
1
1
  """code-aide - Manage AI coding CLI tools."""
2
2
 
3
- __version__ = "1.11.2"
3
+ __version__ = "1.11.4"
@@ -78,20 +78,14 @@ def merge_cached_versions(tools: dict, cache: dict) -> None:
78
78
  for field in DYNAMIC_FIELDS:
79
79
  if field in cached_tools[tool_key]:
80
80
  if field == "install_sha256":
81
- install_type = parse_install_type(
82
- tool_data.get("install_type")
83
- )
81
+ install_type = parse_install_type(tool_data.get("install_type"))
84
82
  if install_type == InstallType.DIRECT_DOWNLOAD:
85
83
  # Script checksum does not apply to tarball installs;
86
84
  # ignore stale cache from older releases.
87
85
  continue
88
86
  bundled_sha = tool_data.get("install_sha256")
89
87
  cached_sha = cached_tools[tool_key][field]
90
- if (
91
- bundled_sha
92
- and cached_sha
93
- and bundled_sha != cached_sha
94
- ):
88
+ if bundled_sha and cached_sha and bundled_sha != cached_sha:
95
89
  # Bundled hash was updated in a newer release;
96
90
  # discard stale cached hash.
97
91
  continue
@@ -16,6 +16,28 @@ from code_aide.install_types import InstallType, get_tool_install_type
16
16
  from code_aide.versions import check_script_tool, fetch_url
17
17
 
18
18
 
19
+ def run_pkg_command(
20
+ base_cmd: list,
21
+ pkg_name: str,
22
+ pkg_repo: Optional[str] = None,
23
+ **kwargs: Any,
24
+ ) -> None:
25
+ """Run a FreeBSD pkg command, falling back without -r if the repo is unavailable."""
26
+ if pkg_repo:
27
+ cmd = base_cmd + ["-r", pkg_repo, pkg_name]
28
+ try:
29
+ run_command(cmd, **kwargs)
30
+ return
31
+ except subprocess.CalledProcessError:
32
+ warning(f"Repository '{pkg_repo}' is not available. To enable it:")
33
+ warning(" See https://wiki.freebsd.org/Ports/Quarterly for instructions")
34
+ warning(" Then run: sudo pkg update")
35
+ info("Falling back to default repository...")
36
+
37
+ cmd = base_cmd + [pkg_name]
38
+ run_command(cmd, **kwargs)
39
+
40
+
19
41
  def run_install_script(
20
42
  install_url: str,
21
43
  tool_name: str,
@@ -269,11 +291,12 @@ def install_tool(tool_name: str, dryrun: bool = False, force: bool = False) -> b
269
291
  )
270
292
  return True
271
293
  try:
272
- cmd = ["sudo", "pkg", "install", "-y"]
273
- if pkg_repo:
274
- cmd.extend(["-r", pkg_repo])
275
- cmd.append(freebsd_port)
276
- run_command(cmd, check=True)
294
+ run_pkg_command(
295
+ ["sudo", "pkg", "install", "-y"],
296
+ freebsd_port,
297
+ pkg_repo=pkg_repo,
298
+ check=True,
299
+ )
277
300
  success(f"{tool_config['name']} installed successfully via FreeBSD pkg")
278
301
  info(tool_config["next_steps"])
279
302
  if "docs_url" in tool_config:
@@ -14,7 +14,12 @@ from code_aide.detection import (
14
14
  format_install_method,
15
15
  is_deprecated_install,
16
16
  )
17
- from code_aide.install import install_direct_download, install_tool, run_install_script
17
+ from code_aide.install import (
18
+ install_direct_download,
19
+ install_tool,
20
+ run_install_script,
21
+ run_pkg_command,
22
+ )
18
23
  from code_aide.install_types import (
19
24
  InstallMethod,
20
25
  InstallType,
@@ -195,12 +200,14 @@ def upgrade_tool(tool_name: str) -> UpgradeResult:
195
200
  if not pkg_name:
196
201
  error(f"No FreeBSD port configured for {tool_config['name']}")
197
202
  return UpgradeResult.FAILED
198
- cmd = ["sudo", "pkg", "upgrade", "-y"]
199
203
  pkg_repo = tool_config.get("freebsd_pkg_repo")
200
- if pkg_repo:
201
- cmd.extend(["-r", pkg_repo])
202
- cmd.append(pkg_name)
203
- run_command(cmd, check=True, capture=False)
204
+ run_pkg_command(
205
+ ["sudo", "pkg", "install", "-y", "-f"],
206
+ pkg_name,
207
+ pkg_repo=pkg_repo,
208
+ check=True,
209
+ capture=False,
210
+ )
204
211
 
205
212
  elif method == InstallMethod.SYSTEM:
206
213
  error(
@@ -344,12 +351,11 @@ def remove_tool(tool_name: str) -> bool:
344
351
  if not pkg_name:
345
352
  error(f"No FreeBSD port configured for {tool_config['name']}")
346
353
  return False
347
- cmd = ["sudo", "pkg", "delete", "-y"]
348
- pkg_repo = tool_config.get("freebsd_pkg_repo")
349
- if pkg_repo:
350
- cmd.extend(["-r", pkg_repo])
351
- cmd.append(pkg_name)
352
- run_command(cmd, check=True, capture=False)
354
+ run_command(
355
+ ["sudo", "pkg", "delete", "-y", pkg_name],
356
+ check=True,
357
+ capture=False,
358
+ )
353
359
  success(f"{tool_config['name']} removed successfully")
354
360
 
355
361
  elif method == InstallMethod.SYSTEM:
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