Class: Greenhouse::Tasks::ProjectStatus

Inherits:
Object
  • Object
show all
Includes:
ProjectTask, Task
Defined in:
lib/greenhouse/tasks/project_status.rb

Instance Method Summary collapse

Methods included from ProjectTask

included

Methods included from Task

included

Instance Method Details

#perform(project, fetch = false, verbose = false, remote = false) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/greenhouse/tasks/project_status.rb', line 7

def perform(project, fetch=false, verbose=false, remote=false)
  @project = project
  @project.repository.fetch if fetch && @project.exists?

  Inkjet.indent do
    print "#{@project.title.cyan} (#{@project.type.capitalize})"
    undent do
      #puts "#{@project.repository.remote}"
      print " #{@project.exists? ? "Initialized".green : "Not Initialized".yellow}"
      print ", #{@project.configured? ? "Configured".green : "Not Configured".yellow}" if @project.exists? && @project.is_a?(::Greenhouse::Projects::Application)
    end

    if @project.exists?
      undent do
        print ", "+"Uncommitted Changes".red if @project.repository.changes?
        print ", "+"Unpushed Branches".blue if @project.repository.ahead?
        print ", "+"Unpulled Branches".yellow if @project.repository.behind?
        print ", "+"Diverged Branches".magenta if @project.repository.diverged?
        print ", "+"Up-to-date".green if !@project.repository.changes? && !@project.repository.ahead? && @project.repository.up_to_date?
      end
      
      puts
      
      if verbose
        Inkjet.indent do
          print_local_changes if @project.repository.changes?
          print_unpushed_branches if @project.repository.ahead?
          print_out_of_sync_branches if @project.repository.out_of_sync?
        end
      end

      Inkjet.indent { print_not_checked_out_branches } if remote && @project.repository.not_checked_out?
    end
  end

end