apiaryio 0.4.2 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 4a36c2e7ac9a3e128f7829c1d5ed3be33548d341
4
+ data.tar.gz: 17c8f132e9f9a61385d19fa17242267537b84b17
5
+ SHA512:
6
+ metadata.gz: 818e3ec9b05cbf51af887e9626e1b4f39cd3083e0c543cb4a0eac6d004054274e3d0c85bccbc67b104b52110c4ec2caf47a84de8da54f6fdfa1b9022fc30be91
7
+ data.tar.gz: a500c7a68dc6241c636ad20d7af3a293fb9198e69c52b0b3dcd56389f0847668ed0c9d892ea823c945c3c32f20c0f837389de10f3e5cc5b88a1125eb37d323b6
data/.rubocop_todo.yml ADDED
@@ -0,0 +1,42 @@
1
+ Lint/Eval:
2
+ Exclude:
3
+ - 'Rakefile'
4
+
5
+ Lint/UnusedBlockArgument:
6
+ Exclude:
7
+ - 'lib/apiary/command/preview.rb'
8
+
9
+ Metrics/AbcSize:
10
+ Max: 25
11
+
12
+
13
+ Metrics/LineLength:
14
+ Max: 180
15
+ Exclude:
16
+ - 'spec/*'
17
+ - 'spec/apiary/*'
18
+ - 'spec/apiary/command/*'
19
+
20
+ Metrics/MethodLength:
21
+ Max: 26
22
+
23
+ Style/ClassAndModuleChildren:
24
+ Enabled: false
25
+
26
+ Style/ClassVars:
27
+ Enabled: false
28
+
29
+ Style/Documentation:
30
+ Enabled: false
31
+
32
+ Style/RegexpLiteral:
33
+ Enabled: false
34
+ EnforcedStyle: slashes
35
+
36
+ Style/UnneededInterpolation:
37
+ Enabled: false
38
+
39
+ Style/MutableConstant:
40
+ Exclude:
41
+ - 'lib/apiary/helpers/javascript_helper.rb'
42
+ - 'spec/apiary/command/fetch_spec.rb'
data/README.md CHANGED
@@ -59,7 +59,7 @@ $ apiary help
59
59
  Commands:
60
60
  apiary fetch --api-name=API_NAME # Fetch API Description Document from API_NAME.apiary.io
61
61
  apiary help [COMMAND] # Describe available commands or one specific command
62
- apiary preview # Show API documentation in default browser
62
+ apiary preview # Show API documentation in browser or write it to file
63
63
  apiary publish --api-name=API_NAME # Publish API Description Document on docs.API_NAME.apiary.io
64
64
  apiary version # Show version
65
65
 
@@ -90,16 +90,15 @@ Usage:
90
90
  apiary preview
91
91
 
92
92
  Options:
93
- [--browser=chrome|safari|firefox] # Show API documentation in specified browser
94
- # Possible values: chrome, safari, firefox
95
- [--output=FILE] # Write generated HTML into specified file
96
- [--path=PATH] # Specify path to API Description Document. When given a directory, it will look for apiary.apib or swagger.yaml file
97
- [--api-host=HOST] # Specify apiary host
98
- [--server], [--no-server] # Start standalone web server on port 8080
99
- [--port=PORT] # Set port for --server option
100
- [--host=HOST] # Set host for --server option
101
-
102
- Show API documentation in default browser
93
+ [--browser=BROWSER] # Show API documentation in specified browser (full command is needed - e.g. `--browser='open -a safari'` in case of osx)
94
+ [--output=FILE] # Write generated HTML into specified file
95
+ [--path=PATH] # Specify path to API Description Document. When given a directory, it will look for apiary.apib or swagger.yaml file
96
+ [--api-host=HOST] # Specify apiary host
97
+ [--server], [--no-server] # Start standalone web server on port 8080
98
+ [--port=PORT] # Set port for --server option
99
+ [--host=HOST] # Set host for --server option
100
+
101
+ Show API documentation in browser or write it to file
103
102
  ```
104
103
 
105
104
  #### publish
data/Rakefile CHANGED
@@ -4,7 +4,7 @@ require 'bundler/gem_tasks'
4
4
  require 'rspec/core/rake_task'
5
5
 
6
6
  RSpec::Core::RakeTask.new(:spec)
7
- task :default => :spec
7
+ task default: :spec
8
8
 
9
9
  def gemspec
10
10
  @gemspec ||= eval(File.read('apiary.gemspec'), binding, '.gemspec')
data/apiary.gemspec CHANGED
@@ -5,33 +5,34 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
  require 'apiary/version'
6
6
 
7
7
  Gem::Specification.new do |gem|
8
- gem.name = "apiaryio"
8
+ gem.name = 'apiaryio'
9
9
  gem.version = Apiary::VERSION
10
- gem.authors = ["Apiary Ltd."]
11
- gem.email = ["team@apiary.io"]
10
+ gem.authors = ['Apiary Ltd.']
11
+ gem.email = ['team@apiary.io']
12
12
 
13
- gem.description = %q{Apiary.io CLI}
14
- gem.summary = %q{Apiary.io CLI}
15
- gem.homepage = "http://apiary.io"
16
- gem.license = "MIT"
13
+ gem.description = 'Apiary.io CLI'
14
+ gem.summary = 'Apiary.io CLI'
15
+ gem.homepage = 'http://apiary.io'
16
+ gem.license = 'MIT'
17
17
 
18
- gem.files = `git ls-files`.split($\)
19
- gem.bindir = "bin"
20
- gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
18
+ gem.files = `git ls-files`.split($OUTPUT_RECORD_SEPARATOR)
19
+ gem.bindir = 'bin'
20
+ gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
21
21
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
22
- gem.require_paths = ["lib"]
22
+ gem.require_paths = ['lib']
23
23
 
24
- gem.add_dependency "rest-client", "~> 1.8"
25
- gem.add_dependency "rack", "~> 1.6.4"
26
- gem.add_dependency "thor", "~> 0.19.1"
24
+ gem.add_runtime_dependency 'rest-client', '~> 1.8'
25
+ gem.add_runtime_dependency 'rack', '~> 1.6.4'
26
+ gem.add_runtime_dependency 'thor', '~> 0.19.1'
27
+ gem.add_runtime_dependency 'json', '~> 1.8'
28
+ gem.add_runtime_dependency 'launchy', '~> 2.4'
27
29
 
28
- gem.add_runtime_dependency "json", "~> 1.8"
29
-
30
- gem.add_development_dependency "bundler", "~> 1.12"
31
- gem.add_development_dependency "rake", "~> 10.0"
32
- gem.add_development_dependency "rspec", "~> 3.4"
33
- gem.add_development_dependency "webmock", "~> 2.0"
34
- gem.add_development_dependency "yard", "~> 0.8"
35
- gem.add_development_dependency "aruba", "~> 0.14"
36
- gem.add_development_dependency "cucumber", "~> 2.0"
30
+ gem.add_development_dependency 'bundler', '~> 1.12'
31
+ gem.add_development_dependency 'rake', '~> 10.0'
32
+ gem.add_development_dependency 'rspec', '~> 3.4'
33
+ gem.add_development_dependency 'webmock', '~> 2.0'
34
+ gem.add_development_dependency 'yard', '~> 0.8'
35
+ gem.add_development_dependency 'aruba', '~> 0.14'
36
+ gem.add_development_dependency 'cucumber', '~> 2.0'
37
+ gem.add_development_dependency 'rubocop', '~> 0.41.2'
37
38
  end
data/bin/apiary CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
- $:.unshift(File.expand_path(File.join(File.dirname(__FILE__), '..','lib')))
2
+ $LOAD_PATH.unshift(File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib')))
3
3
  require 'apiary'
4
4
 
5
5
  Apiary::CLI.start
data/circle.yml CHANGED
@@ -1,7 +1,9 @@
1
1
  dependencies:
2
2
  pre:
3
3
  - gem update bundler
4
+
4
5
  test:
5
6
  override:
7
+ - bundle exec rubocop --config .rubocop_todo.yml
6
8
  - bundle exec rspec spec
7
9
  - bundle exec cucumber
@@ -1,10 +1,10 @@
1
- Then /^the output should contain the content of file "(.*)"$/ do |filename|
1
+ Then(/^the output should contain the content of file "(.*)"$/) do |filename|
2
2
  expected = nil
3
3
  cd('../../spec/fixtures') do
4
4
  expected = File.read(filename)
5
5
  end
6
6
 
7
- actual = all_commands.map { |c| c.output }.join("\n")
7
+ actual = all_commands.map(&:output).join("\n")
8
8
 
9
9
  expect(unescape_text(actual)).to include(unescape_text(expected))
10
10
  end
@@ -4,17 +4,17 @@ Before('@needs_apiary_api_key') do
4
4
  @aruba_timeout_seconds = 45
5
5
  end
6
6
 
7
- Around('@needs_apiary_api_key') do |scenario, block|
7
+ Around('@needs_apiary_api_key') do |_scenario, block|
8
8
  # DEBUG puts "Scenario #{scenario.name} wants APIARY_API_KEY."
9
- original_value = ENV.delete("APIARY_API_KEY");
10
- ENV["APIARY_API_KEY"] = "340bda135034529ab2abf341295c3aa2" # XXX
9
+ original_value = ENV.delete('APIARY_API_KEY')
10
+ ENV['APIARY_API_KEY'] = '340bda135034529ab2abf341295c3aa2' # XXX
11
11
  block.call
12
- ENV["APIARY_API_KEY"] = original_value
12
+ ENV['APIARY_API_KEY'] = original_value
13
13
  end
14
14
 
15
- Around('@doesnt_need_apiary_api_key') do |scenario, block|
15
+ Around('@doesnt_need_apiary_api_key') do |_scenario, block|
16
16
  # DEBUG puts "Scenario #{scenario.name} doesn't want APIARY_API_KEY."
17
- original_value = ENV.delete("APIARY_API_KEY");
17
+ original_value = ENV.delete('APIARY_API_KEY')
18
18
  block.call
19
- ENV["APIARY_API_KEY"] = original_value
19
+ ENV['APIARY_API_KEY'] = original_value
20
20
  end
data/lib/apiary/agent.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Apiary
2
- USER_AGENT = "apiaryio-gem/#{Apiary::VERSION} (#{RUBY_PLATFORM}) ruby/#{RUBY_VERSION}"
2
+ USER_AGENT = "apiaryio-gem/#{Apiary::VERSION} (#{RUBY_PLATFORM}) ruby/#{RUBY_VERSION}".freeze
3
3
 
4
4
  module_function
5
5
 
data/lib/apiary/cli.rb CHANGED
@@ -6,25 +6,24 @@ require 'apiary/command/publish'
6
6
 
7
7
  module Apiary
8
8
  class CLI < Thor
9
-
10
9
  desc 'fetch', 'Fetch API Description Document from API_NAME.apiary.io'
11
- method_option :api_name, :type => :string, :required => true
12
- method_option :api_host, :type => :string, :banner => 'HOST', :desc => 'Specify apiary host'
13
- method_option :output, :type => :string, :banner => 'FILE', :desc => 'Write API Description Document into specified file'
10
+ method_option :api_name, type: :string, required: true
11
+ method_option :api_host, type: :string, banner: 'HOST', desc: 'Specify apiary host'
12
+ method_option :output, type: :string, banner: 'FILE', desc: 'Write API Description Document into specified file'
14
13
 
15
14
  def fetch
16
15
  cmd = Apiary::Command::Fetch.new options
17
16
  cmd.execute
18
17
  end
19
18
 
20
- desc 'preview', 'Show API documentation in default browser'
21
- method_option :browser, :type => :string, :enum => %w(chrome safari firefox), :banner => 'chrome|safari|firefox', :desc => 'Show API documentation in specified browser'
22
- method_option :output, :type => :string, :banner => 'FILE', :desc => 'Write generated HTML into specified file'
23
- method_option :path, :type => :string, :desc => 'Specify path to API Description Document. When given a directory, it will look for apiary.apib or swagger.yaml file'
24
- method_option :api_host, :type => :string, :banner => 'HOST', :desc => 'Specify apiary host'
25
- method_option :server, :type => :boolean, :desc => 'Start standalone web server on port 8080'
26
- method_option :port, :type => :numeric, :banner => 'PORT', :desc => 'Set port for --server option'
27
- method_option :host, :type => :string, :desc => 'Set host for --server option'
19
+ desc 'preview', 'Show API documentation in browser or write it to file'
20
+ method_option :browser, type: :string, desc: 'Show API documentation in specified browser (full command is needed - e.g. `--browser=\'open -a safari\'` in case of osx)'
21
+ method_option :output, type: :string, banner: 'FILE', desc: 'Write generated HTML into specified file'
22
+ method_option :path, type: :string, desc: 'Specify path to API Description Document. When given a directory, it will look for apiary.apib or swagger.yaml file'
23
+ method_option :api_host, type: :string, banner: 'HOST', desc: 'Specify apiary host'
24
+ method_option :server, type: :boolean, desc: 'Start standalone web server on port 8080'
25
+ method_option :port, type: :numeric, banner: 'PORT', desc: 'Set port for --server option'
26
+ method_option :host, type: :string, desc: 'Set host for --server option'
28
27
 
