apiaryio 0.4.2 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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