From 3a335dcbf0bfb907799ef28d52cb0cfc970ac3d5 Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Jan 19 2011 08:44:38 +0000 Subject: cache the comps xml --- diff --git a/lib/fontpackages/comps.rb b/lib/fontpackages/comps.rb index 449b9da..1d3d184 100644 --- a/lib/fontpackages/comps.rb +++ b/lib/fontpackages/comps.rb @@ -141,20 +141,25 @@ module Comps class Root def initialize(releaseprefix) - tmpdir = STemp.mkdtemp(File.join(Dir.tmpdir, "comps.XXXXXXXX")) - cwd = Dir.pwd - begin - Dir.chdir(tmpdir) - system("git clone git://git.fedorahosted.org/git/comps.git 1>&2") - compsfile = File.join(tmpdir, "comps", sprintf("comps-%s.xml.in", releaseprefix)) - File.open(compsfile) do |f| - x = f.read - @doc = Hpricot(x) + unless defined? @@Releases2comps then + @@Releases2comps = {} + tmpdir = STemp.mkdtemp(File.join(Dir.tmpdir, "comps.XXXXXXXX")) + cwd = Dir.pwd + begin + Dir.chdir(tmpdir) + system("git clone git://git.fedorahosted.org/git/comps.git 1>&2") + Dir.glob("comps/comps-*.xml.in") do |fn| + doc = Hpricot(File.open(fn).read) + fn =~ /comps-(.*)\.xml\.in/ + @@Releases2comps[$1] = doc + end + ensure + FileUtils.rm_rf(tmpdir) if !tmpdir.nil? && File.exist?(tmpdir) + Dir.chdir(cwd) end - ensure - FileUtils.rm_rf(tmpdir) if !tmpdir.nil? && File.exist?(tmpdir) - Dir.chdir(cwd) end + @doc = @@Releases2comps[releaseprefix] + raise ArgumentError, sprintf("Unknown release %s. available comps is %s", releaseprefix, @@Releases2comps.keys.join(',')) if @doc.nil? end # def initialize def inspect