whatsnew 0.3.0 → 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/.travis.yml +1 -1
- data/CHANGELOG.md +9 -1
- data/README.md +29 -6
- data/bin/whatsnew +1 -1
- data/lib/whatsnew/local_files.rb +52 -0
- data/lib/whatsnew/news_file.rb +6 -13
- data/lib/whatsnew/no_news_file.rb +7 -3
- data/lib/whatsnew/project.rb +10 -41
- data/lib/whatsnew/remote_files.rb +25 -0
- data/lib/whatsnew/version.rb +1 -1
- data/lib/whatsnew.rb +5 -3
- metadata +3 -2
- data/lib/whatsnew/remote_news_file.rb +0 -27
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8e65b62f957e1db459c711ace3bffe378b45dbcf
|
4
|
+
data.tar.gz: ac629b4ff791f3c34e8cabdf0f22c0df9ac0115f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 24336375d94687abae9b7b40a185efa2c2fd098ff654a0807777d10cc7447b81f5ad8cdee368e839f393cae2df52c37ac02eb9ebf6ed3ac126dc1295ece21bd9
|
7
|
+
data.tar.gz: 685cfc1708993d40744908ff31509c4c4c761f3c62b2f121ef14c9e9aa5a92f34b42c0b5c18e8cb7bfcc899e392c13f52fcb02b3ab5c63914e76cdb1fdeb615d
|
data/.travis.yml
CHANGED
@@ -12,4 +12,4 @@ matrix:
|
|
12
12
|
fast_finish: true
|
13
13
|
notifications:
|
14
14
|
slack:
|
15
|
-
secure:
|
15
|
+
secure: B25UgGnWzd/gLr97Ac233rhp7bV3FnmbmuYU9KGLa7s8YTmdKnHg5ASOl3NEdDRSZwhhQvMF6FRhqLvQenFsIYn9f9qSmY0+d5/gB8iUQkGAIXIx0VFrPhO6ZTefEJ2uhPyKtZIkzEOVD9jo4w5Kh9XvUPFY1v8OM+wz+8cW28G+fS1gof+yJUBVQb7/FGSzc2nxDvCwcU2pYeQ2rUnugDc8wfcQYCsp+MU+qBTsotTBCiGqrZWouqi3dWbMPHqeaW8B343+jviM0LgvyEF6klw0dR218SRWlavYjZq6w4yEwtPI+Wl0jXe06DcbISBQwKRH4ljwT2Qvx0gjIEG9fKo7Gl59gg/U3p3wZixV/O1/f0oDgVO1FZIMHP0CVWX8+VV/g4ru/jVp0R74Mfq3mIhSh1z7iMgFMoVMzOLJq8nDPQWPi+1Wc5z1AeCnC1bjcwhN07FzIHq3GTuqjLGRNfm5nvG8PCsw0dgsV9z826teHJrXJz8mApGZZR6WvWdSqWdUaIxtHoeuaBd+7/iqxYKdW8uov4U7Vc4gFqs36SmNtrRf1fnVs/p0QM4SbPo+KYROin7oZTngMLVJ2qLYhTMWpszJfnpFl2ZHYlfTF2rHUaBioOnagAqs1iiVp51mX2brXnjUdQWGbGuEryrO88qZ5tS6DnfS4+A57cgloe8=
|
data/CHANGELOG.md
CHANGED
@@ -2,9 +2,17 @@
|
|
2
2
|
|
3
3
|
## Unrelease
|
4
4
|
|
5
|
+
## v0.4.0 - 2015-08-09
|
6
|
+
|
7
|
+
### API CHANGES
|
8
|
+
|
9
|
+
- `NewsFile#content` => `NewsFile#read` [#4](https://github.com/jollygoodcode/whatsnew/pull/4)
|
10
|
+
- `NewsFile#content` => The content of the news file [#4](https://github.com/jollygoodcode/whatsnew/pull/4)
|
11
|
+
- Refactor the internal classes interfaces [#3](https://github.com/jollygoodcode/whatsnew/pull/3)
|
12
|
+
|
5
13
|
## v0.3.0 - 2015-08-09
|
6
14
|
|
7
|
-
- API Support finding news file from Octokit response
|
15
|
+
- API Support finding news file from Octokit response [#1](https://github.com/jollygoodcode/whatsnew/pull/1)
|
8
16
|
|
9
17
|
## v0.2.0 - 2015-08-08
|
10
18
|
|
data/README.md
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
[](http://badge.fury.io/rb/whatsnew)
|
4
4
|
[](https://travis-ci.org/jollygoodcode/whatsnew)
|
5
5
|
|
6
|
-
What's New
|
6
|
+
What's New about a project?
|
7
7
|
|
8
8
|
--
|
9
9
|
|
@@ -36,7 +36,7 @@ What's New:
|
|
36
36
|
See CHANGELOG.md: https://github.com/jollygoodcode/whatsnew/blob/master/CHANGELOG.md.
|
37
37
|
```
|
38
38
|
|
39
|
-
###
|
39
|
+
### API usage for Local Files
|
40
40
|
|
41
41
|
```ruby
|
42
42
|
news = Whatsnew.about "/Users/Juan/dev/whatsnew"
|
@@ -47,13 +47,15 @@ news.file_name
|
|
47
47
|
news.file_url
|
48
48
|
=> "https://github.com/jollygoodcode/whatsnew/blob/master/CHANGELOG.md"
|
49
49
|
|
50
|
-
news.
|
50
|
+
news.read
|
51
51
|
=> "What's New:\nSee CHANGELOG.md: https://github.com/jollygoodcode/whatsnew/blob/master/CHANGELOG.md."
|
52
52
|
```
|
53
53
|
|
54
|
-
###
|
54
|
+
### API usage for Remote Files
|
55
55
|
|
56
|
-
|
56
|
+
#### Example use with [Octokit](https://github.com/octokit/octokit.rb)
|
57
|
+
|
58
|
+
First [get an access token](https://help.github.com/articles/creating-an-access-token-for-command-line-use/), then:
|
57
59
|
|
58
60
|
```ruby
|
59
61
|
client = Octokit::Client.new(access_token: ENV["OAUTH_TOKEN"])
|
@@ -66,10 +68,27 @@ news.file_name
|
|
66
68
|
news.file_url
|
67
69
|
=> "https://github.com/jollygoodcode/whatsnew/blob/master/CHANGELOG.md"
|
68
70
|
|
69
|
-
news.
|
71
|
+
news.read
|
70
72
|
=> "What's New:\nSee CHANGELOG.md: https://github.com/jollygoodcode/whatsnew/blob/master/CHANGELOG.md."
|
71
73
|
```
|
72
74
|
|
75
|
+
Note that you can pass in array of any objects to `Whatsnew.about`, each object must respond to `:name` and `:html_url` messages:
|
76
|
+
|
77
|
+
```ruby
|
78
|
+
Resource = Struct.new(:name, :html_url)
|
79
|
+
|
80
|
+
news = Whatsnew.about [Resource.new("NEWS", "https://github.com/ruby/ruby/blob/trunk/NEWS")]
|
81
|
+
|
82
|
+
news.file_name
|
83
|
+
=> "NEWS"
|
84
|
+
|
85
|
+
news.file_url
|
86
|
+
=> "https://github.com/ruby/ruby/blob/trunk/NEWS"
|
87
|
+
|
88
|
+
news.read
|
89
|
+
=> "What's New:\nSee NEWS: https://github.com/ruby/ruby/blob/trunk/NEWS."
|
90
|
+
```
|
91
|
+
|
73
92
|
|
74
93
|
## What it searches for?
|
75
94
|
|
@@ -85,6 +104,10 @@ See [DEVELOPMENT.md](DEVELOPMENT.md).
|
|
85
104
|
|
86
105
|
See [CONTRIBUTING.md](CONTRIBUTING.md).
|
87
106
|
|
107
|
+
## Inspired by
|
108
|
+
|
109
|
+
[benbalter/licensee](https://github.com/benbalter/licensee) - A RubyGem to detect under what license a project is distributed.
|
110
|
+
|
88
111
|
## Credits
|
89
112
|
|
90
113
|
A huge THANK YOU to all our [contributors](https://github.com/jollygoodcode/whatsnew/graphs/contributors)! :heart:
|
data/bin/whatsnew
CHANGED
@@ -0,0 +1,52 @@
|
|
1
|
+
require "pathname"
|
2
|
+
|
3
|
+
module Whatsnew
|
4
|
+
class LocalFiles
|
5
|
+
def initialize(path)
|
6
|
+
@path = path
|
7
|
+
@news = Dir.glob(File.join(path, "*".freeze)).find do |file|
|
8
|
+
file =~ %r{(CHANGE|CHANGES|CHANGELOG|NEWS|HISTORY)}i.freeze
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def to_news_file
|
13
|
+
if news
|
14
|
+
NewsFile.new(
|
15
|
+
file_name,
|
16
|
+
content: file.read,
|
17
|
+
file_url: "#{project_uri}/blob/master/#{file_name}"
|
18
|
+
)
|
19
|
+
else
|
20
|
+
NoNewsFile.new
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
attr_reader :path, :news, :matched
|
27
|
+
|
28
|
+
def project_uri
|
29
|
+
if File.exist?("#{path}/.git") && matched_from_git_config
|
30
|
+
"https://#{matched[:host]}/#{matched[:owner]}/#{matched[:repo]}"
|
31
|
+
else
|
32
|
+
"NOT FOUND".freeze
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def matched_from_git_config
|
37
|
+
@matched ||= Dir.chdir(Pathname(path).to_path) do
|
38
|
+
`git config --get remote.origin.url`.match(
|
39
|
+
%r{git.+(?<host>(github.com|bitbucket.com|bitbucket.org))[:/](?<owner>\S+)/(?<repo>\S+)\.git}
|
40
|
+
)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def file
|
45
|
+
@file ||= Pathname(news)
|
46
|
+
end
|
47
|
+
|
48
|
+
def file_name
|
49
|
+
@file_name ||= file.basename.to_s
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
data/lib/whatsnew/news_file.rb
CHANGED
@@ -2,23 +2,16 @@ require "pathname"
|
|
2
2
|
|
3
3
|
module Whatsnew
|
4
4
|
class NewsFile
|
5
|
-
attr_reader :file_url
|
5
|
+
attr_reader :file_name, :content, :file_url
|
6
6
|
|
7
|
-
def initialize(
|
8
|
-
@
|
9
|
-
@
|
7
|
+
def initialize(file_name, content: nil, file_url: nil)
|
8
|
+
@file_name = file_name
|
9
|
+
@content = content
|
10
|
+
@file_url = file_url
|
10
11
|
end
|
11
12
|
|
12
|
-
def
|
13
|
+
def read
|
13
14
|
"What's New:\n" "See #{file_name}: #{file_url}."
|
14
15
|
end
|
15
|
-
|
16
|
-
def file_name
|
17
|
-
newsfile.basename.to_s
|
18
|
-
end
|
19
|
-
|
20
|
-
private
|
21
|
-
|
22
|
-
attr_reader :newsfile
|
23
16
|
end
|
24
17
|
end
|
@@ -4,16 +4,20 @@ module Whatsnew
|
|
4
4
|
class NoNewsFile
|
5
5
|
NOT_FOUND = "NOT FOUND".freeze
|
6
6
|
|
7
|
-
def
|
7
|
+
def file_name
|
8
8
|
NOT_FOUND
|
9
9
|
end
|
10
10
|
|
11
|
-
def
|
11
|
+
def file_url
|
12
12
|
NOT_FOUND
|
13
13
|
end
|
14
14
|
|
15
|
-
def
|
15
|
+
def read
|
16
16
|
NOT_FOUND
|
17
17
|
end
|
18
|
+
|
19
|
+
def content
|
20
|
+
"".freeze
|
21
|
+
end
|
18
22
|
end
|
19
23
|
end
|
data/lib/whatsnew/project.rb
CHANGED
@@ -1,56 +1,25 @@
|
|
1
|
-
require "pathname"
|
2
|
-
|
3
1
|
module Whatsnew
|
4
2
|
class Project
|
5
3
|
attr_reader :news_file
|
6
4
|
|
7
|
-
def initialize(
|
8
|
-
@
|
9
|
-
@news_file = get_news_file_from_path
|
10
|
-
end
|
11
|
-
|
12
|
-
def get_news_file_from_path
|
13
|
-
if path_is_a_sawyer_resource_array
|
14
|
-
RemoteNewsFile.new(path)
|
15
|
-
else
|
16
|
-
if news_file_name
|
17
|
-
NewsFile.new(news_file_name, project_uri)
|
18
|
-
else
|
19
|
-
NoNewsFile.new
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
5
|
+
def initialize(path_or_resources)
|
6
|
+
@path_or_resources = Array(path_or_resources)
|
23
7
|
|
24
|
-
|
25
|
-
|
26
|
-
def project_uri
|
27
|
-
if matched = matched_from_git_repository
|
28
|
-
"https://#{matched[:host]}/#{matched[:owner]}/#{matched[:repo]}"
|
8
|
+
@news_file = if resources?
|
9
|
+
RemoteFiles.new(path_or_resources).to_news_file
|
29
10
|
else
|
30
|
-
|
11
|
+
LocalFiles.new(path_or_resources).to_news_file
|
31
12
|
end
|
32
13
|
end
|
33
14
|
|
34
15
|
private
|
35
16
|
|
36
|
-
attr_reader :
|
37
|
-
|
38
|
-
def path_is_a_sawyer_resource_array
|
39
|
-
path.is_a?(Array) && path.first.is_a?(Sawyer::Resource)
|
40
|
-
end
|
41
|
-
|
42
|
-
def news_file_name
|
43
|
-
@news_file_name ||= Dir.glob(File.join(path, "*".freeze)).find do |file|
|
44
|
-
file =~ %r{(CHANGE|CHANGES|CHANGELOG|NEWS|HISTORY)}i.freeze
|
45
|
-
end
|
46
|
-
end
|
17
|
+
attr_reader :path_or_resources
|
47
18
|
|
48
|
-
def
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
)
|
53
|
-
end
|
19
|
+
def resources?
|
20
|
+
path_or_resources &&
|
21
|
+
path_or_resources.first.respond_to?(:name) &&
|
22
|
+
path_or_resources.first.respond_to?(:html_url)
|
54
23
|
end
|
55
24
|
end
|
56
25
|
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Whatsnew
|
2
|
+
class RemoteFiles
|
3
|
+
def initialize(resources)
|
4
|
+
@news = resources.find do |resource|
|
5
|
+
resource.name =~ %r{(CHANGE|CHANGES|CHANGELOG|NEWS|HISTORY)}i.freeze
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
def to_news_file
|
10
|
+
if news
|
11
|
+
NewsFile.new(news.name, content: "See #{news_html_url}", file_url: news_html_url)
|
12
|
+
else
|
13
|
+
NoNewsFile.new
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
attr_reader :news
|
20
|
+
|
21
|
+
def news_html_url
|
22
|
+
@news_html_url ||= news.html_url
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/lib/whatsnew/version.rb
CHANGED
data/lib/whatsnew.rb
CHANGED
@@ -1,11 +1,13 @@
|
|
1
1
|
require "whatsnew/version"
|
2
|
-
require "whatsnew/
|
2
|
+
require "whatsnew/remote_files"
|
3
|
+
require "whatsnew/local_files"
|
3
4
|
require "whatsnew/news_file"
|
4
5
|
require "whatsnew/no_news_file"
|
5
6
|
require "whatsnew/project"
|
6
7
|
|
7
8
|
module Whatsnew
|
8
|
-
|
9
|
-
|
9
|
+
# Each resource must respond to message :name and :html.
|
10
|
+
def self.about(path_or_resources)
|
11
|
+
Whatsnew::Project.new(path_or_resources).news_file
|
10
12
|
end
|
11
13
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: whatsnew
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Juanito Fatas
|
@@ -30,10 +30,11 @@ files:
|
|
30
30
|
- bin/dev
|
31
31
|
- bin/whatsnew
|
32
32
|
- lib/whatsnew.rb
|
33
|
+
- lib/whatsnew/local_files.rb
|
33
34
|
- lib/whatsnew/news_file.rb
|
34
35
|
- lib/whatsnew/no_news_file.rb
|
35
36
|
- lib/whatsnew/project.rb
|
36
|
-
- lib/whatsnew/
|
37
|
+
- lib/whatsnew/remote_files.rb
|
37
38
|
- lib/whatsnew/version.rb
|
38
39
|
- whatsnew.gemspec
|
39
40
|
homepage: https://github.com/jollygoodcode/whatsnew
|
@@ -1,27 +0,0 @@
|
|
1
|
-
require "pathname"
|
2
|
-
|
3
|
-
module Whatsnew
|
4
|
-
class RemoteNewsFile
|
5
|
-
def initialize(sawyer_resources)
|
6
|
-
@news_resource = sawyer_resources.find do |resource|
|
7
|
-
resource.name =~ %r{(CHANGE|CHANGES|CHANGELOG|NEWS|HISTORY)}i.freeze
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
def content
|
12
|
-
"What's New:\n" "See #{file_name}: #{file_url}."
|
13
|
-
end
|
14
|
-
|
15
|
-
def file_name
|
16
|
-
news_resource.name
|
17
|
-
end
|
18
|
-
|
19
|
-
def file_url
|
20
|
-
news_resource.html_url
|
21
|
-
end
|
22
|
-
|
23
|
-
private
|
24
|
-
|
25
|
-
attr_reader :news_resource
|
26
|
-
end
|
27
|
-
end
|