diff --git a/apt_ostree/cmd/repo/__init__.py b/apt_ostree/cmd/repo/__init__.py index 1861903..1738241 100644 --- a/apt_ostree/cmd/repo/__init__.py +++ b/apt_ostree/cmd/repo/__init__.py @@ -13,7 +13,7 @@ from apt_ostree.cmd.repo.list import show from apt_ostree.cmd.repo.remove import remove -@click.group(help="Commands to create/manage Debian package repository") +@click.group(help="Create/manage Debian package repository.") @click.pass_context def repo(ctxt): pass diff --git a/apt_ostree/cmd/repo/add.py b/apt_ostree/cmd/repo/add.py index d6a5a79..b8d6d4c 100644 --- a/apt_ostree/cmd/repo/add.py +++ b/apt_ostree/cmd/repo/add.py @@ -4,7 +4,7 @@ Copyright (c) 2023 Wind River Systems, Inc. SPDX-License-Identifier: Apache-2.0 """ -import shutil +import errno import sys import click @@ -13,7 +13,6 @@ from apt_ostree.cmd.options import feed_option from apt_ostree.cmd.options import packages_option from apt_ostree.cmd.options import release_option from apt_ostree.cmd import pass_state_context -from apt_ostree.log import complete_step from apt_ostree.repo import Repo @@ -23,10 +22,13 @@ from apt_ostree.repo import Repo @release_option @packages_option def add(state, feed, release, packages): - if shutil.which("reprepro") is None: - click.secho("reprepro was not found in your $PATH") - sys.exit(0) - - with complete_step( - f"Adding packages to {state.feed}"): + try: Repo(state).add() + except KeyboardInterrupt: + click.secho("\n" + ("Exiting at your request.")) + sys.exit(130) + except BrokenPipeError: + sys.exit() + except OSError as error: + if error.errno == errno.ENOSPC: + sys.exit("errror - No space left on device.") diff --git a/apt_ostree/cmd/repo/init.py b/apt_ostree/cmd/repo/init.py index 60dcf22..3c6c6bc 100644 --- a/apt_ostree/cmd/repo/init.py +++ b/apt_ostree/cmd/repo/init.py @@ -5,7 +5,7 @@ SPDX-License-Identifier: Apache-2.0 """ -import shutil +import errno import sys import click @@ -15,7 +15,6 @@ from apt_ostree.cmd.options import feed_option from apt_ostree.cmd.options import origin_option from apt_ostree.cmd.options import release_option from apt_ostree.cmd import pass_state_context -from apt_ostree.log import complete_step from apt_ostree.repo import Repo @@ -25,10 +24,13 @@ from apt_ostree.repo import Repo @release_option @origin_option def init(state, feed, release, origin): - if shutil.which("reprepro") is None: - click.secho("reprepro was not found in your $PATH") - sys.exit(0) - - with complete_step( - f"Creating Debian package repository in {state.feed}."): + try: Repo(state).init() + except KeyboardInterrupt: + click.secho("\n" + ("Exiting at your request.")) + sys.exit(130) + except BrokenPipeError: + sys.exit() + except OSError as error: + if error.errno == errno.ENOSPC: + sys.exit("errror - No space left on device.") diff --git a/apt_ostree/cmd/repo/list.py b/apt_ostree/cmd/repo/list.py index 7670783..8d5cf49 100644 --- a/apt_ostree/cmd/repo/list.py +++ b/apt_ostree/cmd/repo/list.py @@ -5,7 +5,7 @@ SPDX-License-Identifier: Apache-2.0 """ -import shutil +import errno import sys import click @@ -21,8 +21,13 @@ from apt_ostree.repo import Repo @feed_option @release_option def show(state, feed, release): - if shutil.which("reprepro") is None: - click.secho("reprepro was not found in your $PATH") - sys.exit(0) - - Repo(state).show() + try: + Repo(state).show() + except KeyboardInterrupt: + click.secho("\n" + ("Exiting at your request.")) + sys.exit(130) + except BrokenPipeError: + sys.exit() + except OSError as error: + if error.errno == errno.ENOSPC: + sys.exit("errror - No space left on device.") diff --git a/apt_ostree/cmd/repo/remove.py b/apt_ostree/cmd/repo/remove.py index 2e661ae..f5914d5 100644 --- a/apt_ostree/cmd/repo/remove.py +++ b/apt_ostree/cmd/repo/remove.py @@ -5,7 +5,7 @@ SPDX-License-Identifier: Apache-2.0 """ -import shutil +import errno import sys import click @@ -14,20 +14,22 @@ from apt_ostree.cmd.options import feed_option from apt_ostree.cmd.options import packages_option from apt_ostree.cmd.options import release_option from apt_ostree.cmd import pass_state_context -from apt_ostree.log import complete_step from apt_ostree.repo import Repo -@click.command(help="Remove debian package(s) from reposiotry") +@click.command(help="Remove debian package(s) from reposiotry.") @pass_state_context @feed_option @release_option @packages_option def remove(state, feed, release, packages): - if shutil.which("reprepro") is None: - click.secho("reprepro was not found in your $PATH") - sys.exit(0) - - with complete_step( - f"Removing packages from {state.feed}"): + try: Repo(state).remove() + except KeyboardInterrupt: + click.secho("\n" + ("Exiting at your request.")) + sys.exit(130) + except BrokenPipeError: + sys.exit() + except OSError as error: + if error.errno == errno.ENOSPC: + sys.exit("errror - No space left on device.") diff --git a/apt_ostree/repo.py b/apt_ostree/repo.py index 1c54bdb..12c0dc5 100644 --- a/apt_ostree/repo.py +++ b/apt_ostree/repo.py @@ -60,7 +60,7 @@ class Repo: ) def add(self): - """Add Debian package(s) to repository""" + """Add Debian package(s) to repository.""" for pkg in self.state.packages: log_step(f"Adding {pkg}") r = run_command( @@ -102,6 +102,7 @@ class Repo: self.console.print(table) def remove(self): + """Remove a Debian package from an archive.""" for pkg in self.state.packages: log_step(f"Removing {pkg}") r = run_command(