Use package upstream version. Skip revision. Improve regexp parsing.
This commit is contained in:
parent
56750c3884
commit
4a9fe8772e
3 changed files with 33 additions and 6 deletions
|
|
@ -150,16 +150,16 @@ module DebImporter
|
||||||
end # def
|
end # def
|
||||||
|
|
||||||
class Version
|
class Version
|
||||||
attr_reader :epoch, :version, :revision, :version_string
|
attr_reader :epoch, :upstream, :revision, :version_string
|
||||||
|
|
||||||
def initialize(version_string)
|
def initialize(version_string)
|
||||||
@version_string = version_string
|
@version_string = version_string
|
||||||
# Split into "[epoch:]version[-revision]"
|
# Split into "[epoch:]version[-revision]"
|
||||||
unless /^(?<epoch>(\d+)\:)?(?<version>.+)(?<revision>\-[\+\.~]+)?/ =~ version_string
|
unless /^((?<epoch>\d+)\:)?(?<upstream>.+?)(\-(?<revision>.+))?$/ =~ version_string
|
||||||
raise ArgumentError, "Cannot parse version string: #{version_string}"
|
raise ArgumentError, "Cannot parse version string: #{version_string}"
|
||||||
end
|
end
|
||||||
@epoch = epoch ? epoch : 0
|
@epoch = epoch ? epoch : '0'
|
||||||
@version = version
|
@upstream = upstream
|
||||||
@revision = revision if revision
|
@revision = revision if revision
|
||||||
end # /def
|
end # /def
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -105,7 +105,7 @@ namespace :debshots do
|
||||||
new_version = DebImporter::Version.new(package[:Version])
|
new_version = DebImporter::Version.new(package[:Version])
|
||||||
|
|
||||||
Rails.logger.debug "Comparing package version: old=#{db_package.version} new=#{new_version}"
|
Rails.logger.debug "Comparing package version: old=#{db_package.version} new=#{new_version}"
|
||||||
if new_version > current_version
|
if new_version.upstream > current_version.upstream
|
||||||
# update the package information from new data
|
# update the package information from new data
|
||||||
update_data(package, db_package)
|
update_data(package, db_package)
|
||||||
Rails.logger.info "Updating package information"
|
Rails.logger.info "Updating package information"
|
||||||
|
|
@ -241,7 +241,7 @@ def update_data(package, db_package)
|
||||||
Rails.logger.debug "New information: #{package.inspect}"
|
Rails.logger.debug "New information: #{package.inspect}"
|
||||||
|
|
||||||
# Rails.logger.info "New package version found. Updating details in database."
|
# Rails.logger.info "New package version found. Updating details in database."
|
||||||
db_package.version = package[:Version]
|
db_package.version = Version.new(package[:Version]).upstream
|
||||||
db_package.name = package[:Package] unless db_package.name # set the name for new packages
|
db_package.name = package[:Package] unless db_package.name # set the name for new packages
|
||||||
db_package.description = package[:Description][0..79]
|
db_package.description = package[:Description][0..79]
|
||||||
db_package.homepage = package[:Homepage]
|
db_package.homepage = package[:Homepage]
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,33 @@ class PackagesHelperTest < ActionView::TestCase
|
||||||
assert(DebImporter::Version.new('1.0') > DebImporter::Version.new('1.0~pre'))
|
assert(DebImporter::Version.new('1.0') > DebImporter::Version.new('1.0~pre'))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "should split version files into epoch, upstream and revision" do
|
||||||
|
v = DebImporter::Version.new('1.0~git20170104-1')
|
||||||
|
assert_equal v.epoch, '0'
|
||||||
|
assert_equal v.upstream, '1.0~git20170104'
|
||||||
|
assert_equal v.revision, '1'
|
||||||
|
|
||||||
|
v = DebImporter::Version.new('0~20161219-1')
|
||||||
|
assert_equal v.epoch, '0'
|
||||||
|
assert_equal v.upstream, '0~20161219'
|
||||||
|
assert_equal v.revision, '1'
|
||||||
|
|
||||||
|
v = DebImporter::Version.new('17:2.0.0~git20161130.1.e60d0d5+dfsg1-1')
|
||||||
|
assert_equal v.epoch, '17'
|
||||||
|
assert_equal v.upstream, '2.0.0~git20161130.1.e60d0d5+dfsg1'
|
||||||
|
assert_equal v.revision, '1'
|
||||||
|
|
||||||
|
v = DebImporter::Version.new('42')
|
||||||
|
assert_equal v.epoch, '0'
|
||||||
|
assert_equal v.upstream, '42'
|
||||||
|
assert_nil v.revision
|
||||||
|
|
||||||
|
v = DebImporter::Version.new('100:9a_b~cdef')
|
||||||
|
assert_equal v.epoch, '100'
|
||||||
|
assert_equal v.upstream, '9a_b~cdef'
|
||||||
|
assert_nil v.revision
|
||||||
|
end
|
||||||
|
|
||||||
test "should be able to parse local Debian repository test files" do
|
test "should be able to parse local Debian repository test files" do
|
||||||
Rails.logger = Logger.new(STDOUT)
|
Rails.logger = Logger.new(STDOUT)
|
||||||
# Rails.logger.level = Logger::ERROR
|
# Rails.logger.level = Logger::ERROR
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue