Class: OpenGemdocs::Browser
- Inherits:
-
Object
- Object
- OpenGemdocs::Browser
- Defined in:
- lib/open_gemdocs/browser.rb
Instance Attribute Summary collapse
-
#gem_name ⇒ Object
readonly
Returns the value of attribute gem_name.
-
#use_latest ⇒ Object
readonly
Returns the value of attribute use_latest.
-
#version ⇒ Object
readonly
Returns the value of attribute version.
Instance Method Summary collapse
- #check_bundle_version ⇒ Object
-
#initialize(gem_name:, version: nil, use_latest: false) ⇒ Browser
constructor
A new instance of Browser.
- #open_browser ⇒ Object
- #resolve_version ⇒ Object
- #version_data ⇒ Object
- #version_url ⇒ Object
Constructor Details
#initialize(gem_name:, version: nil, use_latest: false) ⇒ Browser
Returns a new instance of Browser.
7 8 9 10 11 12 13 |
# File 'lib/open_gemdocs/browser.rb', line 7 def initialize(gem_name:, version: nil, use_latest: false) @gem_name = gem_name raise ArgumentError, "Gem name is required" if gem_name.nil? || gem_name.empty? @version = version @use_latest = use_latest end |
Instance Attribute Details
#gem_name ⇒ Object (readonly)
Returns the value of attribute gem_name.
5 6 7 |
# File 'lib/open_gemdocs/browser.rb', line 5 def gem_name @gem_name end |
#use_latest ⇒ Object (readonly)
Returns the value of attribute use_latest.
5 6 7 |
# File 'lib/open_gemdocs/browser.rb', line 5 def use_latest @use_latest end |
#version ⇒ Object (readonly)
Returns the value of attribute version.
5 6 7 |
# File 'lib/open_gemdocs/browser.rb', line 5 def version @version end |
Instance Method Details
#check_bundle_version ⇒ Object
52 53 54 |
# File 'lib/open_gemdocs/browser.rb', line 52 def check_bundle_version `bundle show #{gem_name}`.strip.match(/#{gem_name}-([0-9.]+).*$/)&.[](1) end |
#open_browser ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/open_gemdocs/browser.rb', line 31 def open_browser resolve_version raise Error, "No version URL found" unless version_url version_str = version ? "@v#{version}" : "" latest_str = use_latest ? " (latest)" : "" puts "Fetching gem documentation for #{gem_name}#{version_str}#{latest_str}..." # open is a macOS command to open a URL in the default browser raise Error, "Could not resolve URL" if version_url.nil? `open "#{version_url.sub("production.", "")}"` end |
#resolve_version ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/open_gemdocs/browser.rb', line 15 def resolve_version return version if version if !use_latest && File.exist?("Gemfile.lock") @version = check_bundle_version if @version puts "Using version from Gemfile.lock: #{version}" return version end end @use_latest = true puts "No version specified, using latest version" end |
#version_data ⇒ Object
56 57 58 59 60 61 62 63 64 |
# File 'lib/open_gemdocs/browser.rb', line 56 def version_data @version_data ||= begin uri = URI("https://gemdocs.org/gems/#{ARGV[0]}/versions.json") res = Net::HTTP.get_response(uri) raise Error, "HTTP request failed to uri: #{uri} -- #{res.code} #{res.message}" unless res.is_a?(Net::HTTPSuccess) JSON.parse(res.body)["versions"] end end |
#version_url ⇒ Object
44 45 46 47 48 49 50 |
# File 'lib/open_gemdocs/browser.rb', line 44 def version_url if use_latest version_data.last["url"] else version_data.detect { |row| row["version"] == version }&.fetch("url") end end |