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

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