Class: ReleaseTagger::Repo
- Inherits:
-
Object
- Object
- ReleaseTagger::Repo
- Defined in:
- lib/release_tagger/repo.rb
Constant Summary collapse
- PACKAGECLOUD_ACCOUNT =
'lostmyname'- REPO =
'qa'- ITEMS_PER_PAGE =
1000- ARCHS =
%w(noarch x86_64)- VERSIONS_URL =
"https://packagecloud.io/api/v1/repos/#{PACKAGECLOUD_ACCOUNT}/#{REPO}/package/rpm/el/7/%s/%s/versions.json?per_page=#{ITEMS_PER_PAGE}"
Instance Method Summary collapse
- #get_api_token ⇒ Object
- #get_json_response(url) ⇒ Object
- #get_max_package_version(package_name) ⇒ Object
Instance Method Details
#get_api_token ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/release_tagger/repo.rb', line 13 def get_api_token home_config_file = Pathname.new(File.join(File.('~'), '.release_tagger', 'packagecloud_token')) etc_config_file = Pathname.new(File.join('/etc', 'release_tagger', 'packagecloud_token')) if etc_config_file.exist? package_cloud_api_token = etc_config_file.read.strip elsif home_config_file.exist? package_cloud_api_token = home_config_file.read.strip elsif ENV['PACKAGECLOUD_API_TOKEN'] package_cloud_api_token = ENV['PACKAGECLOUD_API_TOKEN'] else puts %(Config for packagecloud not found! Consider setting your packagecloud api token in any of: - #{home_config_file} - #{etc_config_file} - env var PACKAGECLOUD_API_TOKEN ) exit 1 end package_cloud_api_token end |
#get_json_response(url) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/release_tagger/repo.rb', line 36 def get_json_response(url) pc_api_token = get_api_token uri = URI.parse(url) req = Net::HTTP::Get.new(uri) req.basic_auth pc_api_token, '' response = Net::HTTP.start(uri.hostname, uri.port, :use_ssl => uri.scheme == 'https') {|http| http.request(req)} unless response.is_a?(Net::HTTPOK) puts "Error trying to get latest version of package #{package_name}" puts response.code exit 1 end res = JSON.parse(response.body) res end |
#get_max_package_version(package_name) ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/release_tagger/repo.rb', line 53 def get_max_package_version(package_name) release_version = '0.0.0' ARCHS.each do |arch| res = get_json_response(VERSIONS_URL % [package_name, arch]) unless res == [] latest_package = res.select { |package| package['name'] == package_name}.max_by{ |package| Gem::Version.new(package['version'])} if Gem::Version.new(latest_package['version']) > Gem::Version.new(release_version) release_version = latest_package['version'] end end end release_version end |