Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
24 changes: 21 additions & 3 deletions ipspot/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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',
Expand All @@ -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:
Expand All @@ -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)
2 changes: 2 additions & 0 deletions ipspot/params.py
Original file line number Diff line number Diff line change
Expand Up @@ -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!"