mirror of
https://github.com/lilydjwg/nvchecker.git
synced 2025-03-10 06:14:02 +00:00
support setting keyfile on command line
This commit is contained in:
parent
8520a62271
commit
1f7552bbf7
3 changed files with 23 additions and 13 deletions
1
NEW
1
NEW
|
@ -1,5 +1,4 @@
|
|||
TODO:
|
||||
* update tests
|
||||
* update README
|
||||
* set keyfile via command line?
|
||||
* create source plugin documentation
|
||||
|
|
|
@ -12,12 +12,15 @@ from typing import Coroutine
|
|||
import structlog
|
||||
|
||||
from . import core
|
||||
from .util import VersData, RawResult
|
||||
from .util import VersData, RawResult, KeyManager
|
||||
|
||||
logger = structlog.get_logger(logger_name=__name__)
|
||||
|
||||
def main() -> None:
|
||||
parser = argparse.ArgumentParser(description='New version checker for software')
|
||||
parser.add_argument('-k', '--keyfile',
|
||||
metavar='FILE', type=str,
|
||||
help='use specified keyfile')
|
||||
parser.add_argument('-t', '--tries', default=1, type=int, metavar='N',
|
||||
help='try N times when errors occur')
|
||||
core.add_common_arguments(parser)
|
||||
|
@ -33,13 +36,20 @@ def main() -> None:
|
|||
else:
|
||||
file = args.file
|
||||
|
||||
entries, options = core.load_file(file)
|
||||
entries, options = core.load_file(
|
||||
file, use_keymanager=bool(args.keyfile))
|
||||
|
||||
if args.keyfile:
|
||||
keymanager = KeyManager(args.keyfile)
|
||||
else:
|
||||
keymanager = options.keymanager
|
||||
|
||||
token_q = core.token_queue(options.max_concurrency)
|
||||
result_q: asyncio.Queue[RawResult] = asyncio.Queue()
|
||||
try:
|
||||
futures = core.dispatch(
|
||||
entries, token_q, result_q,
|
||||
options.keymanager, args.tries,
|
||||
keymanager, args.tries,
|
||||
)
|
||||
except ModuleNotFoundError as e:
|
||||
sys.exit(f'Error: {e}')
|
||||
|
|
|
@ -133,10 +133,12 @@ class Options(NamedTuple):
|
|||
keymanager: KeyManager
|
||||
|
||||
def load_file(
|
||||
file: TextIO,
|
||||
file: TextIO, *,
|
||||
use_keymanager: bool,
|
||||
) -> Tuple[Entries, Options]:
|
||||
config = toml.load(file)
|
||||
ver_files: Optional[Tuple[Path, Path]] = None
|
||||
keymanager = KeyManager(None)
|
||||
|
||||
if '__config__' in config:
|
||||
c = config.pop('__config__')
|
||||
|
@ -151,19 +153,18 @@ def load_file(
|
|||
newver = d / newver_s
|
||||
ver_files = oldver, newver
|
||||
|
||||
keyfile = c.get('keyfile')
|
||||
if keyfile:
|
||||
keyfile_s = os.path.expandvars(
|
||||
os.path.expanduser(c.get('keyfile')))
|
||||
keyfile = d / keyfile_s
|
||||
if use_keymanager:
|
||||
keyfile = c.get('keyfile')
|
||||
if keyfile:
|
||||
keyfile_s = os.path.expandvars(
|
||||
os.path.expanduser(c.get('keyfile')))
|
||||
keyfile = d / keyfile_s
|
||||
keymanager = KeyManager(keyfile)
|
||||
|
||||
max_concurrency = c.get(
|
||||
'max_concurrency', 20)
|
||||
keymanager = KeyManager(keyfile)
|
||||
|
||||
else:
|
||||
max_concurrency = 20
|
||||
keymanager = KeyManager(None)
|
||||
|
||||
return cast(Entries, config), Options(
|
||||
ver_files, max_concurrency, keymanager)
|
||||
|
|
Loading…
Add table
Reference in a new issue