Class: PlcUtil::AwlLsRunner

Inherits:
Clamp::Command
  • Object
show all
Defined in:
lib/plcutil/siemens/awl_ls_runner.rb

Instance Method Summary collapse

Instance Method Details

#executeObject



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/plcutil/siemens/awl_ls_runner.rb', line 6

def execute
    # search for dbf file containing internal name -> awl file
    dbf_files = Dir["#{folder || '.'}/**/S7CONTAI.DBF"]
    if dbf_files.empty?
      puts 'No S7CONTAI.DBF found in folder' 
    else
      awl_to_siemens = dbf_files.map do |s7contai|
        dbf = DBF::Table.new s7contai
        dir = File::dirname s7contai
        Hash[dbf.select {|x| x }.map {|row| [File.join(dir, row.filename), row.name]}]
      end.reduce(&:merge)

      expanded = file_list.map {|f| File::expand_path f }
      interesting = awl_to_siemens.select {|k,v| expanded.member?(File.expand_path(k)) || file_list.member?(v) || file_list.empty? }
      longest = interesting.values.sort {|a,b| a.length <=> b.length }.last
      interesting.each {|k,v| puts "%-#{longest.length}s %s" % [v, k] }
    end
end