1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
RIOT/dist/tools/dhcpv6-pd_ia/pkg/base.py

64 lines
1.7 KiB
Python

# -*- coding: utf-8 -*-
# vim:fenc=utf-8
#
# Copyright (C) 2020 Freie Universität Berlin
#
# This file is subject to the terms and conditions of the GNU Lesser
# General Public License v2.1. See the file LICENSE in the top level
# directory for more details.
import abc
import sys
__author__ = "Martine S. Lenders"
__copyright__ = "Copyright (C) 2020 Freie Universität Berlin"
__credits__ = ["Martine S. Lenders"]
__license__ = "LGPLv2.1"
__maintainer__ = "Martine S. Lenders"
__email__ = "m.lenders@fu-berlin.de"
class Installer(abc.ABC):
def __init__(self, os):
self.os = os
@abc.abstractmethod
def _install(self, package):
"""
Executes the install command
"""
pass
def install(self, package):
"""
Executes the install command, but asks the user before-hand if it is
okay to do so.
"""
if self._ask(package):
self._install(package)
@staticmethod
def _ask(package):
valid = {"yes": True, "y": True, "ye": True,
"no": False, "n": False}
while True:
sys.stdout.write("Install package {}? [Y/n] "
.format(package["generic"]["name"]))
sys.stdout.flush()
choice = input().lower()
if choice == '':
return True
elif choice in valid:
return valid[choice]
else:
raise ValueError(
"Please respond with 'yes' or 'no' (or 'y' or 'n').",
)
class AskToInstall(Installer):
def install(self, package):
print("Please install {name} ({url})".format(**package["generic"]),
file=sys.stderr)