Miscellaneous refactoring
This commit is contained in:
+12
-10
@@ -4,27 +4,29 @@ with Ada.Containers.Indefinite_Ordered_Sets;
|
||||
|
||||
with Alire.Releases;
|
||||
|
||||
package Alire.Containers with Preelaborate is
|
||||
|
||||
with Semantic_Versioning;
|
||||
|
||||
package Alire.Containers with Preelaborate is
|
||||
|
||||
package Release_Sets is new Ada.Containers.Indefinite_Ordered_Sets (Releases.Release,
|
||||
Releases."<",
|
||||
Releases."=");
|
||||
Releases."=");
|
||||
subtype Release_Set is Release_Sets.Set;
|
||||
|
||||
|
||||
package Release_Holders is new Ada.Containers.Indefinite_Holders (Releases.Release,
|
||||
Releases."=");
|
||||
subtype Release_H is Release_Holders.Holder;
|
||||
|
||||
|
||||
|
||||
|
||||
package Project_Version_Maps is new Ada.Containers.Indefinite_Ordered_Maps
|
||||
(Project_Name, Semantic_Versioning.Version, "<", Semantic_Versioning."<");
|
||||
subtype Version_Map is Project_Version_Maps.Map;
|
||||
|
||||
|
||||
subtype Version_Map is Project_Version_Maps.Map;
|
||||
|
||||
|
||||
package Project_Release_Maps is new Ada.Containers.Indefinite_Ordered_Maps
|
||||
(Project_Name, Releases.Release, "<", Releases."=");
|
||||
subtype Release_Map is Project_Release_Maps.Map;
|
||||
|
||||
|
||||
function To_Map (R : Releases.Release) return Release_Map;
|
||||
|
||||
end Alire.Containers;
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
with Ada.Containers.Indefinite_Vectors;
|
||||
|
||||
package Alire.Dependencies.Vectors with Preelaborate is
|
||||
|
||||
-- Dependencies are a plain list (vector) of individual dependencies
|
||||
-- There's nothing preventing giving version sets on the same project as distinct dependencies
|
||||
|
||||
package Dependency_Vectors is new Ada.Containers.Indefinite_Vectors (Positive, Dependency);
|
||||
|
||||
type Vector is new Dependency_Vectors.Vector with private;
|
||||
|
||||
function No_Dependencies return Vector;
|
||||
|
||||
-- Creation of dependency vectors
|
||||
|
||||
function New_Dependency (Name : Project_Name;
|
||||
Versions : Semantic_Versioning.Version_Set) return Vector;
|
||||
|
||||
function "and" (Dep1, Dep2 : Vector) return Vector is (Dep1 & Dep2);
|
||||
|
||||
private
|
||||
|
||||
type Vector is new Dependency_Vectors.Vector with null record;
|
||||
-- New type so the "and" function is primitive
|
||||
|
||||
function No_Dependencies return Vector is (Dependency_Vectors.Empty_Vector with null record);
|
||||
|
||||
--------------------
|
||||
-- New_Dependency --
|
||||
--------------------
|
||||
|
||||
function New_Dependency (Name : Project_Name;
|
||||
Versions : Semantic_Versioning.Version_Set) return Vector is
|
||||
(To_Vector ((Name'Length, Name, To_Holder (Versions)), 1));
|
||||
|
||||
end Alire.Dependencies.Vectors;
|
||||
@@ -0,0 +1,42 @@
|
||||
private with Ada.Containers.Indefinite_Holders;
|
||||
|
||||
with Semantic_Versioning;
|
||||
|
||||
package Alire.Dependencies with Preelaborate is
|
||||
|
||||
-- A single dependency is a project name plus a version set
|
||||
|
||||
type Dependency (<>) is tagged private;
|
||||
|
||||
function New_Dependency (Name : Project_Name;
|
||||
Versions : Semantic_Versioning.Version_Set) return Dependency;
|
||||
|
||||
function Project (Dep : Dependency) return Project_Name;
|
||||
|
||||
function Versions (Dep : Dependency) return Semantic_Versioning.Version_Set;
|
||||
|
||||
|
||||
private
|
||||
|
||||
use all type Semantic_Versioning.Version;
|
||||
|
||||
package Version_Holders is new Ada.Containers.Indefinite_Holders
|
||||
(Semantic_Versioning.Version_Set, Semantic_Versioning."=");
|
||||
|
||||
type Version_Set_Holder is new Version_Holders.Holder with null record;
|
||||
|
||||
type Dependency (Name_Len : Positive) is tagged record
|
||||
Project : Project_Name (1 .. Name_Len);
|
||||
Versions_H : Version_Set_holder;
|
||||
end record;
|
||||
|
||||
function New_Dependency (Name : Project_Name;
|
||||
Versions : Semantic_Versioning.Version_Set) return Dependency
|
||||
is ((Name'Length, Name, To_Holder (Versions)));
|
||||
|
||||
function Project (Dep : Dependency) return Project_Name is (Dep.Project);
|
||||
|
||||
function Versions (Dep : Dependency) return Semantic_Versioning.Version_Set is
|
||||
(Dep.Versions_H.Element);
|
||||
|
||||
end Alire.Dependencies;
|
||||
@@ -1,28 +0,0 @@
|
||||
with Ada.Containers.Indefinite_Vectors;
|
||||
|
||||
package Alire.Depends with Preelaborate is
|
||||
|
||||
package Dependency_Vectors is new Ada.Containers.Indefinite_Vectors
|
||||
(Positive, Dependency);
|
||||
type Dependencies is new Dependency_Vectors.Vector with null record ;
|
||||
|
||||
function Nothing return Dependencies is (Dependency_Vectors.Empty_Vector with null record);
|
||||
|
||||
function New_Dependency (Name : Project_Name;
|
||||
Versions : Semantic_Versioning.Version_Set) return Dependencies;
|
||||
function Depends_On (Name : Project_Name;
|
||||
Versions : Semantic_Versioning.Version_Set) return Dependencies renames New_Dependency;
|
||||
function On (Name : Project_Name;
|
||||
Versions : Semantic_Versioning.Version_Set) return Dependencies renames New_Dependency;
|
||||
|
||||
function "and" (Dep1, Dep2 : Dependencies) return Dependencies;
|
||||
|
||||
private
|
||||
|
||||
function New_Dependency (Name : Project_Name;
|
||||
Versions : Semantic_Versioning.Version_Set) return Dependencies
|
||||
is (To_Vector ((Name'Length, Name, To_Holder (Versions)), 1));
|
||||
|
||||
function "and" (Dep1, Dep2 : Dependencies) return Dependencies is (Dep1 & Dep2);
|
||||
|
||||
end Alire.Depends;
|
||||
+4
-4
@@ -14,10 +14,10 @@ package body Alire.Index is
|
||||
Description : Project_Description;
|
||||
Hosting : Repositories.Repository'Class;
|
||||
Id : Repositories.Release_Id;
|
||||
Depends_On : Dependencies := Depends.Nothing;
|
||||
Properties : Alire.Properties.Vector := Alire.Properties.Vectors.Empty_Vector;
|
||||
Requisites : Alire.Requisites.Tree := Alire.Requisites.No_Requisites;
|
||||
Available_When : Alire.Requisites.Tree := Alire.Requisites.No_Requisites;
|
||||
Depends_On : Dependencies := No_Dependencies;
|
||||
Properties : Alire.Properties.Vector := No_Properties;
|
||||
Requisites : Alire.Requisites.Tree := No_Requisites;
|
||||
Available_When : Alire.Requisites.Tree := No_Requisites;
|
||||
Native : Boolean := False) return Release
|
||||
is
|
||||
begin
|
||||
|
||||
+26
-23
@@ -2,7 +2,7 @@ private with Alire_Early_Elaboration; pragma Unreferenced (Alire_Early_Elaborati
|
||||
|
||||
with Alire.Containers;
|
||||
with Alire.Compilers;
|
||||
with Alire.Depends;
|
||||
with Alire.Dependencies.Vectors;
|
||||
with Alire.Operating_Systems;
|
||||
with Alire.Properties;
|
||||
with Alire.Releases;
|
||||
@@ -16,8 +16,11 @@ package Alire.Index is
|
||||
|
||||
Releases : Containers.Release_Set;
|
||||
|
||||
subtype Dependencies is Depends.Dependencies;
|
||||
use all type Dependencies;
|
||||
subtype Dependencies is Alire.Dependencies.Vectors.Vector;
|
||||
|
||||
No_Dependencies : constant Dependencies := Alire.Dependencies.Vectors.No_Dependencies;
|
||||
No_Properties : constant Properties.Vector := Properties.Vectors.Empty_Vector;
|
||||
No_Requisites : constant Requisites.Tree := Requisites.Trees.Empty_Tree;
|
||||
|
||||
subtype Release is Alire.Releases.Release;
|
||||
|
||||
@@ -28,10 +31,10 @@ package Alire.Index is
|
||||
Hosting : Repositories.Repository'Class;
|
||||
Id : Repositories.Release_Id;
|
||||
-- Optional
|
||||
Depends_On : Dependencies := Depends.Nothing;
|
||||
Properties : Alire.Properties.Vector := Alire.Properties.Vectors.Empty_Vector;
|
||||
Requisites : Alire.Requisites.Tree := Alire.Requisites.No_Requisites;
|
||||
Available_When : Alire.Requisites.Tree := Alire.Requisites.No_Requisites;
|
||||
Depends_On : Dependencies := No_Dependencies;
|
||||
Properties : Alire.Properties.Vector := No_Properties;
|
||||
Requisites : Alire.Requisites.Tree := No_Requisites;
|
||||
Available_When : Alire.Requisites.Tree := No_Requisites;
|
||||
Native : Boolean := False) return Release;
|
||||
-- Properties are of the Release; currently not used but could support License or other attributes.
|
||||
-- Requisites are properties that dependencies have to fulfill, again not used yet.
|
||||
@@ -43,9 +46,9 @@ package Alire.Index is
|
||||
Hosting : URL;
|
||||
Commit : Repositories.Git.Commit_ID;
|
||||
-- Optional
|
||||
Properties : Alire.Properties.Vector := Alire.Properties.Vectors.Empty_Vector;
|
||||
Requisites : Alire.Requisites.Tree := Alire.Requisites.No_Requisites;
|
||||
Depends_On : Dependencies := Depends.Nothing) return Release;
|
||||
Properties : Alire.Properties.Vector := No_Properties;
|
||||
Requisites : Alire.Requisites.Tree := No_Requisites;
|
||||
Depends_On : Dependencies := No_Dependencies) return Release;
|
||||
|
||||
-- Shortcuts to give dependencies:
|
||||
|
||||
@@ -81,8 +84,7 @@ package Alire.Index is
|
||||
use all type Requisites.Requisite'Class;
|
||||
use all type Requisites.Tree; -- for logical operators
|
||||
|
||||
Default_Properties : constant Properties.Vector := Properties.Vectors.Empty_Vector;
|
||||
No_Requisites : constant Requisites.Tree := Requisites.No_Requisites;
|
||||
Default_Properties : constant Properties.Vector := No_Properties;
|
||||
|
||||
function Verifies (P : Properties.Property'Class) return Properties.Vector;
|
||||
function "+" (P : Properties.Property'Class) return Properties.Vector renames Verifies;
|
||||
@@ -105,9 +107,9 @@ private
|
||||
Description : Project_Description;
|
||||
Hosting : URL;
|
||||
Commit : Repositories.Git.Commit_ID;
|
||||
Properties : Alire.Properties.Vector := Alire.Properties.Vectors.Empty_Vector;
|
||||
Requisites : Alire.Requisites.Tree := Alire.Requisites.No_Requisites;
|
||||
Depends_On : Dependencies := Depends.Nothing) return Release
|
||||
Properties : Alire.Properties.Vector := No_Properties;
|
||||
Requisites : Alire.Requisites.Tree := No_Requisites;
|
||||
Depends_On : Dependencies := No_Dependencies) return Release
|
||||
is (Register (Project,
|
||||
Version,
|
||||
Description,
|
||||
@@ -118,8 +120,9 @@ private
|
||||
Requisites => Requisites,
|
||||
Native => False));
|
||||
|
||||
use Depends;
|
||||
use Semantic_Versioning;
|
||||
|
||||
use all type Dependencies;
|
||||
|
||||
function At_Least_Within_Major (R : Release) return Dependencies is
|
||||
(New_Dependency (R.Project, At_Least_Within_Major (R.Version)));
|
||||
@@ -144,25 +147,25 @@ private
|
||||
|
||||
|
||||
function At_Least_Within_Major (P : Project_Name; V : Version) return Dependencies is
|
||||
(Depends_On (P, At_Least_Within_Major (V)));
|
||||
(New_Dependency (P, At_Least_Within_Major (V)));
|
||||
|
||||
function At_Least (P : Project_Name; V : Version) return Dependencies is
|
||||
(Depends_On (P, At_Least (V)));
|
||||
(New_Dependency (P, At_Least (V)));
|
||||
|
||||
function At_Most (P : Project_Name; V : Version) return Dependencies is
|
||||
(Depends_On (P, At_Most (V)));
|
||||
(New_Dependency (P, At_Most (V)));
|
||||
|
||||
function Less_Than (P : Project_Name; V : Version) return Dependencies is
|
||||
(Depends_On (P, Less_Than (V)));
|
||||
(New_Dependency (P, Less_Than (V)));
|
||||
|
||||
function More_Than (P : Project_Name; V : Version) return Dependencies is
|
||||
(Depends_On (P, More_Than (V)));
|
||||
(New_Dependency (P, More_Than (V)));
|
||||
|
||||
function Exactly (P : Project_Name; V : Version) return Dependencies is
|
||||
(Depends_On (P, Exactly (V)));
|
||||
(New_Dependency (P, Exactly (V)));
|
||||
|
||||
function Except (P : Project_Name; V : Version) return Dependencies is
|
||||
(Depends_On (P, Except (V)));
|
||||
(New_Dependency (P, Except (V)));
|
||||
|
||||
|
||||
function Verifies (P : Properties.Property'Class) return Properties.Vector is
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
with Semantic_Versioning;
|
||||
|
||||
package Alire.Milestones with Preelaborate is
|
||||
|
||||
type Milestone (<>) is tagged private;
|
||||
|
||||
function "<" (L, R : Milestone) return Boolean;
|
||||
|
||||
function New_Milestone (Name : Project_Name;
|
||||
Version : Semantic_Versioning.Version) return Milestone;
|
||||
|
||||
function Project (M : Milestone) return Project_Name;
|
||||
|
||||
function Version (M : Milestone) return Semantic_Versioning.Version;
|
||||
|
||||
private
|
||||
|
||||
type Milestone (Name_Len : Positive) is tagged record
|
||||
Name : Project_Name (1 .. Name_Len);
|
||||
Version : Semantic_Versioning.Version;
|
||||
end record;
|
||||
|
||||
use all type Semantic_Versioning.Version;
|
||||
|
||||
function "<" (L, R : Milestone) return Boolean is
|
||||
(L.Name < R.Name or else (L.Name = R.Name and then L.Version < R.Version));
|
||||
|
||||
function New_Milestone (Name : Project_Name;
|
||||
Version : Semantic_Versioning.Version) return Milestone is
|
||||
(Name'Length, Name, Version);
|
||||
|
||||
function Project (M : Milestone) return Project_Name is (M.Name);
|
||||
|
||||
function Version (M : Milestone) return Semantic_Versioning.Version is (M.Version);
|
||||
|
||||
end Alire.Milestones;
|
||||
@@ -1,10 +0,0 @@
|
||||
package Alire.Properties.Versions with Preelaborate is
|
||||
|
||||
-- Internally we manage versions as a tree of conditions, so arbitrary logical expressions can be used
|
||||
|
||||
package Values is new Properties.values (Semantic_Versioning.Version);
|
||||
|
||||
function New_Version (V : Semantic_Versioning.Version) return Property'Class is
|
||||
(Values.New_Property (V));
|
||||
|
||||
end Alire.Properties.Versions;
|
||||
+16
-10
@@ -1,5 +1,11 @@
|
||||
with Alire.Dependencies;
|
||||
|
||||
with Semantic_Versioning;
|
||||
|
||||
package body Alire.Query is
|
||||
|
||||
package Semver renames Semantic_Versioning;
|
||||
|
||||
------------
|
||||
-- Exists --
|
||||
------------
|
||||
@@ -37,20 +43,20 @@ package body Alire.Query is
|
||||
-- Resolve --
|
||||
-------------
|
||||
|
||||
function Resolve (Unresolved : Dependencies;
|
||||
Frozen : Instance;
|
||||
function Resolve (Unresolved : Index.Dependencies;
|
||||
Frozen : Instance;
|
||||
Success : out Boolean) return Instance
|
||||
is
|
||||
-- FIXME: since this is depth-first, Frozen can be passed in-out and updated on the spot,
|
||||
-- thus saving copies. Probably the same applies to Unresolved.
|
||||
Dep : constant Dependency := Unresolved.First_Element;
|
||||
Remain : Dependencies := Unresolved;
|
||||
Dep : constant Alire.Dependencies.Dependency := Unresolved.First_Element;
|
||||
Remain : Index.Dependencies := Unresolved;
|
||||
|
||||
---------------
|
||||
-- Go_Deeper --
|
||||
---------------
|
||||
|
||||
function Go_Deeper (Unresolved : Dependencies;
|
||||
function Go_Deeper (Unresolved : Index.Dependencies;
|
||||
Frozen : Instance) return Instance
|
||||
is
|
||||
begin
|
||||
@@ -68,7 +74,7 @@ package body Alire.Query is
|
||||
Remain.Delete_First;
|
||||
|
||||
if Frozen.Contains (Dep.Project) then
|
||||
if Satisfies (Frozen.Element (Dep.Project).Version, Dep.Versions) then
|
||||
if Semver.Satisfies (Frozen.Element (Dep.Project).Version, Dep.Versions) then
|
||||
-- Dependency already met, simply go down...
|
||||
return Go_Deeper (Remain, Frozen);
|
||||
else
|
||||
@@ -79,10 +85,10 @@ package body Alire.Query is
|
||||
-- Need to check all versions for the first one...
|
||||
-- FIXME: complexity can be improved not visiting blindly all releases to match by project
|
||||
for R of reverse Index.Releases loop
|
||||
if Dep.Project = R.Project and then Satisfies (R.Version, Dep.Versions) then
|
||||
if Dep.Project = R.Project and then Semver.Satisfies (R.Version, Dep.Versions) then
|
||||
declare
|
||||
New_Frozen : Instance := Frozen;
|
||||
New_Remain : Dependencies := Remain;
|
||||
New_Frozen : Instance := Frozen;
|
||||
New_Remain : Index.Dependencies := Remain;
|
||||
|
||||
Solution : Instance;
|
||||
begin
|
||||
@@ -108,7 +114,7 @@ package body Alire.Query is
|
||||
-- Resolve --
|
||||
-------------
|
||||
|
||||
function Resolve (Deps : Dependencies;
|
||||
function Resolve (Deps : Index.Dependencies;
|
||||
Success : out Boolean) return Instance is
|
||||
begin
|
||||
Success := False;
|
||||
|
||||
+2
-2
@@ -10,8 +10,8 @@ package Alire.Query is
|
||||
|
||||
function Exists (Project : Project_Name) return Boolean;
|
||||
|
||||
function Resolve (Deps : Dependencies;
|
||||
Success : out Boolean) return Instance;
|
||||
function Resolve (Deps : Index.Dependencies;
|
||||
Success : out Boolean) return Instance;
|
||||
|
||||
procedure Print_Solution (I : Instance);
|
||||
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
with Alire.Depends;
|
||||
with Alire.Dependencies.Vectors;
|
||||
with Alire.Properties;
|
||||
with Alire.Repositories;
|
||||
with Alire.Requisites;
|
||||
|
||||
package Alire.Releases
|
||||
with Preelaborate
|
||||
is
|
||||
with Semantic_Versioning;
|
||||
|
||||
subtype Dependencies is Depends.Dependencies;
|
||||
package Alire.Releases with Preelaborate is
|
||||
|
||||
subtype Dependencies is Alire.Dependencies.Vectors.Vector;
|
||||
|
||||
type Release (<>) is tagged private;
|
||||
|
||||
@@ -76,6 +76,8 @@ private
|
||||
Properties,
|
||||
Requisites,
|
||||
Native);
|
||||
|
||||
use all type Semantic_Versioning.Version;
|
||||
|
||||
function "<" (L, R : Release) return Boolean is
|
||||
(L.Project < R.Project or else
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
with Alire.Properties.Versions;
|
||||
|
||||
package Alire.Requisites.Versions with Preelaborate is
|
||||
|
||||
package Semver renames Semantic_Versioning;
|
||||
|
||||
function Exactly (V : Semver.Version) return Requisite'Class;
|
||||
|
||||
private
|
||||
|
||||
package Props renames Alire.Properties.Versions;
|
||||
|
||||
package Version_Requisites is new Typed_Requisites (Props.Values.Property'Class);
|
||||
|
||||
type Version_Requisite is new Version_Requisites.Requisite with record
|
||||
Set : Semver.Version_Set;
|
||||
end record;
|
||||
|
||||
------------------
|
||||
-- Is_Satisfied --
|
||||
------------------
|
||||
|
||||
overriding function Is_Satisfied (R : Version_Requisite;
|
||||
P : Props.Values.Property'Class) return Boolean is
|
||||
(Semver.Is_In (V => P.Element, VS => R.Set));
|
||||
|
||||
-------------
|
||||
-- Exactly --
|
||||
-------------
|
||||
|
||||
function Exactly (V : Semver.Version) return Requisite'Class is
|
||||
(Version_Requisite'(Set => Semver.Exactly (V)));
|
||||
|
||||
end Alire.Requisites.Versions;
|
||||
+2
-63
@@ -1,20 +1,16 @@
|
||||
private with Ada.Containers.Indefinite_Holders;
|
||||
|
||||
with Semantic_Versioning;
|
||||
|
||||
with Simple_Logging;
|
||||
|
||||
package Alire with Preelaborate is
|
||||
|
||||
File_Error : exception;
|
||||
|
||||
|
||||
type URL is new String;
|
||||
|
||||
|
||||
Max_Name_Length : constant := 72; -- Github maximum is 100 and bitbucket 128, but since Description is 72...
|
||||
Max_Description_Length : constant := 72; -- Git line recommendation (although it's 50 for subject line)
|
||||
|
||||
-- Basics of projects: Name and Description
|
||||
-- Rest of properties are grouped in the Index
|
||||
|
||||
subtype Project_Name is String with Dynamic_Predicate =>
|
||||
Project_Name'Length >= 3 and then
|
||||
@@ -22,30 +18,9 @@ package Alire with Preelaborate is
|
||||
Project_Name (Project_Name'First) /= '_' and then
|
||||
(for all C of Project_Name => C in 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_');
|
||||
|
||||
|
||||
subtype Project_Description is String with Dynamic_Predicate =>
|
||||
Project_Description'Length <= Max_Description_Length;
|
||||
|
||||
|
||||
type Dependency (<>) is tagged private;
|
||||
|
||||
function Project (Dep : Dependency) return Project_Name;
|
||||
|
||||
function Versions (Dep : Dependency) return Semantic_Versioning.Version_Set;
|
||||
|
||||
|
||||
|
||||
type Milestone (<>) is tagged private;
|
||||
|
||||
function "<" (L, R : Milestone) return Boolean;
|
||||
|
||||
function New_Milestone (Name : Project_Name;
|
||||
Version : Semantic_Versioning.Version) return Milestone;
|
||||
|
||||
function Project (M : Milestone) return Project_Name;
|
||||
|
||||
function Version (M : Milestone) return Semantic_Versioning.Version;
|
||||
|
||||
---------------
|
||||
-- LOGGING --
|
||||
---------------
|
||||
@@ -58,40 +33,4 @@ package Alire with Preelaborate is
|
||||
|
||||
procedure Log (S : String; Level : Simple_Logging.Levels := Info) renames Simple_Logging.Log;
|
||||
|
||||
private
|
||||
|
||||
use all type Semantic_Versioning.Version;
|
||||
|
||||
package Version_Holders is new Ada.Containers.Indefinite_Holders
|
||||
(Semantic_Versioning.Version_Set, Semantic_Versioning."=");
|
||||
|
||||
type Version_Set_Holder is new Version_Holders.Holder with null record;
|
||||
|
||||
type Dependency (Name_Len : Positive) is tagged record
|
||||
Project : Project_Name (1 .. Name_Len);
|
||||
Versions_H : Version_Set_holder;
|
||||
end record;
|
||||
|
||||
function Project (Dep : Dependency) return Project_Name is (Dep.Project);
|
||||
|
||||
function Versions (Dep : Dependency) return Semantic_Versioning.Version_Set is
|
||||
(Dep.Versions_H.Element);
|
||||
|
||||
|
||||
type Milestone (Name_Len : Positive) is tagged record
|
||||
Name : Project_Name (1 .. Name_Len);
|
||||
Version : Semantic_Versioning.Version;
|
||||
end record;
|
||||
|
||||
function "<" (L, R : Milestone) return Boolean is
|
||||
(L.Name < R.Name or else (L.Name = R.Name and then L.Version < R.Version));
|
||||
|
||||
function New_Milestone (Name : Project_Name;
|
||||
Version : Semantic_Versioning.Version) return Milestone is
|
||||
(Name'Length, Name, Version);
|
||||
|
||||
function Project (M : Milestone) return Project_Name is (M.Name);
|
||||
|
||||
function Version (M : Milestone) return Semantic_Versioning.Version is (M.Version);
|
||||
|
||||
end Alire;
|
||||
|
||||
Reference in New Issue
Block a user