mirror of
https://github.com/AikidoSec/safe-chain.git
synced 2026-05-26 12:10:49 +00:00
Cleanup
This commit is contained in:
parent
1cf8fd1241
commit
d064d46668
32 changed files with 429 additions and 400 deletions
39
packages/safe-chain/src/installLocation.js
Normal file
39
packages/safe-chain/src/installLocation.js
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
import path from "path";
|
||||
|
||||
/**
|
||||
* @param {string} executablePath
|
||||
* @returns {string | undefined}
|
||||
*/
|
||||
export function deriveInstallDirFromExecutablePath(executablePath) {
|
||||
if (!executablePath) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
const pathLibrary = executablePath.includes("\\") ? path.win32 : path.posix;
|
||||
const executableDir = pathLibrary.dirname(executablePath);
|
||||
if (pathLibrary.basename(executableDir) !== "bin") {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
return pathLibrary.dirname(executableDir);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the install directory for a packaged safe-chain binary.
|
||||
* Custom installation directories only apply to packaged binary installs.
|
||||
* For npm/global/dev-script executions this intentionally returns undefined,
|
||||
* which causes callers to fall back to the default ~/.safe-chain layout.
|
||||
*
|
||||
* @param {{ isPackaged?: boolean, executablePath?: string }} [options]
|
||||
* @returns {string | undefined}
|
||||
*/
|
||||
export function getInstalledSafeChainDir(options = {}) {
|
||||
const isPackaged = options.isPackaged ?? Boolean(process.pkg);
|
||||
if (!isPackaged) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
return deriveInstallDirFromExecutablePath(
|
||||
options.executablePath ?? process.execPath,
|
||||
);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue