def load_assemblers
      Biopsy::Settings.instance.target_dir.each do |dir|
        Dir.chdir dir do
          Dir['*.yml'].each do |file|
            name = File.basename(file, '.yml')
            target = Assembler.new
            target.load_by_name name
            unless System.match? target.bindeps[:url]
              logger.info "Assembler #{target.name} is not available" +
                          " for this operating system"
              next
            end
            bin_paths = target.bindeps[:binaries].map do |bin|
              Which.which bin
            end
            missing_bin = bin_paths.any? { |path| path.empty? }
            if missing_bin
              logger.debug "Assembler #{target.name} was not installed"
              missing = bin_paths
                .select{ |path| path.empty? }
                .map.with_index{ |path, i| target.bindeps[:binaries][i] }
              logger.debug "(missing binaries: #{missing.join(', ')})"
              @assemblers_uninst << target
            else
              @assemblers << target
            end
          end
        end
      end
    end
def load_assemblers
      Biopsy::Settings.instance.target_dir.each do |dir|
        Dir.chdir dir do
          Dir['*.yml'].each do |file|
            name = File.basename(file, '.yml')
            target = Assembler.new
            target.load_by_name name
            unless System.match? target.bindeps[:url]
              logger.info "Assembler #{target.name} is not available" +
                          " for this operating system"
              next
            end
            bin_paths = target.bindeps[:binaries].map do |bin|
              Which.which bin
            end
            missing_bin = bin_paths.any? { |path| path.empty? }
            if missing_bin
              logger.debug "Assembler #{target.name} was not installed"
              missing = bin_paths
                .select{ |path| path.empty? }
                .map.with_index{ |path, i| target.bindeps[:binaries][i] }
              logger.debug "(missing binaries: #{missing.join(', ')})"
              @assemblers_uninst << target
            else
              @assemblers << target
            end
          end
        end
      end
    end
Discover and load available assemblers.