cline 0.2.5 → 0.2.6

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.
data/README.md CHANGED
@@ -1,17 +1,51 @@
1
1
  # Cline - CLI Line Notifier
2
2
 
3
- ## Installation
3
+ Cline is a simple notification tool.
4
4
 
5
5
  ~~~~
6
- gem install cline
7
- cline init
8
- echo "Cline.out_stream = Cline::OutStreams::WithGrowl.new($stdout)" > ~/.cline/config # growlnotify required
9
- echo "Cline.collectors << Cline::Collector::Feed" >> ~/.cline/config
10
- echo "Cline.pool_size << 2000" >> ~/.cline/config
11
- curl http://foo.examle.com/url/to/opml.xml > ~/.cline/feeds.xml
6
+ +------------+ +-----------+ +-----------+
7
+ | Collectors | ----------> | Cline | ----------> | OutStream |
8
+ +------------+ +-----------+ +-----------+
9
+ Collect any notifications Pool notifications Put anywhere
10
+ ~~~~
11
+
12
+ ## Installation and Setting
13
+
14
+ ~~~~
15
+ $ gem install cline
16
+ $ cline init
17
+ ~~~~
18
+
19
+ In ~/.cline/config:
20
+
21
+ ~~~~ruby
22
+ Cline.configure do |config|
23
+ config.pool_size = 2000
24
+
25
+ config.out_stream = Cline::OutStreams::WithGrowl.new($stdout)
26
+ # Or
27
+ # config.out_stream = $stdout
12
28
 
13
- cline collect
14
- cline tick --offset 0 --interval 5
29
+ config.append_collector Cline::Collectors::Feed
30
+ end
31
+ ~~~~
32
+
33
+ Write your RSS feeds OPML file:
34
+
35
+ ~~~~
36
+ $ curl http://foo.examle.com/url/to/opml.xml > ~/.cline/feeds.xml
37
+ ~~~~
38
+
39
+ Collect notifications:
40
+
41
+ ~~~~
42
+ $ cline collect
43
+ ~~~~
44
+
45
+ Show notifications:
46
+
47
+ ~~~~
48
+ $ cline tick --offset 0 --interval 5
15
49
  ~~~~
16
50
 
17
51
  ## Use case
@@ -24,18 +58,18 @@ in ~/.screenrc
24
58
 
25
59
  ## initialize Database
26
60
 
27
- `init`command initialize new sqlite3 database.
61
+ `init` command initialize new sqlite3 database.
28
62
 
29
63
  ~~~~
30
- cline init
64
+ $ cline init
31
65
  ~~~~
32
66
 
33
- ## Reload
67
+ ## Collect
34
68
 
35
- `collect`command collect new notifications from `Cline.collectors`.
69
+ `collect` command collect new notifications from `Cline.collectors`.
36
70
 
37
71
  ~~~~
38
- cline collect
72
+ $ cline collect
39
73
  ~~~~
40
74
 
41
75
  ### Custom Collector
@@ -45,10 +79,10 @@ in ~/.screenrc
45
79
  example:
46
80
 
47
81
  ~~~~ruby
48
- class MyCollector
82
+ class MyCollector < Cline::Collectors::Base
49
83
  def self.collect
50
84
  new.sources.each do |source|
51
- Cline::Notification.find_by_message(source.body) || Cline::Notification.create!(message: source.body, notified_at: source.created_at)
85
+ create_or_pass source.body, source.created_at
52
86
  end
53
87
  end
54
88
 
@@ -58,13 +92,20 @@ example:
58
92
  end
59
93
  ~~~~
60
94
 
95
+ Cline::Collectors::Base class provides create_or_pass method.
96
+ It create a new unique notification.
97
+
61
98
  ### Registration
62
99
 
63
100
  in ~/.cline/config
64
101
 
65
102
  ~~~~ruby
66
103
  require 'path/to/my_collector'
67
- Cline.collectors << MyCollector
104
+
105
+ Cline.configure do |config|
106
+ # ...
107
+ config.append_collector MyCollector
108
+ end
68
109
  ~~~~
69
110
 
70
111
  ## Notifier
@@ -92,5 +133,9 @@ in ~/.cline/config
92
133
 
93
134
  ~~~~ruby
94
135
  require 'path/to/my_notifier'
95
- Cline.out_stream = MyNotifier.new
136
+
137
+ Cline.configure do |config|
138
+ # ...
139
+ config.out_stream = MyNotifier.new
140
+ end
96
141
  ~~~~
data/lib/cline/command.rb CHANGED
@@ -48,7 +48,7 @@ module Cline
48
48
  def collect
49
49
  Cline.collectors.each &:collect
50
50
 
51
- clean_obsoletes if Cline.pool_size
51
+ clean_obsoletes
52
52
  end
