code-aide 1.11.3__tar.gz → 1.11.5__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.3 → code_aide-1.11.5}/PKG-INFO +1 -1
  2. {code_aide-1.11.3 → code_aide-1.11.5}/src/code_aide/__init__.py +1 -1
  3. {code_aide-1.11.3 → code_aide-1.11.5}/src/code_aide/constants.py +40 -6
  4. {code_aide-1.11.3 → code_aide-1.11.5}/src/code_aide/install.py +28 -5
  5. {code_aide-1.11.3 → code_aide-1.11.5}/src/code_aide/operations.py +13 -6
  6. {code_aide-1.11.3 → code_aide-1.11.5}/.github/workflows/ci.yml +0 -0
  7. {code_aide-1.11.3 → code_aide-1.11.5}/.github/workflows/publish.yml +0 -0
  8. {code_aide-1.11.3 → code_aide-1.11.5}/.gitignore +0 -0
  9. {code_aide-1.11.3 → code_aide-1.11.5}/.gitlab-ci.yml +0 -0
  10. {code_aide-1.11.3 → code_aide-1.11.5}/.pre-commit-config.yaml +0 -0
  11. {code_aide-1.11.3 → code_aide-1.11.5}/AGENTS.md +0 -0
  12. {code_aide-1.11.3 → code_aide-1.11.5}/CLAUDE.md +0 -0
  13. {code_aide-1.11.3 → code_aide-1.11.5}/LICENSE +0 -0
  14. {code_aide-1.11.3 → code_aide-1.11.5}/README.md +0 -0
  15. {code_aide-1.11.3 → code_aide-1.11.5}/TODO.md +0 -0
  16. {code_aide-1.11.3 → code_aide-1.11.5}/pyproject.toml +0 -0
  17. {code_aide-1.11.3 → code_aide-1.11.5}/script-archive/README.md +0 -0
  18. {code_aide-1.11.3 → code_aide-1.11.5}/script-archive/amp-install.sh +0 -0
  19. {code_aide-1.11.3 → code_aide-1.11.5}/script-archive/claude-install.sh +0 -0
  20. {code_aide-1.11.3 → code_aide-1.11.5}/script-archive/cursor-install.sh +0 -0
  21. {code_aide-1.11.3 → code_aide-1.11.5}/specs/auto-migrate-deprecated-installs.md +0 -0
  22. {code_aide-1.11.3 → code_aide-1.11.5}/specs/claude-native-installer-migration.md +0 -0
  23. {code_aide-1.11.3 → code_aide-1.11.5}/specs/missing-coding-llm-cli-tools.md +0 -0
  24. {code_aide-1.11.3 → code_aide-1.11.5}/specs/pre-commit-uv-setup.md +0 -0
  25. {code_aide-1.11.3 → code_aide-1.11.5}/specs/remove-bundled-version-baseline.md +0 -0
  26. {code_aide-1.11.3 → code_aide-1.11.5}/specs/unify-upgrade-eligibility-with-shared-evaluator.md +0 -0
  27. {code_aide-1.11.3 → code_aide-1.11.5}/src/code_aide/__main__.py +0 -0
  28. {code_aide-1.11.3 → code_aide-1.11.5}/src/code_aide/commands_actions.py +0 -0
  29. {code_aide-1.11.3 → code_aide-1.11.5}/src/code_aide/commands_tools.py +0 -0
  30. {code_aide-1.11.3 → code_aide-1.11.5}/src/code_aide/config.py +0 -0
  31. {code_aide-1.11.3 → code_aide-1.11.5}/src/code_aide/console.py +0 -0
  32. {code_aide-1.11.3 → code_aide-1.11.5}/src/code_aide/data/tools.json +0 -0
  33. {code_aide-1.11.3 → code_aide-1.11.5}/src/code_aide/detection.py +0 -0
  34. {code_aide-1.11.3 → code_aide-1.11.5}/src/code_aide/entry.py +0 -0
  35. {code_aide-1.11.3 → code_aide-1.11.5}/src/code_aide/install_types.py +0 -0
  36. {code_aide-1.11.3 → code_aide-1.11.5}/src/code_aide/prereqs.py +0 -0
  37. {code_aide-1.11.3 → code_aide-1.11.5}/src/code_aide/status.py +0 -0
  38. {code_aide-1.11.3 → code_aide-1.11.5}/src/code_aide/versions.py +0 -0
  39. {code_aide-1.11.3 → code_aide-1.11.5}/tests/test_commands_actions.py +0 -0
  40. {code_aide-1.11.3 → code_aide-1.11.5}/tests/test_commands_tools.py +0 -0
  41. {code_aide-1.11.3 → code_aide-1.11.5}/tests/test_config.py +0 -0
  42. {code_aide-1.11.3 → code_aide-1.11.5}/tests/test_console.py +0 -0
  43. {code_aide-1.11.3 → code_aide-1.11.5}/tests/test_constants.py +0 -0
  44. {code_aide-1.11.3 → code_aide-1.11.5}/tests/test_detection.py +0 -0
  45. {code_aide-1.11.3 → code_aide-1.11.5}/tests/test_install.py +0 -0
  46. {code_aide-1.11.3 → code_aide-1.11.5}/tests/test_install_types.py +0 -0
  47. {code_aide-1.11.3 → code_aide-1.11.5}/tests/test_operations.py +0 -0
  48. {code_aide-1.11.3 → code_aide-1.11.5}/tests/test_status.py +0 -0
  49. {code_aide-1.11.3 → code_aide-1.11.5}/tests/test_versions.py +0 -0
  50. {code_aide-1.11.3 → code_aide-1.11.5}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-aide
