{
  "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
    },
    "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]\n% bbftp [Options] -e ControlCommands [-u RemoteUsername] [RemoteHost]\n-u\n-s\nUse this option to use ssh to remotely start a bbftpd daemon.\n-S\n-I SSH identity file\n-c\nUse this option to gzip the data during transmission.\n-n\nUse this option to simulate the transfer.\n-p NumberOfParallelStreams\n-r NumberOfTries\n-V\nUse this option to set the client in verbose mode\n-o OutputFile\n-f ErrorFile\n"
      }
    ],
    "field": [
      {
        "id": "control_file",
        "label": "Control file",
        "type": "path",
        "option": [
          "-i"
        ],
        "path": {
          "kind": "file",
          "role": "input",
          "must_exist": true
        },
        "sources": [
          "manual"
        ]
      },
      {
        "id": "control_commands",
        "label": "Control commands",
        "description": "Semicolon-separated commands, e.g. get remote local.",
        "type": "string",
        "option": [
          "-e"
        ],
        "sources": [
          "manual"
        ]
      },
      {
        "id": "user",
        "label": "Remote user",
        "type": "string",
        "option": [
          "-u"
        ],
        "sources": [
          "manual"
        ]
      },
      {
        "id": "ssh",
        "label": "Start the daemon through ssh",
        "type": "boolean",
        "option": [
          "-s"
        ],
        "sources": [
          "manual"
        ]
      },
      {
        "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"
        ]
      },
      {
        "id": "identity",
        "label": "SSH identity file",
        "type": "path",
        "option": [
          "-I"
        ],
        "path": {
          "kind": "file",
          "role": "input"
        },
        "sources": [
          "manual"
        ]
      },
      {
        "id": "compress",
        "label": "gzip data in transit",
        "type": "boolean",
        "option": [
          "-c"
        ],
        "sources": [
          "manual"
        ]
      },
      {
        "id": "dry_run",
        "label": "Simulate the transfer",
        "type": "boolean",
        "option": [
          "-n"
        ],
        "sources": [
          "manual"
        ]
      },
      {
        "id": "streams",
        "label": "Parallel streams",
        "type": "integer",
        "option": [
          "-p"
        ],
        "sources": [
          "manual"
        ]
      },
      {
        "id": "tries",
        "label": "Number of tries",
        "type": "integer",
        "option": [
          "-r"
        ],
        "sources": [
          "manual"
        ]
      },
      {
        "id": "verbose",
        "label": "Verbose",
        "type": "boolean",
        "option": [
          "-V"
        ],
        "sources": [
          "manual"
        ]
      },
      {
        "id": "host",
        "label": "Remote host",
        "type": "string",
        "position": 0,
        "sources": [
          "manual"
        ]
      }
    ],
    "task": [
      {
        "id": "ssh_commands",
        "label": "Run commands over ssh",
        "fields": [
          "ssh",
          "control_commands",
          "user",
          "host"
        ],
        "required": [
          "ssh",
          "control_commands",
          "host"
        ],
        "set": {
          "ssh": [
            true
          ]
        }
      },
      {
        "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
          ]
        }
      }
    ],
    "group": [
      {
        "id": "basic",
        "label": "Basic",
        "fields": [
          "ssh",
          "control_file",
          "control_commands",
          "user",
          "host"
        ]
      },
      {
        "id": "advanced",
        "label": "Advanced",
        "fields": [
          "ssh_batch",
          "identity",
          "compress",
          "dry_run",
          "streams",
          "tries",
          "verbose"
        ]
      }
    ]
  }
}
