// Modules import { promisify } from 'util'; import { exec } from "child_process"; // Debug import ModuleDebugBuilder from "../utilities/moduleDebugBuilder.js"; // Global Vars const log = new ModuleDebugBuilder("bot", "executeConsoleCommand"); const execCommand = promisify(exec); export default async function executeAsyncConsoleCommand(consoleCommand) { // Check to see if the command is a real command // TODO needs to be improved const acceptableCommands = [ "arecord -L" ]; if (!acceptableCommands.includes(consoleCommand)) { log.WARN("Console command is not acceptable: ", consoleCommand); return undefined; } log.DEBUG("Running console command: ", consoleCommand); const tempOutput = await execCommand(consoleCommand); const output = tempOutput.stdout.trim(); log.DEBUG("Executed Console Command Response: ", output) // TODO add some error checking return output; } export async function returnAlsaDeviceObject() { const listAlsaDevicesCommand = "arecord -L"; const commandResponse = await executeAsyncConsoleCommand(listAlsaDevicesCommand); const brokenCommand = String(commandResponse).split('\n'); var devices = []; var i = 0; for (const responseLine of brokenCommand) { if (!String(responseLine).match(/^\s/g)) { const tempDevice = { id: i, name: responseLine } devices.push(tempDevice); i += 1; } } return devices; }