swagger_docs_generator 0.1.0 → 0.1.1

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 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