3
- Version: 1.11.3
3
+ Version: 1.11.5
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.3"
3
+ __version__ = "1.11.5"
@@ -1,17 +1,51 @@
1
1
  """Shared constants and mutable tool configuration for CLI modules."""
2
2
 
3
+ import os
4
+ import sys
3
5
  from typing import Any, Dict
4
6
 
5
7
  from code_aide.config import load_tools_config
6
8
 
7
9
 
10
+ def _use_color() -> bool:
11
+ """Determine whether to emit ANSI color codes.
12
+
13
+ Checks (in priority order):
14
+ NO_COLOR — if set (any value), no color (https://no-color.org/)
15
+ FORCE_COLOR — if set (any value), force color
16
+ CLICOLOR_FORCE — if non-empty, force color
17
+ TERM=dumb — no color
18
+ CLICOLOR=0 — no color
19
+ stdout is not a TTY — no color
20
+ """
21
+ if os.environ.get("NO_COLOR") is not None:
22
+ return False
23
+ if os.environ.get("FORCE_COLOR") is not None:
24
+ return True
25
+ if os.environ.get("CLICOLOR_FORCE", ""):
26
+ return True
27
+ if os.environ.get("TERM") == "dumb":
28
+ return False
29
+ if os.environ.get("CLICOLOR") == "0":
30
+ return False
31
+ return sys.stdout.isatty()
32
+
33
+
8
34
  class Colors:
9
- RED = "\033[0;31m"
10
- GREEN = "\033[0;32m"
11
- YELLOW = "\033[1;33m"
12
- BLUE = "\033[0;34m"
13
- BOLD = "\033[1m"
14
- NC = "\033[0m"
35
+ if _use_color():
36
+ RED = "\033[0;31m"
37
+ GREEN = "\033[0;32m"
38
+ YELLOW = "\033[1;33m"
39
+ BLUE = "\033[0;34m"
40
+ BOLD = "\033[1m"
41
+ NC = "\033[0m"
42
+ else:
43
+ RED = ""
44
+ GREEN = ""
45
+ YELLOW = ""
46
+ BLUE = ""
47
+ BOLD = ""
48
+ NC = ""
15
49
 
16
50
 
17
51
  PACKAGE_MANAGERS: Dict[str, Dict[str, Any]] = {
@@ -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,
@@ -196,11 +201,13 @@ def upgrade_tool(tool_name: str) -> UpgradeResult:
196
201
  error(f"No FreeBSD port configured for {tool_config['name']}")
197
202
  return UpgradeResult.FAILED
198
203
  pkg_repo = tool_config.get("freebsd_pkg_repo")
199
- cmd = ["sudo", "pkg", "install", "-y", "-f"]
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(
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