package modules type ( preparationError struct { err error } frostFSInitError struct { err error } businessLogicError struct { err error } ) func wrapPreparationError(e error) error { return preparationError{e} } func (e preparationError) Error() string { return e.err.Error() } func wrapFrostFSInitError(e error) error { return frostFSInitError{e} } func (e frostFSInitError) Error() string { return e.err.Error() } func wrapBusinessLogicError(e error) error { return businessLogicError{e} } func (e businessLogicError) Error() string { return e.err.Error() } // ExitCode picks corresponding error code depending on the type of error provided. // Returns 1 if error type is unknown. func ExitCode(e error) int { switch e.(type) { case preparationError: return 2 case frostFSInitError: return 3 case businessLogicError: return 4 } return 1 }