-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.js
51 lines (43 loc) · 1.42 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
var fmt = require("util").format
var fs = require("fs")
var path = require("path")
var superagent = require("superagent")
var tarball = require("tarball-extract")
var glob = require("glob")
var getFiles = module.exports = function(packageName, globPattern, callback) {
// globPattern is optional
if (typeof globPattern === "function") {
callback = globPattern
globPattern = "**/*.*"
}
var registryUrl = fmt("https://registry.npmjs.org/%s", packageName)
superagent.get(registryUrl, function(err, res) {
if (err) return callback(err)
var pkg = res.body
var version = pkg["dist-tags"].latest
var tarballUrl = pkg.versions[version].dist.tarball
var tarballFilename = "/tmp/" + path.basename(tarballUrl)
var tarballExtractionDir = tarballFilename
.replace(".tar.gz", "")
.replace(".tgz", "")
tarball.extractTarballDownload(
tarballUrl,
tarballFilename,
tarballExtractionDir,
{},
function(err, result) {
glob(globPattern, {cwd: tarballExtractionDir}, function (er, filenames) {
var files = {}
filenames.forEach(function(filename) {
files[filename.replace(/^package\//, "")] = fs.readFileSync(path.resolve(tarballExtractionDir, filename)).toString()
})
return callback(err, {
name: packageName,
version: version,
files: files
})
})
}
)
})
}