octospy 0.0.5 → 0.0.6

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: c874824f5ed9d1cbfc20596aeac3b6beac49e824
4
- data.tar.gz: 93e9b711dbf83baa39b9a92e951ed172cc5b5a92
3
+ metadata.gz: 3f92c47f612fc8f9e58b5a761d293a824df3c203
4
+ data.tar.gz: 1772944a5564aa76cf4af0171076f61065007a22
5
5
  SHA512:
6
- metadata.gz: fdad245ae5c213b971a6dc65a89479a3f1f7546c89aa39f9cf7d7ae38ef13ace811e837d0c13b427536ad87e3d6c7f3d5b48c890928328c4417ff06ff84f67dc
7
- data.tar.gz: c64fad9937309ea56a26f10b1bc7ff9d3f8d6aff3fbb39f2d80cbd7f92a50bd47d5949b8e1f40654bd8e1efdb31c1069d1044a75d253f5339e187fac4af3b6b2
6
+ metadata.gz: ff507ac30bb08f0fdc1b2f63e612340743f86f36e87ef823971118df6ec58ab5e2cb15aeafcc0dedbb108ec1748ad236d4c47f4550750a9f09d58724065d8e00
7
+ data.tar.gz: 1d4e774052361c800b3aa9e0034f2bf391e82f7e75f6579be50445d93aea7d0959d87799c0267a4771c755a9c5137b3703c5009c3c85b179fe3c9fa0b655e5ef
data/Gemfile CHANGED
@@ -2,3 +2,16 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in octospy.gemspec
4
4
  gemspec
5
+
6
+ group :development do
7
+ gem 'pry'
8
+ gem 'awesome_print', require: 'ap'
9
+ end
10
+
11
+ group :test do
12
+ gem 'coveralls', require: false
13
+ gem 'simplecov', require: false
14
+ gem 'rspec', '~> 3.0.0.beta2'
15
+ gem 'vcr', '~> 2.8'
16
+ gem 'webmock', '~> 1.17'
17
+ end
data/README.md CHANGED
@@ -71,6 +71,12 @@ GITHUB_API_ENDPOINT=http://your.enterprise.domain/api/v3
71
71
  GITHUB_WEB_ENDPOINT=http://your.enterprise.domain
