release_dove 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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: