meld-cli/utils/record.js
2025-06-30 15:54:41 +01:00

88 lines
1.8 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(`Recording is currently ${meld.isRecording ? 'active' : 'inactive'}`)
}
export {
recordHelp,
recordStart,
recordStop,
recordStatus
}