72
72
  ```
73
73
 
74
+ ### Specify the dotenv filename
75
+
76
+ ```sh
77
+ env DOTENV=".env.myserver" octospy
78
+ ```
79
+
74
80
  Commands
75
81
  --------
76
82
 
@@ -82,8 +88,8 @@ Command | Description
82
88
  `unwatch <repository>` | remove repository to watch list
83
89
  `watch <user or organization>` | add user's repositories to watch list (ex: watch dotcloud)
84
90
  `unwatch <user or organization>` | remove user's repositories to watch list
85
- `job start` | start the repository event monitoring
86
- `job stop` | stop the repository event monitoring
91
+ `start` | start the repository event monitoring
92
+ `stop` | stop the repository event monitoring
87
93
  `join <channel>` | invite octospy to another channel
88
94
  `show watched` | display the watch list
89
95
  `show status` | display the joined channels
@@ -6,9 +6,9 @@ module Cinch
6
6
  module Job
7
7
  def self.included(base)
8
8
  base.class_eval do
9
- match('job start', method: :start_with_message)
10
- match('job stop', method: :stop_with_message)
11
- match('job restart', method: :restart_with_message)
9
+ match('start', method: :start_with_message)
10
+ match('stop', method: :stop_with_message)
11
+ match('restart', method: :restart_with_message)
12
12
  end
13
13
 
14
14
  Channel.class_eval do
@@ -8,6 +8,7 @@ module Octospy
8
8
  password
9
9
  nick
10
10
  worker_interval
11
+ api_request_interval
11
12
  cinch_config_block
12
13
  github_api_endpoint
13
14
  github_web_endpoint
@@ -38,20 +39,22 @@ module Octospy
38
39
  end
39
40
 
40
41
  def setup
41
- @github_api_endpoint = ENV['GITHUB_API_ENDPOINT']
42
- @github_web_endpoint = ENV['GITHUB_WEB_ENDPOINT']
43
- @nick = ENV['NICK'] || 'octospy'
44
- @server = ENV['SERVER']
45
- @port = ENV['PORT']
46
- @ssl = !!ENV['SSL']
47
- @password = ENV['PASSWORD']
48
- @worker_interval = ENV['WORKER_INTERVAL'] ?
49
- ENV['WORKER_INTERVAL'].to_i : 30 #sec
50
- @github_login = ENV['GITHUB_LOGIN']
51
- @github_token = ENV['GITHUB_TOKEN']
52
- @channels = ENV['CHANNELS'] ?
53
- ENV['CHANNELS'].gsub(/\s|#/, '').split(',').map { |ch| "##{ch}" } : nil
54
- @cinch_config_block = nil
42
+ @github_api_endpoint = ENV['GITHUB_API_ENDPOINT']
43
+ @github_web_endpoint = ENV['GITHUB_WEB_ENDPOINT']
44
+ @nick = ENV['NICK'] || 'octospy'
45
+ @server = ENV['SERVER']
46
+ @port = ENV['PORT']
47
+ @ssl = !!ENV['SSL']
48
+ @password = ENV['PASSWORD']
49
+ @worker_interval = ENV['WORKER_INTERVAL'] ? ENV['WORKER_INTERVAL'].to_i : 30 #sec
50
+ # you can make up to 20 requests per minute.
51
+ # http://developer.github.com/v3/search/#rate-limit
52
+ @api_request_interval = ENV['API_REQUEST_INTERVAL'] ? ENV['API_REQUEST_INTERVAL'].to_i : 3 #sec
53
+ @github_login = ENV['GITHUB_LOGIN']
54
+ @github_token = ENV['GITHUB_TOKEN']
55
+ @channels = ENV['CHANNELS'] ? ENV['CHANNELS'].gsub(/\s|#/, '').split(',').
56
+ map { |ch| "##{ch}" } : nil
57
+ @cinch_config_block = nil
55
58
  end
56
59
  end
57
60
  end
@@ -28,7 +28,6 @@ module Octospy
28
28
  def default_params
29
29
  {
30
30
  notice_body: false,
31
- none_repository: false,
32
31
  nick: '',
33
32
  repository: '',
34
33
  status: '',
@@ -95,12 +94,12 @@ module Octospy
95
94
  created: :pink,
96
95
  commented: :yellow,
97
96
  pushed: :lime,
98
- forked: :orange,
97
+ forked: :seven_eleven,
99
98
  closed: :brown,
100
99
  deleted: :red,
101
100
  edited: :green,
102
101
  published: :blue,
103
- started: :rainbow,
102
+ starred: :rainbow,
104
103
  followed: :seven_eleven,
105
104
  saved: :cyan
106
105
  }
@@ -12,7 +12,7 @@ module Octospy
12
12
  status: "#{@event.payload.action}d gist",
13
13
  title: title,
14
14
  link: @event.payload.gist.html_url,
15
- none_repository: true
15
+ repository: nil
16
16
  }
17
17
  end
18
18
  end
@@ -2,16 +2,20 @@ module Octospy
2
2
  class Parser
3
3
  module Repository
4
4
  def parse_commit_comment_event
5
+ commit_url = "#{Octokit.web_endpoint}#{@event.repo.name}/commit/#{@event.payload.comment.commit_id}"
6
+
5
7
  {
6
8
  status: "commented on commit",
7
9
  title: "#{@event.payload.comment.path}",
8
10
  body: "#{@event.payload.comment.body}".split_lfbl,
9
- link: @event.payload.comment.html_url
11
+ link: "#{commit_url}#commitcomment-#{@event.payload.comment.id}"
10
12
  }
11
13
  end
12
14
 
13
15
  def parse_push_event
14
16
  body = []
17
+ branch = @event.payload.ref.gsub('refs/heads/', '')
18
+
15
19
  @event.payload.commits.each do |commit|
16
20
  verbose_commit = Octokit.commit(@event.repo.name, commit.sha)
17
21
  name = "#{verbose_commit.author ? verbose_commit.author.login : commit.author.name}"
@@ -22,9 +26,9 @@ module Octospy
22
26
  end
23
27
 
24
28
  {
25
- status: "pushed to #{@event.payload.ref.gsub('refs/heads/', '')}",
29
+ status: "pushed to #{branch}",
26
30
  body: body,
27
- link: "#{Octokit.web_endpoint}#{@event.repo.name}",
31
+ link: "#{Octokit.web_endpoint}#{@event.repo.name}/tree/#{branch}",
28
32
  notice_body: true
29
33
  }
30
34
  end
@@ -59,9 +63,9 @@ module Octospy
59
63
  forkee_name = @event.payload.forkee.full_name
60
64
  forkee_lang = @event.payload.forkee.language
61
65
  {
62
- status: "forked #{forkee_name} [#{forkee_lang}]",
63
- title: @event.payload.forkee.description,
64
- link: @event.payload.forkee.html_url
66
+ status: "forked to #{forkee_name}",
67
+ title: "#{forkee_lang}: #{@event.payload.forkee.description}",
68
+ link: "#{Octokit.web_endpoint}#{@event.payload.forkee.full_name}"
65
69
  }
66
70
  end
67
71
 
@@ -2,11 +2,18 @@ module Octospy
2
2
  class Parser
3
3
  module User
4
4
  def parse_watch_event
5
+ # This is not watch event, this is star event
6
+ # {
7
+ # status: "#{@event.payload.action} to watch",
8
+ # title: nil,
9
+ # link: "#{Octokit.web_endpoint}#{@event.repo.name}/watchers",
10
+ # repository: @event.repo.name
11
+ # }
5
12
  {
6
- status: "#{@event.payload.action} repository",
7
- title: @event.repo.name,
8
- link: "#{Octokit.web_endpoint}#{@event.repo.name}",
9
- repository: nil
13
+ status: 'starred',
14
+ title: nil,
15
+ link: "#{Octokit.web_endpoint}#{@event.repo.name}/stargazers",
16
+ repository: @event.repo.name
10
17
  }
11
18
  end
12
19
 
@@ -1,3 +1,3 @@
1
1
  module Octospy
2
- VERSION = '0.0.5'
2
+ VERSION = '0.0.6'
3
3
  end
@@ -30,6 +30,7 @@ module Octospy
30
30
  break
31
31
  end
32
32
 
33
+ sleep Octospy.api_request_interval
33
34
  arr.concat ::Octokit.repository_events(repo)
34
35
  end
35
36
  end
data/octospy.gemspec CHANGED
@@ -4,35 +4,27 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'octospy/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "octospy"
7
+ spec.name = 'octospy'
8
8
  spec.version = Octospy::VERSION
9
- spec.authors = ["linyows"]
10
- spec.email = ["linyows@gmail.com"]
9
+ spec.authors = ['linyows']
10
+ spec.email = ['linyows@gmail.com']
11
11
  spec.description = %q{This is IRC bot that notifies repository activity on github.}
12
12
  spec.summary = %q{Octospy notifies the repository activity to an IRC channel.}
13
- spec.homepage = "https://github.com/linyows/octospy"
14
- spec.license = "MIT"
13
+ spec.homepage = 'https://github.com/linyows/octospy'
14
+ spec.license = 'MIT'
15
15
 
16
16
  spec.files = `git ls-files`.split($/)
17
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
- spec.require_paths = ["lib"]
19
+ spec.require_paths = ['lib']
20
20
 
21
- spec.add_development_dependency "bundler", "~> 1.3"
22
- spec.add_development_dependency "rake"
23
- spec.add_development_dependency 'rspec'
24
- spec.add_development_dependency 'webmock'
25
- spec.add_development_dependency 'vcr'
26
- spec.add_development_dependency 'simplecov'
27
- spec.add_development_dependency 'coveralls'
28
- spec.add_development_dependency "pry"
29
- spec.add_development_dependency "awesome_print"
21
+ spec.add_development_dependency 'bundler', '~> 1.3'
22
+ spec.add_development_dependency 'rake'
30
23
 
31
- spec.add_dependency "cinch"
32
- spec.add_dependency "octokit"
33
- spec.add_dependency "string-irc"
34
- spec.add_dependency "faraday"
35
- spec.add_dependency "faraday_middleware"
36
- spec.add_dependency "dotenv"
37
- spec.add_dependency "hashie"
24
+ spec.add_dependency 'cinch', '~> 2.0'
25
+ spec.add_dependency 'octokit', '~> 2.7'
26
+ spec.add_dependency 'string-irc', '~> 0.3'
27
+ spec.add_dependency 'faraday', '~> 0.8.9'
28
+ spec.add_dependency 'faraday_middleware', '~> 0.9'
29
+ spec.add_dependency 'dotenv', '~> 0.10'
38
30
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: octospy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - linyows
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-28 00:00:00.000000000 Z
11
+ date: 2014-03-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -38,202 +38,90 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: rspec
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: webmock
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: vcr
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: simplecov
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: coveralls
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- version: '0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - ">="
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
- - !ruby/object:Gem::Dependency
112
- name: pry
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- version: '0'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- version: '0'
125
- - !ruby/object:Gem::Dependency
126
- name: awesome_print
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - ">="
130
- - !ruby/object:Gem::Version
131
- version: '0'
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - ">="
137
- - !ruby/object:Gem::Version
138
- version: '0'
139
41
  - !ruby/object:Gem::Dependency
140
42
  name: cinch
141
43
  requirement: !ruby/object:Gem::Requirement
142
44
  requirements:
143
- - - ">="
45
+ - - "~>"
144
46
  - !ruby/object:Gem::Version
145
- version: '0'
47
+ version: '2.0'
146
48
  type: :runtime
147
49
  prerelease: false
148
50
  version_requirements: !ruby/object:Gem::Requirement
149
51
  requirements:
150
- - - ">="
52
+ - - "~>"
151
53
  - !ruby/object:Gem::Version
152
- version: '0'
54
+ version: '2.0'
153
55
  - !ruby/object:Gem::Dependency
154
56
  name: octokit
155
57
  requirement: !ruby/object:Gem::Requirement
156
58
  requirements:
157
- - - ">="
59
+ - - "~>"
158
60
  - !ruby/object:Gem::Version
159
- version: '0'
61
+ version: '2.7'
160
62
  type: :runtime
161
63
  prerelease: false
162
64
  version_requirements: !ruby/object:Gem::Requirement
163
65
  requirements:
164
- - - ">="
66
+ - - "~>"
165
67
  - !ruby/object:Gem::Version
166
- version: '0'
68
+ version: '2.7'
167
69
  - !ruby/object:Gem::Dependency
168
70
  name: string-irc
169
71
  requirement: !ruby/object:Gem::Requirement
170
72
  requirements:
171
- - - ">="
73
+ - - "~>"
172
74
  - !ruby/object:Gem::Version
173
- version: '0'
75
+ version: '0.3'
174
76
  type: :runtime
175
77
  prerelease: false
176
78
  version_requirements: !ruby/object:Gem::Requirement
177
79
  requirements:
178
- - - ">="
80
+ - - "~>"
179
81
  - !ruby/object:Gem::Version
180
- version: '0'
82
+ version: '0.3'
181
83
  - !ruby/object:Gem::Dependency
182
84
  name: faraday
183
85
  requirement: !ruby/object:Gem::Requirement
184
86
  requirements:
185
- - - ">="
87
+ - - "~>"
186
88
  - !ruby/object:Gem::Version
187
- version: '0'
89
+ version: 0.8.9
188
90
  type: :runtime
189
91
  prerelease: false
190
92
  version_requirements: !ruby/object:Gem::Requirement
191
93
  requirements:
192
- - - ">="
94
+ - - "~>"
193
95
  - !ruby/object:Gem::Version
194
- version: '0'
96
+ version: 0.8.9
195
97
  - !ruby/object:Gem::Dependency
196
98
  name: faraday_middleware
197
99
  requirement: !ruby/object:Gem::Requirement
198
100
  requirements:
199
- - - ">="
101
+ - - "~>"
200
102
  - !ruby/object:Gem::Version
201
- version: '0'
103
+ version: '0.9'
202
104
  type: :runtime
203
105
  prerelease: false
204
106
  version_requirements: !ruby/object:Gem::Requirement
205
107
  requirements:
206
- - - ">="
108
+ - - "~>"
207
109
  - !ruby/object:Gem::Version
208
- version: '0'
110
+ version: '0.9'
209
111
  - !ruby/object:Gem::Dependency
210
112
  name: dotenv
211
113
  requirement: !ruby/object:Gem::Requirement
212
114
  requirements:
213
- - - ">="
214
- - !ruby/object:Gem::Version
215
- version: '0'
216
- type: :runtime
217
- prerelease: false
218
- version_requirements: !ruby/object:Gem::Requirement
219
- requirements:
220
- - - ">="
221
- - !ruby/object:Gem::Version
222
- version: '0'
223
- - !ruby/object:Gem::Dependency
224
- name: hashie
225
- requirement: !ruby/object:Gem::Requirement
226
- requirements:
227
- - - ">="
115
+ - - "~>"
228
116
  - !ruby/object:Gem::Version
229
- version: '0'
117
+ version: '0.10'
230
118
  type: :runtime
231
119
  prerelease: false
232
120
  version_requirements: !ruby/object:Gem::Requirement
233
121
  requirements:
234
- - - ">="
122
+ - - "~>"
235
123
  - !ruby/object:Gem::Version
236
- version: '0'
124
+ version: '0.10'
237
125
  description: This is IRC bot that notifies repository activity on github.
238
126
  email:
239
127
  - linyows@gmail.com