source2swagger 0.0.1 → 0.0.2
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.
- data/README.md +13 -3
- data/bin/source2swagger +40 -10
- data/lib/swagger_reader.rb +1 -1
- data/source2swagger.gemspec +1 -1
- data/test/test_helper.rb +2 -1
- data/test/unit/swagger_reader_test.rb +3 -3
- metadata +4 -4
data/README.md
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
|
2
1
|
## Description
|
3
2
|
|
4
3
|
Coming soon...
|
@@ -23,10 +22,21 @@ Coming soon...
|
|
23
22
|
|
24
23
|
#### Example
|
25
24
|
|
26
|
-
$ bin/
|
25
|
+
$ bin/source2swagger -i ~/project/lib -e "rb" -c "##~"_
|
27
26
|
|
28
27
|
This will output the Swagger compatible JSON specs on the terminal.
|
29
28
|
|
29
|
+
For this example the file annotated with the swagger spec are ruby files (*-e "rb"*). The annotations
|
30
|
+
started with *##~* to distinguish them from normal ruby comments that start *#*.
|
31
|
+
|
32
|
+
The source code is on the directory *~/project/lib* , note that the path is handled recursively, it will analyze all ruby
|
33
|
+
file under the declared path.
|
34
|
+
|
35
|
+
You can also target a single file setting the option *-f*
|
36
|
+
|
37
|
+
$ bin/source2swagger -f ~/data/test/sample3.rb -c "##~"_
|
38
|
+
|
39
|
+
|
30
40
|
Add *-o /tmp* and it will write the JSON file(s) to */tmp*
|
31
41
|
|
32
42
|
#### Contributions
|
@@ -122,7 +132,7 @@ Check [test/data/sample3.rb](https://github.com/solso/source2swagger/blob/master
|
|
122
132
|
|
123
133
|
(partial)
|
124
134
|
|
125
|
-
For a more comprehensive specification of the fields
|
135
|
+
For a more comprehensive specification of the fields needed to declare your API on the Swagger format you can always go to the [source](http://swagger.wordnik.com/spec)
|
126
136
|
|
127
137
|
$ROOT
|
128
138
|
|
data/bin/source2swagger
CHANGED
@@ -21,9 +21,10 @@ opt_input = nil
|
|
21
21
|
opt_output = nil
|
22
22
|
opt_comment = nil
|
23
23
|
opt_extension = nil
|
24
|
+
opt_filename = nil
|
24
25
|
|
25
26
|
parser = OptionParser.new do |parser|
|
26
|
-
parser.on('-i','--input PATH', 'Directory of the
|
27
|
+
parser.on('-i','--input PATH', 'Directory of the annotated source code') do |value|
|
27
28
|
opt_input = value
|
28
29
|
end
|
29
30
|
|
@@ -31,6 +32,10 @@ parser = OptionParser.new do |parser|
|
|
31
32
|
opt_extension = value
|
32
33
|
end
|
33
34
|
|
35
|
+
parser.on('-f','--file FILENAME', 'Overwrites options: -i and -e. Takes a single annotated source code file') do |value|
|
36
|
+
opt_filename = value
|
37
|
+
end
|
38
|
+
|
34
39
|
parser.on('-c','--comment ("##~"|"//~")','Comment tag used to write docs') do |value|
|
35
40
|
opt_comment = value
|
36
41
|
end
|
@@ -39,14 +44,23 @@ parser = OptionParser.new do |parser|
|
|
39
44
|
opt_output = value
|
40
45
|
end
|
41
46
|
|
42
|
-
|
47
|
+
begin
|
48
|
+
parser.parse!
|
49
|
+
rescue Exception => e
|
50
|
+
puts e.message
|
51
|
+
puts parser
|
52
|
+
abort
|
53
|
+
end
|
43
54
|
end
|
44
55
|
|
45
|
-
|
56
|
+
|
57
|
+
puts opt_filename
|
58
|
+
|
59
|
+
unless ((opt_extension and opt_input and opt_comment) || (opt_filename and opt_comment))
|
46
60
|
puts parser
|
47
61
|
abort
|
48
62
|
end
|
49
|
-
|
63
|
+
|
50
64
|
def save(results, output_path)
|
51
65
|
results.each do |k,v|
|
52
66
|
puts " Saving API #{k} to #{output_path}/#{k}.json"
|
@@ -63,22 +77,38 @@ def print(results)
|
|
63
77
|
end
|
64
78
|
end
|
65
79
|
|
66
|
-
def run(input, extension, comment, output)
|
80
|
+
def run(input, extension, comment, output, filename)
|
67
81
|
reader = SwaggerReader.new
|
68
82
|
$_swaggerhash = Hash.new
|
69
83
|
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
84
|
+
if filename.nil?
|
85
|
+
code = reader.analyze_all_files(input,extension,comment)
|
86
|
+
else
|
87
|
+
code = reader.analyze_file(filename, comment)
|
88
|
+
end
|
89
|
+
|
90
|
+
begin
|
91
|
+
results = reader.process_code(code) unless code.nil? || code.empty?
|
92
|
+
rescue SwaggerReaderException => e
|
93
|
+
puts "There is a problem with your swagger annotation. See below...\n\n"
|
94
|
+
puts e.inspect
|
95
|
+
end
|
96
|
+
|
97
|
+
if filename.nil?
|
98
|
+
puts "Swagger API in #{input}/**/*.#{extension}: #{results.size} API\n"
|
99
|
+
else
|
100
|
+
puts "Swagger API in #{filename}: #{results.size} API\n"
|
101
|
+
end
|
102
|
+
|
74
103
|
if output.nil?
|
75
104
|
print(results)
|
76
105
|
else
|
77
106
|
save(results,output)
|
78
107
|
end
|
108
|
+
|
79
109
|
puts "Done!"
|
80
110
|
|
81
111
|
end
|
82
112
|
|
83
113
|
|
84
|
-
run(opt_input, opt_extension, opt_comment, opt_output)
|
114
|
+
run(opt_input, opt_extension, opt_comment, opt_output, opt_filename)
|
data/lib/swagger_reader.rb
CHANGED
@@ -47,7 +47,7 @@ class SwaggerReader
|
|
47
47
|
cont = 0
|
48
48
|
code[:code].each do |code_line|
|
49
49
|
code_line.strip!
|
50
|
-
if code_line[0]==
|
50
|
+
if code_line[0]=="@"[0]
|
51
51
|
tmp_vars[:code] << code_line.gsub('@',' ')
|
52
52
|
tmp_vars[:line_number] << code[:line_number][cont]
|
53
53
|
tmp_vars[:file] << code[:file][cont]
|
data/source2swagger.gemspec
CHANGED
@@ -14,7 +14,7 @@ Gem::Specification.new do |gem|
|
|
14
14
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
15
15
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
16
16
|
gem.require_paths = ["lib"]
|
17
|
-
gem.version = '0.0.
|
17
|
+
gem.version = '0.0.2'
|
18
18
|
|
19
19
|
gem.add_dependency 'json'
|
20
20
|
end
|
data/test/test_helper.rb
CHANGED
@@ -117,7 +117,7 @@ class SwaggerReaderTest < Test::Unit::TestCase
|
|
117
117
|
api1 = reader.process_code(code)
|
118
118
|
assert_equal true, false
|
119
119
|
rescue Exception => e
|
120
|
-
assert_equal "Error parsing source files at #{File.dirname(__FILE__)}/../data/sample_bad2.rb:9
|
120
|
+
assert_equal "Error parsing source files at #{File.dirname(__FILE__)}/../data/sample_bad2.rb:9", e.message.split("\n").first
|
121
121
|
end
|
122
122
|
|
123
123
|
end
|
@@ -131,7 +131,7 @@ class SwaggerReaderTest < Test::Unit::TestCase
|
|
131
131
|
api1 = reader.process_code(code)
|
132
132
|
assert_equal true, false
|
133
133
|
rescue Exception => e
|
134
|
-
assert_equal "Error parsing source files at #{File.dirname(__FILE__)}/../data/sample_bad1.rb:17
|
134
|
+
assert_equal "Error parsing source files at #{File.dirname(__FILE__)}/../data/sample_bad1.rb:17", e.message.split("\n").first
|
135
135
|
end
|
136
136
|
|
137
137
|
end
|
@@ -145,7 +145,7 @@ class SwaggerReaderTest < Test::Unit::TestCase
|
|
145
145
|
api1 = reader.process_code(code)
|
146
146
|
assert_equal true, false
|
147
147
|
rescue Exception => e
|
148
|
-
assert_equal "Error parsing source files at #{File.dirname(__FILE__)}/../data/sample_bad3.rb:17
|
148
|
+
assert_equal "Error parsing source files at #{File.dirname(__FILE__)}/../data/sample_bad3.rb:17", e.message.split("\n").first
|
149
149
|
|
150
150
|
end
|
151
151
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: source2swagger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-06-19 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|
16
|
-
requirement: &
|
16
|
+
requirement: &2154849880 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2154849880
|
25
25
|
description: Tool for converting comments to Swagger JSON specification
|
26
26
|
email: josep@3scale.net
|
27
27
|
executables:
|