55import logging
66import re
77import requests
8- from npm .bindings import npm_run
98from lastversion import latest
109from bs4 import BeautifulSoup
1110from urllib .request import urlopen
@@ -66,10 +65,11 @@ def get_latest_package_version(link, pkg_type, oss_name):
6665
6766 try :
6867 if pkg_type in ['npm' , 'npm2' ]:
69- stderr , stdout = npm_run ('view' , oss_name , 'version' )
70- if stdout :
71- find_version = stdout .strip ()
72- link_with_version = f'https://www.npmjs.com/package/{ oss_name } /v/{ find_version } '
68+ npm_response = requests .get (f"https://registry.npmjs.org/{ oss_name } " )
69+ if npm_response .status_code == 200 :
70+ find_version = npm_response .json ().get ("dist-tags" , {}).get ("latest" )
71+ if find_version :
72+ link_with_version = f'https://www.npmjs.com/package/{ oss_name } /v/{ find_version } '
7373 elif pkg_type == 'pypi' :
7474 find_version = str (latest (oss_name , at = 'pip' , output_format = 'version' , pre_ok = True ))
7575 link_with_version = f'https://pypi.org/project/{ oss_name } /{ find_version } '
@@ -78,17 +78,20 @@ def get_latest_package_version(link, pkg_type, oss_name):
7878 if maven_response .status_code == 200 :
7979 find_version = maven_response .json ().get ('versions' )[- 1 ].get ('versionKey' ).get ('version' )
8080 oss_name = oss_name .replace (':' , '/' )
81- link_with_version = f'https://mvnrepository.com/artifact/{ oss_name } /{ find_version } '
81+ if find_version :
82+ link_with_version = f'https://mvnrepository.com/artifact/{ oss_name } /{ find_version } '
8283 elif pkg_type == 'pub' :
8384 pub_response = requests .get (f'https://pub.dev/api/packages/{ oss_name } ' )
8485 if pub_response .status_code == 200 :
8586 find_version = pub_response .json ().get ('latest' ).get ('version' )
86- link_with_version = f'https://pub.dev/packages/{ oss_name } /versions/{ find_version } '
87+ if find_version :
88+ link_with_version = f'https://pub.dev/packages/{ oss_name } /versions/{ find_version } '
8789 elif pkg_type == 'go' :
8890 go_response = requests .get (f'https://proxy.golang.org/{ oss_name } /@latest' )
8991 if go_response .status_code == 200 :
9092 find_version = go_response .json ().get ('Version' )
91- link_with_version = f'https://pkg.go.dev/{ oss_name } @{ find_version } '
93+ if find_version :
94+ link_with_version = f'https://pkg.go.dev/{ oss_name } @{ find_version } '
9295 except Exception as e :
9396 logger .info (f'Fail to get latest package version({ link } :{ e } )' )
9497 return find_version , link_with_version
0 commit comments