-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathbower-locker-common.js
More file actions
84 lines (73 loc) · 2.52 KB
/
bower-locker-common.js
File metadata and controls
84 lines (73 loc) · 2.52 KB
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#!/usr/bin/env node
'use strict';
var fs = require('fs');
var nodePath = require('path');
var cwd = process.cwd();
/**
* Function to pull out and map the specific bower component metadata to our preferred form
* @param {Object} bowerInfo
* @returns {{name: String, commit: String, release: String, src: String, originalSrc: String}}
*/
function mapDependencyData(bowerInfo) {
return {
name: bowerInfo.name,
commit: bowerInfo._resolution !== undefined ? bowerInfo._resolution.commit : undefined,
release: bowerInfo._release,
src: bowerInfo._source,
originalSrc: bowerInfo._originalSource
};
}
/**
* Function to read and return the specific metadata of a bower component
* @param {String} filepath Filepath pointing to the JSON metadata
* @returns {Object} Returns dependency metadata object (dirName, commit, release, src, etc.)
*/
function getDependency(filepath) {
var bowerInfoStr = fs.readFileSync(filepath, {encoding: 'utf8'});
var bowerInfo = JSON.parse(bowerInfoStr);
return mapDependencyData(bowerInfo);
}
/**
* Gets the Bower RC data
* @returns {Object|null} Returns the JSON objects from the file if it's found, null otherwise
*/
function getBowerRC() {
if (fs.existsSync('.bowerrc')) {
return JSON.parse(fs.readFileSync('.bowerrc', {encoding: 'utf8'}));
}
return null;
}
/**
* Gets the folder in which Bower components are stored
* @returns {String}
*/
function getBowerFolder() {
var bowerRC = getBowerRC();
if (bowerRC === null || bowerRC.directory === undefined) {
return 'bower_components';
}
return bowerRC.directory;
}
/**
* Function to return the metadata for all the dependencies loaded within the `bower_components` directory
* @returns {Object} Returns dependency object for each dependency containing (dirName, commit, release, src, etc.)
*/
function getAllDependencies() {
var folder = './' + getBowerFolder();
var bowerDependencies = fs.readdirSync(folder, {encoding: 'utf8'});
var dependencyInfos = [];
bowerDependencies.forEach(function(dirname) {
var filepath = nodePath.resolve(cwd, folder, dirname, '.bower.json');
if (fs.existsSync(filepath)) {
var dependencyInfo = getDependency(filepath);
dependencyInfo.dirName = dirname;
dependencyInfos.push(dependencyInfo);
}
});
return dependencyInfos;
}
module.exports = {
getAllDependencies: getAllDependencies,
getDependency: getDependency,
mapDependencyData: mapDependencyData
};