­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ # # format-workflow.sh # # Usage: rear -v format -- -h /dev/ # By default 1 partition will be created with ext3 format and label # USB_DEVICE_FILESYSTEM_LABEL (cf. https://github.com/rear/rear/issues/1535). # With the --efi toggle you get 2 partitions (vfat and ext3) so we are able # to make this USB UEFI bootable afterwards. # WORKFLOW_format_DESCRIPTION="Format and label medium for use with ReaR" WORKFLOWS+=( format ) WORKFLOW_format () { DEVICE="" # Log the options and arguments how the format workflow is actually called: Log "Command line options of the format workflow: $*" # Parse options # (do not use OPTS here because that is readonly in the rear main script): format_workflow_opts="$( getopt -n "$PROGRAM format" -o "efhy" -l "efi,force,help,yes" -- "$@" )" if (( $? != 0 )) ; then LogPrintError "Use '$PROGRAM format -- --help' for more information." # TODO: Use proper exit codes cf. https://github.com/rear/rear/issues/1134 exit 1 fi eval set -- "$format_workflow_opts" while true ; do case "$1" in (-e|--efi) EFI=y ;; (-f|--force) FORCE=y ;; (-h|--help) LogPrintError "Use '$PROGRAM format [ -- OPTIONS ] DEVICE' like '$PROGRAM -v format -- -f /dev/sdX'" LogPrintError "Valid format workflow options are: -e/--efi -f/--force -y/--yes" # No "rear format failed, check ...rear...log for details" message: EXIT_FAIL_MESSAGE=0 # TODO: Use proper exit codes cf. https://github.com/rear/rear/issues/1134 exit 1 ;; (-y|--yes) YES=y ;; (--) shift continue ;; ("") break ;; (/*) test "$DEVICE" && Error "Device $DEVICE already provided, only one argument is accepted" DEVICE=$1 ;; (*) Error "Argument $1 is not accepted." ;; esac shift done if test -z "$DEVICE" ; then if is_true "$SIMULATE" ; then # Simulation mode should work even without a device specified # see https://github.com/rear/rear/issues/1098#issuecomment-268973536 LogPrint "Simulation mode for the format workflow with a USB device /dev/sdX:" OUTPUT=USB SourceStage "format" LogPrint "Simulation mode for the format workflow with a OBDR tape device /dev/stX:" OUTPUT=OBDR SourceStage "format" return 0 else LogPrintError "Use '$PROGRAM format [ -- OPTIONS ] DEVICE' like '$PROGRAM -v format -- -f /dev/sdX'" LogPrintError "Valid format workflow options are: -e/--efi -f/--force -y/--yes" LogPrintError "Use '$PROGRAM format -- --help' for more information." Error "No device provided as argument." fi fi if [[ -c "$DEVICE" ]] ; then OUTPUT=OBDR elif [[ -b "$DEVICE" ]] ; then OUTPUT=USB else Error "Device $DEVICE is neither a character, nor a block device." fi SourceStage "format" }