@@ -156,9 +156,12 @@ def parse_package_metadata(
156156 return PackageMetadata (repo , rev , org , inputs )
157157
158158
159- def get_package_metadata (package : GithubPackage ) -> PackageMetadata :
160- try :
159+ def get_package_metadata (package : Union [ConcretePackage , GithubPackage ]) -> PackageMetadata :
160+ if type (package ) == ConcretePackage :
161+ path , git_token_options = package .concrete_repo_path_with_access
162+ else :
161163 path , git_token_options = package .repo_path_with_access ()
164+ try :
162165 result = nix (
163166 ['flake' , 'metadata' , path , '--json' ] + git_token_options , is_install = False , refresh = True , verbose = VERBOSE
164167 )
@@ -305,7 +308,12 @@ def highlight_row(condition: bool, xs: List[str]) -> List[str]:
305308 return xs
306309
307310
308- def list_package (package_name : str , show_inputs : bool , show_status : bool ) -> None :
311+ def list_package (
312+ package_name : str ,
313+ show_inputs : bool ,
314+ show_status : bool ,
315+ version : Optional [str ] = None ,
316+ ) -> None :
309317 reload_packages ()
310318 if package_name != 'all' :
311319 if package_name not in packages .keys ():
@@ -314,7 +322,8 @@ def list_package(package_name: str, show_inputs: bool, show_status: bool) -> Non
314322 "[/]Use '[blue]kup list[/]' to see all the available packages."
315323 )
316324 return
317- listed_package = packages [package_name ]
325+
326+ listed_package = packages [package_name ].concrete (version , []) if version else packages [package_name ]
318327
319328 if show_inputs or show_status :
320329 inputs = get_package_metadata (listed_package )
@@ -864,6 +873,7 @@ def main() -> None:
864873 'list' , help = 'show the active and installed K semantics' , add_help = False , parents = [verbose_arg ]
865874 )
866875 list .add_argument ('package' , nargs = '?' , default = 'all' , type = str )
876+ list .add_argument ('--version' , type = str , help = 'print information about the given version of the package' )
867877 list .add_argument ('--inputs' , action = 'store_true' , help = 'show the input dependencies of the selected package' )
868878 list .add_argument (
869879 '--status' ,
@@ -953,7 +963,7 @@ def main() -> None:
953963 package_name = PackageName .parse (args .package )
954964
955965 if args .command == 'list' :
956- list_package (package_name .base , args .inputs , args .status )
966+ list_package (package_name .base , args .inputs , args .status , args . version )
957967
958968 elif args .command == 'install' :
959969 install_package (package_name , args .version , args .override )
0 commit comments