diff --git a/CHANGELOG.md b/CHANGELOG.md index 549ebfc..49a0588 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,9 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). ## [Unreleased] +### Changed +- CLI messages updated +- CLI modified ## [0.8] - 2026-02-05 ### Added - Support [wtfismyip.com](https://wtfismyip.com/json) IPv6 API diff --git a/ipspot/cli.py b/ipspot/cli.py index 287417e..e76409b 100644 --- a/ipspot/cli.py +++ b/ipspot/cli.py @@ -10,6 +10,7 @@ from .params import IPSPOT_OVERVIEW, IPSPOT_REPO, IPSPOT_VERSION from .params import PUBLIC_IPV4_ERROR, PRIVATE_IPV4_ERROR from .params import PUBLIC_IPV6_ERROR, PRIVATE_IPV6_ERROR +from .params import EXIT_MESSAGE def _print_ipspot_info() -> None: # pragma: no cover @@ -93,8 +94,8 @@ def _print_report(ipv4_api: IPv4API, print(" Error: {public_ipv6_result}".format(public_ipv6_result=PUBLIC_IPV6_ERROR)) -def main() -> None: # pragma: no cover - """CLI main function.""" +def _parse_args() -> argparse.Namespace: # pragma: no cover + """Parse arguments.""" parser = argparse.ArgumentParser() parser.add_argument( '--ipv4-api', @@ -117,8 +118,16 @@ def main() -> None: # pragma: no cover parser.add_argument('--max-retries', help='number of retries', type=int, default=0) parser.add_argument('--retry-delay', help='delay between retries (in seconds)', type=float, default=1.0) parser.add_argument('--backoff-factor', help='backoff factor', type=float, default=1.0) - args = parser.parse_args() + return args + + +def _run(args: argparse.Namespace) -> None: # pragma: no cover + """ + Run ipspot CLI. + + :param args: arguments + """ if args.version: print(IPSPOT_VERSION) elif args.info: @@ -135,3 +144,12 @@ def main() -> None: # pragma: no cover max_retries=args.max_retries, retry_delay=args.retry_delay, backoff_factor=args.backoff_factor) + + +def main() -> None: # pragma: no cover + """CLI main function.""" + try: + args = _parse_args() + _run(args) + except (KeyboardInterrupt, EOFError): + print(EXIT_MESSAGE) diff --git a/ipspot/params.py b/ipspot/params.py index cec53bb..60ba3d3 100644 --- a/ipspot/params.py +++ b/ipspot/params.py @@ -77,3 +77,5 @@ class IPv6API(Enum): PRIVATE_IPV4_ERROR = "Unable to retrieve private IPv4 address." PUBLIC_IPV6_ERROR = "Unable to retrieve public IPv6 information." PRIVATE_IPV6_ERROR = "Unable to retrieve private IPv6 address." + +EXIT_MESSAGE = "See you. Bye!"