mirror of
https://github.com/MichaelMure/git-bug.git
synced 2024-12-13 20:13:15 +03:00
148 lines
3.4 KiB
Go
148 lines
3.4 KiB
Go
package core
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/MichaelMure/git-bug/entity"
|
|
)
|
|
|
|
type ExportEvent int
|
|
|
|
const (
|
|
_ ExportEvent = iota
|
|
|
|
// Bug has been exported on the remote tracker
|
|
ExportEventBug
|
|
// Comment has been exported on the remote tracker
|
|
ExportEventComment
|
|
// Comment has been edited on the remote tracker
|
|
ExportEventCommentEdition
|
|
// Bug's status has been changed on on the remote tracker
|
|
ExportEventStatusChange
|
|
// Bug's title has been changed on the remote tracker
|
|
ExportEventTitleEdition
|
|
// Bug's labels have been changed on the remote tracker
|
|
ExportEventLabelChange
|
|
|
|
// Nothing changed on the bug
|
|
ExportEventNothing
|
|
|
|
// Something wrong happened during export that is worth notifying to the user
|
|
// but not severe enough to consider the export a failure.
|
|
ExportEventWarning
|
|
|
|
// Error happened during export
|
|
ExportEventError
|
|
)
|
|
|
|
// ExportResult is an event that is emitted during the export process, to
|
|
// allow calling code to report on what is happening, collect metrics or
|
|
// display meaningful errors if something went wrong.
|
|
type ExportResult struct {
|
|
Err error
|
|
Event ExportEvent
|
|
ID entity.Id
|
|
Reason string
|
|
}
|
|
|
|
func (er ExportResult) String() string {
|
|
switch er.Event {
|
|
case ExportEventBug:
|
|
return fmt.Sprintf("new issue: %s", er.ID)
|
|
case ExportEventComment:
|
|
return fmt.Sprintf("new comment: %s", er.ID)
|
|
case ExportEventCommentEdition:
|
|
return fmt.Sprintf("updated comment: %s", er.ID)
|
|
case ExportEventStatusChange:
|
|
return fmt.Sprintf("changed status: %s", er.ID)
|
|
case ExportEventTitleEdition:
|
|
return fmt.Sprintf("changed title: %s", er.ID)
|
|
case ExportEventLabelChange:
|
|
return fmt.Sprintf("changed label: %s", er.ID)
|
|
case ExportEventNothing:
|
|
if er.ID != "" {
|
|
return fmt.Sprintf("no actions taken for event %s: %s", er.ID, er.Reason)
|
|
}
|
|
return fmt.Sprintf("no actions taken: %s", er.Reason)
|
|
case ExportEventError:
|
|
if er.ID != "" {
|
|
return fmt.Sprintf("export error at %s: %s", er.ID, er.Err.Error())
|
|
}
|
|
return fmt.Sprintf("export error: %s", er.Err.Error())
|
|
case ExportEventWarning:
|
|
if er.ID != "" {
|
|
return fmt.Sprintf("warning at %s: %s", er.ID, er.Err.Error())
|
|
}
|
|
return fmt.Sprintf("warning: %s", er.Err.Error())
|
|
|
|
default:
|
|
panic("unknown export result")
|
|
}
|
|
}
|
|
|
|
func NewExportError(err error, id entity.Id) ExportResult {
|
|
return ExportResult{
|
|
ID: id,
|
|
Err: err,
|
|
Event: ExportEventError,
|
|
}
|
|
}
|
|
|
|
func NewExportWarning(err error, id entity.Id) ExportResult {
|
|
return ExportResult{
|
|
ID: id,
|
|
Err: err,
|
|
Event: ExportEventWarning,
|
|
}
|
|
}
|
|
|
|
func NewExportNothing(id entity.Id, reason string) ExportResult {
|
|
return ExportResult{
|
|
ID: id,
|
|
Reason: reason,
|
|
Event: ExportEventNothing,
|
|
}
|
|
}
|
|
|
|
func NewExportBug(id entity.Id) ExportResult {
|
|
return ExportResult{
|
|
ID: id,
|
|
Event: ExportEventBug,
|
|
}
|
|
}
|
|
|
|
func NewExportComment(id entity.Id) ExportResult {
|
|
return ExportResult{
|
|
ID: id,
|
|
Event: ExportEventComment,
|
|
}
|
|
}
|
|
|
|
func NewExportCommentEdition(id entity.Id) ExportResult {
|
|
return ExportResult{
|
|
ID: id,
|
|
Event: ExportEventCommentEdition,
|
|
}
|
|
}
|
|
|
|
func NewExportStatusChange(id entity.Id) ExportResult {
|
|
return ExportResult{
|
|
ID: id,
|
|
Event: ExportEventStatusChange,
|
|
}
|
|
}
|
|
|
|
func NewExportLabelChange(id entity.Id) ExportResult {
|
|
return ExportResult{
|
|
ID: id,
|
|
Event: ExportEventLabelChange,
|
|
}
|
|
}
|
|
|
|
func NewExportTitleEdition(id entity.Id) ExportResult {
|
|
return ExportResult{
|
|
ID: id,
|
|
Event: ExportEventTitleEdition,
|
|
}
|
|
}
|