Using the Pueue Add Command (with examples)
The pueue add
command allows us to enqueue tasks for execution using the Pueue task manager. With this command, we can add commands to the default queue or specify additional options such as flags, arguments, start delays, and group assignments. In this article, we will explore different use cases of the pueue add
command and provide code examples to illustrate each case.
Adding a Command to the Default Queue
pueue add command
Motivation:
Adding a command to the default queue allows us to execute it in sequence with other tasks. This is useful when we have multiple commands that need to be executed one after another without any specific constraints or requirements.
Explanation:
command
represents any command that we want to enqueue for execution.
Example Output:
The command is added to the default queue and will be executed after all previously enqueued commands have completed.
Enqueuing a Command with Flags and Arguments
pueue add -- command --arg -f
Motivation:
Sometimes, we may need to pass specific flags or arguments to a command when enqueuing it. This allows us to customize the command execution based on our requirements.
Explanation:
--
separates the flags/arguments passed to thepueue add
command from the actual command.command
represents the command itself.--arg -f
represents the flags or arguments that we want to pass to the command.
Example Output:
The command is added to the default queue with the specified flags and arguments. When executed, the command will utilize the provided flags and arguments.
Enqueuing a Command without Starting it (If First in Queue)
pueue add --stashed -- rsync --archive --compress /local/directory /remote/directory
Motivation:
There may be situations where we want to add a command to a queue but not start it immediately, especially when it’s the first command in the queue. This could be useful when we have dependent tasks that need to be enqueued first and executed together.
Explanation:
--stashed
indicates that the command should not be started immediately.--
separates the flags and arguments passed to thepueue add
command from the actual command.rsync --archive --compress /local/directory /remote/directory
is the command we want to enqueue.
Example Output:
The command is added to the default queue but remains in the “stashed” state. It will not be executed until another command is enqueued and executed before it.
Enqueuing a Command to a Group (and Start Immediately)
pueue add --immediate --group "CPU_intensive" -- ffmpeg -i input.mp4 frame_%d.png
Motivation:
Grouping commands allows us to manage and control a set of related tasks more effectively. We can assign a group to a command using the --group
option. Additionally, we can start the command immediately upon enqueuing it using the --immediate
option.
Explanation:
--immediate
indicates that the command should be started immediately upon enqueuing.--group "CPU_intensive"
assigns the command to the specified group named “CPU_intensive”.--
separates the flags and arguments passed to thepueue add
command from the actual command.ffmpeg -i input.mp4 frame_%d.png
is the command we want to enqueue.
Example Output:
The command is added to the default queue and immediately started for execution. The output of the command execution will be displayed in the terminal.
Enqueuing a Command with Dependencies
pueue add --after 9 12 --group "torrents" -- transmission-cli torrent_file.torrent
Motivation:
In some cases, we may have commands that depend on the successful completion of other commands before they can be executed. The --after
option in the pueue add
command allows us to specify the commands that need to finish successfully before the current command can execute.
Explanation:
--after 9 12
specifies the commands with IDs 9 and 12 as dependencies for the current command.--group "torrents"
assigns the command to the group named “torrents”.--
separates the flags and arguments passed to thepueue add
command from the actual command.transmission-cli torrent_file.torrent
is the command we want to enqueue.
Example Output:
The command is added to the default queue and will start its execution only after commands with IDs 9 and 12 have completed successfully.
Enqueuing a Command with a Label and Delay
pueue add --label "compressing large file" --delay "wednesday 10:30pm" -- "7z a compressed_file.7z large_file.xml"
Motivation:
Sometimes, we may want to add a command with a specific label and specify a delay before it starts its execution. This could be useful when we have tasks that need to be performed at specific times or when certain conditions are met.
Explanation:
--label "compressing large file"
assigns a label to the command for easy identification.--delay "wednesday 10:30pm"
specifies the delay before the command execution. The delay can be specified in various valid datetime formats.--
separates the flags and arguments passed to thepueue add
command from the actual command."7z a compressed_file.7z large_file.xml"
is the command we want to enqueue.
Example Output:
The command with the specified label and delay is added to the default queue and will start its execution at the specified datetime (Wednesday 10:30pm).