Skip to content

Commit 5ea1cd9

Browse files
committed
move to src
1 parent 6275b81 commit 5ea1cd9

4 files changed

Lines changed: 64 additions & 2 deletions

File tree

setup.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
with open("README.md") as readme_file:
66
readme = readme_file.read()
77

8-
install_requirements = ["markdown"]
8+
install_requirements = ["click", "markdown"]
99

1010
setup_requirements = ["setuptools_scm"]
1111

@@ -20,7 +20,7 @@
2020
],
2121
python_requires=">=3.5",
2222
description="Simple text/ markdown links status checker",
23-
entry_points={"console_scripts": ["linkstatus=linkstatus:main"]},
23+
entry_points={"console_scripts": ["linkstatus=src.linkstatus:main"]},
2424
install_requires=install_requirements,
2525
long_description=readme,
2626
long_description_content_type="text/markdown",

src/__init__.py

Whitespace-only changes.

src/linkstatus.py

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
import os
2+
import glob
3+
from urllib import request
4+
from urllib.error import URLError
5+
from urllib.error import HTTPError
6+
7+
import click
8+
9+
from src.parser import parse_file
10+
11+
12+
def link_status(link):
13+
"""Check link status
14+
15+
Args:
16+
link: link to check status
17+
18+
Returns:
19+
tuple of status (bool) and status code/ reason
20+
"""
21+
try:
22+
connection = request.urlopen(link)
23+
return True, connection.code
24+
except HTTPError as e:
25+
return False, e.code
26+
except URLError as e:
27+
return False, e.reason
28+
29+
30+
def all_files(source):
31+
files = []
32+
for src in source:
33+
if os.path.isdir(src):
34+
files.extend([f for f in glob.glob(src + "**/**", recursive=True) if os.path.isfile(f)])
35+
elif os.path.isfile(src):
36+
files.append(src)
37+
else:
38+
click.echo("'{}' not valid source".format(src))
39+
return files
40+
41+
42+
@click.command(help="Check Link Status")
43+
@click.argument("source", nargs=-1, type=click.Path())
44+
def main(source):
45+
files = all_files(source)
46+
47+
for f in files:
48+
links = parse_file(f)
49+
50+
if links:
51+
click.echo(click.style("File: {}".format(f), bg='blue', fg='white'))
52+
53+
for link in links:
54+
for url in link.urls:
55+
status, code = link_status(url)
56+
57+
fg = "green" if status else "red"
58+
_status = "UP" if status else "DOWN"
59+
60+
click.echo(
61+
"L{}: {} ==> {}".format(link.line, url, click.style(_status, fg=fg))
62+
)
File renamed without changes.

0 commit comments

Comments
 (0)