-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
55 lines (48 loc) · 1.7 KB
/
index.js
File metadata and controls
55 lines (48 loc) · 1.7 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
/* eslint-env node */
'use strict';
const path = require('path');
const RuntimeBin = require('lambda-bin');
const {
GIT_BIN_PATH,
MIN_PACK_PATH,
MIN_PACK_FILENAME,
} = require('./config');
const MIN_PACK = require(path.resolve(MIN_PACK_PATH, MIN_PACK_FILENAME));
exports.installGit = function (options) {
return new Promise((resolve, reject) => {
options = options || {};
var targetDirectory = options.targetDirectory || '/tmp/git';
var updateEnv = (options.updateEnv !== undefined) ? options.updateEnv : true;
var GIT_TEMPLATE_DIR = path.join(targetDirectory, 'usr/share/git-core/templates');
var GIT_EXEC_PATH = path.join(targetDirectory, 'usr/libexec/git-core');
var LD_LIBRARY_PATH = path.join(targetDirectory, 'usr/lib64');
var binPath = path.join(targetDirectory, 'usr/bin');
var lambdaBinRuntime = new RuntimeBin({
useSymlinks: true,
targetPath: GIT_BIN_PATH,
minPack: MIN_PACK,
});
lambdaBinRuntime.applyMinPack(targetDirectory).then(() => {
if (updateEnv) {
process.env.PATH = process.env.PATH + ':' + binPath;
process.env.GIT_TEMPLATE_DIR = GIT_TEMPLATE_DIR;
process.env.GIT_EXEC_PATH = GIT_EXEC_PATH;
process.env.LD_LIBRARY_PATH = process.env.LD_LIBRARY_PATH
? process.env.LD_LIBRARY_PATH + ':' + LD_LIBRARY_PATH
: LD_LIBRARY_PATH;
resolve();
} else {
resolve({
binPath: binPath,
env: {
GIT_TEMPLATE_DIR: GIT_TEMPLATE_DIR,
GIT_EXEC_PATH: GIT_EXEC_PATH,
LD_LIBRARY_PATH: LD_LIBRARY_PATH
}
});
}
}, error => {
reject(new Error(`lambda-git failed to load: ${error}`));
});
});
};