code-aide 1.0.2__tar.gz → 1.0.3__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.
- {code_aide-1.0.2 → code_aide-1.0.3}/.github/workflows/publish.yml +6 -1
- {code_aide-1.0.2 → code_aide-1.0.3}/PKG-INFO +28 -2
- {code_aide-1.0.2 → code_aide-1.0.3}/README.md +27 -1
- {code_aide-1.0.2 → code_aide-1.0.3}/pyproject.toml +1 -1
- {code_aide-1.0.2 → code_aide-1.0.3}/src/code_aide/__init__.py +1 -1
- {code_aide-1.0.2 → code_aide-1.0.3}/src/code_aide/entry.py +1 -4
- {code_aide-1.0.2 → code_aide-1.0.3}/tests/test_commands_actions.py +17 -0
- {code_aide-1.0.2 → code_aide-1.0.3}/.github/workflows/ci.yml +0 -0
- {code_aide-1.0.2 → code_aide-1.0.3}/.gitignore +0 -0
- {code_aide-1.0.2 → code_aide-1.0.3}/AGENTS.md +0 -0
- {code_aide-1.0.2 → code_aide-1.0.3}/CLAUDE.md +0 -0
- {code_aide-1.0.2 → code_aide-1.0.3}/LICENSE +0 -0
- {code_aide-1.0.2 → code_aide-1.0.3}/src/code_aide/__main__.py +0 -0
- {code_aide-1.0.2 → code_aide-1.0.3}/src/code_aide/commands_actions.py +0 -0
- {code_aide-1.0.2 → code_aide-1.0.3}/src/code_aide/commands_tools.py +0 -0
- {code_aide-1.0.2 → code_aide-1.0.3}/src/code_aide/config.py +0 -0
- {code_aide-1.0.2 → code_aide-1.0.3}/src/code_aide/console.py +0 -0
- {code_aide-1.0.2 → code_aide-1.0.3}/src/code_aide/constants.py +0 -0
- {code_aide-1.0.2 → code_aide-1.0.3}/src/code_aide/data/tools.json +0 -0
- {code_aide-1.0.2 → code_aide-1.0.3}/src/code_aide/detection.py +0 -0
- {code_aide-1.0.2 → code_aide-1.0.3}/src/code_aide/install.py +0 -0
- {code_aide-1.0.2 → code_aide-1.0.3}/src/code_aide/operations.py +0 -0
- {code_aide-1.0.2 → code_aide-1.0.3}/src/code_aide/prereqs.py +0 -0
- {code_aide-1.0.2 → code_aide-1.0.3}/src/code_aide/status.py +0 -0
- {code_aide-1.0.2 → code_aide-1.0.3}/src/code_aide/versions.py +0 -0
- {code_aide-1.0.2 → code_aide-1.0.3}/tests/test_commands_tools.py +0 -0
- {code_aide-1.0.2 → code_aide-1.0.3}/tests/test_config.py +0 -0
- {code_aide-1.0.2 → code_aide-1.0.3}/tests/test_console.py +0 -0
- {code_aide-1.0.2 → code_aide-1.0.3}/tests/test_constants.py +0 -0
- {code_aide-1.0.2 → code_aide-1.0.3}/tests/test_detection.py +0 -0
- {code_aide-1.0.2 → code_aide-1.0.3}/tests/test_install.py +0 -0
- {code_aide-1.0.2 → code_aide-1.0.3}/tests/test_operations.py +0 -0
- {code_aide-1.0.2 → code_aide-1.0.3}/tests/test_status.py +0 -0
- {code_aide-1.0.2 → code_aide-1.0.3}/tests/test_versions.py +0 -0
|
@@ -6,10 +6,15 @@ jobs:
|
|
|
6
6
|
publish:
|
|
7
7
|
runs-on: ubuntu-latest
|
|
8
8
|
permissions:
|
|
9
|
-
contents:
|
|
9
|
+
contents: write
|
|
10
10
|
id-token: write
|
|
11
11
|
steps:
|
|
12
12
|
- uses: actions/checkout@v4
|
|
13
13
|
- uses: astral-sh/setup-uv@v5
|
|
14
14
|
- run: uv build
|
|
15
15
|
- uses: pypa/gh-action-pypi-publish@release/v1
|
|
16
|
+
- name: Create GitHub release notes
|
|
17
|
+
uses: softprops/action-gh-release@v2
|
|
18
|
+
with:
|
|
19
|
+
tag_name: ${{ github.ref_name }}
|
|
20
|
+
generate_release_notes: true
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: code-aide
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.3
|
|
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
|
|
@@ -62,7 +62,7 @@ code-aide install
|
|
|
62
62
|
# Install with automatic prerequisite installation (Node.js, npm)
|
|
63
63
|
code-aide install -p
|
|
64
64
|
|
|
65
|
-
# Upgrade installed tools
|
|
65
|
+
# Upgrade installed tools (no args = only out-of-date tools)
|
|
66
66
|
code-aide upgrade [NAMES]
|
|
67
67
|
|
|
68
68
|
# Remove tools
|
|
@@ -133,6 +133,32 @@ uv run pytest tests/ -v
|
|
|
133
133
|
uv run pytest tests/test_install.py::TestDetectOsArch -v
|
|
134
134
|
```
|
|
135
135
|
|
|
136
|
+
## Release
|
|
137
|
+
|
|
138
|
+
`publish.yml` publishes to PyPI when a Git tag matching `v*` is pushed.
|
|
139
|
+
|
|
140
|
+
1. Update version strings:
|
|
141
|
+
- `pyproject.toml` (`[project].version`)
|
|
142
|
+
- `src/code_aide/__init__.py` (`__version__`)
|
|
143
|
+
2. Run checks:
|
|
144
|
+
- `uv run pytest tests/ -v`
|
|
145
|
+
- `uv build`
|
|
146
|
+
3. Commit the release version bump:
|
|
147
|
+
- `git add pyproject.toml src/code_aide/__init__.py`
|
|
148
|
+
- `git commit -m "Bumped version to X.Y.Z"`
|
|
149
|
+
4. Write useful commit messages before tagging:
|
|
150
|
+
- Start subject lines with an action verb in past tense (`Added`, `Changed`,
|
|
151
|
+
`Fixed`, `Removed`).
|
|
152
|
+
- Keep subjects user-facing so auto-generated release notes are meaningful.
|
|
153
|
+
- Group related changes into focused commits instead of one broad commit.
|
|
154
|
+
- Example: `Fixed timeout handling in status command`
|
|
155
|
+
5. Tag and push:
|
|
156
|
+
- `git tag vX.Y.Z`
|
|
157
|
+
- `git push origin main --follow-tags`
|
|
158
|
+
6. Confirm GitHub Actions:
|
|
159
|
+
- CI should pass.
|
|
160
|
+
- Publish workflow should upload to PyPI and create GitHub Release notes.
|
|
161
|
+
|
|
136
162
|
## License
|
|
137
163
|
|
|
138
164
|
Apache-2.0
|
|
@@ -36,7 +36,7 @@ code-aide install
|
|
|
36
36
|
# Install with automatic prerequisite installation (Node.js, npm)
|
|
37
37
|
code-aide install -p
|
|
38
38
|
|
|
39
|
-
# Upgrade installed tools
|
|
39
|
+
# Upgrade installed tools (no args = only out-of-date tools)
|
|
40
40
|
code-aide upgrade [NAMES]
|
|
41
41
|
|
|
42
42
|
# Remove tools
|
|
@@ -107,6 +107,32 @@ uv run pytest tests/ -v
|
|
|
107
107
|
uv run pytest tests/test_install.py::TestDetectOsArch -v
|
|
108
108
|
```
|
|
109
109
|
|
|
110
|
+
## Release
|
|
111
|
+
|
|
112
|
+
`publish.yml` publishes to PyPI when a Git tag matching `v*` is pushed.
|
|
113
|
+
|
|
114
|
+
1. Update version strings:
|
|
115
|
+
- `pyproject.toml` (`[project].version`)
|
|
116
|
+
- `src/code_aide/__init__.py` (`__version__`)
|
|
117
|
+
2. Run checks:
|
|
118
|
+
- `uv run pytest tests/ -v`
|
|
119
|
+
- `uv build`
|
|
120
|
+
3. Commit the release version bump:
|
|
121
|
+
- `git add pyproject.toml src/code_aide/__init__.py`
|
|
122
|
+
- `git commit -m "Bumped version to X.Y.Z"`
|
|
123
|
+
4. Write useful commit messages before tagging:
|
|
124
|
+
- Start subject lines with an action verb in past tense (`Added`, `Changed`,
|
|
125
|
+
`Fixed`, `Removed`).
|
|
126
|
+
- Keep subjects user-facing so auto-generated release notes are meaningful.
|
|
127
|
+
- Group related changes into focused commits instead of one broad commit.
|
|
128
|
+
- Example: `Fixed timeout handling in status command`
|
|
129
|
+
5. Tag and push:
|
|
130
|
+
- `git tag vX.Y.Z`
|
|
131
|
+
- `git push origin main --follow-tags`
|
|
132
|
+
6. Confirm GitHub Actions:
|
|
133
|
+
- CI should pass.
|
|
134
|
+
- Publish workflow should upload to PyPI and create GitHub Release notes.
|
|
135
|
+
|
|
110
136
|
## License
|
|
111
137
|
|
|
112
138
|
Apache-2.0
|
|
@@ -40,7 +40,6 @@ def main() -> None:
|
|
|
40
40
|
install_parser.add_argument(
|
|
41
41
|
"tools",
|
|
42
42
|
nargs="*",
|
|
43
|
-
choices=list(TOOLS.keys()),
|
|
44
43
|
help="Tools to install (default: all)",
|
|
45
44
|
)
|
|
46
45
|
install_parser.add_argument(
|
|
@@ -62,8 +61,7 @@ def main() -> None:
|
|
|
62
61
|
upgrade_parser.add_argument(
|
|
63
62
|
"tools",
|
|
64
63
|
nargs="*",
|
|
65
|
-
|
|
66
|
-
help="Tools to upgrade (default: all)",
|
|
64
|
+
help="Tools to upgrade (default: out-of-date only)",
|
|
67
65
|
)
|
|
68
66
|
upgrade_parser.set_defaults(func=cmd_upgrade)
|
|
69
67
|
|
|
@@ -71,7 +69,6 @@ def main() -> None:
|
|
|
71
69
|
remove_parser.add_argument(
|
|
72
70
|
"tools",
|
|
73
71
|
nargs="*",
|
|
74
|
-
choices=list(TOOLS.keys()),
|
|
75
72
|
help="Tools to remove (default: all)",
|
|
76
73
|
)
|
|
77
74
|
remove_parser.set_defaults(func=cmd_remove)
|
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
import contextlib
|
|
4
4
|
import io
|
|
5
|
+
import sys
|
|
5
6
|
import unittest
|
|
6
7
|
from unittest import mock
|
|
7
8
|
|
|
8
9
|
from code_aide import commands_actions
|
|
10
|
+
from code_aide import entry
|
|
9
11
|
|
|
10
12
|
|
|
11
13
|
class TestCmdInstall(unittest.TestCase):
|
|
@@ -109,3 +111,18 @@ class TestCmdUpdateVersions(unittest.TestCase):
|
|
|
109
111
|
commands_actions.cmd_update_versions(args)
|
|
110
112
|
self.assertIn("No upstream config changes detected.", buf.getvalue())
|
|
111
113
|
mock_save.assert_not_called()
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
class TestUpgradeNoArgsParsing(unittest.TestCase):
|
|
117
|
+
"""Test that 'code-aide upgrade' with no arguments parses successfully."""
|
|
118
|
+
|
|
119
|
+
def test_upgrade_with_no_args_parses_to_empty_tools_list(self):
|
|
120
|
+
with (
|
|
121
|
+
mock.patch.object(sys, "argv", ["code-aide", "upgrade"]),
|
|
122
|
+
mock.patch.object(entry, "cmd_upgrade") as mock_upgrade,
|
|
123
|
+
):
|
|
124
|
+
entry.main()
|
|
125
|
+
mock_upgrade.assert_called_once()
|
|
126
|
+
(args,) = mock_upgrade.call_args[0]
|
|
127
|
+
self.assertEqual(args.command, "upgrade")
|
|
128
|
+
self.assertEqual(args.tools, [])
|
|
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
|