@@ -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