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) step
Default to no action.
-
- (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, #warn
Constructor Details
- (Step) initialize(sources = [], targets = [])
Create Step object.
522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 |
# File 'lib/rubu.rb', line 522 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
515 516 517 |
# File 'lib/rubu.rb', line 515 def sources @sources end |
- (Object) targets (readonly)
Returns the value of attribute targets
516 517 518 |
# File 'lib/rubu.rb', line 516 def targets @targets end |
Class Method Details
+ (Object) use(sources = [], targets = [])
Create Move and register.
489 490 491 |
# File 'lib/rubu.rb', line 489 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.
508 509 510 511 512 |
# File 'lib/rubu.rb', line 508 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.
497 498 499 500 501 |
# File 'lib/rubu.rb', line 497 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.
570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 |
# File 'lib/rubu.rb', line 570 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.
668 669 670 671 672 673 |
# File 'lib/rubu.rb', line 668 def fork( &blk ) host_in instance_eval &blk host_out parallel_run end |
- (Boolean) mark_update?
Check for mark (checksum) based update needs.
600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 |
# File 'lib/rubu.rb', line 600 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.
655 656 657 |
# File 'lib/rubu.rb', line 655 def rbrun( desc = nil, &cmd ) RubyCommand.new( desc, &cmd ).run end |
- (Object) rbuse(desc = nil, &cmd)
Define and register Ruby command.
662 663 664 665 |
# File 'lib/rubu.rb', line 662 def rbuse( desc = nil, &cmd ) rb = RubyCommand.new( desc, &cmd ) rb.use end |
- (Object) run
Run Step and capture status.
553 554 555 556 557 558 559 560 |
# File 'lib/rubu.rb', line 553 def run if update? step else @status = :success end self end |
- (Object) setup
Setup variables for Step. Should be defined again in derived classes.
543 544 |
# File 'lib/rubu.rb', line 543 def setup end |
- (Object) shrun(cmd)
Define and run Shell command.
642 643 644 |
# File 'lib/rubu.rb', line 642 def shrun( cmd ) ShellCommand.new( cmd ).run end |
- (Object) shuse(cmd)
Define and register Shell command.
647 648 649 650 |
# File 'lib/rubu.rb', line 647 def shuse( cmd ) sh = ShellCommand.new( cmd ) sh.use end |
- (Object) source
Main/only (first) source file.
632 633 634 |
# File 'lib/rubu.rb', line 632 def source @sources[0] end |
- (Object) step
Default to no action. Typically this method is redefined.
548 549 |
# File 'lib/rubu.rb', line 548 def step end |
- (Object) target
Main/only (first) target file.
637 638 639 |
# File 'lib/rubu.rb', line 637 def target @targets[0] end |
- (Boolean) update?
Default update. Should be defined again in derived classes.
564 565 566 |
# File 'lib/rubu.rb', line 564 def update? true end |
- (Object) walk(&blk)
Execute commands (from block) in sequence.
676 677 678 679 680 681 |
# File 'lib/rubu.rb', line 676 def walk( &blk ) host_in instance_eval &blk host_out serial_run end |