Module: ElmInstall::ElmPackage

Defined in:
lib/elm_install/elm_package.rb

Overview

This is a class for reading the ‘elm-package`.json file and transform it’s ‘dependecies` field to a unified format.

Class Method Summary collapse

Class Method Details

.dependencies(path) ⇒ Object

TODO: Error handling



6
7
8
9
10
11
12
# File 'lib/elm_install/elm_package.rb', line 6

def self.dependencies(path)
  json = read path
  transform_dependencies(
    json['dependencies'],
    json['dependency-sources'].to_h
  )
end

.read(path) ⇒ Object



14
15
16
# File 'lib/elm_install/elm_package.rb', line 14

def self.read(path)
  JSON.parse(File.read(path))
end

.transform_dependencies(raw_dependencies, sources) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
# File 'lib/elm_install/elm_package.rb', line 18

def self.transform_dependencies(raw_dependencies, sources)
  raw_dependencies.each_with_object({}) do |(package, constraint), memo|
    value = sources.fetch(package, package)

    if value.is_a?(Hash)
      memo[value['url']] = value['ref']
    else
      memo[transform_package(value)] = constraint
    end
  end
end

.transform_package(key) ⇒ Object



30
31
32
33
34
# File 'lib/elm_install/elm_package.rb', line 30

def self.transform_package(key)
  GitCloneUrl.parse(key).to_s
rescue
  "[email protected]:#{key}"
end