class Giteaucrat::Repo

Attributes

commit_keyword[RW]
include_encoding[RW]
license[RW]
path[RW]

@return [String]

patterns[W]

Public Class Methods

defaults=(options = {}) click to toggle source
# File lib/giteaucrat/repo.rb, line 17
def self.defaults=(options = {})
  Grit::Git.git_binary = options[:git] if options[:git]
  Grit::Git.git_timeout = options[:git_timeout] if options[:git_timeout]
end

Public Instance Methods

authors=(authors) click to toggle source
# File lib/giteaucrat/repo.rb, line 81
def authors=(authors)
  authors.each do |author_attributes|
    Author.new(author_attributes)
  end
end
commit!(message) click to toggle source
# File lib/giteaucrat/repo.rb, line 36
def commit!(message)
  git_repo.commit_all(message)
end
config=(*) click to toggle source
# File lib/giteaucrat/repo.rb, line 87
def config=(*); end
files() click to toggle source
# File lib/giteaucrat/repo.rb, line 40
def files
  @files ||= begin
    Dir.chdir(path) do
      patterns.inject([]) do |files, pattern|
        files + Dir[pattern]
      end.map do |file_name|
        File.new(name: file_name, repo: self)
      end
    end
  end
end
first_commit() click to toggle source

@return [Grit::Commit]

# File lib/giteaucrat/repo.rb, line 95
def first_commit
  @first_commit ||= begin
    count = git_repo.commit_count
    git_repo.commits(git_repo.head.name, 1, count - 1).first
  end
end
git() click to toggle source
# File lib/giteaucrat/repo.rb, line 73
def git
  Grit::Git.git_binary
end
git=(executable) click to toggle source
# File lib/giteaucrat/repo.rb, line 77
def git=(executable)
  Grit::Git.git_binary = executable
end
git_repo() click to toggle source
# File lib/giteaucrat/repo.rb, line 22
def git_repo
  @git_repo ||= find_git_repo(path)
end
ignored_commit?(commit) click to toggle source

@param [Grit::Commit] commit @return [Boolean]

# File lib/giteaucrat/repo.rb, line 117
def ignored_commit?(commit)
  !commit || commit.message.match(ignored_commit_message)
end
ignored_commit_message() click to toggle source

@return [Regexp]

# File lib/giteaucrat/repo.rb, line 111
def ignored_commit_message
  @ignored_commit_message ||= /^#{Regexp.escape(commit_keyword)}/
end
include_encoding?() click to toggle source
# File lib/giteaucrat/repo.rb, line 121
def include_encoding?
  !!include_encoding
end
patterns() click to toggle source

@return [<String>]

# File lib/giteaucrat/repo.rb, line 57
def patterns
  @patterns || %w[app/**/*.rb lib/**/*.rb script/**/*.rb spec/**/*.rb test/**/*.rb]
end
timeout() click to toggle source
# File lib/giteaucrat/repo.rb, line 65
def timeout
  Grit::Git.git_timeout
end
timeout=(timeout) click to toggle source
# File lib/giteaucrat/repo.rb, line 69
def timeout=(timeout)
  Grit::Git.git_timeout = timeout
end
write_copyrights!() click to toggle source
# File lib/giteaucrat/repo.rb, line 52
def write_copyrights!
  files.each(&:write_copyright!)
end

Private Instance Methods

find_git_repo(directory) click to toggle source

Finds a Git repository in the directory or its parent directories. @param directory [String] Directory to expect a git repository. @return [Grit::Repo] Found git repository.

# File lib/giteaucrat/repo.rb, line 130
def find_git_repo(directory)
  if ::File.exist?(::File.join(directory, '.git')) || directory =~ /\.git$/
    Grit::Repo.new(directory)
  elsif directory == '/'
    raise Grit::InvalidGitRepositoryError
  else
    find_git_repo(::File.expand_path(::File.join(directory, '..')))
  end
end