88from urllib .request import urlretrieve
99
1010from osv_common import collect_history , iter_vulnerability_files , load_vulnerability , recidivism_for_vulnerability
11- from recidivism_config import load_config , resolve_config_path
11+ from recidivism_config import load_config_with_source , required_value , resolve_config_path
1212
1313
1414def download_dump (url : str , destination : Path , force : bool ) -> None :
@@ -34,13 +34,13 @@ def extract_dump(archive: Path, extract_dir: Path, force: bool) -> None:
3434
3535
3636def main () -> None :
37- config = load_config ("enrich" )
37+ config , config_source = load_config_with_source ("enrich" )
3838
3939 parser = argparse .ArgumentParser (description = "Download OSV dump and enrich with recidivism metrics." )
40- parser .add_argument ("--dump-url" , default = config . get ( "dump_url" ) )
41- parser .add_argument ("--archive-path" , default = config . get ( "archive_path" ) )
42- parser .add_argument ("--extract-dir" , default = config . get ( "extract_dir" ) )
43- parser .add_argument ("--output" , default = config . get ( "output" ) )
40+ parser .add_argument ("--dump-url" )
41+ parser .add_argument ("--archive-path" )
42+ parser .add_argument ("--extract-dir" )
43+ parser .add_argument ("--output" )
4444 parser .add_argument (
4545 "--force-download" ,
4646 action = argparse .BooleanOptionalAction ,
@@ -53,11 +53,15 @@ def main() -> None:
5353 )
5454 args = parser .parse_args ()
5555
56- archive_path = resolve_config_path (args .archive_path )
57- extract_dir = resolve_config_path (args .extract_dir )
58- output_path = resolve_config_path (args .output )
56+ try :
57+ dump_url = args .dump_url or required_value (config , "dump_url" )
58+ archive_path = resolve_config_path (args .archive_path or required_value (config , "archive_path" ))
59+ extract_dir = resolve_config_path (args .extract_dir or required_value (config , "extract_dir" ))
60+ output_path = resolve_config_path (args .output or required_value (config , "output" ))
61+ except ValueError as error :
62+ parser .error (f"{ error } (config: { config_source } )" )
5963
60- download_dump (args . dump_url , archive_path , args .force_download )
64+ download_dump (dump_url , archive_path , args .force_download )
6165 extract_dump (archive_path , extract_dir , args .force_extract )
6266
6367 vulnerability_files = list (iter_vulnerability_files (extract_dir ))
0 commit comments