diff options
| author | Giampaolo Rodola <g.rodola@gmail.com> | 2017-05-12 15:24:06 +0200 |
|---|---|---|
| committer | Giampaolo Rodola <g.rodola@gmail.com> | 2017-05-12 15:24:06 +0200 |
| commit | ec6fbeb15cf5bf12352fde6ebcfbe3f74529f336 (patch) | |
| tree | 6945f6c7c06354630f074a45dc45b1141e2d97bc /scripts | |
| parent | 63b43b31da9c90b77258fd69be9261591cd52b70 (diff) | |
| download | psutil-ec6fbeb15cf5bf12352fde6ebcfbe3f74529f336.tar.gz | |
check_urls.py refactoring
Diffstat (limited to 'scripts')
| -rwxr-xr-x | scripts/internal/check_broken_links.py | 33 |
1 files changed, 23 insertions, 10 deletions
diff --git a/scripts/internal/check_broken_links.py b/scripts/internal/check_broken_links.py index ec492f61..3cc78ec8 100755 --- a/scripts/internal/check_broken_links.py +++ b/scripts/internal/check_broken_links.py @@ -60,10 +60,9 @@ REQUEST_TIMEOUT = 30 RETRY_STATUSES = [503, 401, 403] -def get_urls(filename): - """Extracts all URLs available in specified filename.""" - with open(filename) as fs: - text = fs.read() +def get_urls_rst(filename): + with open(filename) as f: + text = f.read() urls = re.findall(REGEX, text) # remove duplicates, list for sets are not iterable urls = list(set(urls)) @@ -73,6 +72,14 @@ def get_urls(filename): return urls +def get_urls(filename): + """Extracts all URLs available in specified filename.""" + if filename.endswith('.rst'): + return get_urls_rst(filename) + else: + return [] + + def validate_url(url): """Validate the URL by attempting an HTTP connection. Makes an HTTP-HEAD request for each URL. @@ -113,21 +120,24 @@ def parallel_validator(urls): else: if not ok: fails.append((fname, url)) - if fails: - print() + + print() return fails def main(): files = sys.argv[1:] if not files: - return sys.exit("usage: %s <FILES...>" % __name__) + print("usage: %s <FILES...>" % sys.argv[0], file=sys.stderr) + return sys.exit(1) all_urls = [] for fname in files: urls = get_urls(fname) - for url in urls: - all_urls.append((fname, url)) + if urls: + print("%4s %s" % (len(urls), fname)) + for url in urls: + all_urls.append((fname, url)) fails = parallel_validator(all_urls) if not fails: @@ -142,4 +152,7 @@ def main(): if __name__ == '__main__': - main() + try: + main() + except (KeyboardInterrupt, SystemExit): + os._exit(0) |
