From 45498a4a93620785a2b21104a7f43f6f3de20fe0 Mon Sep 17 00:00:00 2001 From: Pierre-Marie de Rodat Date: Wed, 10 Oct 2018 14:09:12 -0400 Subject: [PATCH] Add support for SVN repositories --- src/alire-index.ads | 1 + src/alire-origins.ads | 19 ++++++++++++++----- src/alire-releases.ads | 3 ++- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/alire-index.ads b/src/alire-index.ads index 6345b024..89910b67 100644 --- a/src/alire-index.ads +++ b/src/alire-index.ads @@ -163,6 +163,7 @@ package Alire.Index is function Git (URL : Alire.URL; Commit : Origins.Git_Commit) return Origins.Origin renames Origins.New_Git; function Hg (URL : Alire.URL; Commit : Origins.Hg_Commit) return Origins.Origin renames Origins.New_Hg; + function SVN (URL : Alire.URL; Commit : String) return Origins.Origin renames Origins.New_SVN; function Packaged_As (S : String) return Origins.Package_Names renames Origins.Packaged_As; diff --git a/src/alire-origins.ads b/src/alire-origins.ads index 3d56bf1a..c0ecf8b4 100644 --- a/src/alire-origins.ads +++ b/src/alire-origins.ads @@ -30,6 +30,7 @@ package Alire.Origins with Preelaborate is type Kinds is (Filesystem, -- Not really an origin, but a working copy of a project Git, -- Remote git repo Hg, -- Remote hg repo + SVN, -- Remote svn repo Native -- Native platform package ); @@ -41,8 +42,8 @@ package Alire.Origins with Preelaborate is -- member data -- ------------------- - function Commit (This : Origin) return String with Pre => This.Kind in Git | Hg; - function URL (This : Origin) return Alire.URL with Pre => This.Kind in Git | Hg; + function Commit (This : Origin) return String with Pre => This.Kind in Git | Hg | SVN; + function URL (This : Origin) return Alire.URL with Pre => This.Kind in Git | Hg | SVN; function Path (This : Origin) return String with Pre => This.Kind = Filesystem; @@ -69,6 +70,8 @@ package Alire.Origins with Preelaborate is Commit : Hg_Commit) return Origin; + function New_SVN (URL : Alire.URL; Commit : String) return Origin; + function New_Native (Packages : Native_Packages) return Origin; function Image (This : Origin) return String; @@ -122,6 +125,12 @@ private Commit => +Commit, others => <>); + function New_SVN (URL : Alire.URL; Commit : String) return Origin is + (SVN, + URL => +URL, + Commit => +Commit, + others => <>); + function New_Native (Packages : Native_Packages) return Origin is (Native, Packages => Packages, @@ -144,9 +153,9 @@ private function Image (This : Origin) return String is (case This.Kind is - when Git | Hg => "commit " & S (This.Commit) & " from " & S (This.URL), - when Native => "native package from platform software manager", - when Filesystem => "path " & S (This.Path)); + when Git | Hg | SVN => "commit " & S (This.Commit) & " from " & S (This.URL), + when Native => "native package from platform software manager", + when Filesystem => "path " & S (This.Path)); overriding function To_Code (This : Origin) return Utils.String_Vector is (if This.Kind = Filesystem diff --git a/src/alire-releases.ads b/src/alire-releases.ads index 765b3927..f413eda4 100644 --- a/src/alire-releases.ads +++ b/src/alire-releases.ads @@ -280,7 +280,8 @@ private when Native => "native", when Git | Hg => (if R.Origin.Commit'Length <= 8 then R.Origin.Commit - else R.Origin.Commit (R.Origin.Commit'First .. R.Origin.Commit'First + 7)))); + else R.Origin.Commit (R.Origin.Commit'First .. R.Origin.Commit'First + 7)), + when SVN => R.Origin.Commit)); function On_Platform_Actions (R : Release; P : Alire.Properties.Vector) return Alire.Properties.Vector is (R.On_Platform_Properties (P, Actions.Action'Tag));