first commit
This commit is contained in:
+64
@@ -0,0 +1,64 @@
|
||||
import os from 'node:os';
|
||||
import {ps} from './ps.js';
|
||||
import {wmic} from './wmic.js';
|
||||
import {powershell} from './powershell.js';
|
||||
|
||||
const platformToMethod = {
|
||||
darwin: 'ps',
|
||||
sunos: 'ps',
|
||||
freebsd: 'ps',
|
||||
netbsd: 'ps',
|
||||
win: 'win',
|
||||
linux: 'ps',
|
||||
aix: 'ps',
|
||||
};
|
||||
|
||||
let platform = os.platform();
|
||||
if (platform.startsWith('win')) {
|
||||
platform = 'win';
|
||||
}
|
||||
|
||||
const method = platformToMethod[platform];
|
||||
|
||||
/**
|
||||
* Lists the system pids on Windows. wmic has been removed from recent versions
|
||||
* (Windows 11 24H2, Windows Server 2025), so it is tried first (it is faster
|
||||
* when present) and PowerShell is used as a fallback when it is missing.
|
||||
* Exported for testing.
|
||||
* @param {Function} callback callback(err, list)
|
||||
* @param {Function} [wmicFn] Injectable wmic backend, used for testing.
|
||||
* @param {Function} [powershellFn] Injectable PowerShell backend, for testing.
|
||||
*/
|
||||
export function getWindows(callback, wmicFn = wmic, powershellFn = powershell) {
|
||||
wmicFn((error, list) => {
|
||||
if (error && error.code === 'ENOENT') {
|
||||
powershellFn(callback);
|
||||
return;
|
||||
}
|
||||
|
||||
callback(error, list);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the list of all the pids of the system.
|
||||
* @param {Function} callback Called when the list is ready.
|
||||
*/
|
||||
export function get(callback) {
|
||||
if (method === undefined) {
|
||||
callback(
|
||||
new Error(
|
||||
os.platform() +
|
||||
' is not supported yet, please open an issue (https://github.com/simonepri/pidtree)',
|
||||
),
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
if (method === 'win') {
|
||||
getWindows(callback);
|
||||
return;
|
||||
}
|
||||
|
||||
ps(callback);
|
||||
}
|
||||
Reference in New Issue
Block a user