code-aide 1.0.0__tar.gz → 1.0.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 (34) hide show
  1. {code_aide-1.0.0 → code_aide-1.0.2}/PKG-INFO +8 -3
  2. {code_aide-1.0.0 → code_aide-1.0.2}/README.md +6 -1
  3. {code_aide-1.0.0 → code_aide-1.0.2}/pyproject.toml +2 -2
  4. {code_aide-1.0.0 → code_aide-1.0.2}/src/code_aide/__init__.py +1 -1
  5. {code_aide-1.0.0 → code_aide-1.0.2}/src/code_aide/commands_actions.py +1 -1
  6. {code_aide-1.0.0 → code_aide-1.0.2}/src/code_aide/data/tools.json +18 -0
  7. {code_aide-1.0.0 → code_aide-1.0.2}/src/code_aide/prereqs.py +26 -8
  8. {code_aide-1.0.0 → code_aide-1.0.2}/tests/test_config.py +1 -0
  9. {code_aide-1.0.0 → code_aide-1.0.2}/.github/workflows/ci.yml +0 -0
  10. {code_aide-1.0.0 → code_aide-1.0.2}/.github/workflows/publish.yml +0 -0
  11. {code_aide-1.0.0 → code_aide-1.0.2}/.gitignore +0 -0
  12. {code_aide-1.0.0 → code_aide-1.0.2}/AGENTS.md +0 -0
  13. {code_aide-1.0.0 → code_aide-1.0.2}/CLAUDE.md +0 -0
  14. {code_aide-1.0.0 → code_aide-1.0.2}/LICENSE +0 -0
  15. {code_aide-1.0.0 → code_aide-1.0.2}/src/code_aide/__main__.py +0 -0
  16. {code_aide-1.0.0 → code_aide-1.0.2}/src/code_aide/commands_tools.py +0 -0
  17. {code_aide-1.0.0 → code_aide-1.0.2}/src/code_aide/config.py +0 -0
  18. {code_aide-1.0.0 → code_aide-1.0.2}/src/code_aide/console.py +0 -0
  19. {code_aide-1.0.0 → code_aide-1.0.2}/src/code_aide/constants.py +0 -0
  20. {code_aide-1.0.0 → code_aide-1.0.2}/src/code_aide/detection.py +0 -0
  21. {code_aide-1.0.0 → code_aide-1.0.2}/src/code_aide/entry.py +0 -0
  22. {code_aide-1.0.0 → code_aide-1.0.2}/src/code_aide/install.py +0 -0
  23. {code_aide-1.0.0 → code_aide-1.0.2}/src/code_aide/operations.py +0 -0
  24. {code_aide-1.0.0 → code_aide-1.0.2}/src/code_aide/status.py +0 -0
  25. {code_aide-1.0.0 → code_aide-1.0.2}/src/code_aide/versions.py +0 -0
  26. {code_aide-1.0.0 → code_aide-1.0.2}/tests/test_commands_actions.py +0 -0
  27. {code_aide-1.0.0 → code_aide-1.0.2}/tests/test_commands_tools.py +0 -0
  28. {code_aide-1.0.0 → code_aide-1.0.2}/tests/test_console.py +0 -0
  29. {code_aide-1.0.0 → code_aide-1.0.2}/tests/test_constants.py +0 -0
  30. {code_aide-1.0.0 → code_aide-1.0.2}/tests/test_detection.py +0 -0
  31. {code_aide-1.0.0 → code_aide-1.0.2}/tests/test_install.py +0 -0
  32. {code_aide-1.0.0 → code_aide-1.0.2}/tests/test_operations.py +0 -0
  33. {code_aide-1.0.0 → code_aide-1.0.2}/tests/test_status.py +0 -0
  34. {code_aide-1.0.0 → code_aide-1.0.2}/tests/test_versions.py +0 -0
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-aide
3
- Version: 1.0.0
4
- Summary: Manage AI coding CLI tools (Claude, Cursor, Gemini, Amp, Codex)
3
+ Version: 1.0.2
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
7
7
  Project-URL: Issues, https://github.com/dajobe/code-aide/issues
@@ -29,7 +29,7 @@ Description-Content-Type: text/markdown
29
29
  An aide for your AI coding tools.
30
30
 
31
31
  Manages installation, upgrade, removal, and version tracking of AI coding CLI
32
- tools: Claude Code, Cursor, Gemini, Amp, and Codex.
32
+ tools: Claude Code, Copilot, Cursor, Gemini, Amp, and Codex.
33
33
 
34
34
  ## Installation
35
35
 
@@ -84,6 +84,7 @@ code-aide update-versions -y
84
84
  | Gemini CLI | `gemini` | npm | Yes |
85
85
  | Amp (Sourcegraph) | `amp` | Script | No |
86
86
  | Codex CLI | `codex` | npm | No |
87
+ | Copilot CLI | `copilot`| npm | No |
87
88
 
88
89
  ## How Version Data Works
89
90
 
@@ -121,6 +122,10 @@ a new code-aide release.
121
122
  ## Development
122
123
 
