lib/ffprober/ffprobe_version.rb in ffprober-0.2.3 vs lib/ffprober/ffprobe_version.rb in ffprober-0.3.0

- old
+ new

@@ -1,21 +1,40 @@ module Ffprober class FfprobeVersion - @@version_regex = /^ffprobe version (\d+)\.?(\d+)\.?(|\d+)$/ + @@version_regex = /^(ffprobe|avprobe|ffmpeg) version (\d+)\.?(\d+)\.?(\d+)*/ + @@nightly_regex = /^(ffprobe|avprobe|ffmpeg) version N-/ MIN_VERSION = Gem::Version.new("0.9.0") MAX_VERSION = Gem::Version.new("1.2.1") def self.valid? - MIN_VERSION <= parsed_version && parsed_version <= MAX_VERSION + self.new.valid? end - def self.parsed_version - version = `#{Ffprober.path} -version`.match(@@version_regex) - raise Errno::ENOENT if version.nil? - major, minor, patch = version[1].to_i, version[2].to_i, version[3].to_i - Gem::Version.new([major, minor, patch].join(".")) - rescue Errno::ENOENT => e - Gem::Version.new("0.0.0") + def valid? + nightly? || (MIN_VERSION <= version && version <= MAX_VERSION) + end + + def parse_version + @parse_version ||= begin + _p = version_output.match(@@version_regex) + if _p.nil? + [0, 0, 0] + else + [_p[2].to_i, _p[3].to_i, _p[4].to_i] + end + end + end + + def version + @version ||= Gem::Version.new(parse_version.join(".")) + end + + def nightly? + !!(version_output =~ @@nightly_regex) + end + + def version_output + @version_output ||= `#{Ffprober.path} -version` end end end