Skip to content

Commit

Permalink
Automate rawhide version retrieval. Fix fedora-ruby#29.
Browse files Browse the repository at this point in the history
  • Loading branch information
axilleas committed Jul 4, 2014
1 parent 6bd62c8 commit 6baf4d5
Show file tree
Hide file tree
Showing 9 changed files with 74 additions and 114 deletions.
29 changes: 16 additions & 13 deletions app/models/fedora_rpm.rb
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,6 @@
# - Retrieves meta information about the gem
class FedoraRpm < ActiveRecord::Base
include ActionView::Helpers::DateHelper
FEDORA_VERSIONS = { 'rawhide' => 'master',
'Fedora 20' => 'f20',
'Fedora 19' => 'f19' }

validates :name, uniqueness: true
validates :name, presence: true
Expand All @@ -55,6 +52,19 @@ def shortname
name.gsub(/rubygem-/, '')
end

def self.fedora_versions

# Read file which contains latest fedora version.
# See lib/rawhide_version.rb
file = File.open(Rails.root + 'public/version/rawhide', 'r')
version = file.read.to_i

{ 'Rawhide' => 'master',
"Fedora #{version - 1}" => "f#{version - 1}",
"Fedora #{version - 2}" => "f#{version - 2}"
}
end

def versions
rpm_versions.map { |rpm_version| rpm_version.to_s }.join(', ')
end
Expand Down Expand Up @@ -131,7 +141,7 @@ def retrieve_specs
rpm_versions.clear
dependencies.clear
puts "Importing #{name} spec info"
FEDORA_VERSIONS.each do |version_title, version_git|
fedora_versions.each do |version_title, version_git|
spec_url = "#{base_uri}#{name}.git/plain/#{name}.spec?h=#{version_git}"
rpm_spec = open(spec_url).read
retrieve_versions(rpm_spec, version_title)
Expand Down Expand Up @@ -228,20 +238,13 @@ def retrieve_bugs
end
end

# Retrieve rawhide version
def rawhide_version
url = 'https://admin.fedoraproject.org/pkgdb/collection/master/'
page = Nokogiri::HTML(open(url))
page.text.match(/\d{2}/)[0].to_i
end

def retrieve_builds
puts "Importing rpm #{name} koji builds"
koji_builds.clear

version = rawhide_version
version = RawhideVersion.version

