Sha256: 633a29694b43bfa306fc661252344c686f6ddae9531888a6c3af7606414ac34c

Contents?: true

Size: 1.11 KB

Versions: 55

Compression:

Stored size: 1.11 KB

Contents

require 'uri'
require 'thread'

module ASF

  class SVN
    @base = URI.parse('https://svn.apache.org/repos/')
    @mock = 'file:///var/tools/svnrep/'
    @semaphore = Mutex.new
    @testdata = {}

    def self.repos
      @semaphore.synchronize do
        svn = ASF::Config.get(:svn).map {|dir| dir.untaint}
        @repos ||= Hash[Dir[*svn].map { |name| 
          Dir.chdir name.untaint do
            [`svn info`[/URL: (.*)/,1].sub(/^http:/,'https:'), Dir.pwd.untaint]
          end
        }]
      end
    end

    def self.[]=(name, path)
      @testdata[name] = File.expand_path(path).untaint
    end

    def self.[](name)
      return @testdata[name] if @testdata[name]

      result = repos[(@mock+name.sub('private/','')).to_s.sub(/\/*$/, '')] ||
        repos[(@base+name).to_s.sub(/\/*$/, '')] # lose trailing slash

      return result if result

      # recursively try parent directory
      if name.include? '/'
        base = File.basename(name)
        result = self[File.dirname(name)]
        if result and File.exist?(File.join(result, base))
          File.join(result, base)
        end
      end
    end
  end

end

Version data entries

55 entries across 55 versions & 1 rubygems

Version Path
whimsy-asf-0.0.69 lib/whimsy/asf/svn.rb
whimsy-asf-0.0.68 lib/whimsy/asf/svn.rb
whimsy-asf-0.0.67 lib/whimsy/asf/svn.rb
whimsy-asf-0.0.66 lib/whimsy/asf/svn.rb
whimsy-asf-0.0.65 lib/whimsy/asf/svn.rb
whimsy-asf-0.0.64 lib/whimsy/asf/svn.rb
whimsy-asf-0.0.63 lib/whimsy/asf/svn.rb
whimsy-asf-0.0.62 lib/whimsy/asf/svn.rb
whimsy-asf-0.0.61 lib/whimsy/asf/svn.rb
whimsy-asf-0.0.60 lib/whimsy/asf/svn.rb
whimsy-asf-0.0.59 lib/whimsy/asf/svn.rb
whimsy-asf-0.0.58 lib/whimsy/asf/svn.rb
whimsy-asf-0.0.57 lib/whimsy/asf/svn.rb
whimsy-asf-0.0.56 lib/whimsy/asf/svn.rb
whimsy-asf-0.0.55 lib/whimsy/asf/svn.rb
whimsy-asf-0.0.54 lib/whimsy/asf/svn.rb
whimsy-asf-0.0.53 lib/whimsy/asf/svn.rb
whimsy-asf-0.0.52 lib/whimsy/asf/svn.rb
whimsy-asf-0.0.51 lib/whimsy/asf/svn.rb
whimsy-asf-0.0.50 lib/whimsy/asf/svn.rb