ronan 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: e912fb24f81dd1409d897a08a722c9ddeb4f815267ea96088f3cb77ff309701a
4
+ data.tar.gz: 3b42c314a1db12ce41d005a2e5fef829e0b6d9622a1bb8a046b427f9af6e5926
5
+ SHA512:
6
+ metadata.gz: c6ac36ca67419b25187eb8c7462e99cbca0641626c7585f5f43f783810623c7ad87a2a5190014631fc9bd3f3aafacab9ce13cd01efa020887262c245ead13a4c
7
+ data.tar.gz: 81a684d7e6c6692cc0bb171599b6066600d4a0108eb78170237a3cc1948283640e79bafa7f1daf75b909e78ee74337eb93293bd67b46cc6ba5308326249f71fc
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --require spec_helper
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ # Specify your gem's dependencies in ronan.gemspec
6
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,57 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ ronan (0.0.1)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ debase (0.2.4.1)
10
+ debase-ruby_core_source (>= 0.10.2)
11
+ debase-ruby_core_source (0.10.16)
12
+ diff-lcs (1.5.0)
13
+ docile (1.4.0)
14
+ rake (13.0.6)
15
+ rexml (3.2.5)
16
+ rspec (3.11.0)
17
+ rspec-core (~> 3.11.0)
18
+ rspec-expectations (~> 3.11.0)
19
+ rspec-mocks (~> 3.11.0)
20
+ rspec-core (3.11.0)
21
+ rspec-support (~> 3.11.0)
22
+ rspec-expectations (3.11.0)
23
+ diff-lcs (>= 1.2.0, < 2.0)
24
+ rspec-support (~> 3.11.0)
25
+ rspec-mocks (3.11.1)
26
+ diff-lcs (>= 1.2.0, < 2.0)
27
+ rspec-support (~> 3.11.0)
28
+ rspec-support (3.11.0)
29
+ rspec_junit_formatter (0.5.1)
30
+ rspec-core (>= 2, < 4, != 2.12.0)
31
+ ruby-debug-ide (0.7.3)
32
+ rake (>= 0.8.1)
33
+ simplecov (0.21.2)
34
+ docile (~> 1.1)
35
+ simplecov-html (~> 0.11)
36
+ simplecov_json_formatter (~> 0.1)
37
+ simplecov-cobertura (2.1.0)
38
+ rexml
39
+ simplecov (~> 0.19)
40
+ simplecov-html (0.12.3)
41
+ simplecov_json_formatter (0.1.4)
42
+
43
+ PLATFORMS
44
+ x86_64-linux
45
+
46
+ DEPENDENCIES
47
+ debase
48
+ rake (~> 13.0)
49
+ ronan!
50
+ rspec (~> 3.0)
51
+ rspec_junit_formatter (~> 0.5.1)
52
+ ruby-debug-ide
53
+ simplecov (~> 0.21.2)
54
+ simplecov-cobertura (~> 2.1.0)
55
+
56
+ BUNDLED WITH
57
+ 2.2.27
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2022 digitalwerk / services / gems
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,59 @@
1
+ # Ronan
2
+
3
+ ronan is a lightweight REST API client for conan servers. It is not intended to be a full replacement of conan itself. Instead this client will only implement simple queries to get information about packages stored in a conan repository (e.g. artifactory). Most common use case at our's has been to get download URLs from an artifactory instance in order to allow users not willing to use conan to download and integrate packages manually.
4
+
5
+ As there is not much documentation about how conan communicatates with servers, the conan server implentation's routes have been reverse engineered from https://github.com/conan-io/conan/blob/597f14668b3e1b5f0a7a3a0e9d1b0ee1cdfe2666/conans/model/rest_routes.py, so that requests behave like conan itself.
6
+
7
+
8
+ [[_TOC_]]
9
+
10
+
11
+ ## Installation
12
+
13
+ Add this line to your application's Gemfile:
14
+
15
+ ```ruby
16
+ gem 'ronan'
17
+ ```
18
+
19
+ And then execute:
20
+
21
+ ```bash
22
+ $ bundle install
23
+ ```
24
+
25
+ Or install it yourself as:
26
+
27
+ ```bash
28
+ $ gem install ronan
29
+ ```
30
+
31
+
32
+ ## Usage
33
+
34
+ ```ruby
35
+ require "ronan"
36
+
37
+ Ronan.configure do |config|
38
+ # set remote repository (dw-developer-sdk is open to everyone)
39
+ config.remote = "https://artifactory.digitalwerk.net/artifactory/api/conan/dw-developer-sdk/"
40
+ end
41
+
42
+ # search for recipes and take first off the result
43
+ recipe = Ronan::Recipe.search("ddl").first
44
+
45
+ # get a list of package information for a recipe and take first one
46
+ package = recipe.packages.first
47
+
48
+ # get all downloads for the package
49
+ downloads = package.downloads
50
+
51
+ # print out a single download URL for an artifact
52
+ puts downloads.url("conaninfo.txt")
53
+
54
+ ```
55
+
56
+
57
+ ## Contributing
58
+
59
+ Bug reports are welcome on [Gitlab](https://gitlab.com/digitalwerk/community/gems/ronan).
data/Rakefile ADDED
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bundler/gem_tasks"
4
+ require "rspec/core/rake_task"
5
+
6
+ RSpec::Core::RakeTask.new(:spec)
7
+
8
+ task default: :spec
9
+
10
+ desc "returns version information defined in ronan/version.rb"
11
+ task :version do
12
+ puts Ronan::VERSION
13
+ end
data/bin/console ADDED
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require "bundler/setup"
5
+ require "ronan"
6
+
7
+ # You can add fixtures and/or initialization code here to make experimenting
8
+ # with your gem easier. You can also use a different console, if you like.
9
+
10
+ # (If you use this, don't forget to add pry to your Gemfile!)
11
+ # require "pry"
12
+ # Pry.start
13
+
14
+ require "irb"
15
+ IRB.start(__FILE__)
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
data/ci/release.yml ADDED
@@ -0,0 +1,23 @@
1
+ # requires environment variable GEM_HOST_API_KEY to be set. content
2
+ # has to be a valid rubygems API key for authentication when publishing the
3
+ # gem to rubygems.org.
4
+ #
5
+ # also requires GIT_REPOSITORY_AUTH in which "access_token_name:access_token"
6
+ # for this git repository is configured.
7
+ release:
8
+ stage: release
9
+ rules:
10
+ - if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH
11
+ when: manual
12
+ variables:
13
+ GIT_REMOTE_URL: ${CI_SERVER_PROTOCOL}://${GIT_REPOSITORY_AUTH}@${CI_SERVER_HOST}:${CI_SERVER_PORT}/${CI_PROJECT_PATH}.git
14
+ script:
15
+ - VERSION=$(bundle exec rake version)
16
+ - bundle exec rake build
17
+ # remember who is responsible for this release
18
+ - git config --global user.name "${GITLAB_USER_LOGIN}"
19
+ - git config --global user.email "${GITLAB_USER_EMAIL}"
20
+ - git remote add release ${GIT_REMOTE_URL}
21
+ - git tag ${VERSION}
22
+ - git push release --tags
23
+ - gem push pkg/ronan-${VERSION}.gem
data/ci/test.yml ADDED
@@ -0,0 +1,15 @@
1
+ test:
2
+ stage: test
3
+ coverage: '/\(\d+\.\d+%\)\s+covered/'
4
+ artifacts:
5
+ when: always
6
+ paths:
7
+ - ci/reports
8
+ reports:
9
+ junit: ci/reports/rspec-report.xml
10
+ coverage_report:
11
+ coverage_format: cobertura
12
+ path: ci/reports/coverage/coverage.xml
13
+ script:
14
+ - bundle exec rspec
15
+ - bundle exec rspec --format progress --format RspecJunitFormatter --out ci/reports/rspec-report.xml
data/lib/ronan/base.rb ADDED
@@ -0,0 +1,47 @@
1
+ require "net/http"
2
+
3
+ module Ronan
4
+ class Base
5
+ attr_accessor :attributes
6
+
7
+ def self.get(path, symbolize: true, **params, &block)
8
+ uri = build_uri(path, params)
9
+ res = Net::HTTP.get_response(uri)
10
+ raise HttpError.new(res) unless res.is_a?(Net::HTTPSuccess)
11
+ deserialize(res.body, symbolize: symbolize, &block)
12
+ end
13
+
14
+ def initialize(**attributes)
15
+ self.attributes = attributes
16
+ end
17
+
18
+ def method_missing(method, *args)
19
+ method = method.to_sym unless method.is_a?(Symbol)
20
+ return attributes[method] || super
21
+ end
22
+
23
+ private
24
+ def self.deserialize(body, symbolize: true, &block)
25
+ parsed = JSON.parse(body, symbolize_names: symbolize)
26
+ if block.nil?
27
+ self.new(**parsed)
28
+ else
29
+ hash_or_array = block.call(parsed)
30
+ if hash_or_array.is_a?(Array)
31
+ hash_or_array.map do |a|
32
+ self.new(**a)
33
+ end
34
+ else
35
+ self.new(**hash_or_array)
36
+ end
37
+ end
38
+ end
39
+
40
+ def self.build_uri(path, params={})
41
+ path = "/" + path unless path.start_with?("/")
42
+ uri = URI(Ronan.cfg.remote + path)
43
+ uri.query = URI.encode_www_form(params)
44
+ uri
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,10 @@
1
+ module Ronan
2
+ class Configuration
3
+ attr_reader :remote
4
+
5
+ def remote=(value)
6
+ value = value[0..-2] if value.end_with?("/")
7
+ @remote = value
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,18 @@
1
+ module Ronan
2
+ class Downloads < Base
3
+ def self.where(package: nil)
4
+ name = package.recipe.name
5
+ version = package.recipe.version
6
+ user = package.recipe.user
7
+ channel = package.recipe.channel
8
+ revision = package.revision
9
+ get("/v1/conans/#{name}/#{version}/#{user}/#{channel}/packages/#{revision}/download_urls", symbolize: false) do |attributes|
10
+ {package: package, artifacts: attributes}
11
+ end
12
+ end
13
+
14
+ def url(name)
15
+ artifacts[name]
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,30 @@
1
+ require "net/http"
2
+
3
+ module Ronan
4
+ class ParseError < StandardError; end
5
+
6
+ class HttpError < StandardError
7
+ attr_reader :response
8
+
9
+ def initialize(response)
10
+ super(response.message)
11
+ @response = response
12
+ end
13
+
14
+ def message
15
+ "#{response.message} (#{context})"
16
+ end
17
+
18
+ def context
19
+ "#{response.uri} responded with #{response.code}"
20
+ end
21
+
22
+ def code
23
+ response.code
24
+ end
25
+
26
+ def to_s
27
+ message
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,57 @@
1
+ module Ronan
2
+ class Package < Base
3
+ def self.where(recipe: nil)
4
+ get("/v1/conans/#{recipe.name}/#{recipe.version}/#{recipe.user}/#{recipe.channel}/search") do |hash|
5
+ hash.map do |revision, attributes|
6
+ attributes[:revision] = revision.to_s
7
+ attributes[:recipe] = recipe
8
+ attributes
9
+ end
10
+ end
11
+ end
12
+
13
+ def downloads
14
+ @downloads ||= Downloads.where(package: self)
15
+ end
16
+
17
+ def url
18
+ downloads.url("conan_package.tgz")
19
+ end
20
+
21
+ def filename
22
+ # settings has keys: :os, :"compiler.libcxx", :arch, :compiler, :build_type, :"compiler.version"
23
+ name = "#{recipe.name}-#{settings[:os]}-#{settings[:arch]}-#{recipe.version}"
24
+ if !["any", "release", "relwithdebinfo"].include?(settings[:build_type].downcase)
25
+ (name << settings[:build_type])
26
+ end
27
+ "#{name.downcase}.tgz"
28
+ end
29
+
30
+ def <=>(other)
31
+ result = self.settings[:os] <=> other.settings[:os]
32
+ result = self.settings[:arch] <=> other.settings[:arch] if result == 0
33
+ result = self.settings[:compiler] <=> other.settings[:compiler] if result == 0
34
+ result = self.settings[:"compiler.version"] <=> other.settings[:"compiler.version"] if result == 0
35
+ result = self.settings[:"compiler.libcxx"] <=> other.settings[:"compiler.libcxx"] if result == 0
36
+ result = self.settings[:build_type] <=> other.settings[:build_type] if result == 0
37
+ result
38
+ end
39
+
40
+ def to_h
41
+ {
42
+ settings: settings,
43
+ options: options,
44
+ requires: requires,
45
+ recipe_hash: recipe_hash,
46
+ revision: revision,
47
+ recipe: recipe.to_h,
48
+ filename: filename,
49
+ url: url
50
+ }
51
+ end
52
+
53
+ def to_json
54
+ to_h.to_json
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,43 @@
1
+ module Ronan
2
+ class Recipe < Base
3
+ def self.search(pattern)
4
+ get("/v2/conans/search", q: pattern) do |hash|
5
+ hash[:results].map do |r|
6
+ r.match(/(\S+)\/(\S+)@(\S+)\/(\S+)/) do |m|
7
+ {
8
+ name: m[1],
9
+ version: SemanticVersion.new(m[2]),
10
+ user: m[3],
11
+ channel: m[4]
12
+ }
13
+ end
14
+ end
15
+ end
16
+ end
17
+
18
+ def packages
19
+ Package.where(recipe: self)
20
+ end
21
+
22
+ def <=>(other)
23
+ self.version <=> other.version
24
+ end
25
+
26
+ def to_s
27
+ "#{name}/#{version}@#{user}/#{channel}"
28
+ end
29
+
30
+ def to_h
31
+ {
32
+ name: name,
33
+ version: version.to_s,
34
+ user: user,
35
+ channel: channel
36
+ }
37
+ end
38
+
39
+ def to_json
40
+ to_h.to_json
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,28 @@
1
+ module Ronan
2
+ class SemanticVersion
3
+ attr_accessor :major, :minor, :patch
4
+
5
+ def initialize(version_str)
6
+ version_str.match(/(\d+)\.(\d+)\.(\d+)/) do |m|
7
+ self.major = m[1].to_i
8
+ self.minor = m[2].to_i
9
+ self.patch = m[3].to_i
10
+ end
11
+ end
12
+
13
+ def <=>(other)
14
+ result = self.major <=> other.major
15
+ result = self.minor <=> other.minor if result == 0
16
+ result = self.patch <=> other.patch if result == 0
17
+ result
18
+ end
19
+
20
+ def ==(other)
21
+ (self <=> other) == 0
22
+ end
23
+
24
+ def to_s
25
+ "#{major}.#{minor}.#{patch}"
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ronan
4
+ VERSION = "0.0.1"
5
+ end
data/lib/ronan.rb ADDED
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "ronan/version"
4
+ require_relative "ronan/configuration"
5
+ require_relative "ronan/error"
6
+ require_relative "ronan/base"
7
+ require_relative "ronan/downloads"
8
+ require_relative "ronan/package"
9
+ require_relative "ronan/semantic_version"
10
+ require_relative "ronan/recipe"
11
+
12
+ module Ronan
13
+ def self.configure
14
+ yield cfg
15
+ end
16
+
17
+ def self.cfg
18
+ @configuration ||= Configuration.new
19
+ end
20
+ end
data/ronan.gemspec ADDED
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "lib/ronan/version"
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "ronan"
7
+ spec.version = Ronan::VERSION
8
+ spec.authors = ["digitalwerk GmbH"]
9
+ spec.email = ["contact-project+digitalwerk-community-gems-ronan-37759952-issue-@incoming.gitlab.com"]
10
+
11
+ spec.summary = "Conan client for ruby"
12
+ spec.description = "ronan is a client library for accessing conan servers, written in pure ruby. It is not intended as full replacement of conan, but provides means to query information from the server for analysis."
13
+ spec.homepage = "https://gitlab.com/digitalwerk/community/gems/ronan.git"
14
+ spec.required_ruby_version = ">= 2.6.8"
15
+
16
+ spec.metadata["homepage_uri"] = spec.homepage
17
+ spec.metadata["source_code_uri"] = spec.homepage
18
+ spec.metadata["changelog_uri"] = spec.homepage
19
+
20
+ # Specify which files should be added to the gem when it is released.
21
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
22
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
23
+ `git ls-files -z`.split("\x0").reject do |f|
24
+ (f == __FILE__) || f.match(%r{\A(?:(?:test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
25
+ end
26
+ end
27
+ spec.bindir = "bin"
28
+ spec.executables = spec.files.grep(%r{\Abin/}) { |f| File.basename(f) }
29
+ spec.require_paths = ["lib"]
30
+
31
+ spec.add_development_dependency "rake", "~> 13.0"
32
+ spec.add_development_dependency "rspec", "~> 3.0"
33
+ spec.add_development_dependency "rspec_junit_formatter", "~> 0.5.1"
34
+ spec.add_development_dependency "simplecov", "~> 0.21.2"
35
+ spec.add_development_dependency "simplecov-cobertura", "~> 2.1.0"
36
+ spec.add_development_dependency "ruby-debug-ide"
37
+ spec.add_development_dependency "debase"
38
+ end
metadata ADDED
@@ -0,0 +1,167 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ronan
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - digitalwerk GmbH
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2022-07-13 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '13.0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '13.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec_junit_formatter
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 0.5.1
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 0.5.1
55
+ - !ruby/object:Gem::Dependency
56
+ name: simplecov
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.21.2
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.21.2
69
+ - !ruby/object:Gem::Dependency
70
+ name: simplecov-cobertura
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 2.1.0
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 2.1.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: ruby-debug-ide
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: debase
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ description: ronan is a client library for accessing conan servers, written in pure
112
+ ruby. It is not intended as full replacement of conan, but provides means to query
113
+ information from the server for analysis.
114
+ email:
115
+ - contact-project+digitalwerk-community-gems-ronan-37759952-issue-@incoming.gitlab.com
116
+ executables:
117
+ - console
118
+ - setup
119
+ extensions: []
120
+ extra_rdoc_files: []
121
+ files:
122
+ - ".rspec"
123
+ - Gemfile
124
+ - Gemfile.lock
125
+ - LICENSE
126
+ - README.md
127
+ - Rakefile
128
+ - bin/console
129
+ - bin/setup
130
+ - ci/release.yml
131
+ - ci/test.yml
132
+ - lib/ronan.rb
133
+ - lib/ronan/base.rb
134
+ - lib/ronan/configuration.rb
135
+ - lib/ronan/downloads.rb
136
+ - lib/ronan/error.rb
137
+ - lib/ronan/package.rb
138
+ - lib/ronan/recipe.rb
139
+ - lib/ronan/semantic_version.rb
140
+ - lib/ronan/version.rb
141
+ - ronan.gemspec
142
+ homepage: https://gitlab.com/digitalwerk/community/gems/ronan.git
143
+ licenses: []
144
+ metadata:
145
+ homepage_uri: https://gitlab.com/digitalwerk/community/gems/ronan.git
146
+ source_code_uri: https://gitlab.com/digitalwerk/community/gems/ronan.git
147
+ changelog_uri: https://gitlab.com/digitalwerk/community/gems/ronan.git
148
+ post_install_message:
149
+ rdoc_options: []
150
+ require_paths:
151
+ - lib
152
+ required_ruby_version: !ruby/object:Gem::Requirement
153
+ requirements:
154
+ - - ">="
155
+ - !ruby/object:Gem::Version
156
+ version: 2.6.8
157
+ required_rubygems_version: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - ">="
160
+ - !ruby/object:Gem::Version
161
+ version: '0'
162
+ requirements: []
163
+ rubygems_version: 3.3.17
164
+ signing_key:
165
+ specification_version: 4
166
+ summary: Conan client for ruby
167
+ test_files: []