Skip to content

Commit 9052334

Browse files
update packages, linting, some more debug messages
1 parent 96cd354 commit 9052334

File tree

3 files changed

+127
-91
lines changed

3 files changed

+127
-91
lines changed

lib/github.js

Lines changed: 112 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
var GitHub = require('github4')
44
var github = new GitHub()
55
var Request = require('request')
6-
var async = require('async')
6+
var Async = require('async')
77

88
var opts = {
99
registry: 'http://registry.npmjs.org/',
@@ -27,11 +27,13 @@ module.exports = function (options) {
2727
}
2828

2929
function cmdGet (msg, done) {
30-
var cache = opts.cache
31-
var registry = opts.registry + msg.name
30+
let moduleName = msg.name
31+
let cache = opts.cache
32+
let registry = opts.registry + moduleName
33+
let context = this
3234

33-
console.log('Processing module: ', msg.name)
34-
cache.load$(msg.name, (err, github) => {
35+
context.log.debug(`Processing module: ${moduleName}`)
36+
cache.load$(moduleName, (err, github) => {
3537
if (err) return done(err)
3638

3739
if (github && !msg.update) {
@@ -51,108 +53,142 @@ function cmdGet (msg, done) {
5153
var repository = latest.repository || {}
5254
var url = repository.url || ''
5355

54-
if(url.length > 0) {
55-
console.log('Matching URL: ', url)
56+
context.log.debug(`Module: ${moduleName}, github url: ${url}`)
57+
if (url.length > 0) {
5658
var matches = /[\/:]([^\/:]+?)[\/:]([^\/]+?)(\.git)*$/.exec(url)
5759

58-
if (matches && matches.length ===2) {
60+
if (matches && matches.length >= 2) {
5961
var params = {
60-
name: msg.name,
62+
name: moduleName,
6163
url: url,
6264
user: matches[1] || null,
6365
repo: matches[2] || null
6466
}
6567

6668
if (!params.user || !params.repo) {
67-
return done(new Error('not found on github'))
69+
return done(new Error(`module ${moduleName} not found on github`))
6870
}
6971

7072
queryGithub(params, done)
71-
}else{
72-
return done(new Error('invalid github url:', url, ' for module:', msg.name))
73+
}
74+
else {
75+
return done(new Error(`invalid github url: ${url}, for module: ${moduleName}`))
7376
}
7477
}
75-
else{
76-
return done(new Error('not found on github'))
78+
else {
79+
return done(new Error(`module ${moduleName} not found on github`))
7780
}
7881
})
7982
})
80-
}
8183

82-
function aliasGet (msg, done) {
83-
var seneca = this
84-
var payload = {name: msg.name}
84+
function queryGithub (params, done) {
85+
var cache = opts.cache
8586

86-
seneca.act('role:github,cmd:get', payload, (err, data) => {
87-
if (err) return done(err)
88-
89-
payload.data = data
90-
seneca.act('role:info,res:part,part:github', payload)
91-
done(null, {ok: true})
92-
})
93-
}
87+
github.authenticate({
88+
type: 'token',
89+
token: opts.token
90+
})
9491

95-
function queryGithub (msg, done) {
96-
var cache = opts.cache
92+
Async.parallel({
93+
getRepository: function (cb) {
94+
github.repos.get({user: params.user, repo: params.repo}, function (err, data) {
95+
if (err) {
96+
context.log.debug(`Read repo for ${moduleName} get error: ${err}`)
97+
}
9798

98-
github.authenticate({
99-
type: 'token',
100-
token: opts.token
101-
})
99+
cb(err, data)
100+
})
101+
},
102102

103-
async.parallel({
104-
getRepository: function (cb) {
105-
github.repos.get({user: msg.user, repo: msg.repo}, cb)
106-
},
103+
getReadme: function (cb) {
104+
github.repos.getReadme({user: params.user, repo: params.repo}, (err, readme) => {
105+
if (err) {
106+
context.log.debug(`Read readme for ${moduleName} get error: ${err}`)
107+
return cb(err)
108+
}
107109

108-
getReadme: function (cb) {
109-
github.repos.getReadme({user: msg.user, repo: msg.repo}, (err, readme) => {
110-
if (err) return cb(err)
111-
if (!readme.content) return cb(null, false)
110+
if (!readme || !readme.content) {
111+
context.log.debug(`Read readme for ${moduleName} no content`)
112+
return cb(null, false)
113+
}
112114

113-
github.misc.renderMarkdownRaw({
114-
data: new Buffer(readme.content, 'base64').toString('ascii')
115-
}, (err, response) => {
116-
if (err && !response) return cb(err) // API fails expecting a JSON object
115+
github.misc.renderMarkdownRaw({
116+
data: new Buffer(readme.content, 'base64').toString('ascii')
117+
}, (err, response) => {
118+
if (err && !response) {
119+
context.log.debug(`Render readme for ${moduleName} error: ${err}`)
120+
return cb(err)
121+
} // API fails expecting a JSON object
117122

118-
cb(null, response.data)
123+
cb(null, response.data)
124+
})
119125
})
120-
})
121-
},
126+
},
122127

123-
getPullRequests: function (cb) {
124-
github.pullRequests.getAll({user: msg.user, repo: msg.repo, state: 'open'}, cb)
125-
}
126-
}, (err, results) => {
127-
if (err) return done(err)
128+
getPullRequests: function (cb) {
129+
github.pullRequests.getAll({user: params.user, repo: params.repo, state: 'open'}, function(err, data){
130+
if (err) {
131+
context.log.debug(`Read Github pull requests for ${moduleName} get error: ${err}`)
132+
}
128133

129-
var data = {
130-
name: msg.repo || '',
131-
user: msg.user || '',
132-
repo: msg.repo || '',
133-
stars: results.getRepository.stargazers_count || 0,
134-
watches: results.getRepository.subscribers_count || 0,
135-
forks: results.getRepository.forks_count || 0,
136-
last: results.getRepository.pushed_at || '',
137-
urlRepo: 'https://github.com/' + msg.user + '/' + msg.repo,
138-
urlClone: 'git+https://github.com/' + msg.user + '/' + msg.repo + '.git',
139-
urlSsh: '[email protected]:' + msg.user + '/' + msg.repo + '.git',
140-
readme: results.getReadme,
141-
pullRequests: results.getPullRequests && results.getPullRequests.length || 0,
142-
cached: Date.now()
143-
}
134+
cb(err, data)
135+
})
136+
}
137+
}, (err, results) => {
138+
if (err) {
139+
context.log.debug(`Read pull requests for ${moduleName} got error: ${err}`)
140+
return complete(err)
141+
}
142+
var data = {
143+
name: params.repo || '',
144+
user: params.user || '',
145+
repo: params.repo || '',
146+
stars: results.getRepository.stargazers_count || 0,
147+
watches: results.getRepository.subscribers_count || 0,
148+
forks: results.getRepository.forks_count || 0,
149+
last: results.getRepository.pushed_at || '',
150+
urlRepo: 'https://github.com/' + params.user + '/' + params.repo,
151+
urlClone: 'git+https://github.com/' + params.user + '/' + params.repo + '.git',
152+
urlSsh: '[email protected]:' + params.user + '/' + params.repo + '.git',
153+
readme: results.getReadme,
154+
pullRequests: results.getPullRequests && results.getPullRequests.length || 0,
155+
cached: Date.now()
156+
}
144157

145-
function complete (err, data) {
146-
if (err) return done(err)
147-
else done(null, data.data$(data))
148-
}
158+
context.log.debug(`Read Github data for module ${moduleName} completed.`)
159+
cache.load$(params.name, (err, cached) => {
160+
if (err) {
161+
return complete(err)
162+
}
149163

150-
cache.load$(msg.name, (err, cached) => {
151-
if (err) return done(err)
152-
if (cached) return cached.data$(data).save$(complete)
164+
if (cached) {
165+
return cached.data$(data).save$(complete)
166+
}
167+
168+
data.id$ = params.name
169+
cache.make$(data).save$(complete)
170+
})
153171

154-
data.id$ = msg.name
155-
cache.make$(data).save$(complete)
172+
function complete (err, data) {
173+
if (err) {
174+
context.log.debug(`Save Github data for ${moduleName} got error: ${err}`)
175+
return done(err)
176+
}
177+
else done(null, data ? data.data$(data) : data)
178+
}
156179
})
180+
}
181+
}
182+
183+
function aliasGet (msg, done) {
184+
var seneca = this
185+
var payload = {name: msg.name}
186+
187+
seneca.act('role:github,cmd:get', payload, (err, data) => {
188+
if (err) return done(err)
189+
190+
payload.data = data
191+
seneca.act('role:info,res:part,part:github', payload)
192+
done(null, {ok: true})
157193
})
158194
}

package.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@
3434
},
3535
"license": "MIT",
3636
"dependencies": {
37-
"github4": "0.5.4",
38-
"request": "2.70.0",
39-
"seneca": "2.0.0",
37+
"github4": "1.0.0",
38+
"request": "2.72.0",
39+
"seneca": "2.0.1",
4040
"seneca-balance-client": "0.4.0",
4141
"seneca-entity": "0.0.1",
4242
"seneca-level-store": "0.2.3",
@@ -46,10 +46,10 @@
4646
"devDependencies": {
4747
"code": "2.2.0",
4848
"coveralls": "2.11.9",
49-
"eslint-config-seneca": "1.1.2",
49+
"eslint-config-seneca": "2.0.0",
5050
"eslint-plugin-hapi": "4.0.0",
5151
"eslint-plugin-standard": "1.3.2",
52-
"proxyquire": "1.7.4",
53-
"lab": "10.3.1"
52+
"proxyquire": "1.7.8",
53+
"lab": "10.5.1"
5454
}
5555
}

test/github.test.js

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ describe('A valid "role:github,cmd:get" call', () => {
4646
var seneca = createInstance(done)
4747
var payload = {name: 'seneca'}
4848

49-
seneca.act(`role:github,cmd:get`, payload, (err, reply) => {
49+
seneca.act('role:github,cmd:get', payload, (err, reply) => {
5050
expect(err).to.not.exist()
5151
expect(reply).to.exist()
5252
done()
@@ -57,12 +57,12 @@ describe('A valid "role:github,cmd:get" call', () => {
5757
var seneca = createInstance(done)
5858
var payload = {name: 'seneca'}
5959

60-
seneca.act(`role:github,cmd:get`, payload, (err, reply) => {
60+
seneca.act('role:github,cmd:get', payload, (err, reply) => {
6161
expect(err).to.not.exist()
6262

6363
var cachedOne = reply.cached
6464

65-
seneca.act(`role:github,cmd:get`, payload, (err, reply) => {
65+
seneca.act('role:github,cmd:get', payload, (err, reply) => {
6666
expect(err).to.not.exist()
6767

6868
var cachedTwo = reply.cached
@@ -77,13 +77,13 @@ describe('A valid "role:github,cmd:get" call', () => {
7777
var seneca = createInstance(done)
7878
var payload = {name: 'seneca'}
7979

80-
seneca.act(`role:github,cmd:get`, payload, (err, reply) => {
80+
seneca.act('role:github,cmd:get', payload, (err, reply) => {
8181
expect(err).to.not.exist()
8282

8383
var cachedOne = reply.cached
8484
payload.update = true
8585

86-
seneca.act(`role:github,cmd:get`, payload, (err, reply) => {
86+
seneca.act('role:github,cmd:get', payload, (err, reply) => {
8787
expect(err).to.not.exist()
8888

8989
var cachedTwo = reply.cached
@@ -100,7 +100,7 @@ describe('An invalid "role:github,cmd:get" call', () => {
100100
var seneca = createInstance(done)
101101
var payload = {name: 'shooobydoobydooboop'}
102102

103-
seneca.act(`role:github,cmd:get`, payload, (err, reply) => {
103+
seneca.act('role:github,cmd:get', payload, (err, reply) => {
104104
expect(err).to.exist()
105105
expect(reply).to.not.exist()
106106
done()
@@ -113,7 +113,7 @@ describe('A valid "role:info,req:part" call', () => {
113113
var seneca = createInstance(done)
114114
var payload = {name: 'seneca'}
115115

116-
seneca.act(`role:info,req:part`, payload, (err, reply) => {
116+
seneca.act('role:info,req:part', payload, (err, reply) => {
117117
expect(err).to.not.exist()
118118
expect(reply).to.exist()
119119
done()
@@ -124,13 +124,13 @@ describe('A valid "role:info,req:part" call', () => {
124124
var seneca = createInstance(done)
125125
var payload = {name: 'seneca'}
126126

127-
seneca.add(`role:info,res:part`, (msg, cb) => {
127+
seneca.add('role:info,res:part', (msg, cb) => {
128128
expect(msg).to.exist()
129129
cb()
130130
done()
131131
})
132132

133-
seneca.act(`role:info,req:part`, payload, (err, reply) => {
133+
seneca.act('role:info,req:part', payload, (err, reply) => {
134134
expect(err).to.not.exist()
135135
expect(reply).to.exist()
136136
})

0 commit comments

Comments
 (0)