Class: Gglog::Command

Inherits:
Thor
  • Object
show all
Includes:
Pager
Defined in:
lib/gglog/command.rb

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ Command

Returns a new instance of Command.



15
16
17
18
# File 'lib/gglog/command.rb', line 15

def initialize(*args)
  super
  @dot_gglog = options["gglog-home"] if options["gglog-home"]
end

Instance Method Details

#listObject



35
36
37
38
39
# File 'lib/gglog/command.rb', line 35

def list
  registered_repositories.each do |repository|
    say repository.name
  end
end

#register(clone_url) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/gglog/command.rb', line 21

def register(clone_url)
  repository_name = File.basename(clone_url, '.git')
  registration_path = repository_path(repository_name)
  repository = Repository.checkout(clone_url, registration_path)

  setup_database unless File.exists?(db_home)
  Gglog::Database.open(db_home, 'utf-8') do |db|
    repository.commit_messages.each do |commit_message|
      db.add_commit_message(commit_message)
    end
  end
end

#search(words) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/gglog/command.rb', line 42

def search(words)
  commit_messages = []

  setup_database unless File.exists?(db_home)
  Gglog::Database.open(db_home, 'utf-8') do |db|
    commit_messages = db.search(words).map do |cm|
      cm.extend CommitMessageDecorator
    end
  end

  page
  commit_messages.each do |commit_message|
    say commit_message.display
  end
end

#show(repository_name, sha) ⇒ Object



59
60
61
62
63
64
65
66
# File 'lib/gglog/command.rb', line 59

def show(repository_name, sha)
  repository = Repository.new(repository_path(repository_name))

  page
  say repository.show(sha)
rescue
  say "Failed: repository name or sha is incorrect"
end

#syncObject



69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/gglog/command.rb', line 69

def sync
  registered_repositories.each do |repository|
    repository.pull
  end

  setup_database unless File.exists?(db_home)
  Gglog::Database.open(db_home, 'utf-8') do |db|
    db.recreate
    registered_repositories.each do |repository|
      repository.commit_messages.each do |commit_message|
        db.add_commit_message(commit_message)
      end
    end
  end
end