mirror of
https://github.com/MichaelMure/git-bug.git
synced 2024-12-14 17:51:44 +03:00
5ca326af83
bridge/core: add ImportResult objects to stream import events bridge/core: launchpad support asynchronous import bridge/github: cancellable export and import functions bridge/gitlab: cancellable export and import functions commands: bridge pull/push gracefull kill bridge/github: fix github import bridge/github: use simple context for imports bridge/core: name parameters in interfaces github/core: Add EventError to export and import events types bridge/gitlab: add context support in gitlab requests functions bridge/gitlab: remove imported events count from importer logic bridge/github: remove imported events count from importer logic bridge/github: add context support in query and muration requets bridge/github: fix bug duplicate editions after multiple calls bridge/core: import import and export events String methods bridge/gitlab: fix error handling in note import events commands/bridge: Add statistics about imports and exports bridge/gitlab: properly handle context cancellation bridge/github: improve error handling bridge: break iterators on context cancel or timeout bridge: add context timeout support bridge: improve event formating and error handling commands: handle interrupt and switch cases bridge/github: add export mutation timeouts bridge: fix race condition bug in the github and gitlab importers bridge/github: improve context error handling
129 lines
2.7 KiB
Go
129 lines
2.7 KiB
Go
package core
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/MichaelMure/git-bug/entity"
|
|
)
|
|
|
|
type ImportEvent int
|
|
|
|
const (
|
|
_ ImportEvent = iota
|
|
ImportEventBug
|
|
ImportEventComment
|
|
ImportEventCommentEdition
|
|
ImportEventStatusChange
|
|
ImportEventTitleEdition
|
|
ImportEventLabelChange
|
|
ImportEventIdentity
|
|
ImportEventNothing
|
|
ImportEventError
|
|
)
|
|
|
|
// ImportResult is an event that is emitted during the import process, to
|
|
// allow calling code to report on what is happening, collect metrics or
|
|
// display meaningful errors if something went wrong.
|
|
type ImportResult struct {
|
|
Err error
|
|
Event ImportEvent
|
|
ID entity.Id
|
|
Reason string
|
|
}
|
|
|
|
func (er ImportResult) String() string {
|
|
switch er.Event {
|
|
case ImportEventBug:
|
|
return fmt.Sprintf("new issue: %s", er.ID)
|
|
case ImportEventComment:
|
|
return fmt.Sprintf("new comment: %s", er.ID)
|
|
case ImportEventCommentEdition:
|
|
return fmt.Sprintf("updated comment: %s", er.ID)
|
|
case ImportEventStatusChange:
|
|
return fmt.Sprintf("changed status: %s", er.ID)
|
|
case ImportEventTitleEdition:
|
|
return fmt.Sprintf("changed title: %s", er.ID)
|
|
case ImportEventLabelChange:
|
|
return fmt.Sprintf("changed label: %s", er.ID)
|
|
case ImportEventIdentity:
|
|
return fmt.Sprintf("new identity: %s", er.ID)
|
|
case ImportEventNothing:
|
|
if er.ID != "" {
|
|
return fmt.Sprintf("ignoring import event %s: %s", er.ID, er.Reason)
|
|
}
|
|
return fmt.Sprintf("ignoring event: %s", er.Reason)
|
|
case ImportEventError:
|
|
if er.ID != "" {
|
|
return fmt.Sprintf("import error at id %s: %s", er.ID, er.Err.Error())
|
|
}
|
|
return fmt.Sprintf("import error: %s", er.Err.Error())
|
|
default:
|
|
panic("unknown import result")
|
|
}
|
|
}
|
|
|
|
func NewImportError(err error, id entity.Id) ImportResult {
|
|
return ImportResult{
|
|
Err: err,
|
|
ID: id,
|
|
Event: ImportEventError,
|
|
}
|
|
}
|
|
|
|
func NewImportNothing(id entity.Id, reason string) ImportResult {
|
|
return ImportResult{
|
|
ID: id,
|
|
Reason: reason,
|
|
Event: ImportEventNothing,
|
|
}
|
|
}
|
|
|
|
func NewImportBug(id entity.Id) ImportResult {
|
|
return ImportResult{
|
|
ID: id,
|
|
Event: ImportEventBug,
|
|
}
|
|
}
|
|
|
|
func NewImportComment(id entity.Id) ImportResult {
|
|
return ImportResult{
|
|
ID: id,
|
|
Event: ImportEventComment,
|
|
}
|
|
}
|
|
|
|
func NewImportCommentEdition(id entity.Id) ImportResult {
|
|
return ImportResult{
|
|
ID: id,
|
|
Event: ImportEventCommentEdition,
|
|
}
|
|
}
|
|
|
|
func NewImportStatusChange(id entity.Id) ImportResult {
|
|
return ImportResult{
|
|
ID: id,
|
|
Event: ImportEventStatusChange,
|
|
}
|
|
}
|
|
|
|
func NewImportLabelChange(id entity.Id) ImportResult {
|
|
return ImportResult{
|
|
ID: id,
|
|
Event: ImportEventLabelChange,
|
|
}
|
|
}
|
|
|
|
func NewImportTitleEdition(id entity.Id) ImportResult {
|
|
return ImportResult{
|
|
ID: id,
|
|
Event: ImportEventTitleEdition,
|
|
}
|
|
}
|
|
|
|
func NewImportIdentity(id entity.Id) ImportResult {
|
|
return ImportResult{
|
|
ID: id,
|
|
Event: ImportEventIdentity,
|
|
}
|
|
}
|