class Piperun::Pipeline

Attributes

filters[R]

Public Class Methods

build(src, dst, &block) click to toggle source
# File lib/piperun/pipeline.rb, line 17
def self.build(src, dst, &block)
  pipe = new(src, dst)
  dsl = DSL.new(pipe)
  dsl.instance_eval(&block)
  pipe
end
new(src, dst) click to toggle source
# File lib/piperun/pipeline.rb, line 7
def initialize(src, dst)
  @src = File.absolute_path(src)
  @dst = File.absolute_path(dst)
  @filters = []
end

Public Instance Methods

add_filter(f) click to toggle source
# File lib/piperun/pipeline.rb, line 13
def add_filter(f)
  @filters << f
end
run(files = nil) click to toggle source
# File lib/piperun/pipeline.rb, line 42
def run(files = nil)
  if files == nil
    Dir.chdir @src do
      files = Dir['**/*'].reject {|fn| File.directory?(fn) }
    end
  end

  src = @src

  @filters.each do |f|
    begin
      break if files.length == 0

      if f == @filters.last
        dst = @dst
        FileUtils.mkdir_p dst
      else
        dst = Dir.mktmpdir
      end

      files = f.run(src, dst, files)
    ensure
      FileUtils.remove_entry_secure src unless src == @src
    end

    src = dst
  end

  return files
end
watch() click to toggle source
# File lib/piperun/pipeline.rb, line 73
def watch
  Listen.to(@src) do |modified, added, removed|
    run
  end.start
end