'Register a command to be run to undo actions taken.
.. warning:: This function does not enforce order of operations in terms
of file modification vs. command registration.  All undo commands
are run first before all normal files are reverted to their previous
state.  If you need to maintain strict order, you may create
checkpoints before and after the the command registration. This
function may be improved in the future based on demand.
:param bool temporary: Whether the command should be saved in the
IN_PROGRESS or TEMPORARY checkpoints.
:param command: Command to be run.
:type command: list of str'

def register_undo_command(self, temporary, command):

    commands_fp = os.path.join(self._get_cp_dir(temporary), 'COMMANDS')
    command_file = None
    try:
        if os.path.isfile(commands_fp):
            command_file = open(commands_fp, 'a')
        else:
            command_file = open(commands_fp, 'w')
        csvwriter = csv.writer(command_file)
        csvwriter.writerow(command)
    except (IOError, OSError):
        logger.error('Unable    to    register    undo    command')
        raise errors.ReverterError('Unable    to    register    undo    command.')
    finally:
        if (command_file is not None):
            command_file.close()
