@@ -91,6 +91,9 @@ def _print_cli_exception(*, exc: BaseException) -> None:
9191 pyrit_scan --list-initializers
9292 pyrit_scan --list-targets
9393
94+ # List available datasets
95+ pyrit_scan --list-datasets
96+
9497 # Run single-turn cyber attacks against a target
9598 pyrit_scan airt.cyber --target openai_chat --strategies single_turn
9699
@@ -188,6 +191,11 @@ def _build_base_parser(*, add_help: bool = True) -> ArgumentParser:
188191 action = "store_true" ,
189192 help = "List all available targets and exit" ,
190193 )
194+ discovery_group .add_argument (
195+ "--list-datasets" ,
196+ action = "store_true" ,
197+ help = "List all available datasets and exit" ,
198+ )
191199 discovery_group .add_argument (
192200 "--add-initializer" ,
193201 type = str ,
@@ -451,6 +459,7 @@ def _is_command_specified(*, parsed_args: Namespace) -> bool:
451459 parsed_args .list_scenarios
452460 or parsed_args .list_initializers
453461 or parsed_args .list_targets
462+ or parsed_args .list_datasets
454463 or parsed_args .add_initializer
455464 or parsed_args .scenario_name
456465 )
@@ -514,6 +523,10 @@ async def _handle_list_commands_async(*, client: Any, parsed_args: Namespace) ->
514523 targets = await client .list_targets_async ()
515524 _output .print_target_list (items = targets )
516525 return 0
526+ if parsed_args .list_datasets :
527+ resp = await client .list_datasets_async ()
528+ _output .print_dataset_list (items = resp .get ("items" , []))
529+ return 0
517530 return None
518531
519532
0 commit comments