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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: pulli
3
- Version: 0.2.5
3
+ Version: 0.2.6
4
4
  Summary: Walk a directory tree, show git repos with status, and fast-forward the ones that are behind upstream.
5
5
  Author: Stefan Waldherr
6
6
  License-Expression: MIT
@@ -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.5"
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
- return f"↓{node.behind or 0} ↑{node.ahead or 0}"
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