Avoid redundant trail status parsing · Entire
Avoid Redundant Trail Status Parsing
b73d4f2→main·
evjan·1mo ago·2 files·+16 added/-16 removed
Sessions
8153007e89adView transcript
Changes
2
cmd/entire/cli
Mtrail_cmd.go+15/-15
Mtrail_cmd_test.go+1/-1
95 unmodified lines
96
97
98
99
99
100
101
102
103
104
105
106
106
107
108
109
110
6 unmodified lines
117
118
119
119
120
121
122
123
49 unmodified lines
173
174
175
175
176
177
178
179
180
179
181
182
183
184
183
185
186
185
187
188
187
188
189
190
191
191
192
193
194
195
196
192
193
194
195
196
197
198
199
200
201
202
203
95 unmodified lines
// runTrailShow shows the trail for the current branch, or falls through to list.
func runTrailShow(ctx context.Context, w, errW io.Writer, insecureHTTP bool) error {
listOpts := defaultTrailListOptions(insecureHTTP)
if err := validateTrailListOptions(listOpts); err != nil {
listStatusFilters, err := validateTrailListOptions(listOpts)
if err != nil {
return err
}
return runAuthenticatedDataAPI(ctx, errW, insecureHTTP, func(ctx context.Context, client *api.Client) error {
branch, err := GetCurrentBranch(ctx)
if err != nil {
return runTrailListAllWithClient(ctx, w, client, listOpts)
return runTrailListAllWithClient(ctx, w, client, listOpts, listStatusFilters)
}
forge, owner, repo, err := resolveTrailRemote(ctx)
6 unmodified lines
return err
}
if found == nil {
return runTrailListAllWithClient(ctx, w, client, listOpts)
return runTrailListAllWithClient(ctx, w, client, listOpts, listStatusFilters)
}
printTrailDetails(w, found.ToMetadata())
49 unmodified lines
}
}
func runTrailListAll(ctx context.Context, w, errW io.Writer, opts trailListOptions) error {
if err := validateTrailListOptions(opts); err != nil {
statusFilters, err := validateTrailListOptions(opts)
if err != nil {
return err
}
return runAuthenticatedDataAPI(ctx, errW, opts.InsecureHTTP, func(ctx context.Context, client *api.Client) error {
return runTrailListAllWithClient(ctx, w, client, opts)
return runTrailListAllWithClient(ctx, w, client, opts, statusFilters)
})
}
}
func validateTrailListOptions(opts trailListOptions) error {
func validateTrailListOptions(opts trailListOptions) ([]trail.Status, error) {
if opts.Limit <= 0 {
return errors.New("limit must be greater than 0")
return nil, errors.New("limit must be greater than 0")
}
_, err := parseTrailStatusFilter(opts.Status)
return err
return parseTrailStatusFilter(opts.Status)
}
}
func runTrailListAllWithClient(ctx context.Context, w io.Writer, client *api.Client, opts trailListOptions) error {
if err := validateTrailListOptions(opts); err != nil {
return err
}
statusFilters, err := parseTrailStatusFilter(opts.Status)
}
func runTrailListAllValidatedWithClient(ctx context.Context, w io.Writer, client *api.Client, opts trailListOptions) error {
statusFilters, err := validateTrailListOptions(opts)
if err != nil {
return err
}
return runTrailListAllWithClient(ctx, w, client, opts, statusFilters)
}
func runTrailListAllWithClient(ctx context.Context, w io.Writer, client *api.Client, opts trailListOptions, statusFilters []trail.Status) error {
authorFilter := opts.Author
currentUserLogin := ""
if authorFilter == trailListAuthorMe {
Mcmd/entire/cli/trail_cmd.go+15/-15
87 unmodified lines
88
89
90
91
91
92
93
94
87 unmodified lines
opts.Limit = 0
var out bytes.Buffer
err := runTrailListAllWithClient(t.Context(), &out, nil, opts)
err := runTrailListAllValidatedWithClient(t.Context(), &out, nil, opts)
if err == nil {
t.Fatal("expected validation error")
}
Mcmd/entire/cli/trail_cmd_test.go+1/-1