From 05912fbf27846af1f4ca1b824cc39815179d430e Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Wed, 14 Nov 2018 22:18:20 +0300 Subject: Add support for repository typed URLs (git+https://..., etc) --- libbbot/manifest.cxx | 15 +++++++------ tests/manifest/task-response.testscript | 2 -- tests/manifest/task.testscript | 40 +++++++++++++++++++++++++++------ 3 files changed, 41 insertions(+), 16 deletions(-) diff --git a/libbbot/manifest.cxx b/libbbot/manifest.cxx index cc8afb5..2f70b75 100644 --- a/libbbot/manifest.cxx +++ b/libbbot/manifest.cxx @@ -581,9 +581,6 @@ namespace bbot if (!repo_url) bad_value ("no task repository URL specified"); - if (!repo_type) - bad_value ("no task repository type specified"); - if (machine.empty ()) bad_value ("no task machine specified"); @@ -594,11 +591,10 @@ namespace bbot // try { - // Call remote/absolute repository location constructor (throws + // Create remote/absolute repository location (will throw // invalid_argument for relative location). // - repository = repository_location (repository_url (repo_url->value), - *repo_type); + repository = repository_location (repo_url->value, repo_type); } catch (const invalid_argument& e) { @@ -624,8 +620,13 @@ namespace bbot s.next ("name", name.string ()); s.next ("version", version.string ()); + + // Note that the repository location is assumed to be remote or absolute, + // and so the URL schema encapsulates the repository type if it is + // unguessable otherwise. Thus we don't serialize the repository-type + // manifest value. + // s.next ("repository-url", repository.string ()); - s.next ("repository-type", to_string (repository.type ())); for (const auto& v: trust) s.next ("trust", v); diff --git a/tests/manifest/task-response.testscript b/tests/manifest/task-response.testscript index b424cbf..b66313f 100644 --- a/tests/manifest/task-response.testscript +++ b/tests/manifest/task-response.testscript @@ -23,7 +23,6 @@ test.options += -ts name: libfoo version: 1.0 repository-url: http://pkg.example.org/1/math - repository-type: pkg machine: windows_10-msvc_14 target: x86_64-microsoft-win32-msvc14.0 EOF @@ -38,7 +37,6 @@ test.options += -ts name: libfoo version: 1.0 repository-url: http://pkg.example.org/1/math - repository-type: pkg machine: windows_10-msvc_14 target: x86_64-microsoft-win32-msvc14.0 EOF diff --git a/tests/manifest/task.testscript b/tests/manifest/task.testscript index e68bd09..413338f 100644 --- a/tests/manifest/task.testscript +++ b/tests/manifest/task.testscript @@ -16,7 +16,6 @@ test.options += -t name: libfoo version: 1.0 repository-url: http://pkg.example.org/1/math - repository-type: pkg trust: AB:0D:3F:C1:B0:13:E4:0E:AD:4A:08:06:AE:F3:85:DB:E2:27:5F:83:11:47:A2:7\ 8:64:3C:73:60:F8:66:3A:A4 machine: windows_10-msvc_14 @@ -32,11 +31,40 @@ test.options += -t name: libfoo version: 1.0 repository-url: http://pkg.example.org/1/math - repository-type: pkg machine: windows_10-msvc_14 target: x86_64-microsoft-win32-msvc14.0 EOF + : typed-url + : + $* <>EOF + : 1 + name: libfoo + version: 1.0 + repository-url: git+http://example.org/math + machine: windows_10-msvc_14 + target: x86_64-microsoft-win32-msvc14.0 + EOF + + : repo-type + : + $* <>EOO + : 1 + name: libfoo + version: 1.0 + repository-url: http://git.example.org/math + repository-type: git + machine: windows_10-msvc_14 + target: x86_64-microsoft-win32-msvc14.0 + EOI + : 1 + name: libfoo + version: 1.0 + repository-url: git+http://git.example.org/math + machine: windows_10-msvc_14 + target: x86_64-microsoft-win32-msvc14.0 + EOO + : config : { @@ -47,7 +75,6 @@ test.options += -t name: libfoo version: 1.0 repository-url: http://pkg.example.org/1/math - repository-type: pkg machine: windows target: x86_64-microsoft-win32-msvc14.0 config: abc= @@ -60,7 +87,6 @@ test.options += -t name: libfoo version: 1.0 repository-url: http://pkg.example.org/1/math - repository-type: pkg machine: windows target: x86_64-microsoft-win32-msvc14.0 config: abc='a "b '"d\e x y=" @@ -74,7 +100,6 @@ test.options += -t name: libfoo version: 1.0 repository-url: http://pkg.example.org/1/math - repository-type: pkg trust: yes machine: windows_10-msvc_14 target: x86_64-microsoft-win32-msvc14.0 @@ -312,12 +337,13 @@ EOI : repository-type : - $* <'stdin:6:1: error: no task repository type specified' == 1 + $* <'stdin:4:17: error: invalid task repository URL: missing repository version' == 1 : 1 name: libfoo version: 1.0 - repository-url: http://pkg.example.org/1/math + repository-url: http://git.example.org/math machine: windows_10-msvc_14 + target: x86_64-microsoft-win32-msvc14.0 EOI : machine -- cgit v1.1