1010from .display import DisplayFormatter
1111from .cache import CacheManager
1212from .config import ConfigManager
13+ from . import __version__
1314
1415
1516def parse_args () -> argparse .Namespace :
@@ -57,8 +58,8 @@ def parse_args() -> argparse.Namespace:
5758
5859 parser .add_argument (
5960 "--version" ,
60- action = "version " ,
61- version = "%(prog)s 0.1.0 "
61+ action = "store_true " ,
62+ help = "Show version and check for updates "
6263 )
6364
6465 return parser .parse_args ()
@@ -68,6 +69,26 @@ def main() -> int:
6869 """Main entry point for the CLI."""
6970 args = parse_args ()
7071
72+ if args .version :
73+ print (f"gitfetch version: { __version__ } " )
74+ # Check for updates from GitHub
75+ import requests
76+ try :
77+ resp = requests .get (
78+ "https://api.github.com/repos/Matars/gitfetch/releases/latest" , timeout = 3 )
79+ if resp .status_code == 200 :
80+ latest = resp .json ()["tag_name" ].lstrip ("v" )
81+ if latest != __version__ :
82+ print (
83+ f"\033 [93mUpdate available: { latest } . Get it at https://github.com/Matars/gitfetch/releases/latest\033 [0m" )
84+ else :
85+ print ("You are using the latest version." )
86+ else :
87+ print ("Could not check for updates." )
88+ except Exception :
89+ print ("Could not check for updates." )
90+ return 0
91+
7192 # Initialize config
7293 config_manager = ConfigManager ()
7394
@@ -115,17 +136,13 @@ def main() -> int:
115136 stats = fetcher .fetch_user_stats (username , user_data )
116137 cache_manager .cache_user_data (username , user_data , stats )
117138 else :
118- # Try to get fresh cache first
119139 user_data = cache_manager .get_cached_user_data (username )
120140 stats = cache_manager .get_cached_stats (username )
121-
122141 if user_data is None or stats is None :
123- # No fresh cache, try to get stale cache for immediate display
142+ # Try to get stale cache for immediate display
124143 stale_user_data = cache_manager .get_stale_cached_user_data (
125- username
126- )
144+ username )
127145 stale_stats = cache_manager .get_stale_cached_stats (username )
128-
129146 if stale_user_data is not None and stale_stats is not None :
130147 # Display stale cache immediately
131148 formatter .display (username , stale_user_data , stale_stats , spaced = spaced )
@@ -139,17 +156,13 @@ def refresh_cache():
139156 try :
140157 fresh_user_data = fetcher .fetch_user_data (username )
141158 fresh_stats = fetcher .fetch_user_stats (
142- username , fresh_user_data
143- )
159+ username , fresh_user_data )
144160 cache_manager .cache_user_data (
145- username , fresh_user_data , fresh_stats
146- )
161+ username , fresh_user_data , fresh_stats )
147162 except Exception :
148- pass # Silently fail background refresh
149-
163+ pass
150164 thread = threading .Thread (
151- target = refresh_cache , daemon = True
152- )
165+ target = refresh_cache , daemon = True )
153166 thread .start ()
154167 return 0
155168 else :
@@ -163,7 +176,6 @@ def refresh_cache():
163176 formatter .display (username , user_data , stats , spaced = spaced )
164177
165178 return 0
166-
167179 except Exception as e :
168180 print (f"Error: { e } " , file = sys .stderr )
169181 return 1
0 commit comments