summaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/read-package-json/read-json.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/node_modules/read-package-json/read-json.js')
-rw-r--r--deps/npm/node_modules/read-package-json/read-json.js24
1 files changed, 20 insertions, 4 deletions
diff --git a/deps/npm/node_modules/read-package-json/read-json.js b/deps/npm/node_modules/read-package-json/read-json.js
index 969bcc030b..243af8e271 100644
--- a/deps/npm/node_modules/read-package-json/read-json.js
+++ b/deps/npm/node_modules/read-package-json/read-json.js
@@ -339,10 +339,26 @@ function githead_ (file, data, dir, head, cb) {
data.gitHead = head.trim()
return cb(null, data)
}
- var headFile = head.replace(/^ref: /, '').trim()
- headFile = path.resolve(dir, '.git', headFile)
+ var headRef = head.replace(/^ref: /, '').trim()
+ var headFile = path.resolve(dir, '.git', headRef)
fs.readFile(headFile, 'utf8', function (er, head) {
- if (er || !head) return cb(null, data)
+ if (er || !head) {
+ var packFile = path.resolve(dir, '.git/packed-refs')
+ return fs.readFile(packFile, 'utf8', function (er, refs) {
+ if (er || !refs) {
+ return cb(null, data)
+ }
+ refs = refs.split('\n')
+ for (var i = 0; i < refs.length; i++) {
+ var match = refs[i].match(/^([0-9a-f]{40}) (.+)$/)
+ if (match && match[2].trim() === headRef) {
+ data.gitHead = match[1]
+ break
+ }
+ }
+ return cb(null, data)
+ })
+ }
head = head.replace(/^ref: /, '').trim()
data.gitHead = head
return cb(null, data)
@@ -371,7 +387,7 @@ function checkBinReferences_ (file, data, warn, cb) {
var relName = data.bin[key]
try {
var binPath = path.resolve(dirName, relName)
- fs.exists(binPath, handleExists.bind(null, relName))
+ fs.stat(binPath, (err) => handleExists(relName, !err))
} catch (error) {
if (error.message === 'Arguments to path.resolve must be strings' || error.message.indexOf('Path must be a string') === 0) {
warn('Bin filename for ' + key + ' is not a string: ' + util.inspect(relName))