Sha256: 8dd2f2c3f0ef3e1f892e1e39d7ec89df0b5efbef6e37158b871e4bc20091ef2e

Contents?: true

Size: 988 Bytes

Versions: 2

Compression:

Stored size: 988 Bytes

Contents

require 'open-uri'
require 'json'
require 'tins/string_version'

module Hackmac
  class KextSource
    GITHUB_API_URL = 'https://api.github.com/repos/%s/releases'

    include Tins::StringVersion

    def initialize(github, auth: nil)
      account, repo = github.split(?/)
      @name = repo
      releases = URI.open(
        GITHUB_API_URL % github,
        http_basic_authentication: auth) { |o|
        JSON.parse(o.read, object_class: JSON::GenericObject)
      }
      if version = releases.map { |r|
          next unless r.tag_name.include?(?.)
          version = r.tag_name.delete '^.0-9'
          begin
            Version.new(version)
          rescue ArgumentError
          end
        }.compact.max
      then
        @version = version
      end
    end

    attr_reader :name

    attr_reader :version

    def inspect
      "#<#{self.class}: #{to_s}>"
    end

    def to_s
      "#{name} #{version}"
    end

    def to_s
      "#{name} #{version}"
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
hackmac-0.1.1 lib/hackmac/kext_source.rb
hackmac-0.1.0 lib/hackmac/kext_source.rb