release_dove 0.1.0 → 0.2.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/CHANGELOG.md +9 -1
- data/README.md +3 -2
- data/Rakefile +3 -1
- data/lib/release_dove/release.rb +34 -34
- data/lib/release_dove/version.rb +1 -1
- data/release_dove.gemspec +3 -1
- metadata +25 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6daf54c2c2da9d928b595935d2900f2d954e6150
|
4
|
+
data.tar.gz: de398bcb15817e7fb7f7e6539dc5ead1049f43e9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5475e448f22bf0c1ef1d7024ecff1390374a7b0bbb6f4c15fdd8be5aee79db7de3ca4bad41c61495c3c10de60d41e944d461a08fda733b93b909f7453c2a6991
|
7
|
+
data.tar.gz: 45c0ca64cc91b87205addd311fe4f716a2444a000602179c8f8757a2dd7a5e313115ee7ac35a0b8a9e0846de0828516446b02cdfd562ef9a8eed67fe73446833
|
data/CHANGELOG.md
CHANGED
@@ -1,4 +1,12 @@
|
|
1
|
-
# Release Dove
|
1
|
+
# Release Dove change log
|
2
|
+
|
3
|
+
## [0.2.0] - 2016-10-17
|
4
|
+
### Added
|
5
|
+
- Add Rubocop checks to default tasks
|
6
|
+
### Changed
|
7
|
+
- Refactor Release model
|
8
|
+
### Fixed
|
9
|
+
- Runtime dependencies error
|
2
10
|
|
3
11
|
## [0.1.0] - 2016-10-14
|
4
12
|
### Added
|
data/README.md
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# Release Dove
|
2
2
|
[](https://travis-ci.org/gafrom/release_dove)
|
3
|
+
[](https://badge.fury.io/rb/release_dove)
|
3
4
|
|
4
5
|
Dead-simple widget allowing you to receive notifications about new releases of your application in a form of nice pop-up bar.
|
5
6
|
|
@@ -23,14 +24,14 @@ Then drop a line to `routes.rb` to specify where you want your colleciton of rel
|
|
23
24
|
mount ReleaseDove::Application => '/releases'
|
24
25
|
```
|
25
26
|
|
26
|
-
Finally,
|
27
|
+
Finally, plug in the front-end:
|
27
28
|
```javascript
|
28
29
|
TODO: include npm package 'release_dove'
|
29
30
|
```
|
30
31
|
|
31
32
|
## Usage
|
32
33
|
|
33
|
-
When running without
|
34
|
+
When running without front-end, _https://you_app.com/releases_ will return a collection of releases in `JSON` format from your `CHANGELOG.md` file, providing the latter is maintained in a [conventional way](http://keepachangelog.com/en/0.3.0/).
|
34
35
|
|
35
36
|
## Release attributes
|
36
37
|
|
data/Rakefile
CHANGED
data/lib/release_dove/release.rb
CHANGED
@@ -6,22 +6,38 @@ class ReleaseDove::Release
|
|
6
6
|
CHANGELOG = './CHANGELOG.md'
|
7
7
|
TAG = /^.*(?<header>\[Unreleased\]|\[(?<version>\d+\.\d+\.\d+)\].*(?<date>\d{4}\-\d{2}\-\d{2}))$/i
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
def initialize(id, content)
|
10
|
+
@id = id
|
11
|
+
@content = content
|
12
|
+
|
13
|
+
assign_other_attributes
|
14
|
+
end
|
12
15
|
|
13
|
-
|
14
|
-
|
16
|
+
def assign_other_attributes
|
17
|
+
return unless TAG =~ content
|
15
18
|
|
16
|
-
|
19
|
+
@version = $LAST_MATCH_INFO[:version]
|
20
|
+
@header = $LAST_MATCH_INFO[:header]
|
21
|
+
@date = begin
|
22
|
+
Date.parse $LAST_MATCH_INFO[:date].to_s
|
23
|
+
rescue ArgumentError
|
24
|
+
nil
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def ==(other)
|
29
|
+
id == other.id
|
30
|
+
end
|
31
|
+
|
32
|
+
class << self
|
33
|
+
def all
|
34
|
+
@all ||= releases.map { |*args| new(*args) }
|
17
35
|
end
|
18
36
|
|
19
37
|
def take
|
20
38
|
all.first
|
21
39
|
end
|
22
40
|
|
23
|
-
alias last take
|
24
|
-
|
25
41
|
def first
|
26
42
|
all.last
|
27
43
|
end
|
@@ -29,8 +45,6 @@ class ReleaseDove::Release
|
|
29
45
|
def size
|
30
46
|
all.size
|
31
47
|
end
|
32
|
-
alias count size
|
33
|
-
alias length size
|
34
48
|
|
35
49
|
def find(id)
|
36
50
|
id = id.to_i
|
@@ -42,6 +56,10 @@ class ReleaseDove::Release
|
|
42
56
|
releases.fetch(i)
|
43
57
|
end
|
44
58
|
|
59
|
+
alias count size
|
60
|
+
alias length size
|
61
|
+
alias last take
|
62
|
+
|
45
63
|
private
|
46
64
|
|
47
65
|
def releases
|
@@ -49,11 +67,11 @@ class ReleaseDove::Release
|
|
49
67
|
|
50
68
|
log_content, log_indices = read_from_file
|
51
69
|
|
52
|
-
log_indices.each_with_index do |
|
53
|
-
next_position = log_indices[i + 1]
|
54
|
-
length = next_position ? next_position - position : log_content.length - position
|
70
|
+
log_indices.each_with_index do |pos, i|
|
55
71
|
id = log_indices.size - i
|
56
|
-
|
72
|
+
|
73
|
+
next_pos = log_indices[i + 1] || log_content.size
|
74
|
+
content = log_content[pos, next_pos - pos]
|
57
75
|
|
58
76
|
yield id, content
|
59
77
|
end
|
@@ -62,29 +80,11 @@ class ReleaseDove::Release
|
|
62
80
|
def read_from_file
|
63
81
|
file = File.open(CHANGELOG, 'rb', encoding: 'utf-8')
|
64
82
|
content = file.read
|
65
|
-
indices = content.enum_for(:scan, TAG).map { Regexp.last_match.begin(0) }
|
66
83
|
file.close
|
67
84
|
|
85
|
+
indices = content.enum_for(:scan, TAG).map { Regexp.last_match.begin(0) }
|
86
|
+
|
68
87
|
[content, indices]
|
69
88
|
end
|
70
89
|
end
|
71
|
-
|
72
|
-
def initialize(id, content)
|
73
|
-
@id = id
|
74
|
-
@content = content
|
75
|
-
|
76
|
-
return unless TAG =~ content
|
77
|
-
|
78
|
-
@version = $LAST_MATCH_INFO[:version]
|
79
|
-
@header = $LAST_MATCH_INFO[:header]
|
80
|
-
@date = begin
|
81
|
-
Date.parse $LAST_MATCH_INFO[:date].to_s
|
82
|
-
rescue ArgumentError
|
83
|
-
nil
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
def ==(other)
|
88
|
-
id == other.id
|
89
|
-
end
|
90
90
|
end
|
data/lib/release_dove/version.rb
CHANGED
data/release_dove.gemspec
CHANGED
@@ -30,8 +30,10 @@ Gem::Specification.new do |spec|
|
|
30
30
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
31
31
|
spec.require_paths = ['lib']
|
32
32
|
|
33
|
+
spec.add_runtime_dependency 'json', '>= 1.5.2', '< 3.0'
|
34
|
+
|
33
35
|
spec.add_development_dependency 'bundler', '~> 1.12'
|
34
36
|
spec.add_development_dependency 'rake', '~> 10.0'
|
35
37
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
36
|
-
spec.add_development_dependency '
|
38
|
+
spec.add_development_dependency 'rubocop', '~> 0.44'
|
37
39
|
end
|
metadata
CHANGED
@@ -1,15 +1,35 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: release_dove
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Oleg
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-10-
|
11
|
+
date: 2016-10-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: json
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.5.2
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '3.0'
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 1.5.2
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '3.0'
|
13
33
|
- !ruby/object:Gem::Dependency
|
14
34
|
name: bundler
|
15
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -53,19 +73,19 @@ dependencies:
|
|
53
73
|
- !ruby/object:Gem::Version
|
54
74
|
version: '3.0'
|
55
75
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
76
|
+
name: rubocop
|
57
77
|
requirement: !ruby/object:Gem::Requirement
|
58
78
|
requirements:
|
59
79
|
- - "~>"
|
60
80
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
81
|
+
version: '0.44'
|
62
82
|
type: :development
|
63
83
|
prerelease: false
|
64
84
|
version_requirements: !ruby/object:Gem::Requirement
|
65
85
|
requirements:
|
66
86
|
- - "~>"
|
67
87
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
88
|
+
version: '0.44'
|
69
89
|
description: This is a backend part of easy-to-embed widget with pop-up notifications
|
70
90
|
about your application's new releases.
|
71
91
|
email:
|