id = "parallel"
name = "GNU Parallel"
homepage = "https://www.gnu.org/software/parallel/"
description = "Build and execute shell commands in parallel"
executables = ["parallel"]
[dotfiles]
paths = ["~/.parallel/config"]
secret = []
[commands]
format = 1
label = "Run a command in parallel"
description = "Run one command template once per input line of an argument file, several jobs at a time. Inline ::: arguments, remote hosts (--sshlogin) and --pipe are left out."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = false, short_attached = true, short_bundles = false }
[[commands.source]]
id = "man"
kind = "manual"
url = "https://manpages.debian.org/unstable/parallel/parallel.1.en.html"
revision = "debian unstable"
evidence = """
--arg-file
-a input-file
Use input-file as input source.
--bar
Show progress as a progress bar.
--dry-run
Print the job to run on stdout (standard output), but do not run the job.
--halt
When should GNU parallel terminate?
--jobs
-j num
Number of jobslots on each machine.
--joblog
logfile
Logfile for executed jobs.
--keep-order
-k
--max-args
-n max-args
Use at most max-args arguments per command line.
"""
[[commands.field]]
id = "command"
label = "Command template"
description = "Command to run for each input line. Without {} the argument is appended."
type = "string"
position = 0
sources = ["man"]
[[commands.field]]
id = "arg_file"
label = "Argument file"
description = "File with one argument per line."
type = "path"
path = { kind = "file", role = "input" }
option = ["--arg-file", "-a"]
sources = ["man"]
[[commands.field]]
id = "jobs"
label = "Jobs at once"
type = "integer"
option = ["--jobs", "-j"]
sources = ["man"]
[[commands.field]]
id = "max_args"
label = "Max arguments per command"
type = "integer"
option = ["--max-args", "-n"]
sources = ["man"]
[[commands.field]]
id = "keep_order"
label = "Keep output order"
type = "boolean"
option = ["--keep-order", "-k"]
sources = ["man"]
[[commands.field]]
id = "dry_run"
label = "Dry run"
description = "Print the jobs without running them."
type = "boolean"
option = ["--dry-run"]
sources = ["man"]
[[commands.field]]
id = "bar"
label = "Progress bar"
type = "boolean"
option = ["--bar"]
sources = ["man"]
[[commands.field]]
id = "joblog"
label = "Job log file"
type = "path"
path = { kind = "file", role = "output" }
option = ["--joblog"]
sources = ["man"]
[[commands.field]]
id = "halt"
label = "Halt condition"
description = "When to stop, e.g. now,fail=1."
type = "string"
option = ["--halt"]
sources = ["man"]
[[commands.task]]
id = "per_line"
label = "Run per line of a file"
fields = ["command", "arg_file", "jobs", "keep_order"]
required = ["command", "arg_file"]
[[commands.task]]
id = "preview"
label = "Preview the jobs"
fields = ["command", "arg_file", "dry_run"]
required = ["command", "arg_file"]
set = { dry_run = [true] }
[[commands.group]]
id = "basic"
label = "Basic"
fields = ["command", "arg_file", "jobs", "keep_order", "dry_run"]
[[commands.group]]
id = "advanced"
label = "Advanced"
fields = ["max_args", "bar", "joblog", "halt"]