Add cli input handler

Also check for directories
Also add a small help
This commit is contained in:
Lenny Andreu 2025-05-18 00:07:56 -04:00
parent 28fa44e17c
commit e46a47b54f

59
cli.js
View file

@ -1,36 +1,65 @@
import { readFile, writeFile } from 'node:fs/promises'; #!/usr/bin/env node
import { readFile, writeFile, stat } from 'node:fs/promises';
import { argv, exit } from 'node:process';
import { convert } from './magic.js'; import { convert } from './magic.js';
async function reader(path){ async function reader(path) {
try { try {
const contents = await readFile(path, { encoding: 'utf8' }); const preFlighCheck = await stat(path);
// console.log(contents) const isUsable = preFlighCheck.isFile() && !preFlighCheck.isDirectory()
return contents; if (!isUsable)
return "";
const contents = await readFile(path, { encoding: 'utf8' });
return contents;
} catch (err) { } catch (err) {
console.error(err.message); console.error(err.message);
} }
} }
async function writer(path, content){ async function writer(path, content) {
try { try {
await writeFile(path, content, { encoding: 'utf8' }); const preFlighCheck = await stat(path);
const isUsable = preFlighCheck.isFile() && !preFlighCheck.isDirectory()
if (!isUsable)
return;
await writeFile(path, content, { encoding: 'utf8' });
} catch (err) { } catch (err) {
console.error(err.message); console.error(err.message);
} }
} }
function convertForConsole(convertFunction){ function convertForConsole(convertFunction) {
return async function(filePath){ return async function (filePath) {
const sourceFile = await reader("./systemd-unit.conf"); const sourceFile = await reader(filePath);
const converted = convertFunction(sourceFile); const converted = convertFunction(sourceFile);
await writer("./init.conf", converted.result) await writer("./init.conf", converted.result)
} }
} }
async function setup(){ async function setup(input, output) {
const convertFunction = convertForConsole(convert) const convertFunction = convertForConsole(convert)
convertFunction(); convertFunction(input);
} }
setup(); const [, , input, output] = argv;
// print process.argv
// argv.forEach((val, index) => {
// console.log(`${index}: ${val}`);
// });
// exit(0);
if (input === "-h" || input === '--help' || argv.length < 3) {
console.info(`
Convert systemd service unit to openrc
usage:
cli.js <input-systemd-unit> <output-init-file>
example:
cli.js systemd.unit init.conf
`)
exit();
}
setup(input, output);