{
  "name": "asr",
  "description": "Asr efficiently copies disk images onto volumes, either directly or via a multicast network stream",
  "options": [
    {
      "names": [
        "--buffers"
      ],
      "description": "One of the options that control how asr uses memory",
      "args": [
        {
          "name": "num",
          "description": "Specifies the num buffers should be used"
        }
      ]
    },
    {
      "names": [
        "--buffersize"
      ],
      "description": "One of the options that control how asr uses memory",
      "args": [
        {
          "name": "size",
          "description": "Specifies the size of each buffer"
        }
      ]
    },
    {
      "names": [
        "--csumbuffers"
      ],
      "description": "One of the options that control how asr uses memory",
      "args": [
        {
          "name": "num",
          "description": "Specifies that num buffers should be used for checksumming operations"
        }
      ]
    },
    {
      "names": [
        "--csumbuffersize"
      ],
      "description": "One of the options that control how asr uses memory",
      "args": [
        {
          "name": "size",
          "description": "Specifies the size of each buffer used for checksumming"
        }
      ]
    },
    {
      "names": [
        "--verbose"
      ],
      "description": "Enables verbose progress and error messages"
    },
    {
      "names": [
        "--debug"
      ],
      "description": "Enables other progress and error messages"
    }
  ],
  "subcommands": [
    {
      "name": "help",
      "description": "Displays asr usage information"
    },
    {
      "name": "version",
      "description": "Displays asr version"
    },
    {
      "name": "restore",
      "description": "Restores a disk image or volume to another volume",
      "options": [
        {
          "names": [
            "--source"
          ],
          "description": "Can be a disk image, /dev entry, or volume mountpoint",
          "dependsOn": [
            "--target",
            "--file"
          ],
          "args": [
            {
              "name": "source",
              "description": "Disk image, /dev entry, or volume mountpoint",
              "template": "filepaths"
            }
          ]
        },
        {
          "names": [
            "--target"
          ],
          "description": "Can be a /dev entry, or volume mountpoint",
          "args": [
            {
              "name": "target",
              "description": "/dev entry, or volume mountpoint",
              "template": "filepaths"
            }
          ]
        },
        {
          "names": [
            "--file"
          ],
          "description": "When performing a multicast restore, --file can be specified instead of --target",
          "dependsOn": [
            "--erase"
          ],
          "args": [
            {
              "name": "source",
              "description": "Disk image, /dev entry, or volume mountpoint",
              "template": "filepaths"
            }
          ]
        },
        {
          "names": [
            "--erase"
          ],
          "description": "Erases target and is required. --erase must always be used, as file copies are no longer supported by asr"
        },
        {
          "names": [
            "--format"
          ],
          "description": "Specifies the destination filesystem format",
          "args": [
            {
              "name": "HFS+ | HFSX",
              "description": "Specify the destination filesystem format",
              "isOptional": true
            }
          ]
        },
        {
          "names": [
            "--noprompt"
          ],
          "description": "Suppresses the prompt which usually occurs before target"
        },
        {
          "names": [
            "--timeout"
          ],
          "description": "Specifies num seconds that a multicast client should wait when no payload data has been received over a multicast stream before exiting",
          "args": [
            {
              "name": "num",
              "description": "Number of seconds that a multicast client should wait",
              "isOptional": true,
              "suggestions": [
                "0"
              ]
            }
          ]
        },
        {
          "names": [
            "--puppetstrings"
          ],
          "description": "Provide progress output that is easy for another program to parse"
        },
        {
          "names": [
            "--noverify"
          ],
          "description": "Skips the verification steps normally taken to ensure that a volume has been properly restored"
        },
        {
          "names": [
            "--allowfragmentedcatalog"
          ],
          "description": "Allows restores to proceed even if the source's catalog file is fragmented"
        },
        {
          "names": [
            "--SHA256"
          ],
          "description": "Forces the restore to use the SHA-256 hash in the image during verification"
        },
        {
          "names": [
            "--sourcevolumename"
          ],
          "description": "Tells asr which volume in the source container to invert when doing an APFS restore"
        },
        {
          "names": [
            "--sourcevolumeUUID"
          ],
          "description": "Tells asr which volume in the source container to invert when doing an APFS restore"
        },
        {
          "names": [
            "--useReplication"
          ],
          "description": "Forces asr to use replication for restoring APFS volumes"
        },
        {
          "names": [
            "--useInverter"
          ],
          "description": "Forces asr to use the inverter for restoring APFS volumes"
        },
        {
          "names": [
            "--toSnapshot"
          ],
          "description": "Specifies the snapshot on the source APFS volume to restore to the target APFS volume"
        },
        {
          "names": [
            "--fromSnapshot"
          ],
          "description": "Names a snapshot on the source APFS volume to use in combination with --toSnapshot to specify a snapshot delta to restore to the target APFS volume"
        },
        {
          "names": [
            "--verbose"
          ],
          "description": "Verbose"
        }
      ]
    },
    {
      "name": "restoreexact",
      "description": "Same as restore verb, except that for an HFS Plus volume, the target partition is resized to match the size of the source partition/ volume",
      "options": [
        {
          "names": [
            "--source"
          ],
          "description": "Can be a disk image, /dev entry, or volume mountpoint",
          "dependsOn": [
            "--target",
            "--file"
          ],
          "args": [
            {
              "name": "source",
              "description": "Disk image, /dev entry, or volume mountpoint",
              "template": "filepaths"
            }
          ]
        },
        {
          "names": [
            "--target"
          ],
          "description": "Can be a /dev entry, or volume mountpoint",
          "args": [
            {
              "name": "target",
              "description": "/dev entry, or volume mountpoint",
              "template": "filepaths"
            }
          ]
        },
        {
          "names": [
            "--file"
          ],
          "description": "When performing a multicast restore, --file can be specified instead of --target",
          "dependsOn": [
            "--erase"
          ],
          "args": [
            {
              "name": "source",
              "description": "Disk image, /dev entry, or volume mountpoint",
              "template": "filepaths"
            }
          ]
        },
        {
          "names": [
            "--erase"
          ],
          "description": "Erases target and is required. --erase must always be used, as file copies are no longer supported by asr"
        },
        {
          "names": [
            "--format"
          ],
          "description": "Specifies the destination filesystem format",
          "args": [
            {
              "name": "HFS+ | HFSX",
              "description": "Specify the destination filesystem format",
              "isOptional": true
            }
          ]
        },
        {
          "names": [
            "--noprompt"
          ],
          "description": "Suppresses the prompt which usually occurs before target"
        },
        {
          "names": [
            "--timeout"
          ],
          "description": "Specifies num seconds that a multicast client should wait when no payload data has been received over a multicast stream before exiting",
          "args": [
            {
              "name": "num",
              "description": "Number of seconds that a multicast client should wait",
              "isOptional": true,
              "suggestions": [
                "0"
              ]
            }
          ]
        },
        {
          "names": [
            "--puppetstrings"
          ],
          "description": "Provide progress output that is easy for another program to parse"
        },
        {
          "names": [
            "--noverify"
          ],
          "description": "Skips the verification steps normally taken to ensure that a volume has been properly restored"
        },
        {
          "names": [
            "--allowfragmentedcatalog"
          ],
          "description": "Allows restores to proceed even if the source's catalog file is fragmented"
        },
        {
          "names": [
            "--SHA256"
          ],
          "description": "Forces the restore to use the SHA-256 hash in the image during verification"
        },
        {
          "names": [
            "--sourcevolumename"
          ],
          "description": "Tells asr which volume in the source container to invert when doing an APFS restore"
        },
        {
          "names": [
            "--sourcevolumeUUID"
          ],
          "description": "Tells asr which volume in the source container to invert when doing an APFS restore"
        },
        {
          "names": [
            "--useReplication"
          ],
          "description": "Forces asr to use replication for restoring APFS volumes"
        },
        {
          "names": [
            "--useInverter"
          ],
          "description": "Forces asr to use the inverter for restoring APFS volumes"
        },
        {
          "names": [
            "--toSnapshot"
          ],
          "description": "Specifies the snapshot on the source APFS volume to restore to the target APFS volume"
        },
        {
          "names": [
            "--fromSnapshot"
          ],
          "description": "Names a snapshot on the source APFS volume to use in combination with --toSnapshot to specify a snapshot delta to restore to the target APFS volume"
        }
      ]
    },
    {
      "name": "server",
      "description": "Multicasts source over the network",
      "options": [
        {
          "names": [
            "--source"
          ],
          "description": "Source has to be a UDIF disk image",
          "args": [
            {
              "name": "source",
              "description": "UDIF disk image local/remote path",
              "template": "filepaths"
            }
          ]
        },
        {
          "names": [
            "--interface"
          ],
          "description": "The network interface to be used for multicasting",
          "args": [
            {
              "name": "interface",
              "description": "The network interface to be used for multicasting"
            }
          ]
        },
        {
          "names": [
            "--config"
          ],
          "description": "Server requires a configuration file to be passed",
          "args": [
            {
              "name": "configuration",
              "description": "Configuration file in standard property list format",
              "template": "filepaths"
            }
          ]
        }
      ]
    },
    {
      "name": "imagescan",
      "description": "Calculate checksums of the data in the provided image and store them in the image"
    },
    {
      "name": "info",
      "description": "Report the image metadata which was placed in the image by a previous use of the imagescan verb",
      "options": [
        {
          "names": [
            "--plist"
          ],
          "description": "Writes its output as an XML-formatted plist"
        }
      ]
    }
  ]
}
