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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 41fd840eac471b8770900d540bc81a7744e0c5d9
4
- data.tar.gz: 09b2a6004a6ccc128b0281350caacf9ae2d23ef8
3
+ metadata.gz: 6daf54c2c2da9d928b595935d2900f2d954e6150
4
+ data.tar.gz: de398bcb15817e7fb7f7e6539dc5ead1049f43e9
5
5
  SHA512:
6
- metadata.gz: 2aec706627d3d74a08ecbde54a801b58463968af93110422239c6556ba99a68f4a25079a1b3983f5c340e1ed5f769f0ab45fd4a6d691cd7cd69a2fcb3ed297ba
7
- data.tar.gz: 88e21dc6963bff16be77d8ba3bc5db719d9063a59e67078654cd9ea6e6b3bc2625e78b70dc02982d7be835a79d8f6d7d60274188f5ad95dd2b1023ddd5b930fb
6
+ metadata.gz: 5475e448f22bf0c1ef1d7024ecff1390374a7b0bbb6f4c15fdd8be5aee79db7de3ca4bad41c61495c3c10de60d41e944d461a08fda733b93b909f7453c2a6991
7
+ data.tar.gz: 45c0ca64cc91b87205addd311fe4f716a2444a000602179c8f8757a2dd7a5e313115ee7ac35a0b8a9e0846de0828516446b02cdfd562ef9a8eed67fe73446833
data/CHANGELOG.md CHANGED
@@ -1,4 +1,12 @@
1
- # Release Dove Change log
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
  [![Build Status](https://travis-ci.org/gafrom/release_dove.svg)](https://travis-ci.org/gafrom/release_dove)
3
+ [![Gem Version](https://badge.fury.io/rb/release_dove.svg)](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, include the front-end part:
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 from-end part, _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
+ 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
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
  require 'bundler/gem_tasks'
3
3
  require 'rspec/core/rake_task'
4
+ require 'rubocop/rake_task'
4
5
 
5
6
  RSpec::Core::RakeTask.new(:spec)
7
+ RuboCop::RakeTask.new(:rubocop)
6
8
 
7
- task default: :spec
9
+ task default: [:spec, :rubocop]
@@ -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
- class << self
10
- def all
11
- return @all if @all
9
+ def initialize(id, content)
10
+ @id = id
11
+ @content = content
12
+
13
+ assign_other_attributes
14
+ end
12
15
 
13
- @all = []
14
- releases.each { |*args| @all << new(*args) }
16
+ def assign_other_attributes
17
+ return unless TAG =~ content
15
18
 
16
- @all
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 |position, i|
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
- content = log_content[position, length]
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
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module ReleaseDove
3
- VERSION = '0.1.0'
3
+ VERSION = '0.2.0'
4
4
  end
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 'json', '~> 2.0.2'
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.1.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-14 00:00:00.000000000 Z
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: json
76
+ name: rubocop
57
77
  requirement: !ruby/object:Gem::Requirement
58
78
  requirements:
59
79
  - - "~>"
60
80
  - !ruby/object:Gem::Version
61
- version: 2.0.2
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: 2.0.2
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: