Class: InvocaGems::Cli

Inherits:
Thor
  • Object
show all
Defined in:
lib/invoca_gems/cli.rb

Instance Method Summary collapse

Instance Method Details

#edit(gem_name) ⇒ Object



17
18
19
20
21
22
23
24
25
# File 'lib/invoca_gems/cli.rb', line 17

def edit(gem_name)
  InvocaGems::Presenter.with_presenter do |presenter|
    presenter.set_task "Configuring #{gem_name}"
    gem = InvocaGems::Gem.new(gem_name, presenter)
    gem.edit
    presenter.set_subtask("done")
    presenter.message("#{gem_name} is now available at #{gem.repo_directory}")
  end
end

#graphObject



8
9
10
11
12
13
14
# File 'lib/invoca_gems/cli.rb', line 8

def graph
  InvocaGems::Presenter.with_presenter do |presenter|
    presenter.message "Generating Dependency Graph"
    bw = InvocaGems::Bundler.new
    `open #{bw.dependencies_yuml_url}`
  end
end

#has_unsaved_changes(gem_name) ⇒ Object



47
48
49
50
51
52
53
54
55
56
# File 'lib/invoca_gems/cli.rb', line 47

def has_unsaved_changes(gem_name)
  InvocaGems::Presenter.with_presenter do |presenter|
    gem = InvocaGems::Gem.new(gem_name, presenter)
    if gem.git_repo.unsaved_changes?
      presenter.message "found unsaved changes"
    else
      presenter.message "no unsaved changes"
    end
  end
end

#listObject



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# File 'lib/invoca_gems/cli.rb', line 80

def list
  InvocaGems::Presenter.with_presenter do |presenter|
    presenter.silence do
      format = "   %-30s  %10s  %-60s"
      bw = InvocaGems::Bundler.new
      puts
      puts format % ["Name", "Version", "Status"]
      puts format % ["="*30, "="*10, "="*60]
      bw.invoca_source_names.each do |gem_name|
        gem = InvocaGems::Gem.new(gem_name, presenter)
        status =
          if gem.path
            presenter.using_mode( :green, "open for editing at #{gem.path}" )
          else
            "#{gem.sha[0..6]} for #{gem.uri}"
          end
        puts format % [gem.name, gem.version, status]
      end
      puts
    end
  end
end

#save(gem_name) ⇒ Object



29
30
31
32
33
34
35
36
# File 'lib/invoca_gems/cli.rb', line 29

def save(gem_name)
  InvocaGems::Presenter.with_presenter do |presenter|
    presenter.set_task "Saving changes to #{gem_name}"
    gem = InvocaGems::Gem.new(gem_name, presenter)
    gem.save(options[:commit_message])
    presenter.message "Done"
  end
end

#show_changesObject



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/invoca_gems/cli.rb', line 59

def show_changes
  InvocaGems::Presenter.with_presenter do |presenter|
    bw = InvocaGems::Bundler.new
    bw.invoca_source_names.each do |gem_name|
      presenter.set_task("#{gem_name}")
      gem = InvocaGems::Gem.new(gem_name, presenter)
      if gem.repo_exists? && gem.git_repo.branch_exists?(gem.local_branch_name)
        # TODO - check for differences with master
        url  = gem.uri.gsub("[email protected]:", "https://github.com/").gsub(".git","") + "/compare/#{gem.local_branch_name}"
        `open #{url}`
        presenter.set_subtask(url)
      else
        presenter.clear_task(keep: false)
      end
    end
    presenter.message("done")
  end
end

#update(gem_name, version, sha) ⇒ Object



39
40
41
42
43
44
# File 'lib/invoca_gems/cli.rb', line 39

def update(gem_name, version, sha)
  InvocaGems::Presenter.with_presenter do |presenter|
    gem = InvocaGems::Gem.new(gem_name, presenter)
    gem.update_version(version, sha)
  end
end