123
124
  ```bash
125
+ # Run from development checkout
126
+ uv run python -m code_aide status
127
+ uv run python -m code_aide install copilot
128
+
124
129
  # Run tests
125
130
  uv run pytest tests/ -v
126
131
 
@@ -3,7 +3,7 @@
3
3
  An aide for your AI coding tools.
4
4
 
5
5
  Manages installation, upgrade, removal, and version tracking of AI coding CLI
6
- tools: Claude Code, Cursor, Gemini, Amp, and Codex.
6
+ tools: Claude Code, Copilot, Cursor, Gemini, Amp, and Codex.
7
7
 
8
8
  ## Installation
9
9
 
@@ -58,6 +58,7 @@ code-aide update-versions -y
58
58
  | Gemini CLI | `gemini` | npm | Yes |
59
59
  | Amp (Sourcegraph) | `amp` | Script | No |
60
60
  | Codex CLI | `codex` | npm | No |
61
+ | Copilot CLI | `copilot`| npm | No |
61
62
 
62
63
  ## How Version Data Works
63
64
 
@@ -95,6 +96,10 @@ a new code-aide release.
95
96
  ## Development
96
97
 
97
98
  ```bash
99
+ # Run from development checkout
100
+ uv run python -m code_aide status
101
+ uv run python -m code_aide install copilot
102
+
98
103
  # Run tests
99
104
  uv run pytest tests/ -v
100
105
 
@@ -1,7 +1,7 @@
1
1
  [project]
2
2
  name = "code-aide"
3
- version = "1.0.0"
4
- description = "Manage AI coding CLI tools (Claude, Cursor, Gemini, Amp, Codex)"
3
+ version = "1.0.2"
4
+ description = "Manage AI coding CLI tools (Claude, Copilot, Cursor, Gemini, Amp, Codex)"
5
5
  readme = "README.md"
6
6
  authors = [
7
7
  { name = "Dave Beckett" },
@@ -1,3 +1,3 @@
1
1
  """code-aide - Manage AI coding CLI tools."""
2
2
 
3
- __version__ = "1.0.0"
3
+ __version__ = "1.0.2"
@@ -109,7 +109,7 @@ def cmd_install(args: argparse.Namespace) -> None:
109
109
  print(f" {tool_config['next_steps']}")
110
110
 
111
111
  print()
112
- check_path_directories()
112
+ check_path_directories(installed)
113
113
  success("All installations completed successfully!")
114
114
 
115
115
 
@@ -95,6 +95,24 @@
95
95
  "default_install": false,
96
96
  "latest_version": "0.106.0",
97
97
  "latest_date": "2026-02-26"
98
+ },
99
+ "copilot": {
100
+ "name": "Copilot CLI",
101
+ "command": "copilot",
102
+ "install_type": "npm",
103
+ "npm_package": "@github/copilot",
104
+ "prerequisites": [
105
+ "npm"
106
+ ],
107
+ "min_node_version": 22,
108
+ "next_steps": "Run 'copilot' and use '/login' to authenticate",
109
+ "version_args": [
110
+ "--version"
111
+ ],
112
+ "docs_url": "https://github.com/github/copilot-cli",
113
+ "default_install": false,
114
+ "latest_version": "0.0.420",
115
+ "latest_date": "2026-02-27"
98
116
  }
99
117
  }
100
118
  }
@@ -152,19 +152,37 @@ def is_tool_installed(tool_name: str) -> bool:
152
152
  return command_exists(tool_config["command"])
153
153
 
154
154
 
155
- def check_path_directories() -> None:
156
- """Check if common binary installation directories are in PATH and warn if not."""
155
+ def check_path_directories(tools_installed: Optional[List[str]] = None) -> None:
156
+ """Check if binary installation directories are in PATH and warn if not.
157
+
158
+ When *tools_installed* is given, only directories relevant to those
159
+ tools are checked. Otherwise a small set of common directories is used.
160
+ """
157
161
  current_path = os.environ.get("PATH", "")
158
162
  path_entries = current_path.split(":")
159
163
 
160
- common_dirs = [
161
- os.path.expanduser("~/.local/bin"),
162
- os.path.expanduser("~/.npm-packages/bin"),
163
- os.path.expanduser("~/.amp/bin"),
164
- ]
164
+ if tools_installed:
165
+ seen: set = set()
166
+ dirs_to_check: List[str] = []
167
+ for tool_name in tools_installed:
168
+ tool_config = TOOLS.get(tool_name)
169
+ if not tool_config:
170
+ continue
171
+ bin_dir = tool_config.get("bin_dir")
172
+ if bin_dir:
173
+ expanded = os.path.expanduser(bin_dir)
174
+ if expanded not in seen:
175
+ seen.add(expanded)
176
+ dirs_to_check.append(expanded)
177
+ else:
178
+ dirs_to_check = [
179
+ os.path.expanduser("~/.local/bin"),
180
+ os.path.expanduser("~/.npm-packages/bin"),
181
+ os.path.expanduser("~/.amp/bin"),
182
+ ]
165
183
 
166
184
  missing_dirs = []
167
- for dir_path in common_dirs:
185
+ for dir_path in dirs_to_check:
168
186
  if dir_path not in path_entries and os.path.isdir(dir_path):
169
187
  missing_dirs.append(dir_path)
170
188
 
@@ -36,6 +36,7 @@ class TestLoadBundledTools(unittest.TestCase):
36
36
  self.assertIn("tools", bundled)
37
37
  tools = bundled["tools"]
38
38
  self.assertIn("claude", tools)
39
+ self.assertIn("copilot", tools)
39
40
  self.assertIn("gemini", tools)
40
41
  for tool_name, tool_data in tools.items():
41
42
  self.assertIn("name", tool_data)
File without changes
File without changes
File without changes
File without changes