53
53
 
54
54
  desc 'init', 'Init database'
@@ -76,7 +76,7 @@ module Cline
76
76
  private
77
77
 
78
78
  def clean_obsoletes
79
- Notification.clean Cline.pool_size
79
+ Notification.clean(Cline.pool_size) if Cline.pool_size
80
80
  end
81
81
  end
82
82
  end
@@ -0,0 +1,21 @@
1
+ # coding: utf-8
2
+
3
+ module Cline
4
+ def self.configure(&config)
5
+ config.call Configure.new
6
+ end
7
+
8
+ class Configure
9
+ def pool_size=(size)
10
+ Cline.pool_size = size
11
+ end
12
+
13
+ def out_stream=(stream)
14
+ Cline.out_stream = stream
15
+ end
16
+
17
+ def append_collector(collector)
18
+ Cline.collectors << collector
19
+ end
20
+ end
21
+ end
data/lib/cline/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Cline
2
- VERSION = "0.2.5"
2
+ VERSION = "0.2.6"
3
3
  end
data/lib/cline.rb CHANGED
@@ -63,6 +63,7 @@ require 'sqlite3'
63
63
  require 'active_record'
64
64
 
65
65
  require "cline/version"
66
+ require "cline/configure"
66
67
  require "cline/notification"
67
68
  require "cline/command"
68
69
  require "cline/collectors"
@@ -5,7 +5,7 @@ require_relative '../spec_helper'
5
5
  describe Cline::Notification do
6
6
  describe '.ealiest' do
7
7
  let!(:notification1) { Fabricate(:notification, notified_at: 2.days.ago.beginning_of_day, display_count: 3) }
8
- let!(:notification2) { Fabricate(:notification, notified_at: 3.days.ago.beginning_of_day, display_count: 3) }
8
+ let!(:notification2) { Fabricate(:notification, notified_at: 2.days.ago.beginning_of_day, display_count: 2) }
9
9
  let!(:notification3) { Fabricate(:notification, notified_at: 3.days.ago.beginning_of_day, display_count: 2) }
10
10
 
11
11
  context 'default(limit 1 offset 0)' do
@@ -30,6 +30,48 @@ describe Cline::Notification do
30
30
  it { should == [notification2] }
31
31
  end
32
32
 
33
+ describe '.clean' do
34
+ let!(:notification1) { Fabricate(:notification, notified_at: 3.days.ago.beginning_of_day, display_count: 3) }
35
+ let!(:notification2) { Fabricate(:notification, notified_at: 3.days.ago.beginning_of_day, display_count: 2) }
36
+ let!(:notification3) { Fabricate(:notification, notified_at: 2.days.ago.beginning_of_day, display_count: 2) }
37
+
38
+ context 'pool_size 2' do
39
+ before do
40
+ Cline::Notification.clean 2
41
+ end
42
+
43
+ subject { Cline::Notification.all }
44
+
45
+ its(:length) { should == 2 }
46
+ it { should include notification2 }
47
+ it { should include notification3 }
48
+ end
49
+
50
+ context 'pool_size 1' do
51
+ before do
52
+ Cline::Notification.clean 1
53
+ end
54
+
55
+ subject { Cline::Notification.all }
56
+
57
+ its(:length) { should == 1 }
58
+ it { should include notification3 }
59
+ end
60
+ end
61
+
62
+ describe '.recent_notified' do
63
+ let!(:notification1) { Fabricate(:notification, notified_at: 3.days.ago.beginning_of_day, display_count: 0) }
64
+ let!(:notification2) { Fabricate(:notification, notified_at: 2.days.ago.beginning_of_day, display_count: 0) }
65
+
66
+ before do
67
+ Cline::Notification.display 0
68
+ end
69
+
70
+ subject { Cline::Notification.recent_notified(1).all }
71
+
72
+ it { should == [notification1] }
73
+ end
74
+
33
75
  describe '#message=' do
34
76
  let(:notification) { Fabricate(:notification, display_count: 0) }
35
77
 
data/spec/spec_helper.rb CHANGED
@@ -29,8 +29,9 @@ RSpec.configure do |config|
29
29
  end
30
30
 
31
31
  config.before(:each) do
32
- Cline.boot
33
- Cline.out_stream = StringIO.new
34
32
  Cline::Notification.delete_all
33
+ Cline.out_stream = StringIO.new
34
+
35
+ Cline.boot
35
36
  end
