@ -28,22 +28,19 @@ init(State) ->
- spec do ( rebar_state : t ( ) ) - > { ok , rebar_state : t ( ) } | { error , string ( ) } .
do ( State ) - >
rebar_packages : packages ( State ) ,
print_packages ( ) ,
case rebar_state : command_args ( State ) of
[ Name ] - >
print_packages ( get_packages ( iolist_to_binary ( Name ) ) ) ;
_ - >
print_packages ( sort_packages ( ) )
end ,
{ ok , State } .
- spec format_error ( any ( ) ) - > iolist ( ) .
format_error ( load_registry_fail ) - >
" Failed to load package regsitry. Try running 'rebar3 update' to fix " .
print_packages ( ) - >
SortedPkgs = ets : foldl ( fun ( { package_index_version , _ } , Acc ) - >
Acc ;
( { Pkg , Vsns } , Acc ) - >
orddict : store ( Pkg , Vsns , Acc ) ;
( _ , Acc ) - >
Acc
end , orddict : new ( ) , ? PACKAGE_TABLE ) ,
print_packages ( Pkgs ) - >
orddict : map ( fun ( Name , Vsns ) - >
SortedVsns = lists : sort ( fun ( A , B ) - >
ec_semver : lte ( ec_semver : parse ( A )
@ -51,7 +48,20 @@ print_packages() ->
end , Vsns ) ,
VsnStr = join ( SortedVsns , < < " , " > > ) ,
? CONSOLE ( " ~s : ~n Versions: ~s ~n " , [ Name , VsnStr ] )
end , SortedPkgs ) .
end , Pkgs ) .
sort_packages ( ) - >
ets : foldl ( fun ( { package_index_version , _ } , Acc ) - >
Acc ;
( { Pkg , Vsns } , Acc ) - >
orddict : store ( Pkg , Vsns , Acc ) ;
( _ , Acc ) - >
Acc
end , orddict : new ( ) , ? PACKAGE_TABLE ) .
get_packages ( Name ) - >
ets : lookup ( ? PACKAGE_TABLE , Name ) .
- spec join ( [ binary ( ) ] , binary ( ) ) - > binary ( ) .
join ( [ Bin ] , _ Sep ) - >