34 lines
815 B
JavaScript
34 lines
815 B
JavaScript
'use strict'
|
|
|
|
const fromCallback = require('promise-toolbox/fromCallback')
|
|
const { createParser } = require('parse-pairs')
|
|
const { execFile } = require('child_process')
|
|
|
|
// ===================================================================
|
|
|
|
const parse = createParser({
|
|
keyTransform: key => key.slice(5).toLowerCase(),
|
|
})
|
|
const makeFunction =
|
|
command =>
|
|
async (fields, ...args) => {
|
|
const info = await fromCallback(execFile, command, [
|
|
'--noheading',
|
|
'--nosuffix',
|
|
'--nameprefixes',
|
|
'--unbuffered',
|
|
'--units',
|
|
'b',
|
|
'-o',
|
|
String(fields),
|
|
...args,
|
|
])
|
|
return info
|
|
.trim()
|
|
.split(/\r?\n/)
|
|
.map(Array.isArray(fields) ? parse : line => parse(line)[fields])
|
|
}
|
|
|
|
exports.lvs = makeFunction('lvs')
|
|
exports.pvs = makeFunction('pvs')
|