36
37
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cline
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.2.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-12-01 00:00:00.000000000 Z
12
+ date: 2011-12-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: thor
16
- requirement: &70207419042360 !ruby/object:Gem::Requirement
16
+ requirement: &70363467909660 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.14.6
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70207419042360
24
+ version_requirements: *70363467909660
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: activerecord
27
- requirement: &70207419055240 !ruby/object:Gem::Requirement
27
+ requirement: &70363467907460 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 3.1.1
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70207419055240
35
+ version_requirements: *70363467907460
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: sqlite3
38
- requirement: &70207419052600 !ruby/object:Gem::Requirement
38
+ requirement: &70363467903860 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 1.3.4
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70207419052600
46
+ version_requirements: *70363467903860
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: feedzirra
49
- requirement: &70207419064880 !ruby/object:Gem::Requirement
49
+ requirement: &70363467902320 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 0.0.31
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70207419064880
57
+ version_requirements: *70363467902320
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: notify
60
- requirement: &70207419075540 !ruby/object:Gem::Requirement
60
+ requirement: &70363467916860 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 0.3.0
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *70207419075540
68
+ version_requirements: *70363467916860
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake
71
- requirement: &70207419088320 !ruby/object:Gem::Requirement
71
+ requirement: &70363467911660 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 0.9.2
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70207419088320
79
+ version_requirements: *70363467911660
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: ir_b
82
- requirement: &70207419085680 !ruby/object:Gem::Requirement
82
+ requirement: &70363467924200 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: 1.4.0
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *70207419085680
90
+ version_requirements: *70363467924200
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: tapp
93
- requirement: &70207419083600 !ruby/object:Gem::Requirement
93
+ requirement: &70363467921920 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: 1.1.0
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *70207419083600
101
+ version_requirements: *70363467921920
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: rspec
104
- requirement: &70207418943980 !ruby/object:Gem::Requirement
104
+ requirement: &70363467920900 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ! '>='
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: 2.6.0
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *70207418943980
112
+ version_requirements: *70363467920900
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: rr
115
- requirement: &70207418942740 !ruby/object:Gem::Requirement
115
+ requirement: &70363467919920 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ! '>='
@@ -120,10 +120,10 @@ dependencies:
120
120
  version: 1.0.4
121
121
  type: :development
122
122
  prerelease: false
123
- version_requirements: *70207418942740
123
+ version_requirements: *70363467919920
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: fabrication
126
- requirement: &70207418940740 !ruby/object:Gem::Requirement
126
+ requirement: &70363467919320 !ruby/object:Gem::Requirement
127
127
  none: false
128
128
  requirements:
129
129
  - - ! '>='
@@ -131,10 +131,10 @@ dependencies:
131
131
  version: 1.2.0
132
132
  type: :development
133
133
  prerelease: false
134
- version_requirements: *70207418940740
134
+ version_requirements: *70363467919320
135
135
  - !ruby/object:Gem::Dependency
136
136
  name: fuubar
137
- requirement: &70207418939180 !ruby/object:Gem::Requirement
137
+ requirement: &70363467918440 !ruby/object:Gem::Requirement
138
138
  none: false
139
139
  requirements:
140
140
  - - ! '>='
@@ -142,10 +142,10 @@ dependencies:
142
142
  version: 0.0.6
143
143
  type: :development
144
144
  prerelease: false
145
- version_requirements: *70207418939180
145
+ version_requirements: *70363467918440
146
146
  - !ruby/object:Gem::Dependency
147
147
  name: simplecov
148
- requirement: &70207418952700 !ruby/object:Gem::Requirement
148
+ requirement: &70363467928960 !ruby/object:Gem::Requirement
149
149
  none: false
150
150
  requirements:
151
151
  - - ! '>='
@@ -153,10 +153,10 @@ dependencies:
153
153
  version: 0.5.3
154
154
  type: :development
155
155
  prerelease: false
156
- version_requirements: *70207418952700
156
+ version_requirements: *70363467928960
157
157
  - !ruby/object:Gem::Dependency
158
158
  name: activesupport
159
- requirement: &70207418950360 !ruby/object:Gem::Requirement
159
+ requirement: &70363467942860 !ruby/object:Gem::Requirement
160
160
  none: false
161
161
  requirements:
162
162
  - - ! '>='
@@ -164,7 +164,7 @@ dependencies:
164
164
  version: 3.1.1
165
165
  type: :development
166
166
  prerelease: false
167
- version_requirements: *70207418950360
167
+ version_requirements: *70363467942860
168
168
  description: Cline - CLI Line Notifier
169
169
  email:
170
170
  - celluloid.key@gmail.com
@@ -186,6 +186,7 @@ files:
186
186
  - lib/cline/collectors/feed.rb
187
187
  - lib/cline/collectors/github.rb
188
188
  - lib/cline/command.rb
189
+ - lib/cline/configure.rb
189
190
  - lib/cline/notification.rb
190
191
  - lib/cline/out_streams.rb
191
192
  - lib/cline/version.rb