release_notes 0.3.4 → 0.4.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.
- checksums.yaml +4 -4
- data/README.md +7 -69
- data/lib/generators/release_notes/orm_helpers.rb +0 -8
- data/lib/generators/templates/release_notes.rb +1 -7
- data/lib/release_notes/cli.rb +0 -5
- data/lib/release_notes/version.rb +1 -1
- data/lib/release_notes.rb +0 -8
- metadata +1 -9
- data/app/views/release_notes/broadcasts/_bare.html.erb +0 -5
- data/app/views/release_notes/broadcasts/_link_back.html.erb +0 -6
- data/lib/generators/active_record/broadcasts_generator.rb +0 -47
- data/lib/generators/active_record/templates/broadcasts_migration.rb +0 -13
- data/lib/generators/release_notes/broadcasts_generator.rb +0 -16
- data/lib/generators/templates/broadcast_blank.md +0 -3
- data/lib/release_notes/cli/broadcast.rb +0 -116
- data/lib/release_notes/generators/broadcast.rb +0 -58
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 731dcb71f1a19814625ea48da3cfd1fa952a9c0e
|
4
|
+
data.tar.gz: 6f51fcd0ea61d46157b59cc2a7adebde72002921
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c0ad76f89c32fa8f47fdd59de3ddf16127d785bce48399311e6a9564897e023acb00a6ca2ad7c7587321b1b3fd64257380ab4471f40cbd2ce4662bc26dbdeef5
|
7
|
+
data.tar.gz: 232cb6697d9e10cc1e84bb2fbd96906747217a44432f6473f3d70c8d39f507707748c1f5b8f5581a1fea5280a1c8bdd287823a8a38486dbbf0ef86ff878bfdfb
|
data/README.md
CHANGED
@@ -32,45 +32,6 @@ Be sure to migrate your database.
|
|
32
32
|
|
33
33
|
$ rake db:migrate
|
34
34
|
|
35
|
-
### Optional
|
36
|
-
|
37
|
-
#### Broadcasts
|
38
|
-
|
39
|
-
To add the ability to display broadcasts of new releases (or any other messages) run the following:
|
40
|
-
|
41
|
-
$ rails generate release_notes:broadcasts Broadcast
|
42
|
-
|
43
|
-
This will generate a model named `Broadcast` in your Rails project. You can choose to use a different model name, but you must edit the release_notes initializer file with the updated Broadcast name.
|
44
|
-
|
45
|
-
Migrate your database.
|
46
|
-
|
47
|
-
$ rake db:migrate
|
48
|
-
|
49
|
-
Then add one of the following render tags to whichever view you'd like to display the broadcast message in.
|
50
|
-
|
51
|
-
<%= render 'release_notes/broadcasts/link_back' %>
|
52
|
-
|
53
|
-
OR...
|
54
|
-
|
55
|
-
<%= render 'release_notes/broadcasts/bare' %>
|
56
|
-
|
57
|
-
#### Views
|
58
|
-
|
59
|
-
While not necessary, you may want to copy over the ReleaseNotes views to your app to customize:
|
60
|
-
|
61
|
-
$ rails generate release_notes:views
|
62
|
-
|
63
|
-
If you do decide to customize the ReleaseNotes views and want to use your own layout you should probably **(1)** edit the layout declaration in `app/decorators/controllers/release_notes/release_notes_controller_decorator.rb` and **(2)** add one of the following stylesheet_link_tag snippets to your view:
|
64
|
-
|
65
|
-
<%= stylesheet_link_tag "release_notes/application", media: "all" %>
|
66
|
-
|
67
|
-
Will load Bootstrap 3 and a [Github Flavored Markdown](https://help.github.com/articles/github-flavored-markdown) style.
|
68
|
-
|
69
|
-
<%= stylesheet_link_tag "release_notes/github", media: "all" %>
|
70
|
-
|
71
|
-
Will load just the [Github Flavored Markdown](https://help.github.com/articles/github-flavored-markdown) style.
|
72
|
-
|
73
|
-
|
74
35
|
## Usage
|
75
36
|
|
76
37
|
### Generate a new release note template
|
@@ -95,42 +56,19 @@ After finalizing your release note markdown file be sure to update your ReleaseN
|
|
95
56
|
|
96
57
|
$ release_notes update
|
97
58
|
|
98
|
-
If you ever want to update a
|
99
|
-
|
100
|
-
$ release_notes update -v=VERSION
|
101
|
-
|
102
|
-
This will only update the release note matching the version number specified.
|
103
|
-
|
104
|
-
### View release notes in your application
|
105
|
-
|
106
|
-
To view all of your release notes just visit `http://yourapp/release_notes` (or whatever route is mounted in your `routes.rb` file) in your application. To view a specific version just visit `http://yourapp/release_notes/:version` where `:version` is the release notes version that you are looking to view using underscores instead of periods (i.e. `0_1_0`).
|
107
|
-
|
108
|
-
### Create a new Broadcast
|
109
|
-
|
110
|
-
To create a new Broadcast run:
|
111
|
-
|
112
|
-
$ release_notes broadcast new
|
113
|
-
|
114
|
-
This will generate a broadcast markdown file which you can edit.
|
115
|
-
**Note:** You *can* use HTML within the markdown file.
|
116
|
-
|
117
|
-
### Update Broadcast
|
59
|
+
If you ever want to update a previous release note and/or want to rebuild your ReleaseNotes model and README you can run the following:
|
118
60
|
|
119
|
-
|
61
|
+
$ release_notes update -r
|
120
62
|
|
121
|
-
|
63
|
+
### Getting Help
|
122
64
|
|
123
|
-
|
65
|
+
To get additional help on release_notes commands or to see all available options just run:
|
124
66
|
|
125
|
-
$ release_notes
|
67
|
+
$ release_notes --help [command]
|
126
68
|
|
127
|
-
###
|
128
|
-
|
129
|
-
You can set a specific broadcast to set as the "latest" broadcast (the default shown by using the broadcast partials) by running the following:
|
130
|
-
|
131
|
-
$ release_notes broadcast set_version VERSION
|
69
|
+
### View release notes in your application
|
132
70
|
|
133
|
-
|
71
|
+
To view all of your release notes just visit `http://yourapp/release_notes` (or whatever route is mounted in your `routes.rb` file) in your application. To view a specific version just visit `http://yourapp/release_notes/:version` where `:version` is the release notes version that you are looking to view using underscores instead of periods (i.e. `0_1_0`).
|
134
72
|
|
135
73
|
## Contributing
|
136
74
|
|
@@ -6,16 +6,10 @@ ReleaseNotes.setup do |config|
|
|
6
6
|
# Name of the model you're using to store the various release notes.
|
7
7
|
config.release_note_model = 'ReleaseNote'
|
8
8
|
|
9
|
-
# Name of the model you're using to store broadcasts.
|
10
|
-
config.broadcast_model = 'Broadcast'
|
11
|
-
|
12
9
|
# Name of the model you're using to store users.
|
13
10
|
config.user_model = 'User'
|
14
11
|
|
15
|
-
# Name of the
|
16
|
-
config.user_broadcast_model = 'UserBroadcast'
|
17
|
-
|
18
|
-
# Name of the folder you're using to store the release note and broadcast markdown files.
|
12
|
+
# Name of the folder you're using to store the release note markdown files.
|
19
13
|
config.release_note_folder = 'release_notes'
|
20
14
|
|
21
15
|
# Path that ReleaseNotes::Engine is mounted at in the config/routes.rb file.
|
data/lib/release_notes/cli.rb
CHANGED
@@ -2,15 +2,11 @@ require 'thor'
|
|
2
2
|
require 'release_notes'
|
3
3
|
require 'release_notes/version'
|
4
4
|
require 'release_notes/versioning'
|
5
|
-
require 'release_notes/cli/broadcast'
|
6
5
|
require 'release_notes/cli/helpers'
|
7
6
|
require 'release_notes/generators/release_note'
|
8
|
-
require 'release_notes/generators/broadcast'
|
9
7
|
|
10
8
|
module ReleaseNotes
|
11
9
|
class CLI < Thor
|
12
|
-
register(Broadcast, 'broadcast', 'broadcast [COMMAND]', 'Create a new broadcast or update Broadcast models')
|
13
|
-
|
14
10
|
package_name 'ReleaseNotes'
|
15
11
|
map '-v' => :version
|
16
12
|
|
@@ -47,7 +43,6 @@ module ReleaseNotes
|
|
47
43
|
method_option :destination, :aliases => '-d', :default => ReleaseNotes.release_note_folder, :desc => 'relative location of release note folder'
|
48
44
|
method_option :no_log, :aliases => '-n', :type => :boolean, :default => false, :desc => 'disable README.md log of release notes'
|
49
45
|
method_option :reset, :aliases => '-r', :type => :boolean, :default => false, :desc => 'delete all model entries and rebuilds them'
|
50
|
-
# method_option :version, :aliases => '-v', :desc => 'update only the given version number'
|
51
46
|
|
52
47
|
def update
|
53
48
|
# If reset option is passed delete all release notes in model
|
data/lib/release_notes.rb
CHANGED
@@ -13,18 +13,10 @@ module ReleaseNotes
|
|
13
13
|
mattr_accessor :release_note_model
|
14
14
|
@@release_note_model = 'ReleaseNote'
|
15
15
|
|
16
|
-
# Model name of the model created to store broadcasts.
|
17
|
-
mattr_accessor :broadcast_model
|
18
|
-
@@broadcast_model = 'Broadcast'
|
19
|
-
|
20
16
|
# Model name of the model created to store users.
|
21
17
|
mattr_accessor :user_model
|
22
18
|
@@user_model = 'User'
|
23
19
|
|
24
|
-
# Model name of the model created to store broadcasts for users.
|
25
|
-
mattr_accessor :user_broadcast_model
|
26
|
-
@@user_broadcast_model = 'UserBroadcast'
|
27
|
-
|
28
20
|
# Name of the folder where release notes are stored.
|
29
21
|
mattr_accessor :release_note_folder
|
30
22
|
@@release_note_folder = 'release_notes'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: release_notes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brandon Robins
|
@@ -145,35 +145,27 @@ files:
|
|
145
145
|
- app/controllers/release_notes/release_notes_controller.rb
|
146
146
|
- app/helpers/release_notes/application_helper.rb
|
147
147
|
- app/views/layouts/release_notes/application.html.erb
|
148
|
-
- app/views/release_notes/broadcasts/_bare.html.erb
|
149
|
-
- app/views/release_notes/broadcasts/_link_back.html.erb
|
150
148
|
- app/views/release_notes/release_notes/_shared.html.erb
|
151
149
|
- app/views/release_notes/release_notes/index.html.erb
|
152
150
|
- app/views/release_notes/release_notes/show.html.erb
|
153
151
|
- bin/release_notes
|
154
152
|
- config/routes.rb
|
155
153
|
- features/support/setup.rb
|
156
|
-
- lib/generators/active_record/broadcasts_generator.rb
|
157
154
|
- lib/generators/active_record/release_notes_generator.rb
|
158
|
-
- lib/generators/active_record/templates/broadcasts_migration.rb
|
159
155
|
- lib/generators/active_record/templates/release_notes_migration.rb
|
160
|
-
- lib/generators/release_notes/broadcasts_generator.rb
|
161
156
|
- lib/generators/release_notes/install_generator.rb
|
162
157
|
- lib/generators/release_notes/orm_helpers.rb
|
163
158
|
- lib/generators/release_notes/release_notes_generator.rb
|
164
159
|
- lib/generators/release_notes/views_generator.rb
|
165
160
|
- lib/generators/templates/README
|
166
|
-
- lib/generators/templates/broadcast_blank.md
|
167
161
|
- lib/generators/templates/release_notes.rb
|
168
162
|
- lib/generators/templates/release_notes_controller_decorator.rb
|
169
163
|
- lib/generators/templates/update.md
|
170
164
|
- lib/generators/templates/update_blank.md
|
171
165
|
- lib/release_notes.rb
|
172
166
|
- lib/release_notes/cli.rb
|
173
|
-
- lib/release_notes/cli/broadcast.rb
|
174
167
|
- lib/release_notes/cli/helpers.rb
|
175
168
|
- lib/release_notes/engine.rb
|
176
|
-
- lib/release_notes/generators/broadcast.rb
|
177
169
|
- lib/release_notes/generators/release_note.rb
|
178
170
|
- lib/release_notes/version.rb
|
179
171
|
- lib/release_notes/versioning.rb
|
@@ -1,47 +0,0 @@
|
|
1
|
-
require 'rails/generators/active_record'
|
2
|
-
require 'generators/release_notes/orm_helpers'
|
3
|
-
|
4
|
-
module ActiveRecord
|
5
|
-
module Generators
|
6
|
-
class BroadcastsGenerator < ActiveRecord::Generators::Base
|
7
|
-
argument :attributes, :type => :array, :default => [], :banner => "field:type field:type"
|
8
|
-
|
9
|
-
include ReleaseNotes::Generators::OrmHelpers
|
10
|
-
source_root File.expand_path("../templates", __FILE__)
|
11
|
-
|
12
|
-
def copy_broadcasts_migration
|
13
|
-
if (behavior == :invoke && model_exists?)
|
14
|
-
raise "#{table_name} already exists..."
|
15
|
-
else
|
16
|
-
migration_template "broadcasts_migration.rb", "db/migrate/release_notes_create_#{table_name}.rb"
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
def generate_module
|
21
|
-
invoke "active_record:model", [name], :migration => false unless model_exists? && behavior == :invoke
|
22
|
-
end
|
23
|
-
|
24
|
-
def inject_broadcasts_content
|
25
|
-
content = broadcasts_model_contents
|
26
|
-
|
27
|
-
class_path = if namespaced?
|
28
|
-
class_name.to_s.split("::")
|
29
|
-
else
|
30
|
-
[class_name]
|
31
|
-
end
|
32
|
-
|
33
|
-
indent_depth = class_path.size - 1
|
34
|
-
content = content.split("\n").map { |line| " " * indent_depth + line }.join("\n") << "\n"
|
35
|
-
|
36
|
-
inject_into_class(model_path, class_path.last, content) if model_exists?
|
37
|
-
end
|
38
|
-
|
39
|
-
def migration_data
|
40
|
-
<<RUBY
|
41
|
-
t.text :markdown, :null => false
|
42
|
-
t.string :version, :null => false
|
43
|
-
RUBY
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
class ReleaseNotesCreate<%= table_name.camelize %> < ActiveRecord::Migration
|
2
|
-
def change
|
3
|
-
create_table(:<%= table_name %>) do |t|
|
4
|
-
<%= migration_data -%>
|
5
|
-
|
6
|
-
<% attributes.each do |attribute| -%>
|
7
|
-
t.<%= attribute.type %> :<%= attribute.name %>
|
8
|
-
<% end -%>
|
9
|
-
|
10
|
-
t.timestamps
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
require 'rails/generators/named_base'
|
2
|
-
|
3
|
-
module ReleaseNotes
|
4
|
-
module Generators
|
5
|
-
class BroadcastsGenerator < Rails::Generators::NamedBase
|
6
|
-
include Rails::Generators::ResourceHelpers
|
7
|
-
|
8
|
-
namespace "release_notes:broadcasts"
|
9
|
-
source_root File.expand_path("../templates", __FILE__)
|
10
|
-
|
11
|
-
desc "Generates a Broadcast model with the given NAME (if one does not exist)."
|
12
|
-
|
13
|
-
hook_for :orm
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
@@ -1,116 +0,0 @@
|
|
1
|
-
module ReleaseNotes
|
2
|
-
class Broadcast < Thor
|
3
|
-
desc 'broadcast new', 'Create a new broadcast'
|
4
|
-
method_option :destination, :aliases => '-d', :default => ReleaseNotes.release_note_folder, :desc => 'relative location of release note folder'
|
5
|
-
method_option :release_note_version, :aliases => '-r', :desc => 'corresponding release note version'
|
6
|
-
method_option :subject, :aliases => '-s', :default => "New Update", :desc => 'subject of broadcast'
|
7
|
-
method_option :body, :aliases => '-b', :default => "We've made some new changes - check 'em out!", :desc => 'body of broadcast'
|
8
|
-
|
9
|
-
def new
|
10
|
-
release_note_version = options[:release_note_version] || ""
|
11
|
-
|
12
|
-
ReleaseNotes::Generators::Broadcast.start([options[:destination],
|
13
|
-
options[:subject],
|
14
|
-
options[:body],
|
15
|
-
release_note_version])
|
16
|
-
end
|
17
|
-
|
18
|
-
|
19
|
-
desc 'broadcast set_version [VERSION]', 'Sets the latest broadcast to the given version'
|
20
|
-
|
21
|
-
def set_version(version)
|
22
|
-
rn = ReleaseNotes.broadcast_model.constantize.find_by(version: version)
|
23
|
-
|
24
|
-
new_rn = ReleaseNotes.broadcast_model.constantize.new
|
25
|
-
new_rn.version = rn.version
|
26
|
-
new_rn.markdown = rn.markdown
|
27
|
-
|
28
|
-
rn.destroy
|
29
|
-
new_rn.save
|
30
|
-
|
31
|
-
say "Latest broadcast is now set to version #{version}.", :green
|
32
|
-
rescue NoMethodError
|
33
|
-
say "Broadcast version #{version} was not found in the db.", :red
|
34
|
-
end
|
35
|
-
|
36
|
-
|
37
|
-
desc 'broadcast update', "Update #{ReleaseNotes.broadcast_model} models"
|
38
|
-
method_option :destination, :aliases => '-d', :default => ReleaseNotes.release_note_folder, :desc => 'relative location of release note folder'
|
39
|
-
method_option :reset, :aliases => '-r', :type => :boolean, :default => false, :desc => 'delete all model entries and rebuilds them'
|
40
|
-
method_option :version, :aliases => '-v', :desc => 'specific broadcast version to save/update'
|
41
|
-
|
42
|
-
def update
|
43
|
-
# If reset option is passed delete all broadcasts in model
|
44
|
-
if options[:reset]
|
45
|
-
ReleaseNotes.broadcast_model.constantize.all.each do |b|
|
46
|
-
b.destroy
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
if options[:version]
|
51
|
-
version = options[:version]
|
52
|
-
broadcast_file = single_broadcast_lookup_at(options[:destination], version)
|
53
|
-
markdown = File.read("#{options[:destination]}/#{broadcast_file}")
|
54
|
-
|
55
|
-
# If version is set check to see if its already in db or create new one
|
56
|
-
if ReleaseNotes.broadcast_model.constantize.find_by(version: version)
|
57
|
-
ReleaseNotes.broadcast_model.constantize
|
58
|
-
.find_by(version: version)
|
59
|
-
.update_attributes(markdown: markdown)
|
60
|
-
|
61
|
-
say "#{ReleaseNotes.broadcast_model} model successfully updated.", :green
|
62
|
-
else
|
63
|
-
ReleaseNotes.broadcast_model.constantize.create(version: version,
|
64
|
-
markdown: markdown)
|
65
|
-
|
66
|
-
say "#{ReleaseNotes.broadcast_model} model successfully saved.", :green
|
67
|
-
end
|
68
|
-
else
|
69
|
-
# Gets last broadcast version from db
|
70
|
-
last_broadcast = ReleaseNotes.broadcast_model.constantize.last
|
71
|
-
|
72
|
-
if last_broadcast.nil?
|
73
|
-
last_version = 0
|
74
|
-
else
|
75
|
-
last_version = last_broadcast.version.to_i
|
76
|
-
end
|
77
|
-
|
78
|
-
# Collects relevant files and saves version and content to db
|
79
|
-
broadcast_files = collect_broadcast_files(options[:destination])
|
80
|
-
broadcast_files.each do |file|
|
81
|
-
version = file.split('_').last.to_i
|
82
|
-
|
83
|
-
if version > last_version
|
84
|
-
markdown = File.read("#{options[:destination]}/#{file}")
|
85
|
-
|
86
|
-
ReleaseNotes.broadcast_model.constantize.create(version: version,
|
87
|
-
markdown: markdown)
|
88
|
-
|
89
|
-
say "#{ReleaseNotes.broadcast_model} version #{version} successfully saved.", :green
|
90
|
-
end
|
91
|
-
end
|
92
|
-
end
|
93
|
-
end
|
94
|
-
|
95
|
-
protected
|
96
|
-
def collect_broadcast_files(dirname)
|
97
|
-
broadcast_lookup_at(dirname).collect do |file|
|
98
|
-
File.basename(file)
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
def current_broadcast_number(dirname)
|
103
|
-
broadcast_lookup_at(dirname).collect do |file|
|
104
|
-
File.basename(file).split('_').last.to_i
|
105
|
-
end.max.to_i
|
106
|
-
end
|
107
|
-
|
108
|
-
def broadcast_lookup_at(dirname)
|
109
|
-
Dir.glob("#{dirname}/broadcast_[0-9]*.md")
|
110
|
-
end
|
111
|
-
|
112
|
-
def single_broadcast_lookup_at(dirname, version)
|
113
|
-
File.basename(Dir.glob("#{dirname}/broadcast_#{version}*.md")[0])
|
114
|
-
end
|
115
|
-
end
|
116
|
-
end
|
@@ -1,58 +0,0 @@
|
|
1
|
-
require 'thor/group'
|
2
|
-
|
3
|
-
module ReleaseNotes
|
4
|
-
module Generators
|
5
|
-
class Broadcast < Thor::Group
|
6
|
-
include Thor::Actions
|
7
|
-
|
8
|
-
argument :destination, :type => :string
|
9
|
-
argument :subject, :type => :string
|
10
|
-
argument :body, :type => :string
|
11
|
-
argument :release_note_version, :type => :string
|
12
|
-
|
13
|
-
source_root File.expand_path('../../../generators/templates', __FILE__)
|
14
|
-
|
15
|
-
def set_local_assigns
|
16
|
-
@subject = subject
|
17
|
-
@body = body
|
18
|
-
|
19
|
-
if release_note_version != ""
|
20
|
-
@release_note_version = release_note_version.gsub('.', '_')
|
21
|
-
else
|
22
|
-
@release_note_version = nil
|
23
|
-
end
|
24
|
-
|
25
|
-
@broadcast_template = 'broadcast_blank.md'
|
26
|
-
@destination = File.expand_path(destination)
|
27
|
-
end
|
28
|
-
|
29
|
-
def create_directory
|
30
|
-
empty_directory(@destination)
|
31
|
-
end
|
32
|
-
|
33
|
-
def get_broadcast_number
|
34
|
-
@broadcast_number = next_broadcast_number(@destination)
|
35
|
-
end
|
36
|
-
|
37
|
-
def copy_broadcast
|
38
|
-
@filename = "#{destination}/broadcast_#{@broadcast_number}.md"
|
39
|
-
template(@broadcast_template, @filename)
|
40
|
-
end
|
41
|
-
|
42
|
-
protected
|
43
|
-
def next_broadcast_number(dirname)
|
44
|
-
current_broadcast_number(dirname) + 1
|
45
|
-
end
|
46
|
-
|
47
|
-
def current_broadcast_number(dirname)
|
48
|
-
broadcast_lookup_at(dirname).collect do |file|
|
49
|
-
File.basename(file).split('_').last.to_i
|
50
|
-
end.max.to_i
|
51
|
-
end
|
52
|
-
|
53
|
-
def broadcast_lookup_at(dirname)
|
54
|
-
Dir.glob("#{dirname}/*_[0-9]*.md")
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|