mirror of
https://github.com/45Drives/cockpit-navigator.git
synced 2025-07-31 01:24:37 +02:00
removed unused functions
This commit is contained in:
parent
12567fa6dd
commit
70e7c63648
@ -1,70 +0,0 @@
|
|||||||
import { useSpawn, errorString } from "@45drives/cockpit-helpers";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Callback for handling errors during parsing of `dir` output lines
|
|
||||||
*
|
|
||||||
* @callback getDirListingFailCallback
|
|
||||||
* @param {String} message - what went wrong
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get list of directory entry names for given path
|
|
||||||
*
|
|
||||||
* @param {String} path - Directory path to list
|
|
||||||
* @param {getDirListingFailCallback} failCallback - Callback function for handling errors, receives {String} message
|
|
||||||
* @returns {Promise<String[]>}
|
|
||||||
*/
|
|
||||||
async function getDirListing(path, host, failCallback) {
|
|
||||||
return parseRawDirListing(
|
|
||||||
(
|
|
||||||
await useSpawn([
|
|
||||||
'dir',
|
|
||||||
'--almost-all',
|
|
||||||
'--dereference-command-line-symlink-to-dir',
|
|
||||||
'--quoting-style=c',
|
|
||||||
'-1',
|
|
||||||
path
|
|
||||||
], { superuser: 'try', host }).promise()
|
|
||||||
).stdout,
|
|
||||||
failCallback
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Parse raw output of `dir` call from {@link getDirListing()}
|
|
||||||
*
|
|
||||||
* @param {String} raw - Raw output of `dir` from {@link getDirListing()}
|
|
||||||
* @param {getDirListingFailCallback} failCallback - Callback function for handling errors, receives {String} message
|
|
||||||
* @returns {String[]}
|
|
||||||
*/
|
|
||||||
function parseRawDirListing(raw, failCallback) {
|
|
||||||
const decoder = new TextDecoder();
|
|
||||||
return raw.split('\n')
|
|
||||||
.filter(name => name)
|
|
||||||
.map(escaped => {
|
|
||||||
try {
|
|
||||||
return JSON.parse(
|
|
||||||
escaped.replace(
|
|
||||||
/(\\\d{1,3})+/g,
|
|
||||||
octs => decoder.decode(
|
|
||||||
new Uint8Array(
|
|
||||||
octs
|
|
||||||
.split('\\')
|
|
||||||
.slice(1)
|
|
||||||
.map(oct => parseInt(oct, 8)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
} catch (error) {
|
|
||||||
failCallback?.(`${errorString(error)}\ncaused by ${escaped}`);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.filter(entry => entry !== null);
|
|
||||||
}
|
|
||||||
|
|
||||||
export { parseRawDirListing }
|
|
||||||
|
|
||||||
export default getDirListing;
|
|
@ -1,79 +0,0 @@
|
|||||||
import { parseRawDirListing } from "./getDirListing";
|
|
||||||
|
|
||||||
describe('the getDirListing function', () => {
|
|
||||||
it('can parse output of dir', () => {
|
|
||||||
// `dir --almost-all --dereference-command-line-symlink-to-dir --quoting-style=c -1`
|
|
||||||
const input =
|
|
||||||
`"test"
|
|
||||||
"sentence test"
|
|
||||||
"special\\\\characters\\n\\t"
|
|
||||||
"😀"
|
|
||||||
`;
|
|
||||||
const expectedOutput = [
|
|
||||||
"test",
|
|
||||||
"sentence test",
|
|
||||||
"special\\characters\n\t",
|
|
||||||
"😀"
|
|
||||||
]
|
|
||||||
const output = parseRawDirListing(input);
|
|
||||||
expect(output).toEqual(expectedOutput);
|
|
||||||
expect(output[1]).toBe("sentence test");
|
|
||||||
});
|
|
||||||
|
|
||||||
it('can parse real output of dir', () => {
|
|
||||||
const input = `"{}"
|
|
||||||
"\\360\\237\\230\\200"
|
|
||||||
"~$lock"
|
|
||||||
"0"
|
|
||||||
"broken"
|
|
||||||
"dir"
|
|
||||||
"dst"
|
|
||||||
"escape"
|
|
||||||
"escape\\ndir"
|
|
||||||
"escapendir"
|
|
||||||
"hello world"
|
|
||||||
"hello\\\\world"
|
|
||||||
"iterate_ips"
|
|
||||||
"md5"
|
|
||||||
"messed"
|
|
||||||
"name"
|
|
||||||
"pdf_numn"
|
|
||||||
"src"
|
|
||||||
"systemd"
|
|
||||||
"test"
|
|
||||||
"test\\nescape\\tname"`;
|
|
||||||
const expectedOutput = [
|
|
||||||
"{}",
|
|
||||||
"😀",
|
|
||||||
"~$lock",
|
|
||||||
"0",
|
|
||||||
"broken",
|
|
||||||
"dir",
|
|
||||||
"dst",
|
|
||||||
"escape",
|
|
||||||
"escape\ndir",
|
|
||||||
"escapendir",
|
|
||||||
"hello world",
|
|
||||||
"hello\\world",
|
|
||||||
"iterate_ips",
|
|
||||||
"md5",
|
|
||||||
"messed",
|
|
||||||
"name",
|
|
||||||
"pdf_numn",
|
|
||||||
"src",
|
|
||||||
"systemd",
|
|
||||||
"test",
|
|
||||||
"test\nescape\tname",
|
|
||||||
]
|
|
||||||
const errorCallback = jest.fn((message) => console.error(message));
|
|
||||||
expect(errorCallback.mock.calls.length).toBe(0);
|
|
||||||
expect(parseRawDirListing(input, errorCallback)).toEqual(expectedOutput);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('can report errors with callback', () => {
|
|
||||||
const errorCallback = jest.fn();
|
|
||||||
const input = "error: example error";
|
|
||||||
parseRawDirListing(input, errorCallback);
|
|
||||||
expect(errorCallback.mock.calls.length).toBe(1);
|
|
||||||
})
|
|
||||||
});
|
|
Loading…
x
Reference in New Issue
Block a user