Fixed: Divided 'jake install' into 'jake dist' and 'jake install'

'jake dist' will do everything that 'jake install' does but creating the global symlinks
for the 'dist' binaries at the 'npm prefix' path.
This commit is contained in:
Martin Carlberg
2021-10-05 11:34:25 +02:00
parent c9e8b2970b
commit eab8fe2d64
2 changed files with 47 additions and 16 deletions
+17 -2
View File
@@ -45,18 +45,33 @@ filedir ($BUILD_CJS_CAPPUCCINO_DEBUG_FRAMEWORKS, ["debug", "release"], function(
task ("CommonJS", [$BUILD_CJS_OBJECTIVE_J_DEBUG_FRAMEWORKS, $BUILD_CJS_CAPPUCCINO_DEBUG_FRAMEWORKS, "debug", "release"], function() { task ("CommonJS", [$BUILD_CJS_OBJECTIVE_J_DEBUG_FRAMEWORKS, $BUILD_CJS_CAPPUCCINO_DEBUG_FRAMEWORKS, "debug", "release"], function() {
}); });
task ("install", ["CommonJS"], function() // Install everything in the dist directory
task ("dist", ["CommonJS"], function()
{ {
installCopy($BUILD_CJS_OBJECTIVE_J, false); installCopy($BUILD_CJS_OBJECTIVE_J, false);
installCopy($BUILD_CJS_CAPPUCCINO, false); installCopy($BUILD_CJS_CAPPUCCINO, false);
}); });
task ("sudo-install", ["CommonJS"], function() task ("sudo-dist", ["CommonJS"], function()
{ {
installCopy($BUILD_CJS_OBJECTIVE_J, true); installCopy($BUILD_CJS_OBJECTIVE_J, true);
installCopy($BUILD_CJS_CAPPUCCINO, true); installCopy($BUILD_CJS_CAPPUCCINO, true);
}); });
// Install everything in the dist directory (task dist) and
// create symlinks to the 'dist' binaries in the global 'npm prefix' path
task ("install", ["dist"], function()
{
installGlobal($BUILD_CJS_OBJECTIVE_J, false);
installGlobal($BUILD_CJS_CAPPUCCINO, false);
});
task ("sudo-install", ["sudo-dist"], function()
{
installGlobal($BUILD_CJS_OBJECTIVE_J, true);
installGlobal($BUILD_CJS_CAPPUCCINO, true);
});
task ("install-symlinks", function() task ("install-symlinks", function()
{ {
installSymlink($BUILD_CJS_OBJECTIVE_J); installSymlink($BUILD_CJS_OBJECTIVE_J);
+30 -14
View File
@@ -365,7 +365,8 @@ global.installCopy = function(sourcePath, useSudo)
return; return;
var packageName = path.basename(sourcePath), var packageName = path.basename(sourcePath),
targetPath = path.join(__dirname, "dist", packageName); targetPath = path.join(__dirname, "dist", packageName),
binPath = path.resolve(path.join(targetPath, "bin"));
// create the dist directory if it does not exist // create the dist directory if it does not exist
if (!fs.existsSync(targetPath)) { if (!fs.existsSync(targetPath)) {
@@ -381,12 +382,10 @@ global.installCopy = function(sourcePath, useSudo)
// hacky way to do a sudo copy. // hacky way to do a sudo copy.
if (useSudo) if (useSudo)
child_process.execSync(["sudo", "cp", "-Rf", sourcePath, path.dirname(targetPath)].join(" ")); child_process.execSync(["sudo", "cp", "-Rf", sourcePath, path.dirname(targetPath)].map(utilsFile.enquote).join(" "));
else else
utilsFile.copyRecursiveSync(sourcePath, targetPath); utilsFile.copyRecursiveSync(sourcePath, targetPath);
var binPath = path.resolve(path.join(targetPath, "bin"))
// create the bin directory if it does not exist // create the bin directory if it does not exist
if (!fs.existsSync(binPath)) { if (!fs.existsSync(binPath)) {
fs.mkdirSync(targetPath) fs.mkdirSync(targetPath)
@@ -399,19 +398,39 @@ global.installCopy = function(sourcePath, useSudo)
var binary = path.join(binPath, name); var binary = path.join(binPath, name);
if (useSudo) { if (useSudo) {
child_process.execSync(["sudo", "chmod", "755", binary].join(" ")); child_process.execSync(["sudo", "chmod", "755", binary].map(utilsFile.enquote).join(" "));
} else { } else {
fs.chmodSync(binary, 0o755); fs.chmodSync(binary, 0o755);
} }
}); });
} }
fs.readdirSync(binPath).forEach(function (name)
{
var prefix = child_process.execSync("npm prefix -g").toString().trim();
child_process.execSync( (useSudo ? "sudo " : "") + "ln -sf " + path.join(binPath, name) + " " + path.join(prefix, "bin", name));
});
}; };
global.installGlobal = function(sourcePath, useSudo)
{
if (!fs.existsSync(sourcePath))
return;
var packageName = path.basename(sourcePath),
targetPath = path.join(__dirname, "dist", packageName),
binPath = path.resolve(path.join(targetPath, "bin"));
// create the dist directory if it does not exist
if (!fs.existsSync(targetPath)) {
fs.mkdirSync(targetPath, { recursive: true });
}
var prefix = child_process.execSync("npm prefix -g").toString().trim();
fs.readdirSync(binPath).forEach(function (name)
{
var p = path.join(binPath, name),
prefixBinPath = path.join(prefix, "bin", name);
stream.print("Symlink \0cyan(" + prefixBinPath + "\0) ==> \0cyan(" + p + "\0)");
child_process.execSync( (useSudo ? "sudo " : "") + "ln -sf " + utilsFile.enquote(p) + " " + utilsFile.enquote(prefixBinPath));
});
}
global.spawnJake = function(/*String*/ aTaskName) global.spawnJake = function(/*String*/ aTaskName)
{ {
@@ -424,10 +443,7 @@ global.spawnJake = function(/*String*/ aTaskName)
var normalizeCommand = function(/*Array or String*/ command) var normalizeCommand = function(/*Array or String*/ command)
{ {
if (Array.isArray(command)) if (Array.isArray(command))
return command.map(function (arg) return command.map(utilsFile.enquote).join(" ");
{
return utilsFile.enquote(arg);
}).join(" ");
else else
return command; return command;
}; };