# The PROMPT function is called whenever a prompt needs to be drawn. Docs: https://doc.redox-os.org/ion-manual/html/misc/06-prompt_fn.html
fn PROMPT
    # Save the status immediately, since the status is also updated after variable assignment, etc.
    let STARSHIP_ION_STATUS = $?
    # Save the ION_CMD_DURATION before running any other commands, but after the status since the
    # duration is not updated during variable assignment
    # Account for variable name change sometime during December 2019 - January 2020
    let STARSHIP_ION_CMD_DURATION = $or($CMD_DURATION $ION_CMD_DURATION)
    let STARSHIP_ION_CMD_DURATION = $((STARSHIP_ION_CMD_DURATION * 1000))

    # The STARSHIP between the colons will be replaced with the actual path to the starship executable.
    # The jobs command outputs to stderr, therefore we need to pipe stderr to `wc -l`.
    ::STARSHIP:: prompt --status $STARSHIP_ION_STATUS --jobs $(jobs ^| wc -l) --cmd-duration $STARSHIP_ION_CMD_DURATION
end

# Export the correct name of the shell
export STARSHIP_SHELL="ion"

# Set up the session key that will be used to store logs
export STARSHIP_SESSION_KEY=$(::STARSHIP:: session)
