Skip to content

Commit 3c5a372

Browse files
committed
Rough implementation of the new schema.
1 parent a6fac08 commit 3c5a372

File tree

6 files changed

+406
-107
lines changed

6 files changed

+406
-107
lines changed

go.mod

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@ module github.com/sourcegraph/src-cli
33
go 1.13
44

55
require (
6+
github.com/LawnGnome/campaign-schema v0.0.0-20200915044008-fb956c216a65
67
github.com/dustin/go-humanize v1.0.0
78
github.com/efritz/pentimento v0.0.0-20190429011147-ade47d831101
89
github.com/gobwas/glob v0.2.3
9-
github.com/google/go-cmp v0.4.1
10+
github.com/google/go-cmp v0.5.2
1011
github.com/hashicorp/go-multierror v1.1.0
1112
github.com/jig/teereadcloser v0.0.0-20181016160506-953720c48e05
1213
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51

go.sum

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
github.com/LawnGnome/campaign-schema v0.0.0-20200915044008-fb956c216a65 h1:3Hzx2CeDsf/hoAr3zEhRbG2IUnb3FaBojsTJMkWsz90=
2+
github.com/LawnGnome/campaign-schema v0.0.0-20200915044008-fb956c216a65/go.mod h1:PSeUirk5RYbWn64QnwEL0e4eo7fCiwQ3zqNV3PtGifE=
13
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
24
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
35
github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo=
@@ -8,6 +10,8 @@ github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y=
810
github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=
911
github.com/google/go-cmp v0.4.1 h1:/exdXoGamhu5ONeUJH0deniYLWYvQwW66yvlfiiKTu0=
1012
github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
13+
github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM=
14+
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
1115
github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA=
1216
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
1317
github.com/hashicorp/go-multierror v1.1.0 h1:B9UzwGQJehnUY1yNrnwREHc3fGbC2xefo8g4TbElacI=

internal/campaigns/campaign_spec.go

Lines changed: 8 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@ import (
44
"encoding/json"
55
"fmt"
66

7+
"github.com/LawnGnome/campaign-schema/override"
8+
"github.com/LawnGnome/campaign-schema/schema"
79
"github.com/gobwas/glob"
810
"github.com/hashicorp/go-multierror"
911
"github.com/pkg/errors"
1012
"github.com/sourcegraph/src-cli/internal/campaigns/graphql"
11-
"github.com/sourcegraph/src-cli/schema"
1213
"github.com/xeipuuv/gojsonschema"
1314
"gopkg.in/yaml.v2"
1415
)
@@ -39,20 +40,20 @@ type CampaignSpec struct {
3940
}
4041

4142
type ChangesetTemplate struct {
42-
Title OverridableString `json:"title,omitempty" yaml:"title"`
43-
Body string `json:"body,omitempty" yaml:"body"`
44-
Branch string `json:"branch,omitempty" yaml:"branch"`
43+
Title override.String `json:"title,omitempty" yaml:"title"`
44+
Body override.String `json:"body,omitempty" yaml:"body"`
45+
Branch override.String `json:"branch,omitempty" yaml:"branch"`
4546
Commit ExpandedGitCommitDescription `json:"commit,omitempty" yaml:"commit"`
4647
Published OverridableBool `json:"published" yaml:"published"`
4748
}
4849

4950
type GitCommitAuthor struct {
50-
Name string `json:"name" yaml:"name"`
51-
Email string `json:"email" yaml:"email"`
51+
Name override.String `json:"name" yaml:"name"`
52+
Email override.String `json:"email" yaml:"email"`
5253
}
5354

5455
type ExpandedGitCommitDescription struct {
55-
Message string `json:"message,omitempty" yaml:"message"`
56+
Message override.String `json:"message,omitempty" yaml:"message"`
5657
Author *GitCommitAuthor `json:"author,omitempty" yaml:"author"`
5758
}
5859

@@ -150,70 +151,6 @@ func compilePatterns(patterns []string) ([]glob.Glob, error) {
150151
return globs, nil
151152
}
152153

153-
type OverridableString struct {
154-
Default string
155-
Only []*MatchValue
156-
}
157-
158-
type MatchValue struct {
159-
Match string `json:"match,omitempty" yaml:"match"`
160-
Value string `json:"value,omitempty" yaml:"value"`
161-
162-
match glob.Glob
163-
}
164-
165-
func (o *OverridableString) Value(repo *graphql.Repository) string {
166-
for _, mv := range o.Only {
167-
if mv.match.Match(repo.Name) {
168-
return mv.Value
169-
}
170-
}
171-
172-
return o.Default
173-
}
174-
175-
func (o *OverridableString) MarshalJSON() ([]byte, error) {
176-
if len(o.Only) == 0 {
177-
return json.Marshal(o.Default)
178-
}
179-
180-
return json.Marshal(&struct {
181-
Default string `json:"default,omitempty"`
182-
Only []*MatchValue `json:"only,omitempty"`
183-
}{
184-
Default: o.Default,
185-
Only: o.Only,
186-
})
187-
}
188-
189-
func (o *OverridableString) UnmarshalYAML(unmarshal func(interface{}) error) error {
190-
var s string
191-
if err := unmarshal(&s); err == nil {
192-
o.Default = s
193-
o.Only = []*MatchValue{}
194-
return nil
195-
}
196-
197-
var temp struct {
198-
Default string `yaml:"default"`
199-
Only []*MatchValue `yaml:"only"`
200-
}
201-
if err := unmarshal(&temp); err != nil {
202-
return err
203-
}
204-
205-
o.Default = temp.Default
206-
o.Only = temp.Only
207-
for _, mv := range o.Only {
208-
var err error
209-
if mv.match, err = glob.Compile(mv.Match); err != nil {
210-
return errors.Wrapf(err, "compiling repo pattern %q", mv.match)
211-
}
212-
}
213-
214-
return nil
215-
}
216-
217154
type Step struct {
218155
Run string `json:"run,omitempty" yaml:"run"`
219156
Container string `json:"container,omitempty" yaml:"container"`

internal/campaigns/executor.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -253,16 +253,17 @@ func reachedTimeout(cmdCtx context.Context, err error) bool {
253253
}
254254

255255
func createChangesetSpec(task *Task, diff string) *ChangesetSpec {
256+
repo := task.Repository.Name
257+
256258
var authorName string
257259
var authorEmail string
258-
259260
if task.Template.Commit.Author == nil {
260261
// user did not provide author info, so use defaults
261262
authorName = "Sourcegraph"
262263
authorEmail = "[email protected]"
263264
} else {
264-
authorName = task.Template.Commit.Author.Name
265-
authorEmail = task.Template.Commit.Author.Email
265+
authorName = task.Template.Commit.Author.Name.Value(repo)
266+
authorEmail = task.Template.Commit.Author.Email.Value(repo)
266267
}
267268

268269
return &ChangesetSpec{
@@ -271,12 +272,12 @@ func createChangesetSpec(task *Task, diff string) *ChangesetSpec {
271272
BaseRef: task.Repository.BaseRef(),
272273
BaseRev: task.Repository.Rev(),
273274
HeadRepository: task.Repository.ID,
274-
HeadRef: "refs/heads/" + task.Template.Branch,
275-
Title: task.Template.Title.Value(task.Repository),
276-
Body: task.Template.Body,
275+
HeadRef: "refs/heads/" + task.Template.Branch.Value(repo),
276+
Title: task.Template.Title.Value(repo),
277+
Body: task.Template.Body.Value(repo),
277278
Commits: []GitCommitDescription{
278279
{
279-
Message: task.Template.Commit.Message,
280+
Message: task.Template.Commit.Message.Value(repo),
280281
AuthorName: authorName,
281282
AuthorEmail: authorEmail,
282283
Diff: string(diff),

0 commit comments

Comments
 (0)