-
Notifications
You must be signed in to change notification settings - Fork 0
/
shell_exec.py
38 lines (29 loc) · 970 Bytes
/
shell_exec.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import sys
from api.domain.route_domain import RouteDomain
def exec_shell(filepath):
'''
'''
try:
route_domain = RouteDomain(filepath)
except KeyError as e:
return "File not supported! Use only files .txt or .csv."
except FileNotFoundError as e:
return "File not found."
try:
print("Please use - to separate the locations. Ex.: ONE - ANOTHER")
from_node, to_node = list(map(str, input("please enter the route:").split('-')))
except ValueError as e:
return "Invalid input."
from_node = from_node.replace(" ", "").upper()
to_node = to_node.replace(" ", "").upper()
try:
best_path, cost = route_domain.best_path(from_node, to_node)
except ValueError as e:
return "The nodes are not connected."
except AttributeError as e:
return "Please, send two valid locations to verify: origin and destination."
response = f"{best_path} > ${cost}"
return response
if __name__ == '__main__':
filepath = sys.argv[1]
print(exec_shell(filepath))