pulli 0.2.5__tar.gz → 0.2.6__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.
- {pulli-0.2.5 → pulli-0.2.6}/PKG-INFO +1 -1
- {pulli-0.2.5 → pulli-0.2.6}/scripts/release.sh +6 -0
- {pulli-0.2.5 → pulli-0.2.6}/src/pulli/__init__.py +1 -1
- {pulli-0.2.5 → pulli-0.2.6}/src/pulli/tree.py +10 -3
- {pulli-0.2.5 → pulli-0.2.6}/.gitignore +0 -0
- {pulli-0.2.5 → pulli-0.2.6}/LICENSE +0 -0
- {pulli-0.2.5 → pulli-0.2.6}/README.md +0 -0
- {pulli-0.2.5 → pulli-0.2.6}/pyproject.toml +0 -0
- {pulli-0.2.5 → pulli-0.2.6}/src/pulli/cli.py +0 -0
- {pulli-0.2.5 → pulli-0.2.6}/src/pulli/discovery.py +0 -0
- {pulli-0.2.5 → pulli-0.2.6}/src/pulli/pull.py +0 -0
- {pulli-0.2.5 → pulli-0.2.6}/src/pulli/spinner.py +0 -0
- {pulli-0.2.5 → pulli-0.2.6}/src/pulli/status.py +0 -0
- {pulli-0.2.5 → pulli-0.2.6}/src/pulli/update.py +0 -0
- {pulli-0.2.5 → pulli-0.2.6}/tests/test_pulli.py +0 -0
- {pulli-0.2.5 → pulli-0.2.6}/uv.lock +0 -0
|
@@ -65,6 +65,12 @@ git push origin main "refs/tags/$TAG"
|
|
|
65
65
|
|
|
66
66
|
if [ "$PUBLISH" = "--publish" ]; then
|
|
67
67
|
echo "── Publish to PyPI ──"
|
|
68
|
+
# Token sources, in order: env → credgoo (Airtable backend).
|
|
69
|
+
# credgoo is the canonical store; .env files are not (no second copy).
|
|
70
|
+
if [ -z "${UV_PUBLISH_TOKEN:-}" ] && command -v credgoo >/dev/null 2>&1; then
|
|
71
|
+
UV_PUBLISH_TOKEN="$(credgoo UV_PUBLISH_TOKEN 2>/dev/null)" || true
|
|
72
|
+
export UV_PUBLISH_TOKEN
|
|
73
|
+
fi
|
|
68
74
|
if [ -z "${UV_PUBLISH_TOKEN:-}" ]; then
|
|
69
75
|
echo " UV_PUBLISH_TOKEN not set — get one at pypi.org (account settings"
|
|
70
76
|
echo " → API tokens, scope: this project) and re-run with it set:"
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"""pulli — discover git repos under a root and report their status."""
|
|
2
|
-
__version__ = "0.2.
|
|
2
|
+
__version__ = "0.2.6"
|
|
@@ -153,15 +153,22 @@ def _status_glyph(node: RepoNode) -> tuple[str, str]:
|
|
|
153
153
|
return "●", _GREEN
|
|
154
154
|
|
|
155
155
|
|
|
156
|
-
def _ahead_behind(node: RepoNode) -> str:
|
|
156
|
+
def _ahead_behind(node: RepoNode, C=lambda s, *c: s) -> str:
|
|
157
157
|
"""↓behind ↑ahead, or a clear placeholder when there is no upstream.
|
|
158
158
|
|
|
159
159
|
Showing `↓0 ↑0` for a repo with no upstream reads as "in sync with
|
|
160
160
|
something", which is a lie — there is nothing to be in sync with.
|
|
161
|
+
A repo that is behind is the one actionable state in this list — that
|
|
162
|
+
is what `pulli pull` acts on — so the count is highlighted (cyan,
|
|
163
|
+
bold) instead of sitting in the same grey as `↑0`. Up to date stays
|
|
164
|
+
quiet: no news takes no color.
|
|
161
165
|
"""
|
|
162
166
|
if not node.upstream:
|
|
163
167
|
return "· ·"
|
|
164
|
-
|
|
168
|
+
behind, ahead = node.behind or 0, node.ahead or 0
|
|
169
|
+
b = C(f"↓{behind}", _CYAN, _BOLD) if behind else f"↓{behind}"
|
|
170
|
+
a = C(f"↑{ahead}", _CYAN, _BOLD) if ahead else f"↑{ahead}"
|
|
171
|
+
return f"{b} {a}"
|
|
165
172
|
|
|
166
173
|
|
|
167
174
|
def _repo_tail_parts(node: RepoNode, C) -> list[str]:
|
|
@@ -178,7 +185,7 @@ def _repo_tail_parts(node: RepoNode, C) -> list[str]:
|
|
|
178
185
|
parts = [
|
|
179
186
|
C(url, _DIM) if url else "",
|
|
180
187
|
C(node.branch or "?", _BOLD),
|
|
181
|
-
_ahead_behind(node),
|
|
188
|
+
_ahead_behind(node, C),
|
|
182
189
|
]
|
|
183
190
|
|
|
184
191
|
if node.operation:
|
|
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
|