class GitDirty::FileTask

Public Class Methods

new(name, *args) click to toggle source
Calls superclass method
# File lib/git-dirty/file_task.rb, line 7
def initialize(name, *args)
  super
  desc "Write git status to #{name} (should be git-ignored)"
end

Public Instance Methods

execute(args=nil) click to toggle source
# File lib/git-dirty/file_task.rb, line 24
def execute(args=nil)
  if application.options.trace
    application.trace "*** Writing actual state '#{actual_state}' to #{name}"
  end

  File.write(name, actual_state)
end
needed?() click to toggle source
# File lib/git-dirty/file_task.rb, line 12
def needed?
  (actual_state != persisted_state).tap do |needed|
    if application.options.trace
      if needed
        application.trace "*** #{name} IS needed"
      else
        application.trace "*** #{name} is NOT needed"
      end
    end
  end
end

Private Instance Methods

actual_state() click to toggle source
# File lib/git-dirty/file_task.rb, line 34
def actual_state
  if clean?
    rev
  else
    "#{rev}*"
  end
end
clean?() click to toggle source
# File lib/git-dirty/file_task.rb, line 47
def clean?
  `git status --porcelain`.chomp.empty?
end
persisted_state() click to toggle source
# File lib/git-dirty/file_task.rb, line 42
def persisted_state
  return nil unless File.exist?(name)
  File.read(name).chomp
end
rev() click to toggle source
# File lib/git-dirty/file_task.rb, line 51
def rev
  `git rev-parse --short HEAD`.chomp
end