1
0
mirror of https://github.com/openSUSE/osc.git synced 2024-12-27 02:16:12 +01:00
github.com_openSUSE_osc/osc/commands/repo_remove.py

56 lines
1.5 KiB
Python

import difflib
import osc.commandline
from .. import oscerr
from .._private.project import ProjectMeta
from ..core import raw_input
class RepoRemoveCommand(osc.commandline.OscCommand):
"""
Remove repositories from project meta
"""
name = "remove"
aliases = ["rm"]
parent = "RepoCommand"
def init_arguments(self):
self.add_argument(
"project",
help="Name of the project",
)
self.add_argument(
"--repo",
metavar="[NAME]",
action="append",
required=True,
help="Name of the repository we're removing. Can be specified multiple times.",
)
self.add_argument(
"--yes",
action="store_true",
help="Proceed without asking",
)
def run(self, args):
meta = ProjectMeta.from_api(args.apiurl, args.project)
old_meta = meta.to_string().splitlines()
for repo in args.repo:
meta.repository_remove(repo)
meta.publish_remove_disable_repository(repo)
new_meta = meta.to_string().splitlines()
diff = difflib.unified_diff(old_meta, new_meta, fromfile="old", tofile="new")
print("\n".join(diff))
if not args.yes:
print()
print(f"You're changing meta of project '{args.project}'")
reply = raw_input("Do you want to apply the changes? [y/N] ").lower()
if reply != "y":
raise oscerr.UserAbort()
meta.to_api(args.apiurl, args.project)