grape-swagger-rails 2.0.0 → 2.0.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 +4 -4
- data/.github/workflows/swagger-ui-update.yml +9 -4
- data/CHANGELOG.md +6 -0
- data/app/assets/javascripts/grape_swagger_rails/swagger-ui-bundle.js +1 -1
- data/lib/grape-swagger-rails/version.rb +2 -2
- data/script/swagger_ui_release_notes +71 -0
- data/script/update_changelog +9 -2
- metadata +4 -3
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
# Prints a pull request body listing the upstream Swagger UI releases after
|
|
5
|
+
# FROM_VERSION up to and including TO_VERSION. Requires an authenticated `gh`.
|
|
6
|
+
|
|
7
|
+
require 'json'
|
|
8
|
+
require 'open3'
|
|
9
|
+
require 'rubygems'
|
|
10
|
+
|
|
11
|
+
REPO = 'swagger-api/swagger-ui'
|
|
12
|
+
# GitHub rejects pull request bodies over 65536 characters.
|
|
13
|
+
MAX_BODY = 60_000
|
|
14
|
+
|
|
15
|
+
from_version = Gem::Version.new(ENV.fetch('FROM_VERSION').delete_prefix('v'))
|
|
16
|
+
to_version = Gem::Version.new(ENV.fetch('TO_VERSION').delete_prefix('v'))
|
|
17
|
+
|
|
18
|
+
output, status = Open3.capture2('gh', 'api', '--paginate', "repos/#{REPO}/releases?per_page=100", '--jq', '.[]')
|
|
19
|
+
abort "Could not list #{REPO} releases." unless status.success?
|
|
20
|
+
|
|
21
|
+
releases = output.each_line.map { |line| JSON.parse(line) }.select do |release|
|
|
22
|
+
next false if release['draft'] || release['prerelease']
|
|
23
|
+
|
|
24
|
+
version = Gem::Version.new(release['tag_name'].delete_prefix('v'))
|
|
25
|
+
version > from_version && version <= to_version
|
|
26
|
+
rescue ArgumentError
|
|
27
|
+
false
|
|
28
|
+
end
|
|
29
|
+
releases.sort_by! { |release| Gem::Version.new(release['tag_name'].delete_prefix('v')) }.reverse!
|
|
30
|
+
|
|
31
|
+
# Upstream heading levels vary between releases; nest the release title and its sections under "Swagger UI changes".
|
|
32
|
+
def nest_headings(body)
|
|
33
|
+
title = true
|
|
34
|
+
body.gsub(/^#+ /) do
|
|
35
|
+
heading = title ? '### ' : '#### '
|
|
36
|
+
title = false
|
|
37
|
+
heading
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def format_notes(release)
|
|
42
|
+
body = release['body'].to_s.gsub("\r\n", "\n").gsub(/\n{3,}/, "\n\n").strip
|
|
43
|
+
return "### [#{release['tag_name']}](#{release['html_url']})\n\nNo release notes." if body.empty?
|
|
44
|
+
|
|
45
|
+
# Avoid pinging upstream contributors.
|
|
46
|
+
nest_headings(body).gsub(%r{(?<![\w`\[/])@([\w-]+)}, '`@\1`')
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
compare_url = "https://github.com/#{REPO}/compare/v#{from_version}...v#{to_version}"
|
|
50
|
+
body = <<~MARKDOWN
|
|
51
|
+
Updates bundled Swagger UI assets from `v#{from_version}` to `v#{to_version}` ([compare](#{compare_url})).
|
|
52
|
+
|
|
53
|
+
Generated by the scheduled Swagger UI update workflow.
|
|
54
|
+
|
|
55
|
+
## Swagger UI changes
|
|
56
|
+
MARKDOWN
|
|
57
|
+
|
|
58
|
+
if releases.empty?
|
|
59
|
+
body << "\nNo release notes found. See the [compare view](#{compare_url}).\n"
|
|
60
|
+
else
|
|
61
|
+
releases.each do |release|
|
|
62
|
+
notes = "\n#{format_notes(release)}\n"
|
|
63
|
+
if body.length + notes.length > MAX_BODY
|
|
64
|
+
body << "\nRelease notes truncated. See the [compare view](#{compare_url}) for the rest.\n"
|
|
65
|
+
break
|
|
66
|
+
end
|
|
67
|
+
body << notes
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
puts body
|
data/script/update_changelog
CHANGED
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
path = ENV.fetch('CHANGELOG_PATH', 'CHANGELOG.md')
|
|
5
5
|
number = ENV.fetch('PR_NUMBER')
|
|
6
6
|
url = ENV.fetch('PR_URL')
|
|
7
|
-
author
|
|
7
|
+
# danger-changelog only accepts [\w-]+ author names, so `github-actions[bot]` becomes `github-actions`.
|
|
8
|
+
author = ENV.fetch('PR_AUTHOR').delete_suffix('[bot]')
|
|
8
9
|
author_url = ENV.fetch('PR_AUTHOR_URL')
|
|
9
10
|
title = ENV.fetch('PR_TITLE').gsub(/\s+/, ' ').strip.sub(/\.+\z/, '')
|
|
10
11
|
title = title.gsub(/([\[\]])/, '\\\\\1')
|
|
@@ -12,7 +13,13 @@ title = title.gsub(/([\[\]])/, '\\\\\1')
|
|
|
12
13
|
entry = "* [##{number}](#{url}): #{title} - [@#{author}](#{author_url})."
|
|
13
14
|
changelog = File.read(path)
|
|
14
15
|
|
|
15
|
-
|
|
16
|
+
existing = changelog.lines.find { |line| line.start_with?("* [##{number}](") }
|
|
17
|
+
if existing
|
|
18
|
+
# Leave hand-edited entries alone; only repair ones Danger would reject.
|
|
19
|
+
exit if existing.match?(%r{ - \[@[\w-]+\]\(https://github\.com/\S*[\w-]\)\.$})
|
|
20
|
+
File.write(path, changelog.sub(existing, "#{entry}\n"))
|
|
21
|
+
exit
|
|
22
|
+
end
|
|
16
23
|
|
|
17
24
|
next_release = /^### Next Release\s*$/
|
|
18
25
|
placeholder = /^\* Your contribution here\.\s*$/
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: grape-swagger-rails
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.0.
|
|
4
|
+
version: 2.0.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Alexander Logunov
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-10-
|
|
11
|
+
date: 2026-10-13 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: haml-rails
|
|
@@ -142,6 +142,7 @@ files:
|
|
|
142
142
|
- lib/script/rails
|
|
143
143
|
- lib/tasks/swagger_ui.rake
|
|
144
144
|
- package.json
|
|
145
|
+
- script/swagger_ui_release_notes
|
|
145
146
|
- script/update_changelog
|
|
146
147
|
- spec/dummy/.gitignore
|
|
147
148
|
- spec/dummy/Rakefile
|
|
@@ -191,7 +192,7 @@ licenses:
|
|
|
191
192
|
metadata:
|
|
192
193
|
bug_tracker_uri: https://github.com/ruby-grape/grape-swagger-rails/issues
|
|
193
194
|
changelog_uri: https://github.com/ruby-grape/grape-swagger-rails/blob/master/CHANGELOG.md
|
|
194
|
-
source_code_uri: https://github.com/ruby-grape/grape-swagger-rails/tree/v2.0.
|
|
195
|
+
source_code_uri: https://github.com/ruby-grape/grape-swagger-rails/tree/v2.0.1
|
|
195
196
|
rubygems_mfa_required: 'true'
|
|
196
197
|
post_install_message:
|
|
197
198
|
rdoc_options: []
|