[READ-ONLY] Mirror of https://github.com/mrgnw/scripts.
0

Configure Feed

Select the types of activity you want to include in your feed.

scripts / git-latest-tag
1.4 kB 52 lines
1#!/usr/bin/env python3 2 3from urllib import request, error 4import json 5import sys 6 7 8def parse_args(): 9 """ 10 if one arg: it could be 11 - duckdb/duckdb 12 - github.com/duckdb/duckdb 13 - https://github.com/duckdb/duckdb 14 if two args: 15 - duckdb duckdb 16 """ 17 if len(sys.argv) == 2: 18 owner, repo = sys.argv[1].split('/') 19 return owner, repo 20 elif len(sys.argv) == 3: 21 owner, repo = sys.argv[1], sys.argv[2] 22 return owner, repo 23 else: 24 print('Usage: git-latest-tag <repo_owner> <repo_name>', file=sys.stderr) 25 sys.exit(1) 26 27 28def get_latest_github_tag(repo_owner, repo_name): 29 try: 30 url = f'https://api.github.com/repos/{repo_owner}/{repo_name}/tags' 31 with request.urlopen(url) as response: 32 if response.status == 200: 33 tags = json.loads(response.read().decode()) 34 if tags: 35 latest_version = tags[0]['name'] 36 return latest_version.lstrip('v') 37 except error.URLError as e: 38 print(f'Error fetching tags: {e}', file=sys.stderr) 39 return None 40 41 42if __name__ == '__main__': 43 repo_owner, repo_name = parse_args() 44 latest_version = get_latest_github_tag(repo_owner, repo_name) 45 46 if latest_version: 47 print(latest_version) 48 # make latest_version available to stdout if this script is being called from another script 49 sys.stdout.flush() 50 else: 51 print(f'Failed to fetch the latest tag for {repo_owner}/{repo_name}', file=sys.stderr) 52 sys.exit(2)