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