class DocumentGenerator::Repository
Attributes
url[RW]
Public Class Methods
default_dirname()
click to toggle source
# File lib/document_generator/repository.rb, line 13 def self.default_dirname '_layouts' end
default_relative_filename()
click to toggle source
# File lib/document_generator/repository.rb, line 17 def self.default_relative_filename File.join(default_dirname, 'default.html') end
new(url)
click to toggle source
# File lib/document_generator/repository.rb, line 21 def initialize(url) @url = url end
Public Instance Methods
base_url()
click to toggle source
# File lib/document_generator/repository.rb, line 25 def base_url "https://#{uri.host}#{uri.path}/" end
commits() { |commit| ... }
click to toggle source
# File lib/document_generator/repository.rb, line 44 def commits Dir.mktmpdir do |path| repo = Git.clone(url, name, path: path) # TODO: Allow options to influence branch, number of commits, etc. repo.log(nil).reverse_each.map do |git_commit| yield Commit.new(base_url, git_commit) end end end
generate()
click to toggle source
# File lib/document_generator/repository.rb, line 33 def generate prepare File.open(Repository.menu_relative_filename, 'w') do |menu_writer| commits do |commit| menu_writer.write(commit.link) commit.create end end end
name()
click to toggle source
# File lib/document_generator/repository.rb, line 29 def name uri.path.split('/')[-1] end
Private Instance Methods
copy_layout()
click to toggle source
# File lib/document_generator/repository.rb, line 61 def copy_layout return if File.exists?(Repository.default_relative_filename) Dir.mkdir(Repository.default_dirname) unless Dir.exists?(Repository.default_dirname) src = File.expand_path('../../../assets/_layouts/default.html', __FILE__) dest = Repository.default_relative_filename FileUtils.copy_file(src, dest) end
normalized_url()
click to toggle source
# File lib/document_generator/repository.rb, line 72 def normalized_url replacements = [ [%r(\Agit@github\.com:), 'git://github.com/'], [%r(\.git\Z), ''] ] replacements.each do |pattern, replacement| url.gsub!(pattern, replacement) end url end
prepare()
click to toggle source
# File lib/document_generator/repository.rb, line 56 def prepare Dir.mkdir(Repository.menu_dirname) unless Dir.exists?(Repository.menu_dirname) copy_layout end
uri()
click to toggle source
# File lib/document_generator/repository.rb, line 85 def uri Addressable::URI.parse(normalized_url) end