Skip to content
This repository has been archived by the owner on Aug 11, 2021. It is now read-only.

Commit

Permalink
index.js: Remove dependency on synchronous fs operations
Browse files Browse the repository at this point in the history
PR-URL: #137
Credit: @deathcap
Reviewed-By: @zkat
  • Loading branch information
deathcap authored and zkat committed Mar 7, 2017
1 parent faacda9 commit 4042ad0
Showing 1 changed file with 25 additions and 31 deletions.
56 changes: 25 additions & 31 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,6 @@

module.exports = RegClient

var join = require('path').join
var fs = require('graceful-fs')

var npmlog
try {
npmlog = require('npmlog')
Expand Down Expand Up @@ -48,32 +45,29 @@ function RegClient (config) {
delete this.config.log

var client = this
fs.readdirSync(join(__dirname, 'lib')).forEach(function (f) {
var entry = join(__dirname, 'lib', f)

// lib/group-name/operation.js -> client.groupName.operation
var stat = fs.statSync(entry)
if (stat.isDirectory()) {
var groupName = f.replace(/-([a-z])/gi, dashToCamel)
fs.readdirSync(entry).forEach(function (f) {
if (!f.match(/\.js$/)) return

if (!client[groupName]) {
// keep client.groupName.operation from stomping client.operation
client[groupName] = Object.create(client)
}
var name = f.replace(/\.js$/, '').replace(/-([a-z])/gi, dashToCamel)
client[groupName][name] = require(join(entry, f))
})
return
}

if (!f.match(/\.js$/)) return
var name = f.replace(/\.js$/, '').replace(/-([a-z])/gi, dashToCamel)
client[name] = require(entry)
})
}

function dashToCamel (_, l) {
return l.toUpperCase()
client.access = require('./lib/access')
client.adduser = require('./lib/adduser')
client.attempt = require('./lib/attempt')
client.authify = require('./lib/authify')
client.deprecate = require('./lib/deprecate')
client.distTags = Object.create(client)
client.distTags.add = require('./lib/dist-tags/add')
client.distTags.fetch = require('./lib/dist-tags/fetch')
client.distTags.rm = require('./lib/dist-tags/rm')
client.distTags.set = require('./lib/dist-tags/set')
client.distTags.update = require('./lib/dist-tags/update')
client.fetch = require('./lib/fetch')
client.get = require('./lib/get')
client.initialize = require('./lib/initialize')
client.logout = require('./lib/logout')
client.ping = require('./lib/ping')
client.publish = require('./lib/publish')
client.request = require('./lib/request')
client.sendAnonymousCLIMetrics = require('./lib/send-anonymous-CLI-metrics')
client.star = require('./lib/star')
client.stars = require('./lib/stars')
client.tag = require('./lib/tag')
client.team = require('./lib/team')
client.unpublish = require('./lib/unpublish')
client.whoami = require('./lib/whoami')
}

0 comments on commit 4042ad0

Please sign in to comment.