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:
|
TODO:
|
||||||
* update tests
|
* update tests
|
||||||
* update README
|
* update README
|
||||||
* set keyfile via command line?
|
|
||||||
* create source plugin documentation
|
* create source plugin documentation
|
||||||
|
|
|
@ -12,12 +12,15 @@ from typing import Coroutine
|
||||||
import structlog
|
import structlog
|
||||||
|
|
||||||
from . import core
|
from . import core
|
||||||
from .util import VersData, RawResult
|
from .util import VersData, RawResult, KeyManager
|
||||||
|
|
||||||
logger = structlog.get_logger(logger_name=__name__)
|
logger = structlog.get_logger(logger_name=__name__)
|
||||||
|
|
||||||
def main() -> None:
|
def main() -> None:
|
||||||
parser = argparse.ArgumentParser(description='New version checker for software')
|
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',
|
parser.add_argument('-t', '--tries', default=1, type=int, metavar='N',
|
||||||
help='try N times when errors occur')
|
help='try N times when errors occur')
|
||||||
core.add_common_arguments(parser)
|
core.add_common_arguments(parser)
|
||||||
|
@ -33,13 +36,20 @@ def main() -> None:
|
||||||
else:
|
else:
|
||||||
file = args.file
|
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)
|
token_q = core.token_queue(options.max_concurrency)
|
||||||
result_q: asyncio.Queue[RawResult] = asyncio.Queue()
|
result_q: asyncio.Queue[RawResult] = asyncio.Queue()
|
||||||
try:
|
try:
|
||||||
futures = core.dispatch(
|
futures = core.dispatch(
|
||||||
entries, token_q, result_q,
|
entries, token_q, result_q,
|
||||||
options.keymanager, args.tries,
|
keymanager, args.tries,
|
||||||
)
|
)
|
||||||
except ModuleNotFoundError as e:
|
except ModuleNotFoundError as e:
|
||||||
sys.exit(f'Error: {e}')
|
sys.exit(f'Error: {e}')
|
||||||
|
|
|
@ -133,10 +133,12 @@ class Options(NamedTuple):
|
||||||
keymanager: KeyManager
|
keymanager: KeyManager
|
||||||
|
|
||||||
def load_file(
|
def load_file(
|
||||||
file: TextIO,
|
file: TextIO, *,
|
||||||
|
use_keymanager: bool,
|
||||||
) -> Tuple[Entries, Options]:
|
) -> Tuple[Entries, Options]:
|
||||||
config = toml.load(file)
|
config = toml.load(file)
|
||||||
ver_files: Optional[Tuple[Path, Path]] = None
|
ver_files: Optional[Tuple[Path, Path]] = None
|
||||||
|
keymanager = KeyManager(None)
|
||||||
|
|
||||||
if '__config__' in config:
|
if '__config__' in config:
|
||||||
c = config.pop('__config__')
|
c = config.pop('__config__')
|
||||||
|
@ -151,19 +153,18 @@ def load_file(
|
||||||
newver = d / newver_s
|
newver = d / newver_s
|
||||||
ver_files = oldver, newver
|
ver_files = oldver, newver
|
||||||
|
|
||||||
keyfile = c.get('keyfile')
|
if use_keymanager:
|
||||||
if keyfile:
|
keyfile = c.get('keyfile')
|
||||||
keyfile_s = os.path.expandvars(
|
if keyfile:
|
||||||
os.path.expanduser(c.get('keyfile')))
|
keyfile_s = os.path.expandvars(
|
||||||
keyfile = d / keyfile_s
|
os.path.expanduser(c.get('keyfile')))
|
||||||
|
keyfile = d / keyfile_s
|
||||||
|
keymanager = KeyManager(keyfile)
|
||||||
|
|
||||||
max_concurrency = c.get(
|
max_concurrency = c.get(
|
||||||
'max_concurrency', 20)
|
'max_concurrency', 20)
|
||||||
keymanager = KeyManager(keyfile)
|
|
||||||
|
|
||||||
else:
|
else:
|
||||||
max_concurrency = 20
|
max_concurrency = 20
|
||||||
keymanager = KeyManager(None)
|
|
||||||
|
|
||||||
return cast(Entries, config), Options(
|
return cast(Entries, config), Options(
|
||||||
ver_files, max_concurrency, keymanager)
|
ver_files, max_concurrency, keymanager)
|
||||||
|
|
Loading…
Add table
Reference in a new issue