meld-cli/utils/record.js

82 lines
2.0 KiB
JavaScript

import meowHelp from "cli-meow-help";
const commands = {
start: {
desc: "Start streaming",
},
stop: {
desc: "Stop streaming",
},
status: {
desc: "Show the current streaming status",
},
};
const flags = {
help: {
type: "boolean",
shortFlag: "h",
desc: "Display help information",
},
};
const recordHelp = meowHelp({
name: "meld-cli record",
flags,
commands,
description: "Manage recording in Meld",
defaults: false,
});
function recordStart(channel) {
if (!channel.objects || !channel.objects.meld) {
return Promise.reject(new Error("Meld object not found in channel."));
}
const meld = channel.objects.meld;
if (meld.isRecording) {
return Promise.reject(new Error("Recording is already active."));
}
return new Promise((resolve, reject) => {
meld.toggleRecord()
.then(() => {
resolve("Recording started successfully.");
})
.catch((err) => {
reject(err);
});
});
}
function recordStop(channel) {
if (!channel.objects || !channel.objects.meld) {
return Promise.reject(new Error("Meld object not found in channel."));
}
const meld = channel.objects.meld;
if (!meld.isRecording) {
return Promise.reject(new Error("Recording is not currently active."));
}
return new Promise((resolve, reject) => {
meld.toggleRecord()
.then(() => {
resolve("Recording stopped successfully.");
})
.catch((err) => {
reject(err);
});
});
}
function recordStatus(channel) {
if (!channel.objects || !channel.objects.meld) {
return Promise.reject(new Error("Meld object not found in channel."));
}
const meld = channel.objects.meld;
return Promise.resolve(meld.isRecording);
}
export { recordHelp, recordStart, recordStop, recordStatus };