module Bibliothecary module Parsers class Swift include Bibliothecary::Analyser def self.parse(filename, file_contents) if filename.match(/^Package\.swift$/i) parse_package_swift(file_contents) else [] end end def self.parse_package_swift(manifest) response = Typhoeus.post("http://192.241.154.173/to-json", body: manifest) json = JSON.parse(response.body) json["dependencies"].map do |dependency| name = dependency['url'].gsub(/^https?:\/\//, '').gsub(/\.git$/,'') version = "#{dependency['version']['lowerBound']} - #{dependency['version']['upperBound']}" { name: name, version: version, type: 'runtime' } end end end end end