class Anticuado::Elixir::Hex

Public Instance Methods

format(outdated = nil) click to toggle source

@param [String] outdated The result of command `mix hex.outdated` @return [Array] Array include outdated data.

If target project have no outdated data, then return blank array such as `[]`
# File lib/anticuado/elixir/hex.rb, line 22
def format(outdated = nil)
  @outdated_libraries = outdated unless outdated.nil?

  array = @outdated_libraries.split(/\R/).map(&:strip)
  index = array.find_index { |line| line.scan(/\ADependency\s+Current\s+/) != [] }

  return [] if index.nil?

  @formatted_outdated_libraries = array[index + 1..array.size].reduce([]) do |acc, library|
    break acc if library.empty?

    array_lib = library.split(/\s+/)
    current_version = array_lib[1]
    last_version = array_lib[2]

    if current_version != last_version
      acc.push({
          library_name: array_lib[0],
          current_version: current_version,
          available_version: last_version,
          latest_version: last_version
      })
    end

    acc
  end
end
outdated() click to toggle source

@return [String] The result of command `mix hex.outdated`.

# File lib/anticuado/elixir/hex.rb, line 5
def outdated
  return puts "have no mix command" if `which mix`.empty?
  `mix local.hex --force`

  if @project_dir
    Dir.chdir(@project_dir) do
      @outdated_libraries = `mix hex.outdated`
    end
  else
    @outdated_libraries = `mix hex.outdated`
  end
  @outdated_libraries
end