Skip to content

Commit

Permalink
✨ Make print supports version folders
Browse files Browse the repository at this point in the history
  • Loading branch information
pinglamb committed Sep 17, 2017
1 parent 5472fc1 commit b986f80
Show file tree
Hide file tree
Showing 14 changed files with 90 additions and 6 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@
## [Unreleased]
### Added
- Added something (@pinglamb)
- ✨ Added untag script (@pinglamb)
- ✨ Added add script (@pinglamb)
- ✨ Added basic print script (@pinglamb)
- ✨ Added tag script (@pinglamb)

### Changed
- ✨ Support getting title from git commit (@pinglamb)
2 changes: 2 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ PATH
specs:
changelog-rb (0.1.0)
activesupport
semantic (~> 1.6.0)
thor (~> 0.20.0)

GEM
Expand Down Expand Up @@ -32,6 +33,7 @@ GEM
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.6.0)
rspec-support (3.6.0)
semantic (1.6.0)
thor (0.20.0)
thread_safe (0.3.6)
tzinfo (1.2.3)
Expand Down
1 change: 1 addition & 0 deletions changelog-rb.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ Gem::Specification.new do |spec|

spec.add_runtime_dependency "thor", "~> 0.20.0"
spec.add_runtime_dependency "activesupport"
spec.add_runtime_dependency "semantic", "~> 1.6.0"

spec.add_development_dependency "bundler", "~> 1.16.a"
spec.add_development_dependency "rake", "~> 10.0"
Expand Down
4 changes: 4 additions & 0 deletions changelog/unreleased/added_untag_script.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
type: Added
title: >
✨ Added untag script
author: pinglamb
44 changes: 40 additions & 4 deletions lib/changelog/print.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
require 'thor'
require 'yaml'
require 'semantic'

module Changelog
class Print < Thor
Expand All @@ -12,23 +13,58 @@ def go

append_to_file 'CHANGELOG.md', "# Changelog\n\n", verbose: false

shell.say_status :append, "changes in changelog/unreleased", :green unless shell.mute?
append_to_file 'CHANGELOG.md', "## [Unreleased]\n", verbose: false
print_changes 'unreleased'

version_folders.each do |version|
shell.say_status :append, "changes in changelog/#{version}", :green unless shell.mute?
print_version_header version
print_changes version
end
end

def print_version_header(folder)
append_to_file 'CHANGELOG.md', "\n", verbose: false, force: true

meta = YAML.load_file(File.join(destination_root, "changelog/#{folder}/tag.yml"))
date = meta['date'].to_s
append_to_file 'CHANGELOG.md', "## [#{folder}] - #{date}\n", verbose: false
end

def print_changes(folder)
items = {}
Dir[File.join(destination_root, 'changelog/unreleased/*.yml')].each do |file|
changelog_files(folder).each do |file|
yaml = YAML.load_file(file)
items[yaml['type']] ||= []
items[yaml['type']] << "#{yaml['title'].strip} (@#{yaml['author']})"
end

sections = []
Changelog.natures.each.with_index do |nature, i|
if changes = items[nature].presence
append_to_file 'CHANGELOG.md', "### #{nature}\n", verbose: false
lines = []
lines << "### #{nature}\n"
changes.each do |change|
append_to_file 'CHANGELOG.md', "- #{change}\n", verbose: false
lines << "- #{change}\n"
end
append_to_file 'CHANGELOG.md', "\n", verbose: false, force: true unless i == Changelog.natures.size - 1
sections << lines.join
end
end

append_to_file 'CHANGELOG.md', sections.join("\n"), verbose: false, force: true
end

def version_folders
(Dir[File.join(destination_root, 'changelog/*')] - [
File.join(destination_root, "changelog/unreleased")
]).collect {|path| File.basename(path)}.sort_by {|version| Semantic::Version.new(version)}.reverse
end

def changelog_files(folder)
Dir[File.join(destination_root, "changelog/#{folder}/*.yml")] - [
File.join(destination_root, "changelog/#{folder}/tag.yml")
]
end
end
end
Expand Down
21 changes: 21 additions & 0 deletions spec/fixtures/CHANGELOG-1.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,24 @@

### Security
- Added Secure Stuff (@someone)

## [0.2.1] - 2017-09-17
### Fixed
- Fixed something (@someone)

## [0.2.0] - 2017-09-01
### Added
- Added something (@someone)

### Changed
- Changed something (@someone)

### Removed
- Removed something (@someone)

## [0.1.0] - 2017-08-15
### Added
- Added something (@someone)

### Fixed
- Fixed something (@someone)
2 changes: 1 addition & 1 deletion spec/fixtures/changelog-1/0.1.0/tag.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
date: 2017-09-17
date: 2017-08-15
4 changes: 4 additions & 0 deletions spec/fixtures/changelog-1/0.2.0/added_something.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
type: Added
title: >
Added something
author: someone
4 changes: 4 additions & 0 deletions spec/fixtures/changelog-1/0.2.0/changed_something.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
type: Changed
title: >
Changed something
author: someone
4 changes: 4 additions & 0 deletions spec/fixtures/changelog-1/0.2.0/removed_something.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
type: Removed
title: >
Removed something
author: someone
1 change: 1 addition & 0 deletions spec/fixtures/changelog-1/0.2.0/tag.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
date: 2017-09-01
4 changes: 4 additions & 0 deletions spec/fixtures/changelog-1/0.2.1/fixed_something.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
type: Fixed
title: >
Fixed something
author: someone
1 change: 1 addition & 0 deletions spec/fixtures/changelog-1/0.2.1/tag.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
date: 2017-09-17
1 change: 0 additions & 1 deletion spec/print_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
FileUtils.cp_r("#{fixture_path}/changelog-1", 'changelog')
printer.go
expect(File).to exist('CHANGELOG.md')

expect(File.read('CHANGELOG.md')).to eq(File.read("#{fixture_path}/CHANGELOG-1.md"))
end
end

0 comments on commit b986f80

Please sign in to comment.