# Retrieve only latest 3 versions of builds
# Retrieve only latest 3 Fedora versions of builds
koji_builds = Pkgwat.get_builds(name).select do |build|
!!(build['nvr'] =~ /fc(#{version}|#{version - 1}|#{version - 2})/)
end
Expand Down
4 changes: 2 additions & 2 deletions app/views/fedorarpms/index.html.haml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
%thead
%tr
%th= sortable 'name', _('Name')
- FedoraRpm::FEDORA_VERSIONS.each do |t, g|
- FedoraRpm.fedora_versions.each do |t, g|
%th= t
%th= _('Up to date?')
%th= sortable 'commits', _('Commits')
Expand All @@ -17,7 +17,7 @@
- @rpms.each do |rpm|
%tr
%td= link_to rpm.shortname.truncate(35), fedorarpm_path(rpm.name)
-FedoraRpm::FEDORA_VERSIONS.each do |t, g|
-FedoraRpm.fedora_versions.each do |t, g|
%td= rpm.version_for(t)
%td
- if rpm.up_to_date?
Expand Down
13 changes: 6 additions & 7 deletions app/views/fedorarpms/show.html.haml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@
- unless @rpm.description.blank?
%p
Description:
%p
=@rpm.description

%div.row
Expand All @@ -43,12 +42,12 @@
%table.table.table-striped.table-condensed.table-bordered
%thead
%tr
-FedoraRpm::FEDORA_VERSIONS.each do |t, g|
-FedoraRpm.fedora_versions.each do |t, g|
%th= t
%th= _('Gem Version')
%tbody
%tr
-FedoraRpm::FEDORA_VERSIONS.each do |t, g|
-FedoraRpm.fedora_versions.each do |t, g|
%td= @rpm.version_for(t)
%td= @rpm.ruby_gem.version
%div.row
Expand All @@ -62,7 +61,7 @@
%thead
%tr
%th= _('Package')
-FedoraRpm::FEDORA_VERSIONS.each do |t, g|
-FedoraRpm.fedora_versions.each do |t, g|
- if g == 'master'
%th= 'Rawhide'
- else
Expand All @@ -72,7 +71,7 @@
- @dependencies.each do |d|
%tr
%td= link_to d.name, fedorarpm_path(d.name)
-FedoraRpm::FEDORA_VERSIONS.each do |t, g|
-FedoraRpm.fedora_versions.each do |t, g|
%td= d.version_for(t)
%td= d.ruby_gem.version
%div.col-md-6
Expand All @@ -85,7 +84,7 @@
%thead
%tr
%th= _('Package')
-FedoraRpm::FEDORA_VERSIONS.each do |t, g|
-FedoraRpm.fedora_versions.each do |t, g|
- if g == 'master'
%th= 'Rawhide'
- else
Expand All @@ -95,7 +94,7 @@
- @dependents.each do |d|
%tr
%td= link_to d.name, fedorarpm_path(d.name)
-FedoraRpm::FEDORA_VERSIONS.each do |t, g|
-FedoraRpm.fedora_versions.each do |t, g|
%td= d.version_for(t)
%td= d.ruby_gem.version
%div.row
Expand Down
4 changes: 2 additions & 2 deletions app/views/rubygems/show.html.haml
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,12 @@
%tr
%th Package
%th Gem Version
- FedoraRpm::FEDORA_VERSIONS.each do |t, g|
- FedoraRpm.fedora_versions.each do |t, g|
%th= t
%tbody
- @dependencies.each do |d|
%tr
%td= link_to d.name, rubygem_path(d.name)
%td= d.version
- FedoraRpm::FEDORA_VERSIONS.each do |t, g|
- FedoraRpm.fedora_versions.each do |t, g|
%td= d.fedora_rpm.version_for(t)
2 changes: 1 addition & 1 deletion config/application.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ class Application < Rails::Application
# -- all .rb files in that directory are automatically loaded.

# Custom directories with classes and modules you want to be autoloadable.
# config.autoload_paths += %W(#{config.root}/extras)
config.autoload_paths += %W(#{config.root}/lib)

# Only load the plugins named here, in the order given (default is alphabetical).
# :all can be used as a placeholder for all plugins not explicitly named.
Expand Down
17 changes: 17 additions & 0 deletions lib/rawhide_version.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
require 'open-uri'
class RawhideVersion
# Retrieve rawhide version
def self.version
url = 'https://admin.fedoraproject.org/pkgdb/collection/master/'
page = Nokogiri::HTML(open(url))
page.text.match(/\d{2}/)[0].to_i
end

def self.create_file
version = self.version.to_s
filename = 'rawhide'
directory = Rails.root + 'public/version/'
path = File.join(directory, filename)
File.open(path, 'w') { |f| f.write(version) }
end
end
20 changes: 20 additions & 0 deletions lib/tasks/fedora/rawhide_version.rake
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
namespace :fedora do
namespace :rawhide do

desc 'FEDORA | Get Fedora rawhide(development) version'
task version: :environment do
puts 'Fetching Fedora rawhide version...'
puts "Fedora rawhide version is #{RawhideVersion.version}."
end

desc 'FEDORA | Create file containing Fedora rawhide(development) version'
task create: :environment do
# Make sure 'public/rawhide/' exists
path = Rails.root + 'public/version/'
FileUtils.mkdir_p path unless path.exist?
puts 'Creating file...'
RawhideVersion.create_file
puts "Created #{path}rawhide."
end # file
end # rawhide
end # fedora
1 change: 1 addition & 0 deletions public/version/rawhide
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
21
98 changes: 9 additions & 89 deletions spec/models/fedora_rpm_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@

describe FedoraRpm do

let(:rpm) { build(:fedora_rpm) }
let!(:rpm) { create(:fedora_rpm) }

it { should validate_uniqueness_of :name }
it { should validate_presence_of :name }
Expand All @@ -35,8 +35,6 @@
end

it 'must have at least one koji build' do
#rpm.koji_builds
#rpm.koji_builds.count).to be >= 1
end

describe '#to_param' do
Expand Down Expand Up @@ -65,91 +63,13 @@
end
end

xit 'versions' do
end

xit 'version_for' do
end

xit 'up_to_date?' do
end

xit 'patched?' do
end
describe '#fedora_versions' do

xit 'json_dependencies' do
end
context 'support latest 3 Fedora versions' do

xit 'json_dependents' do
end

xit 'base_uri' do
end

xit 'retrieve_commits' do
end

xit 'retrieve_specs' do
end

xit 'retrieve_versions' do
end

xit 'retrieve_maintainer' do
end

xit 'retrieve_homepage' do
end

xit 'retrieve_dependencies' do
end

xit 'version_valid?' do
end

xit 'retrieve_gem' do
end

xit 'retrieve_bugs' do
end

xit 'update_commits' do
end

xit 'update_specs' do
end

xit 'update_gem' do
end

xit 'update_bugs' do
end

xit 'update_builds' do
end

xit 'update_from_source' do
end

xit 'rpm_name' do
end

xit 'search' do
end

xit 'dependency_packages' do
end

xit 'dependent_packages' do
end

xit 'obfuscated_fedora_user' do
end

xit 'last_commit_date_in_words' do
end

xit 'maintainer' do
end

end
it 'has exactly 3 keys' do
expect(FedoraRpm.fedora_versions.keys.count).to eq(3)
end
end
end # FedoraRpm#fedora_versions
end # FedoraRpm

0 comments on commit 6baf4d5

Please sign in to comment.