29
28
  def preview
30
29
  cmd = Apiary::Command::Preview.new options
@@ -32,10 +31,10 @@ module Apiary
32
31
  end
33
32
 
34
33
  desc 'publish', 'Publish API Description Document on docs.API_NAME.apiary.io'
35
- method_option :message, :type => :string, :banner => 'COMMIT_MESSAGE', :desc => 'Publish with custom commit message'
36
- method_option :path, :type => :string, :desc => 'Specify path to API Description Document. When given a directory, it will look for apiary.apib or swagger.yaml file'
37
- method_option :api_host, :type => :string, :banner => 'HOST', :desc => 'Specify apiary host'
38
- method_option :api_name, :type => :string, :required => true
34
+ method_option :message, type: :string, banner: 'COMMIT_MESSAGE', desc: 'Publish with custom commit message'
35
+ method_option :path, type: :string, desc: 'Specify path to API Description Document. When given a directory, it will look for apiary.apib or swagger.yaml file'
36
+ method_option :api_host, type: :string, banner: 'HOST', desc: 'Specify apiary host'
37
+ method_option :api_name, type: :string, required: true
39
38
 
40
39
  def publish
41
40
  cmd = Apiary::Command::Publish.new options
@@ -43,7 +42,7 @@ module Apiary
43
42
  end
44
43
 
45
44
  desc 'version', 'Show version'
46
- method_option :aliases => "-v"
45
+ method_option aliases: '-v'
47
46
 
48
47
  def version
49
48
  puts Apiary::VERSION
@@ -9,7 +9,6 @@ require 'apiary/agent'
9
9
  module Apiary::Command
10
10
  # Retrieve blueprint from apiary
11
11
  class Fetch
12
-
13
12
  def initialize(opts)
14
13
  @options = OpenStruct.new(opts)
15
14
  @options.api_host ||= 'api.apiary.io'
@@ -17,18 +16,19 @@ module Apiary::Command
17
16
  @options.api_key ||= ENV['APIARY_API_KEY']
18
17
  @options.proxy ||= ENV['http_proxy']
19
18
  @options.headers ||= {
20
- :accept => 'text/html',
21
- :content_type => 'text/plain',
22
- :authentication => "Token #{@options.api_key}",
23
- :user_agent => Apiary.user_agent
19
+ accept: 'text/html',
20
+ content_type: 'text/plain',
21
+ authentication: "Token #{@options.api_key}",
22
+ user_agent: Apiary.user_agent
24
23
  }
25
24
  end
26
25
 
27
26
  def execute
28
27
  response = fetch_from_apiary
29
- if response.instance_of? String
30
- puts response
31
- end
28
+
29
+ return unless response.instance_of? String
30
+
31
+ puts response
32
32
  end
33
33
 
34
34
  def fetch_from_apiary
@@ -5,120 +5,110 @@ require 'ostruct'
5
5
  require 'json'
6
6
  require 'tmpdir'
7
7
  require 'erb'
8
+ require 'launchy'
8
9
 
9
10
  require 'apiary/agent'
10
11
  require 'apiary/helpers'
11
12
  require 'apiary/helpers/javascript_helper'
12
13
 
13
14
  module Apiary::Command
