Class: Pione::RuleEngine::WorkingDirectory

Inherits:
Object
  • Object
show all
Defined in:
lib/pione/rule-engine/action-handler.rb

Overview

WorkingDirectory is a directory that action rule executes the shell script.

Instance Method Summary collapse

Constructor Details

#initialize(env, base_location, inputs) ⇒ WorkingDirectory

Returns a new instance of WorkingDirectory.



132
133
134
135
136
137
# File 'lib/pione/rule-engine/action-handler.rb', line 132

def initialize(env, base_location, inputs)
  @env = env
  @dir = Location[Global.working_directory_generator.mkdir]
  @base_location = base_location
  @inputs = inputs
end

Instance Method Details

#closeObject

Clear the working directory.



175
176
177
# File 'lib/pione/rule-engine/action-handler.rb', line 175

def close
  @dir.delete
end

#collect_outputs(output_conditions) ⇒ Array<Array<String>>

Collect output data by names from working directory.

Parameters:

  • output_conditions (Condition)

    all output conditions of action rule

Returns:

  • (Array<Array<String>>)

    array of output filenames



161
162
163
164
165
166
167
168
169
170
171
172
# File 'lib/pione/rule-engine/action-handler.rb', line 161

def collect_outputs(output_conditions)
  filenames = @dir.file_entries.map{|entry| entry.basename}
  output_conditions.map do |condition|
    case condition.distribution
    when :all
      filenames.select{|name| condition.match?(name)}
    when :each
      name = filenames.find {|name| condition.match?(name)}
      name ? [name] : []
    end
  end
end

#importObject

Synchronize input data into working directory.



144
145
146
147
148
149
150
151
152
153
# File 'lib/pione/rule-engine/action-handler.rb', line 144

def import
  @env.variable_set(
    Lang::Variable.new("__WORKING_DIRECTORY__"),
    Lang::StringSequence.of(@dir.path.to_s)
  )

  import_inputs
  import_bins
  import_etc
end

#locationObject



139
140
141
# File 'lib/pione/rule-engine/action-handler.rb', line 139

def location
  @dir
end