Class: DocumentGenerator::Repository

Inherits:
Object
  • Object
show all
Defined in:
lib/document_generator/repository.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(url) ⇒ Repository

Returns a new instance of Repository.



21
22
23
# File 'lib/document_generator/repository.rb', line 21

def initialize(url)
  @url = url
end

Instance Attribute Details

#urlObject

Returns the value of attribute url.



3
4
5
# File 'lib/document_generator/repository.rb', line 3

def url
  @url
end

Class Method Details

.default_dirnameObject



13
14
15
# File 'lib/document_generator/repository.rb', line 13

def self.default_dirname
  '_layouts'
end

.default_relative_filenameObject



17
18
19
# File 'lib/document_generator/repository.rb', line 17

def self.default_relative_filename
  File.join(default_dirname, 'default.html')
end


5
6
7
# File 'lib/document_generator/repository.rb', line 5

def self.menu_dirname
  '_includes'
end


9
10
11
# File 'lib/document_generator/repository.rb', line 9

def self.menu_relative_filename
  File.join(menu_dirname, 'menu.md')
end

Instance Method Details

#base_urlObject



25
26
27
# File 'lib/document_generator/repository.rb', line 25

def base_url
  "https://#{uri.host}#{uri.path}/"
end

#commitsObject



44
45
46
47
48
49
50
51
52
53
# 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

#generateObject



33
34
35
36
37
38
39
40
41
42
# 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

#nameObject



29
30
31
# File 'lib/document_generator/repository.rb', line 29

def name
  uri.path.split('/')[-1]
end