gitwise-cli 0.26.1__py3-none-any.whl → 0.27.0__py3-none-any.whl
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.
- gitwise/__init__.py +1 -1
- gitwise/__main__.py +31 -0
- gitwise/_cli_setup_agents.py +31 -0
- gitwise/_i18n_data.json +12 -0
- {gitwise_cli-0.26.1.dist-info → gitwise_cli-0.27.0.dist-info}/METADATA +12 -4
- {gitwise_cli-0.26.1.dist-info → gitwise_cli-0.27.0.dist-info}/RECORD +9 -9
- {gitwise_cli-0.26.1.dist-info → gitwise_cli-0.27.0.dist-info}/WHEEL +0 -0
- {gitwise_cli-0.26.1.dist-info → gitwise_cli-0.27.0.dist-info}/entry_points.txt +0 -0
- {gitwise_cli-0.26.1.dist-info → gitwise_cli-0.27.0.dist-info}/licenses/LICENSE +0 -0
gitwise/__init__.py
CHANGED
gitwise/__main__.py
CHANGED
|
@@ -32,12 +32,36 @@ def _install_rich_traceback() -> None:
|
|
|
32
32
|
return
|
|
33
33
|
|
|
34
34
|
|
|
35
|
+
def _ensure_utf8_stdio() -> None:
|
|
36
|
+
"""Force stdout/stderr to UTF-8.
|
|
37
|
+
|
|
38
|
+
Windows defaults to a system codepage (often cp1252) for the Python
|
|
39
|
+
embedded in console apps. That codepage cannot encode characters like
|
|
40
|
+
U+2713 (✓) used throughout gitwise's status output, causing
|
|
41
|
+
UnicodeEncodeError when the user is not running through a wrapper that
|
|
42
|
+
sets PYTHONIOENCODING. macOS/Linux are already UTF-8 by default, so
|
|
43
|
+
this reconfigure is a no-op there.
|
|
44
|
+
"""
|
|
45
|
+
for stream_name in ("stdout", "stderr"):
|
|
46
|
+
stream = getattr(sys, stream_name, None)
|
|
47
|
+
# TextIOWrapper.reconfigure exists on Python 3.7+; guard just in case
|
|
48
|
+
# the stream has been replaced with something non-standard.
|
|
49
|
+
reconfigure = getattr(stream, "reconfigure", None)
|
|
50
|
+
if callable(reconfigure):
|
|
51
|
+
try:
|
|
52
|
+
reconfigure(encoding="utf-8", errors="replace")
|
|
53
|
+
except (TypeError, ValueError):
|
|
54
|
+
# Stream does not accept these kwargs or is closed; ignore.
|
|
55
|
+
pass
|
|
56
|
+
|
|
57
|
+
|
|
35
58
|
def main() -> int:
|
|
36
59
|
import os
|
|
37
60
|
|
|
38
61
|
from ._runtime_config import reset_runtime_config
|
|
39
62
|
from .i18n import set_locale
|
|
40
63
|
|
|
64
|
+
_ensure_utf8_stdio()
|
|
41
65
|
_install_rich_traceback()
|
|
42
66
|
|
|
43
67
|
parser = build_parser()
|
|
@@ -93,6 +117,13 @@ def main() -> int:
|
|
|
93
117
|
except Exception:
|
|
94
118
|
if _should_show_rich_traceback():
|
|
95
119
|
raise
|
|
120
|
+
# No Rich traceback available (CI / non-tty / LOG_JSON mode).
|
|
121
|
+
# Still emit the raw traceback to stderr so CI logs are
|
|
122
|
+
# diagnostic. Otherwise the user only sees "unexpected error"
|
|
123
|
+
# and has no way to identify the root cause.
|
|
124
|
+
import traceback as _traceback
|
|
125
|
+
|
|
126
|
+
_traceback.print_exc()
|
|
96
127
|
from .output import error as _error
|
|
97
128
|
|
|
98
129
|
_error(t("unexpected_error"))
|
gitwise/_cli_setup_agents.py
CHANGED
|
@@ -385,6 +385,37 @@ def run_setup_agents(
|
|
|
385
385
|
adapters_legacy_used: bool = False,
|
|
386
386
|
) -> int:
|
|
387
387
|
"""Dispatcher: global mode (default) or per-repo mode (--local)."""
|
|
388
|
+
import platform
|
|
389
|
+
|
|
390
|
+
if platform.system() == "Windows":
|
|
391
|
+
if not local:
|
|
392
|
+
# Global mode creates symlinks in ~/.claude/ (skills, CLAUDE.md
|
|
393
|
+
# pointer, etc.). Windows does not support POSIX-style symlinks
|
|
394
|
+
# without Developer Mode, and even with it the semantics around
|
|
395
|
+
# relative targets differ enough that the existing setup_agents
|
|
396
|
+
# code produces broken links. Fail fast with a clear workaround
|
|
397
|
+
# instead of letting the user hit a confusing traceback.
|
|
398
|
+
if as_json:
|
|
399
|
+
print_json(
|
|
400
|
+
{
|
|
401
|
+
"ok": False,
|
|
402
|
+
"error": "windows_global_unsupported",
|
|
403
|
+
"message": t("setup_agents_windows_global_unsupported"),
|
|
404
|
+
"workaround": "gitwise setup-agents --local --no-symlinks",
|
|
405
|
+
}
|
|
406
|
+
)
|
|
407
|
+
else:
|
|
408
|
+
error(t("setup_agents_windows_global_unsupported"))
|
|
409
|
+
info(t("setup_agents_windows_workaround_local"))
|
|
410
|
+
return 1
|
|
411
|
+
if not no_symlinks:
|
|
412
|
+
# Local mode auto-enables --no-symlinks on Windows. Same root
|
|
413
|
+
# cause: os.symlink() either errors out (no Developer Mode) or
|
|
414
|
+
# produces links that do not behave like POSIX symlinks for our
|
|
415
|
+
# sandbox check (os.path.realpath over a not-yet-existing target).
|
|
416
|
+
warn(t("setup_agents_windows_auto_no_symlinks"))
|
|
417
|
+
no_symlinks = True
|
|
418
|
+
|
|
388
419
|
if local:
|
|
389
420
|
return _run_setup_local(
|
|
390
421
|
target,
|
gitwise/_i18n_data.json
CHANGED
|
@@ -519,6 +519,18 @@
|
|
|
519
519
|
"es": "fsmonitor integrado no está soportado en Linux (solo macOS y Windows)",
|
|
520
520
|
"en": "built-in fsmonitor not supported on Linux (macOS and Windows only)"
|
|
521
521
|
},
|
|
522
|
+
"setup_agents_windows_global_unsupported": {
|
|
523
|
+
"es": "setup-agents en modo global no está soportado en Windows (requiere symlinks POSIX en ~/.claude/).",
|
|
524
|
+
"en": "setup-agents global mode is not supported on Windows (requires POSIX symlinks in ~/.claude/)."
|
|
525
|
+
},
|
|
526
|
+
"setup_agents_windows_workaround_local": {
|
|
527
|
+
"es": "Workaround: usá 'gitwise setup-agents --local --no-symlinks' dentro del repo donde quieras configurar los agentes.",
|
|
528
|
+
"en": "Workaround: use 'gitwise setup-agents --local --no-symlinks' inside the repo where you want to set up agents."
|
|
529
|
+
},
|
|
530
|
+
"setup_agents_windows_auto_no_symlinks": {
|
|
531
|
+
"es": "Windows detectado: activando --no-symlinks automáticamente (los symlinks POSIX no son confiables en Windows).",
|
|
532
|
+
"en": "Windows detected: auto-enabling --no-symlinks (POSIX symlinks are not reliable on Windows)."
|
|
533
|
+
},
|
|
522
534
|
"gc_already_running": {
|
|
523
535
|
"es": "git gc/maintenance ya está en ejecución — esperá a que termine",
|
|
524
536
|
"en": "git gc/maintenance already running — wait for it to finish"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: gitwise-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.27.0
|
|
4
4
|
Summary: Python CLI for optimizing git workflows and Claude Code integration
|
|
5
5
|
Project-URL: Homepage, https://github.com/drzioner/gitwise
|
|
6
6
|
Project-URL: Repository, https://github.com/drzioner/gitwise
|
|
@@ -89,11 +89,19 @@ uv sync
|
|
|
89
89
|
uv run python -m gitwise doctor
|
|
90
90
|
```
|
|
91
91
|
|
|
92
|
+
**Windows** (PowerShell 5.1+, auto-installs `uv` if missing):
|
|
93
|
+
|
|
94
|
+
```powershell
|
|
95
|
+
irm https://raw.githubusercontent.com/drzioner/gitwise/main/install.ps1 | iex
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
For a version-pinned install (e.g. for reproducible setups), see `Get-Help .\install.ps1 -Detailed` after download.
|
|
99
|
+
|
|
92
100
|
Update an existing installation:
|
|
93
101
|
|
|
94
102
|
```bash
|
|
95
|
-
brew upgrade gitwise # if installed via Homebrew
|
|
96
|
-
uv tool upgrade gitwise-cli # if installed via uv
|
|
103
|
+
brew upgrade gitwise # if installed via Homebrew (macOS/Linux)
|
|
104
|
+
uv tool upgrade gitwise-cli # if installed via uv (any OS)
|
|
97
105
|
# or re-run the curl | bash installer, which always pulls latest
|
|
98
106
|
```
|
|
99
107
|
|
|
@@ -101,7 +109,7 @@ Uninstall:
|
|
|
101
109
|
|
|
102
110
|
```bash
|
|
103
111
|
brew uninstall gitwise # if installed via Homebrew
|
|
104
|
-
uv tool uninstall gitwise-cli # if installed via uv
|
|
112
|
+
uv tool uninstall gitwise-cli # if installed via uv (any OS)
|
|
105
113
|
```
|
|
106
114
|
|
|
107
115
|
## Quick Start
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
gitwise/__init__.py,sha256=
|
|
2
|
-
gitwise/__main__.py,sha256=
|
|
1
|
+
gitwise/__init__.py,sha256=EQSJ5WQ_IAB7iTOoK5-l-JbxMSiHJCjMzGaA9gW00QE,267
|
|
2
|
+
gitwise/__main__.py,sha256=3cDMMDJlua0qyW_nGj8w2YigbPy4QdrM3weMkQp5Qcs,4309
|
|
3
3
|
gitwise/_cli_completions.py,sha256=85-aF5I-SFFehbSDvrj22eFb3DYiHiNxpwr6GxW0B4Q,3091
|
|
4
4
|
gitwise/_cli_dispatch.py,sha256=x75GaHWYS_Hcem0XvKVL1cB-dS0Q_d6_u3k00KZk6GU,12150
|
|
5
5
|
gitwise/_cli_introspection.py,sha256=wlRMcRrGpitUGs5Sm1g-Eyf0avLeHpYhsBs48PCC2eI,9112
|
|
6
6
|
gitwise/_cli_parser.py,sha256=eN-LCksh-Fhp4UUyDTLaHJlC7YviFPcf4PamRQLTrdM,13702
|
|
7
|
-
gitwise/_cli_setup_agents.py,sha256=
|
|
8
|
-
gitwise/_i18n_data.json,sha256=
|
|
7
|
+
gitwise/_cli_setup_agents.py,sha256=HC65Y3lzSvzKOz5Rdl9zMOpM5Rc-HS0YU7q8re09RBg,14926
|
|
8
|
+
gitwise/_i18n_data.json,sha256=muH3yzVlGp8FUgq5f5JCqtL2lqSofYR86TYKyX3qGw4,61600
|
|
9
9
|
gitwise/_paths.py,sha256=VRkql9HQ5_OjwbpcX-18fwe_lMpuQffP4AiBV6suSFg,658
|
|
10
10
|
gitwise/_runtime_config.py,sha256=G3MqJwPoKWMak3dZkPHXqCeJPph2_9KBEomQ5YT2RHI,7176
|
|
11
11
|
gitwise/audit.py,sha256=mdovDdJ2PQ4dSTBBNujA0KrYzdqZaOQZt6GrbSW7vfA,10507
|
|
@@ -118,8 +118,8 @@ gitwise/share/schemas/v1/input/tag.json,sha256=KmrCyqcJsJU_uDhNba_KYpAkYg7vIlQac
|
|
|
118
118
|
gitwise/share/schemas/v1/input/undo.json,sha256=PRab96r2e1iU2FN8yBV_njgly_-7lm7Vy4KcMh3NMQ4,1406
|
|
119
119
|
gitwise/share/schemas/v1/input/update.json,sha256=OmuSgSp_USg2f45mywnSpxUB0NMSn_lQDLC4yDzCopo,911
|
|
120
120
|
gitwise/share/schemas/v1/input/worktree.json,sha256=rKKOtWyAgARIa-b-Raw7ZNPqKkO7DlPd7PE1c0flRDs,1063
|
|
121
|
-
gitwise_cli-0.
|
|
122
|
-
gitwise_cli-0.
|
|
123
|
-
gitwise_cli-0.
|
|
124
|
-
gitwise_cli-0.
|
|
125
|
-
gitwise_cli-0.
|
|
121
|
+
gitwise_cli-0.27.0.dist-info/METADATA,sha256=LQ05aRRUBgHYiK4xG48KvMqstjK6dyMmwg7EkjKJ1LU,7092
|
|
122
|
+
gitwise_cli-0.27.0.dist-info/WHEEL,sha256=mffPy8wBnZQn2VnJUU5jE99KsxaSfiyMHV9Yt0aLVxs,87
|
|
123
|
+
gitwise_cli-0.27.0.dist-info/entry_points.txt,sha256=rGwxSDmUHtzlY6yp7KeMJhRARijXkSE6OKuOJ8PF51E,50
|
|
124
|
+
gitwise_cli-0.27.0.dist-info/licenses/LICENSE,sha256=vfJO-ThMtWhZOD9MsArN2yul1EJmxAXxfeGHKnEk9QQ,1063
|
|
125
|
+
gitwise_cli-0.27.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|