14
- # Display preview of local blueprint file
15
- class Preview
16
- include Apiary::Helpers
17
- include Apiary::Helpers::JavascriptHelper
18
-
19
- PREVIEW_TEMPLATE_PATH = "#{File.expand_path File.dirname(__FILE__)}/../file_templates/preview.erb"
20
-
21
- BROWSERS = {
22
- :safari => 'Safari',
23
- :chrome => 'Google Chrome',
24
- :firefox => 'Firefox'
15
+ # Display preview of local blueprint file
16
+ class Preview
17
+ include Apiary::Helpers
18
+ include Apiary::Helpers::JavascriptHelper
19
+
20
+ PREVIEW_TEMPLATE_PATH = "#{File.expand_path File.dirname(__FILE__)}/../file_templates/preview.erb".freeze
21
+
22
+ attr_reader :options
23
+
24
+ def initialize(opts)
25
+ @options = OpenStruct.new(opts)
26
+ @options.path ||= '.'
27
+ @options.api_host ||= 'api.apiary.io'
28
+ @options.port ||= 8080
29
+ @options.proxy ||= ENV['http_proxy']
30
+ @options.server ||= false
31
+ @options.host ||= '127.0.0.1'
32
+ @options.headers ||= {
33
+ accept: 'text/html',
34
+ content_type: 'text/plain',
35
+ user_agent: Apiary.user_agent
25
36
  }
26
37
 
27
- attr_reader :options
28
-
29
- def initialize(opts)
30
- @options = OpenStruct.new(opts)
31
- @options.path ||= '.'
32
- @options.api_host ||= 'api.apiary.io'
33
- @options.port ||= 8080
34
- @options.proxy ||= ENV['http_proxy']
35
- @options.server ||= false
36
- @options.host ||= '127.0.0.1'
37
- @options.headers ||= {
38
- :accept => 'text/html',
39
- :content_type => 'text/plain',
40
- :user_agent => Apiary.user_agent
41
- }
42
-
43
- begin
44
- @source_path = api_description_source_path(@options.path)
45
- rescue Exception => e
46
- abort "#{e.message}"
47
- end
38
+ begin
39
+ @source_path = api_description_source_path(@options.path)
40
+ rescue StandardError => e
41
+ abort "#{e.message}"
48
42
  end
43
+ end
49
44
 
50
- def execute
51
- if @options.server
52
- server
53
- else
54
- show
55
- end
45
+ def execute
46
+ if @options.server
47
+ server
48
+ else
49
+ show
56
50
  end
51
+ end
57
52
 
58
- def server
59
- app = self.rack_app do
60
- generate
61
- end
62
-
63
- Rack::Server.start(:Port => @options.port, :Host => @options.host, :app => app)
53
+ def server
54
+ app = rack_app do
55
+ generate
64
56
  end
65
57
 
66
- def show
67
- preview_string = generate
58
+ Rack::Server.start(Port: @options.port, Host: @options.host, app: app)
59
+ end
68
60
 
69
- File.open(preview_path, 'w') do |file|
70
- file.write preview_string
71
- file.flush
72
- @options.output ? write_generated_path(file.path, @options.output) : open_generated_page(file.path)
73
- end
74
- end
61
+ def show
62
+ preview_string = generate
75
63
 
76
- def browser
77
- BROWSERS[@options.browser] || nil
64
+ File.open(preview_path, 'w') do |file|
65
+ file.write preview_string
66
+ file.flush
67
+ @options.output ? write_generated_path(file.path, @options.output) : open_generated_page(file.path)
78
68
  end
69
+ end
79
70
 
80
- def rack_app(&block)
81
- Rack::Builder.new do
82
- run lambda { |env| [200, Hash.new, [block.call]] }
83
- end
71
+ def rack_app
72
+ Rack::Builder.new do
73
+ run ->(env) { [200, {}, [yield]] }
84
74
  end
75
+ end
85
76
 
86
- # TODO: add linux and windows systems
87
- def open_generated_page(path)
88
- exec "open #{browser_options} #{path}"
89
- end
77
+ def open_generated_page(path)
78
+ def_browser = ENV['BROWSER']
79
+ ENV['BROWSER'] = @options.browser
90
80
 
91
- def write_generated_path(path, outfile)
92
- File.write(outfile, File.read(path))
81
+ Launchy.open(path) do |e|
82
+ puts "Attempted to open `#{path}` and failed because #{e}"
93
83
  end
84
+ ENV['BROWSER'] = def_browser
85
+ end
94
86
 
95
- def generate
96
- template = load_preview_template
87
+ def write_generated_path(path, outfile)
88
+ File.write(outfile, File.read(path))
89
+ end
97
90
 
98
- data = {
99
- title: File.basename(@source_path, '.*'),
100
- source: api_description_source(@source_path)
101
- }
91
+ def generate
92
+ template = load_preview_template
102
93
 
103
- template.result(binding)
104
- end
105
-
106
- def preview_path
107
- basename = File.basename(@source_path, '.*')
108
- temp = Dir.tmpdir
109
- "#{temp}/#{basename}-preview.html"
110
- end
94
+ data = {
95
+ title: File.basename(@source_path, '.*'),
96
+ source: api_description_source(@source_path)
97
+ }
111
98
 
112
- def load_preview_template
113
- file = File.open(PREVIEW_TEMPLATE_PATH, 'r')
114
- template_string = file.read
115
- ERB.new(template_string)
116
- end
99
+ template.result(binding)
100
+ end
117
101
 
118
- private
102
+ def preview_path
103
+ basename = File.basename(@source_path, '.*')
104
+ temp = Dir.tmpdir
105
+ "#{temp}/#{basename}-preview.html"
106
+ end
119
107
 
120
- def browser_options
121
- "-a #{BROWSERS[@options.browser.to_sym]}" if @options.browser
122
- end
108
+ def load_preview_template
109
+ file = File.open(PREVIEW_TEMPLATE_PATH, 'r')
110
+ template_string = file.read
111
+ ERB.new(template_string)
123
112
  end
113
+ end
124
114
  end
@@ -8,80 +8,79 @@ require 'apiary/agent'
8
8
  require 'apiary/helpers'
9
9
 
10
10
  module Apiary::Command
11
- # Display preview of local blueprint file
12
- class Publish
13
- include Apiary::Helpers
11
+ # Display preview of local blueprint file
12
+ class Publish
13
+ include Apiary::Helpers
14
14
 
15
- attr_reader :options
15
+ attr_reader :options
16
16
 
17
- def initialize(opts)
18
- @options = OpenStruct.new(opts)
19
- @options.path ||= '.'
20
- @options.api_host ||= 'api.apiary.io'
21
- @options.api_name ||= false
22
- @options.api_key ||= ENV['APIARY_API_KEY']
23
- @options.proxy ||= ENV['http_proxy']
24
- @options.headers ||= {
25
- :accept => 'text/html',
26
- :content_type => 'text/plain',
27
- :authentication => "Token #{@options.api_key}",
28
- :user_agent => Apiary.user_agent
29
- }
30
- @options.message ||= 'Saving API Description Document from apiary-client'
17
+ def initialize(opts)
18
+ @options = OpenStruct.new(opts)
19
+ @options.path ||= '.'
20
+ @options.api_host ||= 'api.apiary.io'
21
+ @options.api_name ||= false
22
+ @options.api_key ||= ENV['APIARY_API_KEY']
23
+ @options.proxy ||= ENV['http_proxy']
24
+ @options.headers ||= {
25
+ accept: 'text/html',
26
+ content_type: 'text/plain',
27
+ authentication: "Token #{@options.api_key}",
28
+ user_agent: Apiary.user_agent
29
+ }
30
+ @options.message ||= 'Saving API Description Document from apiary-client'
31
31
 
32
- begin
33
- @source_path = api_description_source_path(@options.path)
34
- rescue Exception => e
35
- abort "#{e.message}"
36
- end
37
- end
38
-
39
- def execute
40
- publish_on_apiary
32
+ begin
33
+ @source_path = api_description_source_path(@options.path)
34
+ rescue StandardError => e
35
+ abort "#{e.message}"
41
36
  end
37
+ end
42
38
 
43
- def publish_on_apiary
44
- unless @options.api_name
45
- abort 'Please provide an api-name option (subdomain part from your http://docs.<api-name>.apiary.io/)'
46
- end
39
+ def execute
40
+ publish_on_apiary
41
+ end
47
42
 
48
- unless @options.api_key
49
- abort 'API key must be provided through environment variable APIARY_API_KEY. Please go to https://login.apiary.io/tokens to obtain it.'
50
- end
43
+ def publish_on_apiary
44
+ unless @options.api_name
45
+ abort 'Please provide an api-name option (subdomain part from your http://docs.<api-name>.apiary.io/)'
46
+ end
51
47
 
52
- query_apiary
48
+ unless @options.api_key
49
+ abort 'API key must be provided through environment variable APIARY_API_KEY. \Please go to https://login.apiary.io/tokens to obtain it.'
53
50
  end
54
51
 
55
- def query_apiary
56
- url = "https://#{@options.api_host}/blueprint/publish/#{@options.api_name}"
57
- source = api_description_source(@source_path)
52
+ query_apiary
53
+ end
58
54
 
59
- unless source.nil?
60
- data = {
61
- :code => source,
62
- :messageToSave => @options.message
63
- }
55
+ def query_apiary
56
+ url = "https://#{@options.api_host}/blueprint/publish/#{@options.api_name}"
57
+ source = api_description_source(@source_path)
64
58
 
65
- RestClient.proxy = @options.proxy
59
+ return if source.nil?
60
+ data = {
61
+ code: source,
62
+ messageToSave: @options.message
63
+ }
66
64
 
67
- begin
68
- RestClient.post url, data, @options.headers
69
- rescue RestClient::BadRequest => e
70
- err = JSON.parse e.response
71
- if err.has_key? 'parserError'
72
- abort "#{err['message']}: #{err['parserError']}"
73
- else
74
- abort "Apiary service responded with an error: #{err['message']}"
75
- end
76
- rescue RestClient::Exception => e
77
- err = JSON.parse e.response
78
- if err.has_key? 'message'
79
- abort "Apiary service responded with an error: #{err['message']}"
80
- else
81
- abort "Apiary service responded with an error: #{e.message}"
82
- end
83
- end
65
+ RestClient.proxy = @options.proxy
66
+
67
+ begin
68
+ RestClient.post url, data, @options.headers
69
+ rescue RestClient::BadRequest => e
70
+ err = JSON.parse e.response
71
+ if err.key? 'parserError'
72
+ abort "#{err['message']}: #{err['parserError']}"
73
+ else
74
+ abort "Apiary service responded with an error: #{err['message']}"
75
+ end
76
+ rescue RestClient::Exception => e
77
+ err = JSON.parse e.response
78
+ if err.key? 'message'
79
+ abort "Apiary service responded with an error: #{err['message']}"
80
+ else
81
+ abort "Apiary service responded with an error: #{e.message}"
84
82
  end
85
83
  end
86
84
  end
85
+ end
87
86
  end
@@ -20,26 +20,26 @@ module Apiary
20
20
  protected
21
21
 
22
22
  def choose_one(path)
23
- apibPath = api_blueprint(path)
24
- swaggerPath = swagger(path)
23
+ apib_path = api_blueprint(path)
24
+ swagger_path = swagger(path)
25
25
 
26
- if apibPath && swaggerPath
26
+ if apib_path && swagger_path
27
27
  warn 'WARNING: Both apiary.apib and swagger.yaml are present. The apiary.apib file will be used. To override this selection specify path to desired file'
28
28
  end
29
29
 
30
- apibPath || swaggerPath
30
+ apib_path || swagger_path
31
31
  end
32
32
 
33
33
  def api_blueprint(path)
34
34
  source_path = File.join(path, 'apiary.apib')
35
35
  return source_path if File.exist? source_path
36
- return nil
36
+ nil
37
37
  end
38
38
 
39
39
  def swagger(path)
40
40
  source_path = File.join(path, 'swagger.yaml')
41
41
  return source_path if File.exist? source_path
42
- return nil
42
+ nil
43
43
  end
44
44
  end
45
45
  end
@@ -1,29 +1,25 @@
1
1
  # encoding: utf-8
2
- module Apiary
3
- module Helpers
4
- module JavascriptHelper
5
- JS_ESCAPE_MAP = {
6
- '\\' => '\\\\',
7
- '</' => '<\/',
8
- "\r\n" => '\n',
9
- "\n" => '\n',
10
- "\r" => '\n',
11
- '"' => '\\"',
12
- "'" => "\\'"
13
- }
2
+ module Apiary::Helpers::JavascriptHelper
3
+ JS_ESCAPE_MAP = {
4
+ '\\' => '\\\\',
5
+ '</' => '<\/',
6
+ "\r\n" => '\n',
7
+ "\n" => '\n',
8
+ "\r" => '\n',
9
+ '"' => '\\"',
10
+ "'" => "\\'"
11
+ }
14
12
 
15
- JS_ESCAPE_MAP["\342\200\250".force_encoding(Encoding::UTF_8).encode!] = '&#x2028;'
16
- JS_ESCAPE_MAP["\342\200\251".force_encoding(Encoding::UTF_8).encode!] = '&#x2029;'
13
+ JS_ESCAPE_MAP["\342\200\250".force_encoding(Encoding::UTF_8).encode!] = '&#x2028;'
14
+ JS_ESCAPE_MAP["\342\200\251".force_encoding(Encoding::UTF_8).encode!] = '&#x2029;'
17
15
 
18
- def escape_javascript(javascript)
19
- if javascript
20
- javascript.gsub(/(\\|<\/|\r\n|\342\200\250|\342\200\251|[\n\r"'])/u) {|match| JS_ESCAPE_MAP[match] }
21
- else
22
- ''
23
- end
24
- end
25
-
26
- alias_method :j, :escape_javascript
16
+ def escape_javascript(javascript)
17
+ if javascript
18
+ javascript.gsub(/(\\|<\/|\r\n|\342\200\250|\342\200\251|[\n\r"'])/u) { |match| JS_ESCAPE_MAP[match] }
19
+ else
20
+ ''
27
21
  end
28
22
  end
23
+
24
+ alias j escape_javascript
29
25
  end
@@ -1,3 +1,3 @@
1
1
  module Apiary
2
- VERSION = "0.4.2"
2
+ VERSION = '0.5.0'.freeze
3
3
  end
@@ -1,40 +1,37 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Apiary::CLI do
4
-
5
4
  # Don't let Thor fold or truncate lines
6
5
  ENV['THOR_COLUMNS'] = '1000'
7
6
 
8
7
  # The documentation that ought to match the code
9
- READMETEXT = open("README.md") {|f| f.read}
8
+ READMETEXT = open('README.md', &:read)
10
9
 
11
10
  it 'has help' do
12
- help = open('|ruby bin/apiary help') {|f| f.read}
13
- expect(help).to include("Commands:")
11
+ help = open('|ruby bin/apiary help', &:read)
12
+ expect(help).to include('Commands:')
14
13
  expect(help.lines.count).to be >= 5
15
14
  end
16
15
 
17
16
  it 'has README.md' do
18
- expect(READMETEXT).to include("apiary help")
17
+ expect(READMETEXT).to include('apiary help')
19
18
  expect(READMETEXT.lines.count).to be >= 5
20
19
  end
21
20
 
22
21
  # Confirm that all subcommands are documented, verbatim
23
- ([""] + (open('|ruby bin/apiary help', 'r') {|f| f.readlines}
24
- .map {|l| /^ +apiary /.match(l)?l:nil}
25
- .map {|l| /^ *apiary help/.match(l)?nil:l}
22
+ ([''] + (open('|ruby bin/apiary help', 'r', &:readlines)
23
+ .map { |l| /^ +apiary / =~ l ? l : nil }
24
+ .map { |l| /^ *apiary help/ =~ l ? nil : l }
26
25
  .compact
27
- .map {|l| /^ *apiary ([^ ]*)/.match(l)[1] + " " }
26
+ .map { |l| /^ *apiary ([^ ]*)/.match(l)[1] + ' ' }
28
27
  )
29
28
  ).each do |cmd|
30
-
31
29
  it "includes help #{cmd}in README.md" do
32
- helptext = open("|ruby bin/apiary help #{cmd}") {|f| f.read}
30
+ helptext = open("|ruby bin/apiary help #{cmd}", &:read)
33
31
 
34
32
  expect(helptext).to include("apiary #{cmd.strip}")
35
33
  expect(READMETEXT).to include("apiary #{cmd.strip}")
36
34
  expect(READMETEXT).to include(helptext)
37
-
38
35
  end
39
36
  end
40
37
  end
@@ -1,7 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Apiary::Command::Fetch do
4
-
5
4
  it 'pass command without params' do
6
5
  opts = {}
7
6
  command = Apiary::Command::Fetch.new(opts)
@@ -9,9 +8,8 @@ describe Apiary::Command::Fetch do
9
8
  end
10
9
 
11
10
  it 'pass command only with api_name', api_key: true do
12
-
13
11
  opts = {
14
- :api_name => 'test_api'
12
+ api_name: 'test_api'
15
13
  }
16
14
 
17
15
  command = Apiary::Command::Fetch.new(opts)
@@ -19,12 +17,11 @@ describe Apiary::Command::Fetch do
19
17
  end
20
18
 
21
19
  it 'check request for fetch to apiary' do
22
-
23
- API_NAME = 'test_api'
20
+ API_NAME = 'test_api'.freeze
24
21
 
25
22
  opts = {
26
- :api_name => API_NAME,
27
- :api_key => '1234567890'
23
+ api_name: API_NAME,
24
+ api_key: '1234567890'
28
25
  }
29
26
  command = Apiary::Command::Fetch.new(opts)
30
27
 
@@ -34,7 +31,7 @@ describe Apiary::Command::Fetch do
34
31
  "code": "FORMAT: 1A\nHOST: http://www.testing.com\n\n# Notes API test 123\nNotes API is a *short texts saving* service similar to its physical paper presence on your table.\n\n# Group Notes\nNotes related resources of the **Notes API**\n\n## Notes Collection [/notes]\n### List all Notes [GET]\n+ Response 200 (application/json)\n\n [{\n \"id\": 1, \"title\": \"Jogging in park\"\n }, {\n \"id\": 2, \"title\": \"Pick-up posters from post-office\"\n }]\n\n### Create a Note [POST]\n+ Request (application/json)\n\n { \"title\": \"Buy cheese and bread for breakfast.\" }\n\n+ Response 201 (application/json)\n\n { \"id\": 3, \"title\": \"Buy cheese and bread for breakfast.\" }\n\n## Note [/notes/{id}]\nA single Note object with all its details\n\n+ Parameters\n + id (required, number, `1`) ... Numeric `id` of the Note to perform action with. Has example value.\n\n### Retrieve a Note [GET]\n+ Response 200 (application/json)\n\n + Header\n\n X-My-Header: The Value\n\n + Body\n\n { \"id\": 2, \"title\": \"Pick-up posters from post-office\" }\n\n### Remove a Note [DELETE]\n+ Response 204\n"
35
32
  }'
36
33
 
37
- BLUEPRINT_EXAMPLE = %Q{FORMAT: 1A
34
+ BLUEPRINT_EXAMPLE = %{FORMAT: 1A
38
35
  HOST: http://www.testing.com
39
36
 
40
37
  # Notes API test 123
@@ -83,7 +80,7 @@ A single Note object with all its details
83
80
  + Response 204
84
81
  }
85
82
 
86
- stub_request(:get, "https://api.apiary.io/blueprint/get/#{API_NAME}").to_return(:status => 200, :body => BODY_EXAMPLE, :headers => { 'Content-Type' => 'text/plain' })
83
+ stub_request(:get, "https://api.apiary.io/blueprint/get/#{API_NAME}").to_return(status: 200, body: BODY_EXAMPLE, headers: { 'Content-Type' => 'text/plain' })
87
84
  expect(command.fetch_from_apiary).to eq(BLUEPRINT_EXAMPLE)
88
85
  end
89
86
  end
@@ -1,7 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Apiary::Command::Preview do
4
-
5
4
  let(:command) do
6
5
  opts = {
7
6
  path: "#{File.expand_path File.dirname(__FILE__)}/../../fixtures/apiary.apib"
@@ -10,15 +9,14 @@ describe Apiary::Command::Preview do
10
9
  end
11
10
 
12
11
  it 'check tmp path if contains filename' do
13
- expect(command.preview_path()).to end_with('apiary-preview.html')
12
+ expect(command.preview_path).to end_with('apiary-preview.html')
14
13
  end
15
14
 
16
15
  it 'shoud contain html5 doctype' do
17
- expect(command.generate()).to include('<!DOCTYPE html>')
16
+ expect(command.generate).to include('<!DOCTYPE html>')
18
17
  end
19
18
 
20
19
  it 'should contain embed javascript' do
21
- expect(command.generate()).to include('https://api.apiary.io/seeds/embed.js')
20
+ expect(command.generate).to include('https://api.apiary.io/seeds/embed.js')
22
21
  end
23
-
24
22
  end
@@ -3,11 +3,9 @@ require 'spec_helper'
3
3
  describe Apiary::Command::Publish do
4
4
  context 'when constructed without a message' do
5
5
  let(:message) do
6
- Apiary::Command::Publish.new({
7
- :api_name => 'myapi',
8
- :path => 'spec/fixtures/apiary.apib',
9
- :api_key => 'testkey'
10
- }).options.message
6
+ Apiary::Command::Publish.new(api_name: 'myapi',
7
+ path: 'spec/fixtures/apiary.apib',
8
+ api_key: 'testkey').options.message
11
9
  end
12
10
 
13
11
  it 'uses the default message' do
@@ -17,12 +15,10 @@ describe Apiary::Command::Publish do
17
15
 
18
16
  context 'when constructed with a message' do
19
17
  let(:message) do
20
- Apiary::Command::Publish.new({
21
- :api_name => 'myapi',
22
- :message => 'Custom message',
23
- :path => 'spec/fixtures/apiary.apib',
24
- :api_key => 'testkey'
25
- }).options.message
18
+ Apiary::Command::Publish.new(api_name: 'myapi',
19
+ message: 'Custom message',
20
+ path: 'spec/fixtures/apiary.apib',
21
+ api_key: 'testkey').options.message
26
22
  end
27
23
 
28
24
  it 'stores the message in the opts' do
@@ -34,17 +30,15 @@ describe Apiary::Command::Publish do
34
30
  context 'when calling with a custom message' do
35
31
  before(:all) do
36
32
  WebMock.stub_request(:post, 'https://api.apiary.io/blueprint/publish/myapi')
37
- Apiary::Command::Publish.new({
38
- :api_name => 'myapi',
39
- :message => 'Custom message',
40
- :path => 'spec/fixtures/apiary.apib',
41
- :api_key => 'testkey'
42
- }).execute
33
+ Apiary::Command::Publish.new(api_name: 'myapi',
34
+ message: 'Custom message',
35
+ path: 'spec/fixtures/apiary.apib',
36
+ api_key: 'testkey').execute
43
37
  end
44
38
 
45
39
  it 'sends the message when publishing' do
46
- expect(WebMock).to have_requested(:post, 'https://api.apiary.io/blueprint/publish/myapi').
47
- with {|request| request.body.include? 'messageToSave=Custom%20message'}
40
+ expect(WebMock).to have_requested(:post, 'https://api.apiary.io/blueprint/publish/myapi')
41
+ .with { |request| request.body.include? 'messageToSave=Custom%20message' }
48
42
  end
49
43
  end
50
44
  end
@@ -7,14 +7,14 @@ describe Apiary::Helpers do
7
7
  context 'path doesn\'t exists' do
8
8
  it 'should raise error saying that Directory doesn\'t exists' do
9
9
  path = 'spec/fixtures/invalid_path'
10
- expect { api_description_source_path(path)}.to raise_error(/Invalid path/)
10
+ expect { api_description_source_path(path) }.to raise_error(/Invalid path/)
11
11
  end
12
12
  end
13
13
 
14
14
  context 'missing file is in path' do
15
15
  it 'should raise error saying that file doesn\'t exists' do
16
16
  path = 'spec/fixtures/only_api_blueprint/swagger.yaml'
17
- expect { api_description_source_path(path)}.to raise_error(/Invalid path/)
17
+ expect { api_description_source_path(path) }.to raise_error(/Invalid path/)
18
18
  end
19
19
  end
20
20
 
@@ -43,7 +43,7 @@ describe Apiary::Helpers do
43
43
  context 'empty folder' do
44
44
  it 'should raise error saying that file doesn\'t exists' do
45
45
  path = 'spec/fixtures/empty_folder'
46
- expect { api_description_source_path(path)}.to raise_error('No API Description Document found')
46
+ expect { api_description_source_path(path) }.to raise_error('No API Description Document found')
47
47
  end
48
48
  end
49
49
 
data/spec/spec_helper.rb CHANGED
@@ -1,13 +1,13 @@
1
1
  $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2
2
 
3
3
  if RUBY_VERSION < '1.9.3'
4
- ::Dir.glob(::File.expand_path('../support/**/*.rb', __FILE__)).each { |f| require File.join(File.dirname(f), File.basename(f, '.rb')) }
4
+ ::Dir.glob(::File.expand_path('../support/**/*.rb', __FILE__)).each { |f| require File.join(File.dirname(f), File.basename(f, '.rb')) }
5
5
  else
6
- ::Dir.glob(::File.expand_path('../support/**/*.rb', __FILE__)).each { |f| require_relative f }
6
+ ::Dir.glob(::File.expand_path('../support/**/*.rb', __FILE__)).each { |f| require_relative f }
7
7
  end
8
8
 
9
9
  require 'apiary'
10
10
 
11
11
  RSpec.configure do |config|
12
- config.filter_run_excluding :api_key => true if ENV['APIARY_API_KEY']
12
+ config.filter_run_excluding api_key: true if ENV['APIARY_API_KEY']
13
13
  end
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: apiaryio
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
5
- prerelease:
4
+ version: 0.5.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Apiary Ltd.
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2016-05-11 00:00:00.000000000 Z
11
+ date: 2016-07-21 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rest-client
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
@@ -30,7 +27,6 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rack
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ~>
36
32
  - !ruby/object:Gem::Version
@@ -38,7 +34,6 @@ dependencies:
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - ~>
44
39
  - !ruby/object:Gem::Version
@@ -46,7 +41,6 @@ dependencies:
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: thor
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
45
  - - ~>
52
46
  - !ruby/object:Gem::Version
@@ -54,7 +48,6 @@ dependencies:
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
52
  - - ~>
60
53
  - !ruby/object:Gem::Version
@@ -62,7 +55,6 @@ dependencies:
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: json
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
59
  - - ~>
68
60
  - !ruby/object:Gem::Version
@@ -70,15 +62,27 @@ dependencies:
70
62
  type: :runtime
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
66
  - - ~>
76
67
  - !ruby/object:Gem::Version
77
68
  version: '1.8'
69
+ - !ruby/object:Gem::Dependency
70
+ name: launchy
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: '2.4'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ version: '2.4'
78
83
  - !ruby/object:Gem::Dependency
79
84
  name: bundler
80
85
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
86
  requirements:
83
87
  - - ~>
84
88
  - !ruby/object:Gem::Version
@@ -86,7 +90,6 @@ dependencies:
86
90
  type: :development
87
91
  prerelease: false
88
92
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
93
  requirements:
91
94
  - - ~>
92
95
  - !ruby/object:Gem::Version
@@ -94,7 +97,6 @@ dependencies:
94
97
  - !ruby/object:Gem::Dependency
95
98
  name: rake
96
99
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
100
  requirements:
99
101
  - - ~>
100
102
  - !ruby/object:Gem::Version
@@ -102,7 +104,6 @@ dependencies:
102
104
  type: :development
103
105
  prerelease: false
104
106
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
107
  requirements:
107
108
  - - ~>
108
109
  - !ruby/object:Gem::Version
@@ -110,7 +111,6 @@ dependencies:
110
111
  - !ruby/object:Gem::Dependency
111
112
  name: rspec
112
113
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
114
  requirements:
115
115
  - - ~>
116
116
  - !ruby/object:Gem::Version
@@ -118,7 +118,6 @@ dependencies:
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
121
  requirements:
123
122
  - - ~>
124
123
  - !ruby/object:Gem::Version
@@ -126,7 +125,6 @@ dependencies:
126
125
  - !ruby/object:Gem::Dependency
127
126
  name: webmock
128
127
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
128
  requirements:
131
129
  - - ~>
132
130
  - !ruby/object:Gem::Version
@@ -134,7 +132,6 @@ dependencies:
134
132
  type: :development
135
133
  prerelease: false
136
134
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
135
  requirements:
139
136
  - - ~>
140
137
  - !ruby/object:Gem::Version
@@ -142,7 +139,6 @@ dependencies:
142
139
  - !ruby/object:Gem::Dependency
143
140
  name: yard
144
141
  requirement: !ruby/object:Gem::Requirement
145
- none: false
146
142
  requirements:
147
143
  - - ~>
148
144
  - !ruby/object:Gem::Version
@@ -150,7 +146,6 @@ dependencies:
150
146
  type: :development
151
147
  prerelease: false
152
148
  version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
149
  requirements:
155
150
  - - ~>
156
151
  - !ruby/object:Gem::Version
@@ -158,7 +153,6 @@ dependencies:
158
153
  - !ruby/object:Gem::Dependency
159
154
  name: aruba
160
155
  requirement: !ruby/object:Gem::Requirement
161
- none: false
162
156
  requirements:
163
157
  - - ~>
164
158
  - !ruby/object:Gem::Version
@@ -166,7 +160,6 @@ dependencies:
166
160
  type: :development
167
161
  prerelease: false
168
162
  version_requirements: !ruby/object:Gem::Requirement
169
- none: false
170
163
  requirements:
171
164
  - - ~>
172
165
  - !ruby/object:Gem::Version
@@ -174,7 +167,6 @@ dependencies:
174
167
  - !ruby/object:Gem::Dependency
175
168
  name: cucumber
176
169
  requirement: !ruby/object:Gem::Requirement
177
- none: false
178
170
  requirements:
179
171
  - - ~>
180
172
  - !ruby/object:Gem::Version
@@ -182,11 +174,24 @@ dependencies:
182
174
  type: :development
183
175
  prerelease: false
184
176
  version_requirements: !ruby/object:Gem::Requirement
185
- none: false
186
177
  requirements:
187
178
  - - ~>
188
179
  - !ruby/object:Gem::Version
189
180
  version: '2.0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: rubocop
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ~>
186
+ - !ruby/object:Gem::Version
187
+ version: 0.41.2
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ~>
193
+ - !ruby/object:Gem::Version
194
+ version: 0.41.2
190
195
  description: Apiary.io CLI
191
196
  email:
192
197
  - team@apiary.io
@@ -197,6 +202,7 @@ extra_rdoc_files: []
197
202
  files:
198
203
  - .gitignore
199
204
  - .rspec
205
+ - .rubocop_todo.yml
200
206
  - .travis.yml
201
207
  - Dockerfile
202
208
  - Gemfile
@@ -243,27 +249,26 @@ files:
243
249
  homepage: http://apiary.io
244
250
  licenses:
245
251
  - MIT
252
+ metadata: {}
246
253
  post_install_message:
247
254
  rdoc_options: []
248
255
  require_paths:
249
256
  - lib
250
257
  required_ruby_version: !ruby/object:Gem::Requirement
251
- none: false
252
258
  requirements:
253
- - - ! '>='
259
+ - - '>='
254
260
  - !ruby/object:Gem::Version
255
261
  version: '0'
256
262
  required_rubygems_version: !ruby/object:Gem::Requirement
257
- none: false
258
263
  requirements:
259
- - - ! '>='
264
+ - - '>='
260
265
  - !ruby/object:Gem::Version
261
266
  version: '0'
262
267
  requirements: []
263
268
  rubyforge_project:
264
- rubygems_version: 1.8.23
269
+ rubygems_version: 2.0.14
265
270
  signing_key:
266
- specification_version: 3
271
+ specification_version: 4
267
272
  summary: Apiary.io CLI
268
273
  test_files:
269
274
  - features/fetch.feature