Skip to content

Commit d8a47ab

Browse files
committed
chech for updates with --version
1 parent 78f9ef9 commit d8a47ab

File tree

2 files changed

+31
-28
lines changed

2 files changed

+31
-28
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "gitfetch"
7-
version = "1.0.5"
7+
version = "1.0.6"
88
description = "A neofetch-style CLI tool for GitHub statistics"
99
readme = "README.md"
1010
requires-python = ">=3.8"

src/gitfetch/cli.py

Lines changed: 30 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ def parse_args() -> argparse.Namespace:
4646

4747
parser.add_argument(
4848
"--version",
49-
action="version",
50-
version=f"%(prog)s {__version__}"
49+
action="store_true",
50+
help="Show version and check for updates"
5151
)
5252

5353
return parser.parse_args()
@@ -57,6 +57,26 @@ def main() -> int:
5757
"""Main entry point for the CLI."""
5858
args = parse_args()
5959

60+
if args.version:
61+
print(f"gitfetch version: {__version__}")
62+
# Check for updates from GitHub
63+
import requests
64+
try:
65+
resp = requests.get(
66+
"https://api.github.com/repos/Matars/gitfetch/releases/latest", timeout=3)
67+
if resp.status_code == 200:
68+
latest = resp.json()["tag_name"].lstrip("v")
69+
if latest != __version__:
70+
print(
71+
f"\033[93mUpdate available: {latest}. Get it at https://github.com/Matars/gitfetch/releases/latest\033[0m")
72+
else:
73+
print("You are using the latest version.")
74+
else:
75+
print("Could not check for updates.")
76+
except Exception:
77+
print("Could not check for updates.")
78+
return 0
79+
6080
# Initialize config
6181
config_manager = ConfigManager()
6282

@@ -98,55 +118,38 @@ def main() -> int:
98118
stats = fetcher.fetch_user_stats(username, user_data)
99119
cache_manager.cache_user_data(username, user_data, stats)
100120
else:
101-
# Try to get fresh cache first
102121
user_data = cache_manager.get_cached_user_data(username)
103-
stats = cache_manager.get_cached_stats(username)
104-
122+
stats = cache_manager.get_cached_user_stats(username)
105123
if user_data is None or stats is None:
106-
# No fresh cache, try to get stale cache for immediate display
124+
# Try to get stale cache for immediate display
107125
stale_user_data = cache_manager.get_stale_cached_user_data(
108-
username
109-
)
126+
username)
110127
stale_stats = cache_manager.get_stale_cached_stats(username)
111-
112128
if stale_user_data is not None and stale_stats is not None:
113-
# Display stale cache immediately
114129
formatter.display(username, stale_user_data, stale_stats)
115-
print("\n🔄 Refreshing data in background...",
116-
file=sys.stderr)
117-
118-
# Refresh cache in background (don't wait for it)
130+
print("\n🔄 Refreshing data in background...", file=sys.stderr)
119131
import threading
120132

121133
def refresh_cache():
122134
try:
123135
fresh_user_data = fetcher.fetch_user_data(username)
124136
fresh_stats = fetcher.fetch_user_stats(
125-
username, fresh_user_data
126-
)
137+
username, fresh_user_data)
127138
cache_manager.cache_user_data(
128-
username, fresh_user_data, fresh_stats
129-
)
139+
username, fresh_user_data, fresh_stats)
130140
except Exception:
131-
pass # Silently fail background refresh
132-
141+
pass
133142
thread = threading.Thread(
134-
target=refresh_cache, daemon=True
135-
)
143+
target=refresh_cache, daemon=True)
136144
thread.start()
137145
return 0
138146
else:
139147
# No cache at all, fetch fresh data
140148
user_data = fetcher.fetch_user_data(username)
141149
stats = fetcher.fetch_user_stats(username, user_data)
142150
cache_manager.cache_user_data(username, user_data, stats)
143-
# else: fresh cache available, proceed to display
144-
145-
# Display the results
146151
formatter.display(username, user_data, stats)
147-
148152
return 0
149-
150153
except Exception as e:
151154
print(f"Error: {e}", file=sys.stderr)
152155
return 1

0 commit comments

Comments
 (0)