class MxxRu::Target_state

Target status description.

Constants

ABSENT

Target is absent or rebuild is required.

EXISTS

Target exists and up-to-date.

REBUILT

Target was rebuilt.

Attributes

state[R]

Public Class Methods

detect( name, depends ) click to toggle source

Detect target status. TargetState object returned.

name

Target name.

depends

Dependencies list. Array of String.

# File lib/mxx_ru/abstract_target.rb, line 59
def TargetState.detect( name, depends )

  state = ABSENT

  # In dry-run mode we always return that target is absent.
  if !MxxRu::Util::Mode.instance.is_dry_run
    if FileTest.exist?( name )
      # It's necessary to detect time of target and it's dependencies.
      target_mtime = File.mtime( name )
      if nil != depends.find { |d|
          if !FileTest.exist?( d )
            raise MxxRu::MissingDependFileEx.new( d, name )
          end
          depend_mtime = File.mtime( d )
          target_mtime < depend_mtime
        }
        # More young dependency found.
        state = REBUILT
      else
        # Target is up-to-date.
        state = EXISTS
      end
    end
  end

  return TargetState.new( state )
end
make_absent() click to toggle source

Creates and returns objects of state ABSENT

Since v.1.4.4

# File lib/mxx_ru/abstract_target.rb, line 110
def TargetState.make_absent
  TargetState.new( ABSENT )
end
new( a_state = ABSENT ) click to toggle source
# File lib/mxx_ru/abstract_target.rb, line 50
def initialize( a_state = ABSENT )
  @state = a_state
end
rebuilding_needed?( *statuses ) click to toggle source

Checks collection of statuses.

Returns true if at least one of statuses have value REBUILT or ABSENT.

Typical usage is:

subprojects_status = build_subprojects
self_files_status = build_self_files

if TargetState.rebuilding_needed?(
    subprojects_status, self_files_status )
  do_rebuild
end

Since v.1.4.4

# File lib/mxx_ru/abstract_target.rb, line 102
def TargetState.rebuilding_needed?( *statuses )
  nil != statuses.find { |s| EXISTS != s.state }
end