mirror of
https://github.com/onyx-and-iris/gobs-cli.git
synced 2026-04-18 07:03:37 +00:00
first commit
This commit is contained in:
119
record.go
Normal file
119
record.go
Normal file
@@ -0,0 +1,119 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// RecordCmd handles the recording commands.
|
||||
type RecordCmd struct {
|
||||
Start RecordStartCmd `cmd:"" help:"Start recording." aliases:"s"`
|
||||
Stop RecordStopCmd `cmd:"" help:"Stop recording." aliases:"st"`
|
||||
Toggle RecordToggleCmd `cmd:"" help:"Toggle recording." aliases:"tg"`
|
||||
Pause RecordPauseCmd `cmd:"" help:"Pause recording." aliases:"p"`
|
||||
Resume RecordResumeCmd `cmd:"" help:"Resume recording." aliases:"r"`
|
||||
}
|
||||
|
||||
// RecordStartCmd starts the recording.
|
||||
type RecordStartCmd struct{} // size = 0x0
|
||||
|
||||
// Run executes the command to start recording.
|
||||
func (cmd *RecordStartCmd) Run(ctx *context) error {
|
||||
_, err := ctx.Client.Record.StartRecord()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
fmt.Fprintln(ctx.Out, "Recording started successfully.")
|
||||
return nil
|
||||
}
|
||||
|
||||
// RecordStopCmd stops the recording.
|
||||
type RecordStopCmd struct{} // size = 0x0
|
||||
|
||||
// Run executes the command to stop recording.
|
||||
func (cmd *RecordStopCmd) Run(ctx *context) error {
|
||||
_, err := ctx.Client.Record.StopRecord()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
fmt.Fprintln(ctx.Out, "Recording stopped successfully.")
|
||||
return nil
|
||||
}
|
||||
|
||||
// RecordToggleCmd toggles the recording state.
|
||||
type RecordToggleCmd struct{} // size = 0x0
|
||||
|
||||
// Run executes the command to toggle recording.
|
||||
func (cmd *RecordToggleCmd) Run(ctx *context) error {
|
||||
// Check if recording is in progress
|
||||
status, err := ctx.Client.Record.GetRecordStatus()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if status.OutputActive {
|
||||
_, err = ctx.Client.Record.StopRecord()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
fmt.Fprintln(ctx.Out, "Recording stopped successfully.")
|
||||
} else {
|
||||
_, err = ctx.Client.Record.StartRecord()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
fmt.Fprintln(ctx.Out, "Recording started successfully.")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// RecordPauseCmd pauses the recording.
|
||||
type RecordPauseCmd struct{} // size = 0x0
|
||||
|
||||
// Run executes the command to pause recording.
|
||||
func (cmd *RecordPauseCmd) Run(ctx *context) error {
|
||||
// Check if recording in progress and not already paused
|
||||
status, err := ctx.Client.Record.GetRecordStatus()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if !status.OutputActive {
|
||||
return fmt.Errorf("recording is not in progress")
|
||||
}
|
||||
if status.OutputPaused {
|
||||
return fmt.Errorf("recording is already paused")
|
||||
}
|
||||
|
||||
_, err = ctx.Client.Record.PauseRecord()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
fmt.Fprintln(ctx.Out, "Recording paused successfully.")
|
||||
return nil
|
||||
}
|
||||
|
||||
// RecordResumeCmd resumes the recording.
|
||||
type RecordResumeCmd struct{} // size = 0x0
|
||||
|
||||
// Run executes the command to resume recording.
|
||||
func (cmd *RecordResumeCmd) Run(ctx *context) error {
|
||||
// Check if recording in progress and not already resumed
|
||||
status, err := ctx.Client.Record.GetRecordStatus()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if !status.OutputActive {
|
||||
return fmt.Errorf("recording is not in progress")
|
||||
}
|
||||
if !status.OutputPaused {
|
||||
return fmt.Errorf("recording is not paused")
|
||||
}
|
||||
|
||||
_, err = ctx.Client.Record.ResumeRecord()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
fmt.Fprintln(ctx.Out, "Recording resumed successfully.")
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user