swarker 0.1.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 9b48d7be2b836eaf4dcd1078299761b82b3fd505
4
+ data.tar.gz: c2ae18d917a0a3c8f95c9b0285de4ef3cb6cb6b6
5
+ SHA512:
6
+ metadata.gz: deaa703f3ed3512350c5a65ae42b997852b5cc8beb6cc0d88528a6d213de9bd3df2ac8c77f8a5f40cdaae949a4778ea0b6699778ccb668eb76417ba4808275d3
7
+ data.tar.gz: 68c210326c20e3f3ee0c8c8679fb7bb3afd3eee39e7cebdbe6cb18b7d1fd3e3b470e5db90ccc3073991761bf700fb09822784b5fd7d5e47c5aac963adf239ea5
@@ -0,0 +1,13 @@
1
+ root = true
2
+
3
+ [*]
4
+ indent_style = space
5
+ indent_size = 2
6
+
7
+ end_of_line = lf
8
+ charset = utf-8
9
+ trim_trailing_whitespace = true
10
+ insert_final_newline = true
11
+
12
+ [*.md]
13
+ trim_trailing_whitespace = false
@@ -0,0 +1,12 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+
11
+ # Gem specifics
12
+ /public
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --require spec_helper
@@ -0,0 +1,8 @@
1
+ Style/Documentation:
2
+ Enabled: false
3
+ Metrics/AbcSize:
4
+ Max: 20
5
+ Metrics/LineLength:
6
+ Max: 120
7
+ Metrics/MethodLength:
8
+ Max: 20
@@ -0,0 +1,9 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ - 2.0.0
5
+ - 2.1.5
6
+ - 2.2.2
7
+ before_install: gem install bundler -v 1.10.6
8
+ notifications:
9
+ slack: evilmartians:VdjfoqWhab5dlV1v9FQzNn76
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in swarker.gemspec
4
+ gemspec
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2015 Sergey Ponomarev
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,44 @@
1
+ # Swarker
2
+
3
+ Converts lurker schemas to swagger schema
4
+
5
+ [![Build Status][BS img]][Build Status]
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ ```ruby
12
+ gem 'swarker'
13
+ ```
14
+
15
+ And then execute:
16
+
17
+ $ bundle
18
+
19
+ Or install it yourself as:
20
+
21
+ $ gem install swarker
22
+
23
+ ## Usage
24
+
25
+ TODO: Write usage instructions here
26
+
27
+ ## Development
28
+
29
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
30
+
31
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
32
+
33
+ ## Contributing
34
+
35
+ Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/swarker.
36
+
37
+
38
+ ## License
39
+
40
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
41
+
42
+ [Build Status]: https://travis-ci.org/sponomarev/swarker
43
+ [BS img]: https://travis-ci.org/sponomarev/swarker.svg
44
+
@@ -0,0 +1,6 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task default: :spec
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'bundler/setup'
4
+ require 'swarker'
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require 'irb'
14
+ IRB.start
@@ -0,0 +1,7 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+
5
+ bundle install
6
+
7
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ if File.exist?(File.expand_path('../../Gemfile', __FILE__))
4
+ # inside app dir with binstub
5
+ require 'bundler/setup'
6
+ elsif File.directory?(lib_dir = File.expand_path('../../lib', __FILE__))
7
+ # inside gem
8
+ $LOAD_PATH.unshift lib_dir
9
+ end
10
+
11
+ require 'swarker'
12
+ require 'swarker/cli'
13
+
14
+ Swarker::Cli.start
@@ -0,0 +1,14 @@
1
+ require 'active_support/core_ext/hash'
2
+
3
+ require 'swarker/definition'
4
+ require 'swarker/path'
5
+ require 'swarker/path_parameters'
6
+ require 'swarker/paths_merger'
7
+ require 'swarker/readers'
8
+ require 'swarker/serializers'
9
+ require 'swarker/service'
10
+ require 'swarker/version'
11
+
12
+ module Swarker
13
+ # Your code goes here...
14
+ end
@@ -0,0 +1,46 @@
1
+ require 'thor'
2
+
3
+ module Swarker
4
+ class Cli < Thor
5
+ include Thor::Actions
6
+
7
+ desc 'convert', 'Converts lurker schema to swaggers one'
8
+ option :input, aliases: '-i', desc: 'Input path', default: 'lurker'
9
+ option :output, aliases: '-o', desc: 'Output path', default: 'public'
10
+ option :subtree, aliases: '-s', desc: 'Subtree of lurker paths', default: nil
11
+ option :force, aliases: '-f', type: :boolean, desc: 'Rewrite output without confirmation'
12
+
13
+ def convert
14
+ say_status :input, input
15
+ say_status :output, output
16
+
17
+ services.each do |service|
18
+ schema = Swarker::Serializers::ServiceSerializer.new(service).schema
19
+
20
+ create_file(File.join(output, "#{service.json_filename}.json"), JSON.pretty_generate(schema), force: force?)
21
+ end
22
+ end
23
+
24
+ private
25
+
26
+ def services
27
+ Swarker::Readers::ServiceReader.new(input, subtree).services
28
+ end
29
+
30
+ def input
31
+ File.expand_path(options[:input])
32
+ end
33
+
34
+ def output
35
+ File.expand_path(options[:output])
36
+ end
37
+
38
+ def force?
39
+ options[:force]
40
+ end
41
+
42
+ def subtree
43
+ options[:subtree]
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,37 @@
1
+ module Swarker
2
+ class Definition
3
+ attr_reader :name, :schema
4
+
5
+ REQUIRED_FIELD = 'required'.freeze
6
+ PROPERTIES_FIELD = 'properties'.freeze
7
+ REF = '$ref'.freeze
8
+
9
+ def initialize(name, original_schema)
10
+ @name = name
11
+ @original_schema = original_schema
12
+ move_required_fields
13
+ fix_refs
14
+ end
15
+
16
+ private
17
+
18
+ def move_required_fields
19
+ requred_properties = @original_schema.fetch(REQUIRED_FIELD)
20
+ @schema = @original_schema.reject { |k| k == REQUIRED_FIELD }
21
+
22
+ requred_properties.each do |property|
23
+ properties[property][REQUIRED_FIELD] = true
24
+ end
25
+ end
26
+
27
+ def fix_refs
28
+ properties.each_value do |property|
29
+ property[REF].sub!(%r{.json#/}, '').sub!(%r{(\.\./)+}, '#/') if property[REF]
30
+ end
31
+ end
32
+
33
+ def properties
34
+ schema[PROPERTIES_FIELD]
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,67 @@
1
+ module Swarker
2
+ class Path
3
+ attr_reader :name, :schema
4
+
5
+ DEFAULT_SCHEMA = {
6
+ produces: ['application/json'.freeze]
7
+ }
8
+
9
+ def initialize(name, original_schema, preparsed = false)
10
+ @name = name
11
+ @original_schema = HashWithIndifferentAccess.new(original_schema)
12
+ @preparsed = preparsed
13
+
14
+ parse_schema
15
+ end
16
+
17
+ def verb
18
+ # Lurker schema has only one request verb per file
19
+ @verb ||= @preparsed ? @schema.keys.first : original_schema[:extensions][:method].downcase
20
+ end
21
+
22
+ private
23
+
24
+ attr_reader :original_schema, :preparsed
25
+ alias_method :preparsed?, :preparsed
26
+
27
+ def parse_schema
28
+ @schema = preparsed? ? @original_schema : create_schema
29
+ end
30
+
31
+ def create_schema
32
+ HashWithIndifferentAccess.new(verb => DEFAULT_SCHEMA.merge(computed_schema))
33
+ end
34
+
35
+ def computed_schema
36
+ {
37
+ description: original_schema[:description],
38
+ tags: [original_schema[:prefix]],
39
+ parameters: PathParameters.new(original_schema).parameters,
40
+ responses: responses
41
+ }
42
+ end
43
+
44
+ def responses
45
+ {
46
+ response_code => {
47
+ description: '',
48
+ schema: response_schema
49
+ }
50
+ }
51
+ end
52
+
53
+ def response_code
54
+ # Lurker schema has only one response code per file
55
+ @original_schema[:responseCodes].first[:status].to_s
56
+ end
57
+
58
+ def response_schema
59
+ response_schema = @original_schema[:responseParameters].dup
60
+ response_schema[:items].reject! { |k| k.to_sym == :required } if response_schema[:items]
61
+
62
+ response_schema['$ref'].sub!(%r{.json#/}, '').sub!(%r{(\.\./)+}, '#/') if response_schema['$ref']
63
+
64
+ response_schema
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,92 @@
1
+ module Swarker
2
+ class PathParameters
3
+ IGNORED_PATH_PARAMS = [:controller, :action]
4
+ IN_QUERY = 'query'.freeze
5
+ IN_FORM_DATA = 'formData'.freeze
6
+ IN_BODY = 'body'.freeze
7
+ IN_PATH = 'path'.freeze
8
+ REF = '$ref'.freeze
9
+
10
+ attr_reader :parameters
11
+
12
+ def initialize(path_schema)
13
+ @path_schema = HashWithIndifferentAccess.new(path_schema)
14
+
15
+ @parameters = parse_parameters
16
+ end
17
+
18
+ private
19
+
20
+ def parse_parameters
21
+ in_request + in_path
22
+ end
23
+
24
+ def in_request
25
+ parameters_from_properties(accounted_request_params).flatten
26
+ end
27
+
28
+ def parameters_from_properties(properties, name_prefix = nil)
29
+ properties.collect do |parameter, options|
30
+ if options[:properties]
31
+ parameters_from_properties(options[:properties], parameter)
32
+ else
33
+ param_desc = {
34
+ name: name_prefix ? "#{name_prefix}[#{parameter}]" : parameter,
35
+ description: options[:description] || '', # blank unless given
36
+ type: options[:type],
37
+ default: options[:example],
38
+ in: determine_in(parameter, options)
39
+ }.compact
40
+
41
+ param_desc[:required] = true if require_request_params.include?(parameter)
42
+ param_desc[:schema] = { REF => options[REF].sub(%r{.json#/}, '').sub(%r{(\.\./)+}, '#/') } if options[REF]
43
+
44
+ param_desc
45
+ end
46
+ end
47
+ end
48
+
49
+ def accounted_request_params
50
+ @path_schema[:requestParameters][:properties]
51
+ end
52
+
53
+ def require_request_params
54
+ @path_schema[:requestParameters][:required] || []
55
+ end
56
+
57
+ def in_path
58
+ accounted_path_params.collect do |parameter, default|
59
+ {
60
+ name: parameter,
61
+ description: '', # nothing to propose for description
62
+ type: 'string', # assume all path parameters are strings
63
+ default: default,
64
+ in: IN_PATH,
65
+ required: true
66
+ }
67
+ end
68
+ end
69
+
70
+ def accounted_path_params
71
+ @path_schema[:extensions][:path_params].select { |k| !IGNORED_PATH_PARAMS.include?(k.to_sym) }
72
+ end
73
+
74
+ def determine_in(parameter, options)
75
+ if verb == 'get' || query_params.include?(parameter)
76
+ IN_QUERY
77
+ elsif options[REF]
78
+ IN_BODY
79
+ else
80
+ IN_FORM_DATA
81
+ end
82
+ end
83
+
84
+ def verb
85
+ @path_schema[:extensions][:method].downcase
86
+ end
87
+
88
+ def query_params
89
+ @path_schema[:extensions][:query_params] || []
90
+ end
91
+ end
92
+ end
@@ -0,0 +1,36 @@
1
+ module Swarker
2
+ class PathsMerger
3
+ attr_reader :original_paths, :paths
4
+
5
+ def initialize(original_paths)
6
+ @original_paths = original_paths
7
+ @paths = merge(original_paths)
8
+ end
9
+
10
+ private
11
+
12
+ def merge(original_paths)
13
+ groups = HashWithIndifferentAccess.new
14
+
15
+ original_paths.each do |path|
16
+ if groups[path_key(path)].nil?
17
+ groups[path_key(path)] = path
18
+ else
19
+ groups[path_key(path)] = merge_paths(groups[path_key(path)], path)
20
+ end
21
+ end
22
+
23
+ groups.values
24
+ end
25
+
26
+ def path_key(path)
27
+ "#{path.verb}_#{path.name}"
28
+ end
29
+
30
+ def merge_paths(first_path, second_path)
31
+ scheme = first_path.schema.dup
32
+ scheme.values.first[:responses].merge! second_path.schema.values.first[:responses]
33
+ Swarker::Path.new(first_path.name, scheme, true)
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,7 @@
1
+ require 'swarker/readers/definitions_reader'
2
+ require 'swarker/readers/file_reader'
3
+ require 'swarker/readers/paths_reader'
4
+ require 'swarker/readers/service_reader'
5
+
6
+ module Readers
7
+ end
@@ -0,0 +1,29 @@
1
+ require 'pathname'
2
+
3
+ module Swarker
4
+ module Readers
5
+ class DefinitionsReader
6
+ attr_reader :definitions
7
+
8
+ def initialize(dir)
9
+ @definitions = read_definitions(dir)
10
+ end
11
+
12
+ private
13
+
14
+ def read_definitions(dir)
15
+ definitions_paths(dir).collect do |path|
16
+ Swarker::Definition.new(definitions_name(path), FileReader.new(path).read)
17
+ end
18
+ end
19
+
20
+ def definitions_name(path)
21
+ File.basename(path).scan(/\A\w+/).first
22
+ end
23
+
24
+ def definitions_paths(dir)
25
+ Dir["#{dir}/**/*.json"] + Dir["#{dir}/**/*.json.yml"] + Dir["#{dir}/**/*.json.yml.erb"]
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,48 @@
1
+ require 'erb'
2
+ require 'json'
3
+ require 'yaml'
4
+
5
+ module Swarker
6
+ module Readers
7
+ class FileReader
8
+ attr_reader :path
9
+
10
+ JSON_EXT = '.json'.freeze
11
+ YAML_EXT = '.yml'.freeze
12
+ ERB_EXT = '.erb'.freeze
13
+
14
+ def initialize(path)
15
+ @path = path
16
+ end
17
+
18
+ def read
19
+ HashWithIndifferentAccess.new(readed_hash)
20
+ end
21
+
22
+ private
23
+
24
+ def readed_hash
25
+ case File.extname(path)
26
+ when JSON_EXT
27
+ read_json
28
+ when YAML_EXT
29
+ read_yaml
30
+ when ERB_EXT
31
+ read_erb
32
+ end
33
+ end
34
+
35
+ def read_json
36
+ JSON.parse(File.read(path))
37
+ end
38
+
39
+ def read_yaml
40
+ YAML.load_file(path)
41
+ end
42
+
43
+ def read_erb
44
+ YAML.load(ERB.new(File.read(path)).result)
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,33 @@
1
+ require 'pathname'
2
+
3
+ module Swarker
4
+ module Readers
5
+ class PathsReader
6
+ attr_reader :paths
7
+
8
+ def initialize(dir)
9
+ @paths = read_paths(dir)
10
+ end
11
+
12
+ private
13
+
14
+ def read_paths(dir)
15
+ paths_files(dir).collect do |file|
16
+ Swarker::Path.new(path_name(dir, file), FileReader.new(file).read)
17
+ end
18
+ end
19
+
20
+ def path_name(dir, file_path)
21
+ file_path.sub(base_dir(dir), '').scan(%r{\A[\/\w]+}).first.gsub(/__(\w+)/, '{\1}') + '.json'
22
+ end
23
+
24
+ def paths_files(dir)
25
+ Dir["#{dir}/**/*.json"] + Dir["#{dir}/**/*.json.yml"] + Dir["#{dir}/**/*.json.yml.erb"]
26
+ end
27
+
28
+ def base_dir(dir)
29
+ dir.split('/').slice(0..-2).join('/')
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,68 @@
1
+ require 'uri'
2
+ require 'active_support/core_ext/object/blank'
3
+
4
+ module Swarker
5
+ module Readers
6
+ class ServiceReader
7
+ attr_reader :services
8
+
9
+ SERVICE_EXT = '.service.yml'.freeze
10
+ DEFAULT_PORT = 80
11
+ DEFINITIONS_DIR = 'definitions'.freeze
12
+ PATHS_DIR = 'api'.freeze
13
+
14
+ def initialize(dir, subtree = nil)
15
+ @dir = dir
16
+ @subtree = subtree
17
+
18
+ @services = read_services
19
+ end
20
+
21
+ private
22
+
23
+ attr_reader :dir, :subtree
24
+
25
+ def read_services
26
+ hosts.collect do |host|
27
+ Swarker::Service.new(host, original_schema, definitions, paths)
28
+ end.presence || [local_service]
29
+ end
30
+
31
+ def local_service
32
+ Swarker::Service.new(nil, original_schema, definitions, paths)
33
+ end
34
+
35
+ def definitions
36
+ @definitions ||= DefinitionsReader.new(definitions_dir).definitions
37
+ end
38
+
39
+ def definitions_dir
40
+ File.join(dir, DEFINITIONS_DIR)
41
+ end
42
+
43
+ def paths
44
+ @paths ||= PathsMerger.new(PathsReader.new(paths_dir).paths).paths
45
+ end
46
+
47
+ def paths_dir
48
+ File.join(dir, subtree || PATHS_DIR)
49
+ end
50
+
51
+ def hosts
52
+ original_schema[:domains].values.collect do |domain|
53
+ uri = URI(domain)
54
+ uri.port == DEFAULT_PORT ? uri.host : "#{uri.host}:#{uri.port}"
55
+ end
56
+ end
57
+
58
+ def original_schema
59
+ @original_schema ||= HashWithIndifferentAccess.new(YAML.load_file(service_file))
60
+ end
61
+
62
+ def service_file
63
+ # Assumes that it can be only one service file in service directory
64
+ Dir["#{dir}/*#{SERVICE_EXT}"].first
65
+ end
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,6 @@
1
+ require 'swarker/serializers/service_serializer'
2
+
3
+ module Swarker
4
+ module Serializers
5
+ end
6
+ end
@@ -0,0 +1,38 @@
1
+ module Swarker
2
+ module Serializers
3
+ class ServiceSerializer
4
+ attr_reader :schema
5
+
6
+ def initialize(service)
7
+ @service = service
8
+ @schema = build_hash
9
+ end
10
+
11
+ private
12
+
13
+ attr_reader :service
14
+
15
+ def build_hash
16
+ service.schema.merge(nested_objects)
17
+ end
18
+
19
+ def nested_objects
20
+ {
21
+ definitions: objects_hash(service.definitions),
22
+ paths: objects_hash(service.paths)
23
+ }
24
+ end
25
+
26
+ def objects_hash(objects)
27
+ objects.each_with_object({}) do |object, result|
28
+ result[object.name] ||= HashWithIndifferentAccess.new
29
+ result[object.name].merge!(object.schema)
30
+ end
31
+ end
32
+
33
+ def to_json
34
+ schema.to_json
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,39 @@
1
+ module Swarker
2
+ class Service
3
+ DEFAULT_SCHEMA = {
4
+ swagger: '2.0'.freeze,
5
+ consumes: ['application/json'.freeze],
6
+ produces: ['application/json'.freeze],
7
+ info: { version: '1.0'.freeze }
8
+ }
9
+
10
+ attr_reader :host, :schema, :definitions, :paths
11
+
12
+ def initialize(host, original_schema, definitions = [], paths = [])
13
+ @host = host
14
+ @original_schema = HashWithIndifferentAccess.new(original_schema)
15
+ @definitions = definitions
16
+ @paths = paths
17
+
18
+ parse_schema
19
+ end
20
+
21
+ def json_filename
22
+ host || 'swagger'
23
+ end
24
+
25
+ private
26
+
27
+ attr_reader :original_schema
28
+
29
+ def parse_schema
30
+ @schema = HashWithIndifferentAccess.new(DEFAULT_SCHEMA.deep_merge(computed_schema))
31
+ end
32
+
33
+ def computed_schema
34
+ { info: { title: original_schema[:name] } }.tap do |s|
35
+ s.merge!(host: host) if host
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,3 @@
1
+ module Swarker
2
+ VERSION = '0.1.0'
3
+ end
@@ -0,0 +1,28 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'swarker/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'swarker'
8
+ spec.version = Swarker::VERSION
9
+ spec.authors = ['Sergey Ponomarev']
10
+ spec.email = ['me@sergey-ponomarev.ru']
11
+
12
+ spec.summary = 'Converts lurker schemas to swagger schema'
13
+ spec.license = 'MIT'
14
+
15
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features|public|lurker)/}) }
16
+ spec.bindir = 'exe'
17
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
18
+ spec.require_paths = ['lib']
19
+
20
+ spec.add_dependency 'activesupport', '~> 4.2'
21
+ spec.add_dependency 'thor'
22
+
23
+ spec.add_development_dependency 'bundler', '~> 1.10'
24
+ spec.add_development_dependency 'rake', '~> 10.0'
25
+ spec.add_development_dependency 'rspec'
26
+ spec.add_development_dependency 'rspec-collection_matchers'
27
+ spec.add_development_dependency 'rubocop'
28
+ end
metadata ADDED
@@ -0,0 +1,171 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: swarker
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Sergey Ponomarev
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2015-10-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '4.2'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '4.2'
27
+ - !ruby/object:Gem::Dependency
28
+ name: thor
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.10'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.10'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '10.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '10.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec-collection_matchers
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rubocop
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ description:
112
+ email:
113
+ - me@sergey-ponomarev.ru
114
+ executables:
115
+ - swarker
116
+ extensions: []
117
+ extra_rdoc_files: []
118
+ files:
119
+ - ".editorconfig"
120
+ - ".gitignore"
121
+ - ".rspec"
122
+ - ".rubocop.yml"
123
+ - ".travis.yml"
124
+ - Gemfile
125
+ - LICENSE.txt
126
+ - README.md
127
+ - Rakefile
128
+ - bin/console
129
+ - bin/setup
130
+ - exe/swarker
131
+ - lib/swarker.rb
132
+ - lib/swarker/cli.rb
133
+ - lib/swarker/definition.rb
134
+ - lib/swarker/path.rb
135
+ - lib/swarker/path_parameters.rb
136
+ - lib/swarker/paths_merger.rb
137
+ - lib/swarker/readers.rb
138
+ - lib/swarker/readers/definitions_reader.rb
139
+ - lib/swarker/readers/file_reader.rb
140
+ - lib/swarker/readers/paths_reader.rb
141
+ - lib/swarker/readers/service_reader.rb
142
+ - lib/swarker/serializers.rb
143
+ - lib/swarker/serializers/service_serializer.rb
144
+ - lib/swarker/service.rb
145
+ - lib/swarker/version.rb
146
+ - swarker.gemspec
147
+ homepage:
148
+ licenses:
149
+ - MIT
150
+ metadata: {}
151
+ post_install_message:
152
+ rdoc_options: []
153
+ require_paths:
154
+ - lib
155
+ required_ruby_version: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ required_rubygems_version: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - ">="
163
+ - !ruby/object:Gem::Version
164
+ version: '0'
165
+ requirements: []
166
+ rubyforge_project:
167
+ rubygems_version: 2.4.8
168
+ signing_key:
169
+ specification_version: 4
170
+ summary: Converts lurker schemas to swagger schema
171
+ test_files: []