Class: Rubu::Step
- Inherits:
-
Move
- Object
- Move
- Rubu::Step
- Includes:
- MoveStyles
- Defined in:
- lib/rubu.rb
Overview
Step in Trail. Step takes one or more sources, and turns them into one or more targets.
Direct Known Subclasses
Instance Attribute Summary (collapse)
-
- (Object) sources
readonly
Returns the value of attribute sources.
-
- (Object) targets
readonly
Returns the value of attribute targets.
Attributes inherited from Move
#errmsg, #output, #status, #subs
Class Method Summary (collapse)
-
+ (Object) use(sources = [], targets = [])
Create Move and register.
-
+ (Object) usezip(sources, targets)
Combine list of sources and targets to source/target pairs and register.
-
+ (Object) zip(sources, targets)
Combine list of sources and targets to source/target pairs.
Instance Method Summary (collapse)
-
- (Boolean) date_update?
Check for date (timestamp) based update needs.
-
- (Object) fork(&blk)
Execute commands (from block) in parallel.
-
- (Step) initialize(sources = [], targets = [])
constructor
Create Step object.
-
- (Boolean) mark_update?
Check for mark (checksum) based update needs.
-
- (Object) rbrun(desc = nil, &cmd)
Define and run Ruby command.
-
- (Object) rbuse(desc = nil, &cmd)
Define and register Ruby command.
-
- (Object) run
Run Step and capture status.
-
- (Object) setup
Setup variables for Step.
-
- (Object) shrun(cmd)
Define and run Shell command.
-
- (Object) shuse(cmd)
Define and register Shell command.
-
- (Object) source
Main/only (first) source file.
-
- (Object) target
Main/only (first) target file.
-
- (Boolean) update?
Default update.
-
- (Object) walk(&blk)
Execute commands (from block) in sequence.
Methods included from MoveStyles
Methods inherited from Move
#display, #error, #host, #host_in, #host_out, #use
Constructor Details
- (Step) initialize(sources = [], targets = [])
Create Step object.
506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 |
# File 'lib/rubu.rb', line 506 def initialize( sources = [], targets = [] ) super() unless sources.kind_of? Array @sources = [ sources ] else @sources = sources end unless targets.kind_of? Array @targets = [ targets ] else @targets = targets end setup end |
Instance Attribute Details
- (Object) sources (readonly)
Returns the value of attribute sources
499 500 501 |
# File 'lib/rubu.rb', line 499 def sources @sources end |
- (Object) targets (readonly)
Returns the value of attribute targets
500 501 502 |
# File 'lib/rubu.rb', line 500 def targets @targets end |
Class Method Details
+ (Object) use(sources = [], targets = [])
Create Move and register.
473 474 475 |
# File 'lib/rubu.rb', line 473 def self.use( sources = [], targets = [] ) self.new( sources, targets ).use end |
+ (Object) usezip(sources, targets)
Combine list of sources and targets to source/target pairs and register.
492 493 494 495 496 |
# File 'lib/rubu.rb', line 492 def self.usezip( sources, targets ) sources.zip( targets ).map do |pair| self.new( *pair ).use end end |
+ (Object) zip(sources, targets)
Combine list of sources and targets to source/target pairs.
481 482 483 484 485 |
# File 'lib/rubu.rb', line 481 def self.zip( sources, targets ) sources.zip( targets ).map do |pair| self.new( *pair ) end end |
Instance Method Details
- (Boolean) date_update?
Check for date (timestamp) based update needs.
549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 |
# File 'lib/rubu.rb', line 549 def date_update? # Check if targets are missing. @targets.each do |target| unless target.exist? return true end end # Check if source(s) are newer than target(s). newest_source = Time.new( 0 ) @sources.each do |source| if source.time > newest_source && !source.skip newest_source = source.time end end oldest_target = Time.now @targets.each do |target| if target.time < oldest_target oldest_target = target.time end end return newest_source > oldest_target end |
- (Object) fork(&blk)
Execute commands (from block) in parallel.
647 648 649 650 651 652 |
# File 'lib/rubu.rb', line 647 def fork( &blk ) host_in instance_eval &blk host_out parallel_run end |
- (Boolean) mark_update?
Check for mark (checksum) based update needs.
579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 |
# File 'lib/rubu.rb', line 579 def mark_update? unless date_update? target.skip = true return false end # Check if targets are missing. unless target.exist? return true end old_verbose = Order[ :verbose ] Order[ :verbose ] = false step Order[ :verbose ] = old_verbose unless target.exist? error "file generation failure" exit false end unless State.md5_check_and_update?( target.rpath ) target.skip = true return false end true end |
- (Object) rbrun(desc = nil, &cmd)
Define and run Ruby command.
634 635 636 |
# File 'lib/rubu.rb', line 634 def rbrun( desc = nil, &cmd ) RubyCommand.new( desc, &cmd ).run end |
- (Object) rbuse(desc = nil, &cmd)
Define and register Ruby command.
641 642 643 644 |
# File 'lib/rubu.rb', line 641 def rbuse( desc = nil, &cmd ) rb = RubyCommand.new( desc, &cmd ) rb.use end |
- (Object) run
Run Step and capture status.
532 533 534 535 536 537 538 539 |
# File 'lib/rubu.rb', line 532 def run if update? step else @status = :success end self end |
- (Object) setup
Setup variables for Step. Should be defined again in derived classes.
527 528 |
# File 'lib/rubu.rb', line 527 def setup end |
- (Object) shrun(cmd)
Define and run Shell command.
621 622 623 |
# File 'lib/rubu.rb', line 621 def shrun( cmd ) ShellCommand.new( cmd ).run end |
- (Object) shuse(cmd)
Define and register Shell command.
626 627 628 629 |
# File 'lib/rubu.rb', line 626 def shuse( cmd ) sh = ShellCommand.new( cmd ) sh.use end |
- (Object) source
Main/only (first) source file.
611 612 613 |
# File 'lib/rubu.rb', line 611 def source @sources[0] end |
- (Object) target
Main/only (first) target file.
616 617 618 |
# File 'lib/rubu.rb', line 616 def target @targets[0] end |
- (Boolean) update?
Default update. Should be defined again in derived classes.
543 544 545 |
# File 'lib/rubu.rb', line 543 def update? true end |
- (Object) walk(&blk)
Execute commands (from block) in sequence.
655 656 657 658 659 660 |
# File 'lib/rubu.rb', line 655 def walk( &blk ) host_in instance_eval &blk host_out serial_run end |