swagger_docs_generator 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6671b4df077b9fb55feda1f126ee870194a31bd6
4
- data.tar.gz: 31a02536ca38fc3c076c1c77af0a6d9634a1a045
3
+ metadata.gz: 88cb5ca367ad15e76eb3c350fd799a9463b14ebd
4
+ data.tar.gz: 7fe85ae4081c3e680a69c66c36b4b8833c359a07
5
5
  SHA512:
6
- metadata.gz: 972e8e0407cd1b40c3121f46abd3ddb3434a77c330cbab22aef9304248a7a47b19471ee39443cfe0b4cbd8031703cb5f943c375e5df4f7c083b2d43bb94b59d7
7
- data.tar.gz: 151b024e6714eac2b4a323865e8891a08c1b11af978bddbcef5c385e7c3367304cf8439ab891df255fe30dd990e324e328b51fb02aecf6fe3d18bf0ae543ce6c
6
+ metadata.gz: 433a1104b08265a7bbd596243523a6dac7bd19ae48f872821f3bd70892fffa547743fa071f1c367464655b87f7effc60dbee2293f3603f456ebcba287e3d326c
7
+ data.tar.gz: d1dda1c6e3d952e331d09a58dcca9c5750ebf49b2a753892ce4fc7602b5551a6596c66029e1170c6fec3faa73c11387a1cb896978c0170a64d2610072721f918
@@ -19,13 +19,14 @@ module SwaggerDocsGenerator
19
19
  class Configuration
20
20
  attr_accessor :swagger, :base_path, :schemes, :consumes, :produces,
21
21
  :host, :paths, :definitions, :security_definitions,
22
- :security, :tags, :external_docs
22
+ :security, :tags, :external_docs, :base_controller
23
23
 
24
24
  SWAGGER = '2.0'
25
25
 
26
26
  # Initalize default value (and requried) for json swagger file
27
27
  def initialize
28
28
  @swagger = SWAGGER
29
+ @base_controller = ''
29
30
  end
30
31
  end
31
32
 
@@ -34,7 +34,7 @@ module SwaggerDocsGenerator
34
34
  end
35
35
 
36
36
  def controller_name
37
- @controller.controller_name
37
+ @controller.controller_path
38
38
  end
39
39
 
40
40
  def router
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'json'
4
-
5
3
  module SwaggerDocsGenerator
6
4
  # # Generate JSON file
7
5
  #
@@ -16,19 +14,19 @@ module SwaggerDocsGenerator
16
14
  @file = 'swagger.json'
17
15
  @path = File.join(Dir.pwd, '/public')
18
16
  @swagger_file = File.join(@path, @file)
17
+ @version = File.join(@path, SwaggerDocsGenerator.configure_info.version)
18
+ create_version_folder
19
19
  end
20
20
 
21
21
  # Open or create a swagger.json file
22
22
  def generate_swagger_file
23
23
  delete_file_before
24
- create_version_folder
25
24
  File.open(@swagger_file, 'a+') { |file| file.puts agregate_metadata }
26
25
  end
27
26
 
28
27
  # Delete files temporary
29
- def delete_emporary_files
30
- version = File.join(@path, SwaggerDocsGenerator.configure_info.version)
31
- Dir.delete(File.join(@path, version))
28
+ def delete_temporary_files
29
+ FileUtils.rm_rf(@version)
32
30
  end
33
31
 
34
32
  private
@@ -40,8 +38,7 @@ module SwaggerDocsGenerator
40
38
  end
41
39
 
42
40
  def create_version_folder
43
- version = File.join(@path, SwaggerDocsGenerator.configure_info.version)
44
- FileUtils.mkdir_p(version) unless File.directory?(version)
41
+ FileUtils.mkdir_p(@version) unless File.directory?(@version)
45
42
  end
46
43
 
47
44
  # :reek:UtilityFunction
@@ -5,7 +5,7 @@ module SwaggerDocsGenerator
5
5
  # Name to gem
6
6
  GEM = 'swagger_docs_generator'
7
7
  # Version to gem
8
- VERSION = '0.1.0'
8
+ VERSION = '0.1.1'
9
9
  # Authors contributed to gem
10
10
  AUTHORS = ['VAILLANT Jeremy'].freeze
11
11
  # Email to ahuthors
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'json'
4
-
5
3
  module SwaggerDocsGenerator
6
4
  # # Metadata generated
7
5
  #
@@ -9,11 +7,14 @@ module SwaggerDocsGenerator
9
7
  # Abstract class for metadata provide to controlloer in Rails application
10
8
  class MetadataController < Metadata
11
9
  def initialize
12
- # Reload all controller before parsing
13
- Rails.application.eager_load!
14
10
  @path = File.join(Dir.pwd, 'public',
15
11
  SwaggerDocsGenerator.configure_info.version)
16
- @controllers = ApplicationController.subclasses
12
+ conf = SwaggerDocsGenerator.configure.base_controller
13
+ @controllers = if conf.is_a?(String)
14
+ ApplicationController.subclasses
15
+ else
16
+ conf.subclasses
17
+ end
17
18
  end
18
19
 
19
20
  private
@@ -27,10 +27,10 @@ module SwaggerDocsGenerator
27
27
  old_route = json['paths']
28
28
 
29
29
  keys_new = hash.keys[0]
30
- keys_old = old_route.keys[0]
30
+ index = keys_new.to_s
31
31
 
32
- if keys_new.to_s.eql?(keys_old.to_s)
33
- old_route[keys_old].merge!(hash[keys_new])
32
+ if !old_route.blank? && old_route.keys.include?(index)
33
+ old_route[index].merge!(hash[keys_new])
34
34
  else
35
35
  old_route.merge!(hash)
36
36
  end
@@ -1,4 +1,8 @@
1
1
  # frozen_string_literal: true
2
+
3
+ # Dependencies
4
+ require 'json'
5
+
2
6
  # Information for this gem
3
7
  require 'swagger_docs_generator/info'
4
8
 
@@ -3,6 +3,11 @@ namespace :swagger do
3
3
  desc 'Generate Swagger Documentation files'
4
4
  task docs: :environment do
5
5
  puts 'Create Swagger File in public/swagger.json'
6
- SwaggerDocsGenerator::Generator.new.generate_swagger_file
6
+ swag = SwaggerDocsGenerator::Generator.new
7
+ # Reload all controller before parsing
8
+ Rails.application.eager_load!
9
+ # Generates files
10
+ swag.generate_swagger_file
11
+ swag.delete_temporary_files
7
12
  end
8
13
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: swagger_docs_generator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - VAILLANT Jeremy