315cf596e6
Closes #34
88 lines
2.2 KiB
Ada
88 lines
2.2 KiB
Ada
package body Alire.Containers is
|
|
|
|
------------
|
|
-- Insert --
|
|
------------
|
|
|
|
procedure Insert (Dst : in out Release_Map; Src : Release_Map) is
|
|
begin
|
|
for E of Src loop
|
|
Dst.Insert (E.Project, E);
|
|
end loop;
|
|
end Insert;
|
|
|
|
---------------
|
|
-- Inserting --
|
|
---------------
|
|
|
|
function Inserting (Dst : Release_Map; Src : Release_Map) return Release_Map is
|
|
begin
|
|
return Result : Release_Map := Dst do
|
|
for E of Src loop
|
|
Result.Insert (E.Project, E);
|
|
if E.Project /= E.Provides then
|
|
Result.Insert (E.Provides, E);
|
|
end if;
|
|
end loop;
|
|
end return;
|
|
end Inserting;
|
|
|
|
function Inserting (Dst : Release_Map; Src : Releases.Release) return Release_Map is
|
|
(Dst.Inserting (To_Map (Src)));
|
|
|
|
---------------
|
|
-- Excluding --
|
|
---------------
|
|
|
|
function Excluding (Map : Release_Map; Name : Alire.Project) return Release_Map is
|
|
begin
|
|
return Filtered : Release_Map := Map do
|
|
Filtered.Exclude (Name);
|
|
end return;
|
|
end Excluding;
|
|
|
|
---------------
|
|
-- Including --
|
|
---------------
|
|
|
|
function Including (Map : Release_Map; Release : Releases.Release) return Release_Map is
|
|
begin
|
|
return New_Map : Release_Map := Map do
|
|
New_Map.Include (Release.Project, Release);
|
|
end return;
|
|
end Including;
|
|
|
|
---------------------
|
|
-- To_Dependencies --
|
|
---------------------
|
|
|
|
function To_Dependencies (Map : Release_Map) return Conditional.Dependencies is
|
|
use Conditional.For_Dependencies;
|
|
use Project_Release_Maps;
|
|
begin
|
|
return Deps : Conditional.Dependencies do
|
|
for I in Map.Iterate loop
|
|
if Key (I) = Map (I).Provides then -- Avoid duplicates
|
|
Deps :=
|
|
Deps and
|
|
Conditional.New_Dependency
|
|
(Map (I).Project,
|
|
Semantic_Versioning.Exactly (Map (I).Version));
|
|
end if;
|
|
end loop;
|
|
end return;
|
|
end To_Dependencies;
|
|
|
|
------------
|
|
-- To_Map --
|
|
------------
|
|
|
|
function To_Map (R : Releases.Release) return Release_Map is
|
|
begin
|
|
return M : Release_Map do
|
|
M.Include (R.Project, R);
|
|
end return;
|
|
end To_Map;
|
|
|
|
end Alire.Containers;
|