pimpmychangelog 0.0.2 → 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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 437b82b2e0edcee6e194382cb19a9733dd907564351aab59a9c4d30d1c2068a8
4
+ data.tar.gz: 236fd3beaccb0458a4500ce0efa6913ee3311181637a1e23918a720a69480ea6
5
+ SHA512:
6
+ metadata.gz: 3bd0471c3b529d85a2a87e06616e41704b6946a3e3093648121bebf66332e4cd8fa21475138c4edb791b2a534fa2dc8badeb1c1496bb72da75c8be90a908bd35
7
+ data.tar.gz: e2f9f90d6501b955cce7908674d6aba84c3965409c49f6be742c3e5ac0a33b42de5ee232e9dad8d5cd813020c9e99e3414a56e1595bec48804e5f7ea504ff6f4
data/.gitignore CHANGED
@@ -2,3 +2,4 @@
2
2
  .bundle
3
3
  Gemfile.lock
4
4
  pkg/*
5
+ tmp
@@ -1,15 +1,52 @@
1
1
  # Changelog
2
2
 
3
+ ## Version 0.1.3
4
+
5
+ * Retrieve git-remote from local configuration PR [#17][] by [@marcotc][].
6
+
7
+ ## Version 0.1.2
8
+
9
+ * Add support for changelogs without extra new line at the end of file.
10
+ PR [#6][] by [@arangamani][].
11
+
12
+ ## Version 0.1.1
13
+
14
+ * Add support for usernames with hyphens. Closes issue [#4][] reported by
15
+ [@miketheman][].
16
+
17
+ ## Version 0.1.0
18
+
19
+ * Add support for git repos with HTTPS urls. PR [#3][] by
20
+ [@Maher4Ever][].
21
+
22
+ ## Version 0.0.3
23
+
24
+ * Add support for Github nicknames with dashes. PR [#2][] by [@rymai][].
25
+
3
26
  ## Version 0.0.2
4
27
 
5
28
  * CLI does not accept any options anymore
6
29
  * Github user and projects are extracted from the origin remote fetch
7
30
  url
8
- * CHANGELOG.md is overwritten instead of printed out. #1
31
+ * CHANGELOG.md is overwritten instead of printed out. [#1][]
9
32
 
10
33
 
11
34
  ## Version 0.0.1
12
35
 
13
- * Initial version by @pcreux
36
+ * Initial version by [@pcreux][]
14
37
  * Usage: `pimpmychangelog gregbell activeadmin CHANGELOG.md`
15
38
  This would output the pimped version of the changelog.
39
+
40
+ <!--- The following link definition list is generated by PimpMyChangelog --->
41
+ [#1]: https://github.com/pcreux/pimpmychangelog/issues/1
42
+ [#2]: https://github.com/pcreux/pimpmychangelog/issues/2
43
+ [#3]: https://github.com/pcreux/pimpmychangelog/issues/3
44
+ [#4]: https://github.com/pcreux/pimpmychangelog/issues/4
45
+ [#6]: https://github.com/pcreux/pimpmychangelog/issues/6
46
+ [#17]: https://github.com/pcreux/pimpmychangelog/issues/17
47
+ [@Maher4Ever]: https://github.com/Maher4Ever
48
+ [@arangamani]: https://github.com/arangamani
49
+ [@marcotc]: https://github.com/marcotc
50
+ [@miketheman]: https://github.com/miketheman
51
+ [@pcreux]: https://github.com/pcreux
52
+ [@rymai]: https://github.com/rymai
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Philippe Creux
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md CHANGED
@@ -2,6 +2,9 @@
2
2
 
3
3
  Add links to users and issues in your CHANGELOG.md.
4
4
 
5
+ [![Build
6
+ Status](https://travis-ci.org/pcreux/pimpmychangelog.png?branch=master)](https://travis-ci.org/pcreux/pimpmychangelog)
7
+
5
8
  ### Example:
6
9
 
7
10
  > Add Travis-CI support. (@pcreux, #181)
data/Rakefile CHANGED
@@ -1 +1,7 @@
1
1
  require 'bundler/gem_tasks'
2
+
3
+ task :default => :test
4
+
5
+ task :test do
6
+ system "bundle exec rspec spec --color --format documentation"
7
+ end
@@ -1,8 +1,20 @@
1
1
  class GitRemote
2
- def initialize
3
- match = fetch_url.match(/(\w+)\/(\w+)/)
4
- @user = match[1]
5
- @project = match[2]
2
+
3
+ REPOSITORY_PATTERN = %r{
4
+ # Define recurring patterns
5
+ (?<part> [\w\d-]+ ){0}
6
+
7
+ (?<user>\g<part>)/(?<repo>\g<part>)(.git)?$
8
+ }x
9
+
10
+ def initialize(url = nil)
11
+ @url = url || fetch_url
12
+
13
+ match = @url.match(REPOSITORY_PATTERN)
14
+
15
+ @user = match[:user]
16
+ @project = match[:repo]
17
+
6
18
  unless @user && @project
7
19
  raise "Can't extract github user and project from origin remote"
8
20
  end
@@ -17,6 +29,6 @@ class GitRemote
17
29
  end
18
30
 
19
31
  def run_command
20
- `git remote show origin | grep "Fetch URL"`
32
+ `git config --get remote.origin.url`
21
33
  end
22
34
  end
@@ -21,7 +21,7 @@ module PimpMyChangelog
21
21
  # @return [Array] ordered array of contributors found in the changelog
22
22
  # Example: ['gregbell', 'pcreux', 'samvincent']
23
23
  def contributors
24
- changelog.scan(/@(\w+)/).flatten.uniq.sort
24
+ changelog.scan(/@([\w-]+)/).flatten.uniq.sort
25
25
  end
26
26
  end
27
27
  end
@@ -18,7 +18,11 @@ module PimpMyChangelog
18
18
  def better_changelog
19
19
  parsed_changelog = Parser.new(changelog)
20
20
 
21
- linkify_changelog(parsed_changelog.content) +
21
+ # If the file doesn't have an extra newline at the end the separator gets rendered
22
+ # as part of the changelog. So add an extra newline in that case.
23
+ extra_newline_if_required = parsed_changelog.content.match(/\n\n\Z/) ? "" : "\n"
24
+
25
+ linkify_changelog(parsed_changelog.content) + extra_newline_if_required +
22
26
  links_definitions(parsed_changelog.issues, parsed_changelog.contributors)
23
27
  end
24
28
 
@@ -38,7 +42,7 @@ module PimpMyChangelog
38
42
  # The following regexp ensure that the issue or contributor is
39
43
  # not wrapped between brackets (aka: is a link)
40
44
  ISSUE_NUMBER_REGEXP = /(^|[^\[])#(\d+)($|[^\]])/
41
- CONTRIBUTOR_REGEXP = /(^|[^\[])@(\w+)($|[^\]])/
45
+ CONTRIBUTOR_REGEXP = /(^|[^\[])@([\w-]+)($|[^\]])/
42
46
 
43
47
  # @param [Array] issues An array of issue numbers
44
48
  # @param [Array] contributors An array of contributors github ids
@@ -1,3 +1,3 @@
1
1
  module PimpMyChangelog
2
- VERSION = "0.0.2"
2
+ VERSION = "0.1.3"
3
3
  end
@@ -5,6 +5,7 @@ require "pimpmychangelog/version"
5
5
  Gem::Specification.new do |s|
6
6
  s.name = "pimpmychangelog"
7
7
  s.version = PimpMyChangelog::VERSION
8
+ s.license = 'MIT'
8
9
  s.authors = ["Philippe Creux"]
9
10
  s.email = ["pcreux@gmail.com"]
10
11
  s.homepage = "https://github.com/pcreux/pimpmychangelog"
@@ -19,5 +20,7 @@ Gem::Specification.new do |s|
19
20
  s.require_paths = ["lib"]
20
21
 
21
22
  s.add_development_dependency "rspec"
23
+ s.add_development_dependency "rspec-its"
22
24
  s.add_development_dependency "guard-rspec"
25
+ s.add_development_dependency "rake"
23
26
  end
@@ -1,8 +1,26 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe GitRemote do
4
- context "when working on pcreux/pimpmychangelog" do
4
+ context "when passed a SSH url to a repo" do
5
+ subject { described_class.new('git@github.com:pcreux/pimpmychangelog.git') }
6
+
7
+ its(:user) { should == 'pcreux' }
8
+ its(:project) { should == 'pimpmychangelog' }
9
+ end
10
+
11
+ context "when passed a HTTPS url to a repo" do
12
+ subject { described_class.new('https://github.com/pcreux/pimpmychangelog.git') }
13
+
5
14
  its(:user) { should == 'pcreux' }
6
15
  its(:project) { should == 'pimpmychangelog' }
7
16
  end
17
+
18
+ context "when no URL is passed" do
19
+ subject { described_class.new }
20
+
21
+ # We can't match an exact user, as this depends on who
22
+ # has checked out this repository.
23
+ its(:user) { should be_a(String) }
24
+ its(:project) { should == 'pimpmychangelog' }
25
+ end
8
26
  end
@@ -49,8 +49,8 @@ EOS
49
49
 
50
50
  describe "#contributors" do
51
51
  it "should return a sorted list of unique contributors" do
52
- Parser.new("@samvincent @pcreux @gregbell @pcreux").contributors.
53
- should == ['gregbell', 'pcreux', 'samvincent']
52
+ Parser.new("@samvincent @pcreux @gregbell @pcreux @dash-and_underscore").contributors.
53
+ should == ['dash-and_underscore', 'gregbell', 'pcreux', 'samvincent']
54
54
  end
55
55
  end
56
56
  end
@@ -18,8 +18,16 @@ describe Pimper do
18
18
 
19
19
  subject { better_changelog }
20
20
 
21
- context "when the changelog does not contain any reference to issues or users" do
22
- let(:changelog) { 'ChangeLog' }
21
+ context "when the changelog does not contain any reference to issues or users and no extra newline" do
22
+ let(:changelog) { "ChangeLog\n" }
23
+
24
+ it "should return the original changelog with an extra newline" do
25
+ better_changelog.should == changelog + "\n"
26
+ end
27
+ end
28
+
29
+ context "when the changelog already includes an extra newline" do
30
+ let(:changelog) { "ChangeLog\n\n" }
23
31
 
24
32
  it "should return the original changelog" do
25
33
  better_changelog.should == changelog
@@ -39,14 +47,14 @@ describe Pimper do
39
47
  end
40
48
 
41
49
  context "when the changelog contains a contributor" do
42
- let(:changelog) { 'New feature by @pcreux' }
50
+ let(:changelog) { 'New feature by @pc-re_ux' }
43
51
 
44
52
  it "should wrap the issue number to make a link" do
45
- better_changelog.should include("[@pcreux][]")
53
+ better_changelog.should include("[@pc-re_ux][]")
46
54
  end
47
55
 
48
56
  it "should append the link definition at the end of the changelog" do
49
- better_changelog.split("\n").last.should == "[@pcreux]: https://github.com/pcreux"
57
+ better_changelog.split("\n").last.should == "[@pc-re_ux]: https://github.com/pc-re_ux"
50
58
  end
51
59
  end
52
60
 
@@ -1,3 +1,5 @@
1
+ require 'rspec/its'
2
+
1
3
  require File.expand_path('../../lib/pimpmychangelog', __FILE__)
2
4
 
3
5
  include PimpMyChangelog
metadata CHANGED
@@ -1,64 +1,85 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: pimpmychangelog
3
- version: !ruby/object:Gem::Version
4
- hash: 27
5
- prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 2
10
- version: 0.0.2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.3
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Philippe Creux
14
- autorequire:
8
+ autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2011-12-12 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
11
+ date: 2021-01-06 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
21
14
  name: rspec
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
22
21
  prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
- none: false
25
- requirements:
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
26
24
  - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 3
29
- segments:
30
- - 0
31
- version: "0"
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec-its
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
32
34
  type: :development
33
- version_requirements: *id001
34
- - !ruby/object:Gem::Dependency
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
35
42
  name: guard-rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
36
49
  prerelease: false
37
- requirement: &id002 !ruby/object:Gem::Requirement
38
- none: false
39
- requirements:
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
40
59
  - - ">="
41
- - !ruby/object:Gem::Version
42
- hash: 3
43
- segments:
44
- - 0
45
- version: "0"
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
46
62
  type: :development
47
- version_requirements: *id002
48
- description: Linkify issue numbers (#123) and github users (@gregbell) in markdown changelogs.
49
- email:
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description: Linkify issue numbers (#123) and github users (@gregbell) in markdown
70
+ changelogs.
71
+ email:
50
72
  - pcreux@gmail.com
51
- executables:
73
+ executables:
52
74
  - pimpmychangelog
53
75
  extensions: []
54
-
55
76
  extra_rdoc_files: []
56
-
57
- files:
58
- - .gitignore
77
+ files:
78
+ - ".gitignore"
59
79
  - CHANGELOG.md
60
80
  - Gemfile
61
81
  - Guardfile
82
+ - LICENSE
62
83
  - README.md
63
84
  - Rakefile
64
85
  - bin/pimpmychangelog
@@ -75,37 +96,31 @@ files:
75
96
  - spec/pimper_spec.rb
76
97
  - spec/spec_helper.rb
77
98
  homepage: https://github.com/pcreux/pimpmychangelog
78
- licenses: []
79
-
80
- post_install_message:
99
+ licenses:
100
+ - MIT
101
+ metadata: {}
102
+ post_install_message:
81
103
  rdoc_options: []
82
-
83
- require_paths:
104
+ require_paths:
84
105
  - lib
85
- required_ruby_version: !ruby/object:Gem::Requirement
86
- none: false
87
- requirements:
106
+ required_ruby_version: !ruby/object:Gem::Requirement
107
+ requirements:
88
108
  - - ">="
89
- - !ruby/object:Gem::Version
90
- hash: 3
91
- segments:
92
- - 0
93
- version: "0"
94
- required_rubygems_version: !ruby/object:Gem::Requirement
95
- none: false
96
- requirements:
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ required_rubygems_version: !ruby/object:Gem::Requirement
112
+ requirements:
97
113
  - - ">="
98
- - !ruby/object:Gem::Version
99
- hash: 3
100
- segments:
101
- - 0
102
- version: "0"
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
103
116
  requirements: []
104
-
105
- rubyforge_project:
106
- rubygems_version: 1.8.11
107
- signing_key:
108
- specification_version: 3
117
+ rubygems_version: 3.0.3
118
+ signing_key:
119
+ specification_version: 4
109
120
  summary: Pimp your CHANGELOG.md
110
- test_files: []
111
-
121
+ test_files:
122
+ - spec/cli_spec.rb
123
+ - spec/git_remote_spec.rb
124
+ - spec/parser_spec.rb
125
+ - spec/pimper_spec.rb
126
+ - spec/spec_helper.rb