whatsnew 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
[![Gem Version](https://badge.fury.io/rb/whatsnew.svg)](http://badge.fury.io/rb/whatsnew)
|
4
4
|
[![Build Status](https://travis-ci.org/jollygoodcode/whatsnew.svg?branch=master)](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
|