release_notes 0.1.3
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 +7 -0
- data/.gitignore +19 -0
- data/.rspec +2 -0
- data/.ruby-version +1 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +75 -0
- data/Rakefile +7 -0
- data/app/assets/javascripts/release_notes/bootstrap.js +6 -0
- data/app/assets/stylesheets/release_notes/application.css +75 -0
- data/app/assets/stylesheets/release_notes/bootstrap.css +7 -0
- data/app/assets/stylesheets/release_notes/github.css.scss +161 -0
- data/app/controllers/release_notes/application_controller.rb +2 -0
- data/app/controllers/release_notes/release_notes_controller.rb +11 -0
- data/app/helpers/release_notes/application_helper.rb +28 -0
- data/app/views/layouts/release_notes/application.html.erb +40 -0
- data/app/views/release_notes/release_notes/_shared.html.erb +11 -0
- data/app/views/release_notes/release_notes/index.html.erb +1 -0
- data/app/views/release_notes/release_notes/show.html.erb +1 -0
- data/bin/release_notes +11 -0
- data/config/routes.rb +4 -0
- data/features/support/setup.rb +1 -0
- data/lib/generators/active_record/release_notes_generator.rb +47 -0
- data/lib/generators/active_record/templates/migration.rb +15 -0
- data/lib/generators/release_notes/install_generator.rb +21 -0
- data/lib/generators/release_notes/orm_helpers.rb +27 -0
- data/lib/generators/release_notes/release_notes_generator.rb +25 -0
- data/lib/generators/release_notes/views_generator.rb +47 -0
- data/lib/generators/templates/README +20 -0
- data/lib/generators/templates/release_notes.rb +14 -0
- data/lib/generators/templates/update.md +72 -0
- data/lib/generators/templates/update_blank.md +41 -0
- data/lib/release_notes/cli/helpers.rb +64 -0
- data/lib/release_notes/cli.rb +135 -0
- data/lib/release_notes/engine.rb +5 -0
- data/lib/release_notes/generators/release_note.rb +78 -0
- data/lib/release_notes/version.rb +3 -0
- data/lib/release_notes/versioning/semantic.rb +50 -0
- data/lib/release_notes/versioning.rb +26 -0
- data/lib/release_notes.rb +27 -0
- data/release_notes.gemspec +31 -0
- data/spec/spec_helper.rb +17 -0
- metadata +200 -0
@@ -0,0 +1,135 @@
|
|
1
|
+
require 'thor'
|
2
|
+
require 'release_notes'
|
3
|
+
require 'release_notes/version'
|
4
|
+
require 'release_notes/versioning'
|
5
|
+
require 'release_notes/cli/helpers'
|
6
|
+
require 'release_notes/generators/release_note'
|
7
|
+
|
8
|
+
module ReleaseNotes
|
9
|
+
class CLI < Thor
|
10
|
+
|
11
|
+
package_name 'ReleaseNotes'
|
12
|
+
map '-v' => :version
|
13
|
+
|
14
|
+
|
15
|
+
desc 'new', 'create a new release note'
|
16
|
+
method_option :destination, :aliases => '-d', :default => ReleaseNotes.release_note_folder, :desc => 'relative location of release note folder'
|
17
|
+
method_option :force, :aliases => '-f', :type => :boolean, :desc => 'overwrite files that already exist'
|
18
|
+
method_option :increment, :aliases => '-i', :default => 'patch', :banner => 'MODE', :desc => 'increment version by mode'
|
19
|
+
method_option :message, :aliases => '-m', :desc => 'interactive release note bullet input'
|
20
|
+
method_option :version, :aliases => '-V', :desc => 'use the given version number'
|
21
|
+
|
22
|
+
def new
|
23
|
+
if options[:version].nil?
|
24
|
+
last_version = ReleaseNotes::Versioning.current_version_number(options[:destination])
|
25
|
+
update_version = ReleaseNotes::Versioning::Semantic.increment(last_version, options[:increment])
|
26
|
+
else
|
27
|
+
update_version = options[:version]
|
28
|
+
end
|
29
|
+
|
30
|
+
message = ReleaseNotes::CLI::Helpers.setup_message_obj
|
31
|
+
|
32
|
+
if options[:message]
|
33
|
+
message = ReleaseNotes::CLI::Helpers.interactive_bullets(message)
|
34
|
+
end
|
35
|
+
|
36
|
+
ReleaseNotes::Generators::ReleaseNote.start([options[:destination],
|
37
|
+
message,
|
38
|
+
update_version,
|
39
|
+
"--force=#{options[:force] || false}"])
|
40
|
+
end
|
41
|
+
|
42
|
+
|
43
|
+
desc 'update', "update #{ReleaseNotes.release_note_model} model"
|
44
|
+
method_option :destination, :aliases => '-d', :default => ReleaseNotes.release_note_folder, :desc => 'relative location of release note folder'
|
45
|
+
method_option :no_log, :aliases => '-n', :type => :boolean, :default => false, :desc => 'disable README.md log of release notes'
|
46
|
+
method_option :reset, :aliases => '-r', :type => :boolean, :default => false, :desc => 'delete all model entries and rebuilds them'
|
47
|
+
# method_option :version, :aliases => '-V', :desc => 'update only the given version number'
|
48
|
+
|
49
|
+
def update
|
50
|
+
# If reset option is passed delete all release notes in model
|
51
|
+
if options[:reset]
|
52
|
+
stamp = nil
|
53
|
+
release_log = ""
|
54
|
+
|
55
|
+
begin
|
56
|
+
File.delete("#{options[:destination]}/README.md")
|
57
|
+
rescue Errno::ENOENT
|
58
|
+
# Nothing to see here... move along.
|
59
|
+
end
|
60
|
+
|
61
|
+
ReleaseNotes.release_note_model.constantize.all.each do |rn|
|
62
|
+
rn.destroy
|
63
|
+
end
|
64
|
+
else
|
65
|
+
# Checks timestamp of last release note stored
|
66
|
+
begin
|
67
|
+
stamp = File.read("#{options[:destination]}/stamp")
|
68
|
+
rescue Errno::ENOENT
|
69
|
+
stamp = nil
|
70
|
+
end
|
71
|
+
|
72
|
+
# Reads contents of release note compilation file
|
73
|
+
begin
|
74
|
+
release_log = File.read("#{options[:destination]}/README.md")
|
75
|
+
rescue Errno::ENOENT
|
76
|
+
release_log = ""
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
# Collects relevant files and saves version and content to db
|
81
|
+
update_files = collect_update_files(options[:destination])
|
82
|
+
update_files.each do |file|
|
83
|
+
timestamp = file[0].to_i
|
84
|
+
|
85
|
+
if !stamp.nil? and timestamp <= stamp.to_i
|
86
|
+
next
|
87
|
+
end
|
88
|
+
|
89
|
+
version = file[1..4].join('.')[0..-4]
|
90
|
+
|
91
|
+
file = file.join('_')
|
92
|
+
markdown = File.read("#{options[:destination]}/#{file}")
|
93
|
+
ReleaseNotes.release_note_model.constantize.create(version: version,
|
94
|
+
markdown: markdown)
|
95
|
+
|
96
|
+
release_log.insert(0, "#{markdown}\n\n---\n\n") unless options[:no_log]
|
97
|
+
end
|
98
|
+
|
99
|
+
# Store the timestamp of the last release note
|
100
|
+
new_stamp = latest_update_file(options[:destination])
|
101
|
+
File.write("#{options[:destination]}/stamp", "#{new_stamp}", mode: 'w')
|
102
|
+
|
103
|
+
# Store release note compilation file
|
104
|
+
File.write("#{options[:destination]}/README.md", "#{release_log}", mode: 'w') unless options[:no_log]
|
105
|
+
|
106
|
+
say "#{ReleaseNotes.release_note_model} model successfully updated.", :green
|
107
|
+
say "ReleaseNotes log successfully updated (see #{options[:destination]}/README.md).", :green unless options[:no_log]
|
108
|
+
end
|
109
|
+
|
110
|
+
|
111
|
+
desc 'version', 'show version of release_notes'
|
112
|
+
|
113
|
+
def version
|
114
|
+
puts "ReleaseNotes #{ReleaseNotes::VERSION}"
|
115
|
+
end
|
116
|
+
|
117
|
+
|
118
|
+
protected
|
119
|
+
def collect_update_files(dirname)
|
120
|
+
update_lookup_at(dirname).collect do |file|
|
121
|
+
File.basename(file).split('_')
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
def latest_update_file(dirname)
|
126
|
+
update_lookup_at(dirname).collect do |file|
|
127
|
+
File.basename(file).split('_').first.to_i
|
128
|
+
end.max.to_i
|
129
|
+
end
|
130
|
+
|
131
|
+
def update_lookup_at(dirname)
|
132
|
+
Dir.glob("#{dirname}/[0-9]*_*.md")
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
require 'thor/group'
|
2
|
+
|
3
|
+
module ReleaseNotes
|
4
|
+
module Generators
|
5
|
+
class ReleaseNote < Thor::Group
|
6
|
+
include Thor::Actions
|
7
|
+
|
8
|
+
argument :destination, :type => :string
|
9
|
+
argument :message, :type => :hash
|
10
|
+
argument :release_version, :type => :string
|
11
|
+
|
12
|
+
class_option :force, :type => :boolean, :default => false
|
13
|
+
|
14
|
+
source_root File.expand_path('../../../generators/templates', __FILE__)
|
15
|
+
|
16
|
+
def set_local_assigns
|
17
|
+
@app_name = ReleaseNotes.app_name
|
18
|
+
@update_template = 'update_blank.md'
|
19
|
+
@destination = File.expand_path(destination)
|
20
|
+
@release_version = release_version.gsub('.', '_')
|
21
|
+
@message = message
|
22
|
+
|
23
|
+
message.each do |k,v|
|
24
|
+
if v.length > 0
|
25
|
+
@update_template = 'update.md'
|
26
|
+
break
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def create_update_file
|
32
|
+
empty_directory(@destination)
|
33
|
+
end
|
34
|
+
|
35
|
+
def check_version
|
36
|
+
destination = version_exists?(@destination, @release_version)
|
37
|
+
|
38
|
+
if destination
|
39
|
+
if options.force?
|
40
|
+
remove_file(destination)
|
41
|
+
else
|
42
|
+
raise Thor::Error,
|
43
|
+
<<-ERROR
|
44
|
+
Another update was found using the version number #{@release_version.gsub('_', '.')}.
|
45
|
+
Use --force to remove the old update file and replace it.
|
46
|
+
ERROR
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def copy_release_note
|
52
|
+
update_number = next_update_number(destination)
|
53
|
+
@filename = "#{destination}/#{update_number}_#{@release_version}.md"
|
54
|
+
template(@update_template, @filename)
|
55
|
+
end
|
56
|
+
|
57
|
+
protected
|
58
|
+
def next_update_number(dirname)
|
59
|
+
next_update_number = current_update_number(dirname) + 1
|
60
|
+
[Time.now.utc.strftime('%Y%m%d%H%M%S'), '%.14d' % next_update_number].max
|
61
|
+
end
|
62
|
+
|
63
|
+
def current_update_number(dirname)
|
64
|
+
update_lookup_at(dirname).collect do |file|
|
65
|
+
File.basename(file).split('_').first.to_i
|
66
|
+
end.max.to_i
|
67
|
+
end
|
68
|
+
|
69
|
+
def update_lookup_at(dirname)
|
70
|
+
Dir.glob("#{dirname}/[0-9]*_*.md")
|
71
|
+
end
|
72
|
+
|
73
|
+
def version_exists?(dirname, file_name)
|
74
|
+
update_lookup_at(dirname).grep(/\d+_#{file_name}.md$/).first
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module ReleaseNotes
|
2
|
+
module Versioning
|
3
|
+
module Semantic
|
4
|
+
class << self
|
5
|
+
|
6
|
+
def increment(version, type)
|
7
|
+
if version.nil?
|
8
|
+
ReleaseNotes.starting_version
|
9
|
+
else
|
10
|
+
parts = parse_version(version.gsub('.md', ''))
|
11
|
+
|
12
|
+
if type.downcase == 'major' or type == 'M'
|
13
|
+
parts = increment_major(parts)
|
14
|
+
elsif type.downcase == 'minor' or type == 'm'
|
15
|
+
parts = increment_minor(parts)
|
16
|
+
else
|
17
|
+
parts = increment_patch(parts)
|
18
|
+
end
|
19
|
+
|
20
|
+
new_version = parts.join('.')
|
21
|
+
new_version
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
protected
|
26
|
+
def parse_version(version)
|
27
|
+
version.split('-').first.split('.')
|
28
|
+
end
|
29
|
+
|
30
|
+
def increment_major(parts)
|
31
|
+
parts[0] = (parts[0].to_i + 1).to_s
|
32
|
+
parts[1] = '0'
|
33
|
+
parts[2] = '0'
|
34
|
+
parts
|
35
|
+
end
|
36
|
+
|
37
|
+
def increment_minor(parts)
|
38
|
+
parts[1] = (parts[1].to_i + 1).to_s
|
39
|
+
parts[2] = '0'
|
40
|
+
parts
|
41
|
+
end
|
42
|
+
|
43
|
+
def increment_patch(parts)
|
44
|
+
parts[2] = (parts[2].to_i + 1).to_s
|
45
|
+
parts
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'release_notes/versioning/semantic'
|
2
|
+
|
3
|
+
module ReleaseNotes
|
4
|
+
module Versioning
|
5
|
+
class << self
|
6
|
+
def current_version_number(dirname)
|
7
|
+
last_timestamp = version_lookup_at(dirname).collect do |file|
|
8
|
+
File.basename(file).split("_").first.to_i
|
9
|
+
end.max.to_i
|
10
|
+
|
11
|
+
last_version = Dir.glob("#{dirname}/#{last_timestamp}_*").to_s.split('/').last
|
12
|
+
last_version = last_version.gsub(last_version[0..14], '')[0..-3].gsub('_', '.')
|
13
|
+
|
14
|
+
if last_version.empty?
|
15
|
+
return nil
|
16
|
+
else
|
17
|
+
return last_version
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def version_lookup_at(dirname)
|
22
|
+
Dir.glob("#{dirname}/[0-9]*_*")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'rails'
|
2
|
+
|
3
|
+
module ReleaseNotes
|
4
|
+
# Name of application using ReleaseNotes.
|
5
|
+
mattr_accessor :app_name
|
6
|
+
@@app_name = 'AppNameGoesHere'
|
7
|
+
|
8
|
+
# Version to start ReleaseNotes if there are none.
|
9
|
+
mattr_accessor :starting_version
|
10
|
+
@@starting_version = '0.1.0'
|
11
|
+
|
12
|
+
# Model name of the model created to store release notes.
|
13
|
+
mattr_accessor :release_note_model
|
14
|
+
@@release_note_model = 'ReleaseNote'
|
15
|
+
|
16
|
+
# Name of the folder where release notes are stored.
|
17
|
+
mattr_accessor :release_note_folder
|
18
|
+
@@release_note_folder = 'release_notes'
|
19
|
+
|
20
|
+
# Default way to setup ReleaseNotes. Run rails g release_notes:install
|
21
|
+
# to create a fresh initializer with all configuration values.
|
22
|
+
def self.setup
|
23
|
+
yield self
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
require 'release_notes/engine'
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'release_notes/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "release_notes"
|
8
|
+
spec.version = ReleaseNotes::VERSION
|
9
|
+
spec.authors = ["Brandon Robins"]
|
10
|
+
spec.email = ["brandon@ourlabel.com"]
|
11
|
+
spec.summary = "An easy way to incorporate and manage release notes."
|
12
|
+
spec.description = "An easy way to incorporate and manage release notes."
|
13
|
+
spec.homepage = "http://www.github.com/eanlain/release_notes"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0")
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.executables << 'release_notes'
|
19
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
20
|
+
spec.require_paths = ["lib"]
|
21
|
+
|
22
|
+
spec.add_development_dependency "bundler", "~> 1.5"
|
23
|
+
spec.add_development_dependency "rake", "~> 10.1.1"
|
24
|
+
spec.add_development_dependency "rspec", "~> 2.14"
|
25
|
+
spec.add_development_dependency "cucumber", "~> 1.3.10"
|
26
|
+
spec.add_development_dependency "aruba", "~> 0.5.4"
|
27
|
+
|
28
|
+
spec.add_dependency "thor", "~> 0.18.1"
|
29
|
+
spec.add_dependency "rails", "~> 4.0.0"
|
30
|
+
spec.add_dependency "redcarpet", "~> 3.0.0"
|
31
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
# This file was generated by the `rspec --init` command. Conventionally, all
|
2
|
+
# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
|
3
|
+
# Require this file using `require "spec_helper"` to ensure that it is only
|
4
|
+
# loaded once.
|
5
|
+
#
|
6
|
+
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
7
|
+
RSpec.configure do |config|
|
8
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
9
|
+
config.run_all_when_everything_filtered = true
|
10
|
+
config.filter_run :focus
|
11
|
+
|
12
|
+
# Run specs in random order to surface order dependencies. If you find an
|
13
|
+
# order dependency and want to debug it, you can fix the order by providing
|
14
|
+
# the seed, which is printed after each run.
|
15
|
+
# --seed 1234
|
16
|
+
config.order = 'random'
|
17
|
+
end
|
metadata
ADDED
@@ -0,0 +1,200 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: release_notes
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.3
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Brandon Robins
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-01-31 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.5'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.5'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 10.1.1
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 10.1.1
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '2.14'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '2.14'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: cucumber
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.3.10
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ~>
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 1.3.10
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: aruba
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ~>
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 0.5.4
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ~>
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 0.5.4
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: thor
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ~>
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 0.18.1
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ~>
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 0.18.1
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rails
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ~>
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 4.0.0
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ~>
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 4.0.0
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: redcarpet
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ~>
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 3.0.0
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ~>
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 3.0.0
|
125
|
+
description: An easy way to incorporate and manage release notes.
|
126
|
+
email:
|
127
|
+
- brandon@ourlabel.com
|
128
|
+
executables:
|
129
|
+
- release_notes
|
130
|
+
extensions: []
|
131
|
+
extra_rdoc_files: []
|
132
|
+
files:
|
133
|
+
- .gitignore
|
134
|
+
- .rspec
|
135
|
+
- .ruby-version
|
136
|
+
- Gemfile
|
137
|
+
- LICENSE.txt
|
138
|
+
- README.md
|
139
|
+
- Rakefile
|
140
|
+
- app/assets/javascripts/release_notes/bootstrap.js
|
141
|
+
- app/assets/stylesheets/release_notes/application.css
|
142
|
+
- app/assets/stylesheets/release_notes/bootstrap.css
|
143
|
+
- app/assets/stylesheets/release_notes/github.css.scss
|
144
|
+
- app/controllers/release_notes/application_controller.rb
|
145
|
+
- app/controllers/release_notes/release_notes_controller.rb
|
146
|
+
- app/helpers/release_notes/application_helper.rb
|
147
|
+
- app/views/layouts/release_notes/application.html.erb
|
148
|
+
- app/views/release_notes/release_notes/_shared.html.erb
|
149
|
+
- app/views/release_notes/release_notes/index.html.erb
|
150
|
+
- app/views/release_notes/release_notes/show.html.erb
|
151
|
+
- bin/release_notes
|
152
|
+
- config/routes.rb
|
153
|
+
- features/support/setup.rb
|
154
|
+
- lib/generators/active_record/release_notes_generator.rb
|
155
|
+
- lib/generators/active_record/templates/migration.rb
|
156
|
+
- lib/generators/release_notes/install_generator.rb
|
157
|
+
- lib/generators/release_notes/orm_helpers.rb
|
158
|
+
- lib/generators/release_notes/release_notes_generator.rb
|
159
|
+
- lib/generators/release_notes/views_generator.rb
|
160
|
+
- lib/generators/templates/README
|
161
|
+
- lib/generators/templates/release_notes.rb
|
162
|
+
- lib/generators/templates/update.md
|
163
|
+
- lib/generators/templates/update_blank.md
|
164
|
+
- lib/release_notes.rb
|
165
|
+
- lib/release_notes/cli.rb
|
166
|
+
- lib/release_notes/cli/helpers.rb
|
167
|
+
- lib/release_notes/engine.rb
|
168
|
+
- lib/release_notes/generators/release_note.rb
|
169
|
+
- lib/release_notes/version.rb
|
170
|
+
- lib/release_notes/versioning.rb
|
171
|
+
- lib/release_notes/versioning/semantic.rb
|
172
|
+
- release_notes.gemspec
|
173
|
+
- spec/spec_helper.rb
|
174
|
+
homepage: http://www.github.com/eanlain/release_notes
|
175
|
+
licenses:
|
176
|
+
- MIT
|
177
|
+
metadata: {}
|
178
|
+
post_install_message:
|
179
|
+
rdoc_options: []
|
180
|
+
require_paths:
|
181
|
+
- lib
|
182
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
183
|
+
requirements:
|
184
|
+
- - '>='
|
185
|
+
- !ruby/object:Gem::Version
|
186
|
+
version: '0'
|
187
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
188
|
+
requirements:
|
189
|
+
- - '>='
|
190
|
+
- !ruby/object:Gem::Version
|
191
|
+
version: '0'
|
192
|
+
requirements: []
|
193
|
+
rubyforge_project:
|
194
|
+
rubygems_version: 2.2.1
|
195
|
+
signing_key:
|
196
|
+
specification_version: 4
|
197
|
+
summary: An easy way to incorporate and manage release notes.
|
198
|
+
test_files:
|
199
|
+
- features/support/setup.rb
|
200
|
+
- spec/spec_helper.rb
|