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