You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
1.7 KiB
Python
72 lines
1.7 KiB
Python
"""
|
|
cli options
|
|
"""
|
|
|
|
import argparse
|
|
import pathlib
|
|
from functools import cached_property
|
|
|
|
from .log import log
|
|
from .host import host
|
|
|
|
|
|
class Options:
|
|
"""
|
|
turns the cli arguments into an object with nice fields and the like
|
|
"""
|
|
|
|
@classmethod
|
|
def from_cli_args(cls):
|
|
"""
|
|
creates an options object by parsing the command-line
|
|
"""
|
|
parser = cls.create_cli_parser()
|
|
options = cls()
|
|
parser.parse_args(namespace=options)
|
|
|
|
if options.quiet:
|
|
log.setLevel(50)
|
|
|
|
if options.verbose:
|
|
log.setLevel(10)
|
|
|
|
return options
|
|
|
|
@classmethod
|
|
def create_cli_parser(cls):
|
|
parser = argparse.ArgumentParser(
|
|
prog="install",
|
|
description="""
|
|
installs preferences files.
|
|
""",
|
|
)
|
|
parser.add_argument("-v", "--verbose", action="store_true")
|
|
parser.add_argument("-q", "--quiet", action="store_true")
|
|
parser.add_argument("-c", "--config", help="path to config file")
|
|
parser.add_argument("-x", action="store_true")
|
|
return parser
|
|
|
|
@property
|
|
def quiet(self):
|
|
# pylint: disable=missing-function-docstring
|
|
return self._quiet
|
|
|
|
@quiet.setter
|
|
def quiet(self, val):
|
|
self._quiet = val
|
|
|
|
@property
|
|
def verbose(self):
|
|
# pylint: disable=missing-function-docstring
|
|
return self._verbose and not self._quiet
|
|
|
|
@verbose.setter
|
|
def verbose(self, val):
|
|
self._verbose = val
|
|
|
|
@cached_property
|
|
def config_path(self):
|
|
if not self.config:
|
|
self.config = host.dotfiles_root / "config.ini"
|
|
return pathlib.Path(self.config)
|