id = "bbftp-client"
name = "BBFTP"
homepage = "https://gitlab.in2p3.fr/cc-in2p3-hpss-service/bbftp"
description = "Secure file transfer software optimized for large files."
executables = ["bbftp"]
[dotfiles]
paths = ["~/.bbftprc"]
secret = []
[commands]
format = 1
label = "Transfer files over SSH"
description = "Run bbftp control commands on a remote host through ssh. Certificate/Globus, private authentication and protocol V2 port options are left out."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = false, short_attached = false, short_bundles = false }
[[commands.source]]
id = "manual"
kind = "manual"
url = "https://bbftp.cc.in2p3.fr/3.2.1.bbftp.html"
revision = "3.2.1"
evidence = """
% bbftp [Options] -i ControlFile [-u RemoteUsername] [RemoteHost]
% bbftp [Options] -e ControlCommands [-u RemoteUsername] [RemoteHost]
-u
-s
Use this option to use ssh to remotely start a bbftpd daemon.
-S
-I SSH identity file
-c
Use this option to gzip the data during transmission.
-n
Use this option to simulate the transfer.
-p NumberOfParallelStreams
-r NumberOfTries
-V
Use this option to set the client in verbose mode
-o OutputFile
-f ErrorFile
"""
[[commands.field]]
id = "control_file"
label = "Control file"
type = "path"
option = ["-i"]
path = { kind = "file", role = "input", must_exist = true }
sources = ["manual"]
[[commands.field]]
id = "control_commands"
label = "Control commands"
description = "Semicolon-separated commands, e.g. get remote local."
type = "string"
option = ["-e"]
sources = ["manual"]
[[commands.field]]
id = "user"
label = "Remote user"
type = "string"
option = ["-u"]
sources = ["manual"]
[[commands.field]]
id = "ssh"
label = "Start the daemon through ssh"
type = "boolean"
option = ["-s"]
sources = ["manual"]
[[commands.field]]
id = "ssh_batch"
label = "ssh without prompts (no host key checking)"
description = "Sets BatchMode and StrictHostKeyChecking=no; uses the identity file."
type = "boolean"
option = ["-S"]
sources = ["manual"]
[[commands.field]]
id = "identity"
label = "SSH identity file"
type = "path"
option = ["-I"]
path = { kind = "file", role = "input" }
sources = ["manual"]
[[commands.field]]
id = "compress"
label = "gzip data in transit"
type = "boolean"
option = ["-c"]
sources = ["manual"]
[[commands.field]]
id = "dry_run"
label = "Simulate the transfer"
type = "boolean"
option = ["-n"]
sources = ["manual"]
[[commands.field]]
id = "streams"
label = "Parallel streams"
type = "integer"
option = ["-p"]
sources = ["manual"]
[[commands.field]]
id = "tries"
label = "Number of tries"
type = "integer"
option = ["-r"]
sources = ["manual"]
[[commands.field]]
id = "verbose"
label = "Verbose"
type = "boolean"
option = ["-V"]
sources = ["manual"]
[[commands.field]]
id = "host"
label = "Remote host"
type = "string"
position = 0
sources = ["manual"]
[[commands.task]]
id = "ssh_commands"
label = "Run commands over ssh"
fields = ["ssh", "control_commands", "user", "host"]
required = ["ssh", "control_commands", "host"]
set = { ssh = [true] }
[[commands.task]]
id = "ssh_file"
label = "Run a control file over ssh"
fields = ["ssh", "control_file", "user", "host", "streams"]
required = ["ssh", "control_file", "host"]
set = { ssh = [true] }
[[commands.group]]
id = "basic"
label = "Basic"
fields = ["ssh", "control_file", "control_commands", "user", "host"]
[[commands.group]]
id = "advanced"
label = "Advanced"
fields = ["ssh_batch", "identity", "compress", "dry_run", "streams", "tries", "verbose"]