devcenter 0.0.6 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
data/lib/devcenter.rb CHANGED
@@ -1,6 +1,8 @@
1
1
  require_relative 'devcenter/version'
2
+ require_relative 'devcenter/gem_version_checker'
2
3
  require_relative 'devcenter/logger'
3
4
  require_relative 'devcenter/helpers'
5
+ require_relative 'devcenter/client'
4
6
  require_relative 'devcenter/previewer'
5
7
  require_relative 'devcenter/coderay_extensions'
6
8
  require_relative 'devcenter/cli'
@@ -0,0 +1,23 @@
1
+ require 'singleton'
2
+ require 'excon'
3
+
4
+ module Devcenter
5
+
6
+ module Client
7
+ include Devcenter::Helpers
8
+ extend self
9
+
10
+ def head(args)
11
+ client.head(args)
12
+ end
13
+
14
+ def get(args)
15
+ client.get(args)
16
+ end
17
+
18
+ def client
19
+ @client ||= Excon.new(devcenter_base_url, :headers => { 'User-agent' => 'DevCenterCLI'})
20
+ end
21
+ end
22
+
23
+ end
@@ -11,6 +11,11 @@ module Devcenter::Commands
11
11
  include Devcenter::Helpers
12
12
 
13
13
  def self.run(*args)
14
+ if Devcenter::GemVersionChecker.new_version_available?
15
+ say "devcenter has a new version available, please update with: gem install devcenter"
16
+ return unless agree('Continue executing your command? (yes/no)')
17
+ end
18
+
14
19
  command = self.new(*args)
15
20
  end
16
21
 
@@ -31,7 +36,7 @@ module Devcenter::Commands
31
36
 
32
37
  def article_not_found!(slug)
33
38
  message = ["No #{slug} article found."]
34
- suggestions = JSON.parse(Excon.get(search_api_url, :query => { :q => slug, :source => 'devcenter-cli' }).body)['devcenter']
39
+ suggestions = JSON.parse(Devcenter::Client.get(:path => search_api_path, :query => { :q => slug, :source => 'devcenter-cli' }).body)['devcenter']
35
40
  suggestions.select!{ |s| article_url?(s['full_url']) }
36
41
  suggestions.each{ |s| s['slug'] = slug_from_article_url(s['full_url']) }
37
42
  unless suggestions.empty?
@@ -14,13 +14,13 @@ module Devcenter::Commands
14
14
  end
15
15
 
16
16
  def run
17
- url = article_url(@slug)
18
- log "Connecting to #{url}"
19
- head = Excon.head(url)
17
+ path = article_path(@slug)
18
+ log "Connecting to #{path}"
19
+ head = Devcenter::Client.head(:path => path)
20
20
  case head.status
21
21
  when 200
22
22
  log "Page found, opening"
23
- launchy = Launchy.open(url)
23
+ launchy = Launchy.open(devcenter_base_url + path)
24
24
  launchy.join if launchy.respond_to?(:join)
25
25
  when 301, 302
26
26
  say "Redirected to #{head.headers['Location']}"
@@ -15,7 +15,7 @@ module Devcenter::Commands
15
15
  end
16
16
 
17
17
  def run
18
- response = Excon.get(article_api_url(@slug))
18
+ response = Devcenter::Client.get(path: article_api_path(@slug))
19
19
  article_received = response.status == 200 && JSON.parse(response.body)['article'] && JSON.parse(response.body)['article']['id']
20
20
  article_not_found!(@slug) unless article_received
21
21
 
@@ -0,0 +1,22 @@
1
+ require_relative 'version'
2
+
3
+ module Devcenter
4
+
5
+ module GemVersionChecker
6
+
7
+ def self.new_version_available?
8
+ remote = last_remote_version
9
+ remote && (Gem::Version.new(remote) > Gem::Version.new(Devcenter::VERSION))
10
+ end
11
+
12
+ def self.last_remote_version
13
+ json = Excon.get('https://rubygems.org/api/v1/versions/devcenter.json').body
14
+ versions = JSON.parse(json).map{ |v| v['number'] }
15
+ versions.sort{ |a,b| Gem::Version.new(a) <=> Gem::Version.new(b) }.last
16
+ rescue
17
+ nil
18
+ end
19
+
20
+ end
21
+
22
+ end
@@ -4,16 +4,16 @@ module Devcenter::Helpers
4
4
  ENV['DEVCENTER_BASE_URL'] || 'https://devcenter.heroku.com'
5
5
  end
6
6
 
7
- def article_url(slug)
8
- "#{devcenter_base_url}/articles/#{slug}"
7
+ def article_path(slug)
8
+ "/articles/#{slug}"
9
9
  end
10
10
 
11
- def article_api_url(slug)
12
- "#{article_url(slug)}.json"
11
+ def article_api_path(slug)
12
+ "#{article_path(slug)}.json"
13
13
  end
14
14
 
15
- def search_api_url
16
- "#{devcenter_base_url}/articles.json"
15
+ def search_api_path
16
+ "/articles.json"
17
17
  end
18
18
 
19
19
  def article_url?(url)
@@ -1,3 +1,3 @@
1
1
  module Devcenter
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.8"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devcenter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-02-08 00:00:00.000000000 Z
13
+ date: 2013-02-12 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: listen
@@ -238,12 +238,14 @@ files:
238
238
  - devcenter.gemspec
239
239
  - lib/devcenter.rb
240
240
  - lib/devcenter/cli.rb
241
+ - lib/devcenter/client.rb
241
242
  - lib/devcenter/coderay_extensions.rb
242
243
  - lib/devcenter/commands.rb
243
244
  - lib/devcenter/commands/base.rb
244
245
  - lib/devcenter/commands/open.rb
245
246
  - lib/devcenter/commands/preview.rb
246
247
  - lib/devcenter/commands/pull.rb
248
+ - lib/devcenter/gem_version_checker.rb
247
249
  - lib/devcenter/helpers.rb
248
250
  - lib/devcenter/layout.html
249
251
  - lib/devcenter/logger.rb