diff options
author | Amine Hilaly <hilalyamine@gmail.com> | 2019-06-23 19:20:10 +0200 |
---|---|---|
committer | Amine Hilaly <hilalyamine@gmail.com> | 2019-06-30 15:33:27 +0200 |
commit | 570ae5f75e034523a1d7d94a04febe944d36399b (patch) | |
tree | 65e6a9ec1db7b0e1a48e4838fe73d06de610e0cd /bridge/github/export.go | |
parent | 31eebdf9da8cd0f6afd7999175fb53cc135a1833 (diff) | |
download | git-bug-570ae5f75e034523a1d7d94a04febe944d36399b.tar.gz |
[bug] add snapshot.GetCreateMetadata method
[bug] add snapshot.HasParticipant(id string)
[bug] add snapshot.HasAnyParticipant(ids ...string)
[bug] add snapshot.HasActor(id string)
[bug] add snapshot.HasAnyActor(ids ...string)
[bridge/github] improve comments
[bridge/github] exporter tests: register deleteRepository in cleaner
[bridge/github] tests rebase
Diffstat (limited to 'bridge/github/export.go')
-rw-r--r-- | bridge/github/export.go | 67 |
1 files changed, 34 insertions, 33 deletions
diff --git a/bridge/github/export.go b/bridge/github/export.go index 9e394334..00ba1585 100644 --- a/bridge/github/export.go +++ b/bridge/github/export.go @@ -122,8 +122,13 @@ func (ge *githubExporter) ExportAll(repo *cache.RepoCache, since time.Time) erro return err } + allIdentitiesIds := []string{} + for id := range ge.identityToken { + allIdentitiesIds = append(allIdentitiesIds, id) + } + allBugsIds := repo.AllBugsIds() -bugLoop: + for _, id := range allBugsIds { b, err := repo.ResolveBug(id) if err != nil { @@ -137,20 +142,13 @@ bugLoop: continue } - for _, p := range snapshot.Participants { - // if we have a token for one of the participants - for userId := range ge.identityToken { - if p.Id() == userId { - // try to export the bug and it associated events - if err := ge.exportBug(b, since); err != nil { - return err - } - - // avoid calling exportBug multiple times for the same bug - continue bugLoop - } + if snapshot.HasAnyParticipant(allIdentitiesIds...) { + // try to export the bug and it associated events + if err := ge.exportBug(b, since); err != nil { + return err } } + } fmt.Printf("Successfully exported %d issues and %d labels to Github\n", ge.exportedBugs, ge.exportedLabels) @@ -171,7 +169,7 @@ func (ge *githubExporter) exportBug(b *cache.BugCache, since time.Time) error { // first operation is always createOp createOp := snapshot.Operations[0].(*bug.CreateOperation) - author := createOp.GetAuthor() + author := snapshot.Author // skip bug if origin is not allowed origin, ok := createOp.GetMetadata(keyOrigin) @@ -440,6 +438,9 @@ func (ge *githubExporter) getGithubLabelID(gc *githubv4.Client, label string) (s return q.Repository.Label.ID, nil } +// create a new label and return it github id +// NOTE: since createLabel mutation is still in preview mode we use github api v3 to create labels +// see https://developer.github.com/v4/mutation/createlabel/ and https://developer.github.com/v4/previews/#labels-preview func (ge *githubExporter) createGithubLabel(label, color string) (string, error) { url := fmt.Sprintf("%s/repos/%s/%s/labels", githubV3Url, ge.conf[keyOwner], ge.conf[keyProject]) @@ -495,6 +496,7 @@ func (ge *githubExporter) createGithubLabel(label, color string) (string, error) return aux.NodeID, nil } +/** // create github label using api v4 func (ge *githubExporter) createGithubLabelV4(gc *githubv4.Client, label, labelColor string) (string, error) { m := createLabelMutation{} @@ -514,6 +516,7 @@ func (ge *githubExporter) createGithubLabelV4(gc *githubv4.Client, label, labelC return m.CreateLabel.Label.ID, nil } +*/ func (ge *githubExporter) getOrCreateGithubLabelID(gc *githubv4.Client, repositoryID string, label bug.Label) (string, error) { // try to get label id @@ -526,9 +529,6 @@ func (ge *githubExporter) getOrCreateGithubLabelID(gc *githubv4.Client, reposito rgba := label.RGBA() hexColor := fmt.Sprintf("%.2x%.2x%.2x", rgba.R, rgba.G, rgba.B) - // create label and return id - // NOTE: since createLabel mutation is still in preview mode we use github api v4 to create labels - // see https://developer.github.com/v4/mutation/createlabel/ and https://developer.github.com/v4/previews/#labels-preview labelID, err = ge.createGithubLabel(string(label), hexColor) if err != nil { return "", err @@ -705,26 +705,27 @@ func (ge *githubExporter) updateGithubIssueLabels(gc *githubv4.Client, labelable } cancel() - if len(removed) > 0 { - removedIDs, err := ge.getLabelsIDs(gc, labelableID, removed) - if err != nil { - return errors.Wrap(err, "getting added labels ids") - } + if len(removed) == 0 { + return nil + } - m2 := &removeLabelsFromLabelableMutation{} - inputRemove := githubv4.RemoveLabelsFromLabelableInput{ - LabelableID: labelableID, - LabelIDs: removedIDs, - } + removedIDs, err := ge.getLabelsIDs(gc, labelableID, removed) + if err != nil { + return errors.Wrap(err, "getting added labels ids") + } - ctx, cancel := context.WithTimeout(parentCtx, defaultTimeout) - defer cancel() + m2 := &removeLabelsFromLabelableMutation{} + inputRemove := githubv4.RemoveLabelsFromLabelableInput{ + LabelableID: labelableID, + LabelIDs: removedIDs, + } - // remove label labels - if err := gc.Mutate(ctx, m2, inputRemove, nil); err != nil { - return err - } + ctx, cancel = context.WithTimeout(parentCtx, defaultTimeout) + defer cancel() + // remove label labels + if err := gc.Mutate(ctx, m2, inputRemove, nil); err != nil { + return err } return nil |