11import glob
22import os
3+ from shutil import get_terminal_size
34
45import click
56import requests
@@ -52,6 +53,10 @@ def all_files(source, recursive=False):
5253@click .option ("-rt" , "--retry" , default = 2 , help = "Retry link status (default 2 time)" )
5354def main (source , recursive , timeout , retry ):
5455 exit_code = 0
56+ up_count = 0
57+ down_count = 0
58+ skip_count = 0
59+
5560 files = all_files (source , recursive = recursive )
5661
5762 for f in files :
@@ -63,6 +68,7 @@ def main(source, recursive, timeout, retry):
6368 for link in links :
6469 for url in link .urls :
6570 if link .skip :
71+ skip_count += 1
6672 click .echo (
6773 "{icon} L{ln} : {url} (skip)" .format (
6874 icon = click .style ("…" , fg = "blue" , bold = True ),
@@ -80,10 +86,12 @@ def main(source, recursive, timeout, retry):
8086 if status :
8187 fg = "green"
8288 icon = "✓"
89+ up_count += 1
8390 else :
8491 fg = "red"
8592 icon = "✗"
8693 exit_code = 1
94+ down_count += 1
8795
8896 click .echo (
8997 "{icon} L{ln} : {url} {code}" .format (
@@ -94,13 +102,19 @@ def main(source, recursive, timeout, retry):
94102 )
95103 )
96104
105+ # Print summary
106+ columns = get_terminal_size ().columns
107+ click .echo ("=" * columns )
108+ click .echo (click .style ("Links Status Summary" .center (columns ), bold = True ))
109+ click .echo (click .style ("Links UP: {}" .format (up_count ).center (columns ), fg = "green" ))
110+ click .echo (click .style ("Links SKIP: {}" .format (skip_count ).center (columns ), fg = "blue" ))
111+ click .echo (click .style ("Links DOWN: {}" .format (down_count ).center (columns ), fg = "red" ))
112+
97113 if exit_code == 1 :
98114 click .echo (
99- click .style (
100- "Warning: Use `noqa` inline comment to skip link check. "
101- "like, response code 403 due to header restrictions etc..." ,
102- fg = "red" ,
103- bold = True ,
104- )
115+ "Warning: Use `noqa` inline comment to skip link check. "
116+ "like, response code 403 due to header restrictions etc..."
105117 )
118+
119+ click .echo ("=" * columns )
106120 exit (exit_code )
0 commit comments